up-cc 0.3.3 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +259 -49
  3. package/agents/up-api-tester.md +405 -0
  4. package/agents/up-arquiteto.md +461 -0
  5. package/agents/up-backend-specialist.md +158 -0
  6. package/agents/up-blind-validator.md +259 -0
  7. package/agents/up-clone-crawler.md +234 -0
  8. package/agents/up-clone-design-extractor.md +227 -0
  9. package/agents/up-clone-feature-mapper.md +225 -0
  10. package/agents/up-clone-prd-writer.md +169 -0
  11. package/agents/up-clone-verifier.md +227 -0
  12. package/agents/up-code-reviewer.md +225 -0
  13. package/agents/up-database-specialist.md +152 -0
  14. package/agents/up-devops-agent.md +203 -0
  15. package/agents/up-executor.md +45 -5
  16. package/agents/up-exhaustive-tester.md +348 -0
  17. package/agents/up-frontend-specialist.md +135 -0
  18. package/agents/up-product-analyst.md +192 -0
  19. package/agents/up-qa-agent.md +171 -0
  20. package/agents/up-requirements-validator.md +230 -0
  21. package/agents/up-security-reviewer.md +137 -0
  22. package/agents/up-system-designer.md +332 -0
  23. package/agents/up-technical-writer.md +188 -0
  24. package/agents/up-visual-critic.md +358 -0
  25. package/bin/up-tools.cjs +84 -2
  26. package/commands/clone-builder.md +67 -0
  27. package/commands/dashboard.md +48 -0
  28. package/commands/depurar.md +1 -1
  29. package/commands/mobile-first.md +71 -0
  30. package/commands/modo-builder.md +178 -0
  31. package/commands/ux-tester.md +63 -0
  32. package/package.json +1 -1
  33. package/references/blueprints/audit.md +29 -0
  34. package/references/blueprints/booking.md +49 -0
  35. package/references/blueprints/community.md +48 -0
  36. package/references/blueprints/crm.md +40 -0
  37. package/references/blueprints/dashboard.md +48 -0
  38. package/references/blueprints/data-management.md +42 -0
  39. package/references/blueprints/ecommerce.md +51 -0
  40. package/references/blueprints/marketplace.md +48 -0
  41. package/references/blueprints/notifications.md +32 -0
  42. package/references/blueprints/saas-users.md +50 -0
  43. package/references/blueprints/settings.md +31 -0
  44. package/references/engineering-principles.md +205 -0
  45. package/references/production-requirements.md +106 -0
  46. package/references/state-persistence.md +74 -0
  47. package/templates/builder-defaults.md +73 -0
  48. package/templates/delivery.md +279 -0
  49. package/templates/design-tokens.md +151 -0
  50. package/workflows/builder-e2e.md +501 -0
  51. package/workflows/builder.md +2248 -0
  52. package/workflows/clone-builder.md +320 -0
  53. package/workflows/executar-fase.md +28 -2
  54. package/workflows/executar-plano.md +404 -6
  55. package/workflows/mobile-first.md +692 -0
  56. package/workflows/novo-projeto.md +22 -0
  57. package/workflows/rapido.md +1 -1
  58. package/workflows/ux-tester.md +500 -0
@@ -81,7 +81,7 @@ Task(
81
81
  - Criar UM UNICO plano com 1-3 tarefas focadas
82
82
  - Tarefas rapidas devem ser atomicas e autocontidas
83
83
  - Sem fase de pesquisa
84
- - Alvo ~10% uso de contexto (simples, focado)
84
+ - Alvo ~30% uso de contexto (simples, focado)
85
85
  </constraints>
86
86
 
87
87
  <output>
@@ -0,0 +1,500 @@
1
+ <purpose>
2
+ UX Tester: navegar o sistema como um usuario real, avaliar a experiencia, e implementar melhorias automaticamente.
3
+
4
+ NAO e teste funcional (isso e o E2E). E um auditor de experiencia que USA o sistema e pensa:
5
+ - "Isso ta confuso"
6
+ - "Muitos cliques pra fazer algo simples"
7
+ - "Cadê o feedback?"
8
+ - "Isso ta lento"
9
+ - "Eu nao sei o que fazer nessa tela"
10
+
11
+ Dois modos:
12
+ - **Standalone:** `/up:ux-tester` — roda em qualquer projeto, qualquer momento
13
+ - **Builder:** roda no Estagio 4 (Polish) e implementa tudo automaticamente
14
+ </purpose>
15
+
16
+ <tools_required>
17
+ Ferramentas Playwright MCP:
18
+ - `browser_navigate` — navegar para URL
19
+ - `browser_snapshot` — capturar acessibilidade (para interagir)
20
+ - `browser_take_screenshot` — capturar visual (para avaliar)
21
+ - `browser_click` — clicar
22
+ - `browser_type` — digitar
23
+ - `browser_fill_form` — preencher formularios
24
+ - `browser_select_option` — selecionar opcao
25
+ - `browser_press_key` — teclar
26
+ - `browser_hover` — hover
27
+ - `browser_navigate_back` — voltar
28
+ - `browser_console_messages` — erros JS
29
+ - `browser_network_requests` — lentidao de APIs
30
+ - `browser_resize` — testar responsividade
31
+ - `browser_evaluate` — medir tempos, checar acessibilidade
32
+ - `browser_close` — fechar
33
+
34
+ Ferramentas de codigo:
35
+ - Read, Write, Edit, Glob, Grep, Bash — para implementar melhorias
36
+ </tools_required>
37
+
38
+ <process>
39
+
40
+ ## Passo 1: Setup
41
+
42
+ ### 1.1 Detectar Stack e Dev Server
43
+
44
+ ```bash
45
+ # Detectar stack
46
+ if [ -f package.json ]; then
47
+ node -e "const p=require('./package.json'); console.log(JSON.stringify({scripts: p.scripts, deps: Object.keys(p.dependencies||{}).slice(0,20)}))"
48
+ fi
49
+ ```
50
+
51
+ Subir dev server em background:
52
+ ```bash
53
+ [DEV_COMMAND] &
54
+ DEV_PID=$!
55
+ ```
56
+
57
+ Esperar ficar pronto (max 30s):
58
+ ```bash
59
+ for i in $(seq 1 30); do
60
+ curl -s http://localhost:[PORT] > /dev/null 2>&1 && break
61
+ sleep 1
62
+ done
63
+ ```
64
+
65
+ Se nao subir: ERRO — "Dev server nao subiu. Verifique se as dependencias estao instaladas e as env vars configuradas."
66
+
67
+ ### 1.2 Descobrir Fluxos do Sistema
68
+
69
+ **Opcao A — De REQUIREMENTS.md / PROJECT.md (se existir):**
70
+ Ler `.plano/PROJECT.md` e `.plano/REQUIREMENTS.md` para entender o que o sistema faz e quais sao os fluxos principais.
71
+
72
+ **Opcao B — De codigo (se nao ha .plano/):**
73
+ ```bash
74
+ # Descobrir rotas
75
+ find . -name "page.tsx" -o -name "page.ts" 2>/dev/null | grep -v node_modules | head -20
76
+ find . -path "*/pages/*.tsx" -o -path "*/pages/*.ts" 2>/dev/null | grep -v node_modules | grep -v "_app\|_document" | head -20
77
+ ```
78
+
79
+ **Opcao C — Navegando (fallback):**
80
+ Navegar para `/` e explorar links e navegacao.
81
+
82
+ ### 1.3 Definir Personas
83
+
84
+ Criar 2-3 personas para os testes:
85
+
86
+ **Persona 1: Usuario Novo (primeira vez)**
87
+ - Nunca viu o sistema
88
+ - Nao sabe onde as coisas estao
89
+ - Espera que seja obvio o que fazer
90
+ - Testa: onboarding, clareza, primeiros passos
91
+
92
+ **Persona 2: Usuario Frequente (dia a dia)**
93
+ - Usa o sistema regularmente
94
+ - Quer eficiencia (poucos cliques)
95
+ - Testa: fluxos principais, atalhos, velocidade
96
+
97
+ **Persona 3: Usuario com Pressa (mobile/distraido)**
98
+ - Tela pequena ou multitask
99
+ - Quer resolver rapido
100
+ - Testa: responsividade, tamanho de alvos, hierarquia visual
101
+
102
+ ### 1.4 Criar Diretorio de Resultados
103
+
104
+ ```bash
105
+ mkdir -p .plano/ux-review/screenshots
106
+ ```
107
+
108
+ ## Passo 2: Navegacao como Usuario (6 Dimensoes)
109
+
110
+ Para cada fluxo principal do sistema, navegar como cada persona e avaliar:
111
+
112
+ ### Dimensao 1: Clareza
113
+ **Pergunta:** "Eu sei o que fazer nessa tela?"
114
+
115
+ Para cada tela/pagina:
116
+ 1. `browser_navigate(url)` → `browser_take_screenshot(filename: ".plano/ux-review/screenshots/[rota]-first-impression.png")`
117
+ 2. `browser_snapshot()` — ler estrutura da pagina
118
+ 3. Avaliar:
119
+ - Existe um titulo/heading claro?
120
+ - A hierarquia visual guia o olho? (tamanhos, cores, espacamento)
121
+ - CTAs sao obvios? (botoes primarios vs secundarios)
122
+ - Ha textos ambiguos? (ex: "Enviar" vs "Salvar Rascunho")
123
+ - Labels dos forms sao descritivos?
124
+ - Ha instrucoes ou tooltips onde necessario?
125
+ - Estados vazios (empty states) explicam o que fazer?
126
+ 4. Registrar problemas encontrados
127
+
128
+ ### Dimensao 2: Eficiencia (Cliques)
129
+ **Pergunta:** "Quantos passos pra completar a tarefa?"
130
+
131
+ Para cada fluxo principal:
132
+ 1. Contar cliques necessarios do inicio ao fim
133
+ 2. Navegar o fluxo completo, registrando cada interacao
134
+ 3. Avaliar:
135
+ - Ha passos desnecessarios? (confirmacoes excessivas, paginas intermediarias)
136
+ - Formularios poderiam ter defaults inteligentes?
137
+ - Campos poderiam ser agrupados ou removidos?
138
+ - Existe atalho para acoes frequentes?
139
+ - Navegacao entre secoes e direta ou exige muitos cliques?
140
+ 4. Calcular: cliques atuais vs cliques ideais
141
+
142
+ ### Dimensao 3: Feedback
143
+ **Pergunta:** "O sistema me diz o que esta acontecendo?"
144
+
145
+ Para cada acao (submeter form, clicar botao, deletar):
146
+ 1. Executar a acao
147
+ 2. Avaliar imediatamente:
148
+ - Ha loading indicator durante operacoes? (spinner, skeleton, progress)
149
+ - Aparece mensagem de sucesso apos acao? (toast, banner, redirect)
150
+ - Erros sao claros e acionaveis? ("Email invalido" vs "Erro 422")
151
+ - Ha feedback visual ao clicar? (hover states, active states)
152
+ - Transicoes sao suaves ou abruptas?
153
+ 3. Testar erro proposital:
154
+ - Submeter form vazio
155
+ - Inserir dados invalidos
156
+ - `browser_console_messages(level: "error")` — checar erros nao tratados
157
+
158
+ ### Dimensao 4: Consistencia
159
+ **Pergunta:** "O sistema se comporta de forma previsivel?"
160
+
161
+ Navegar por TODAS as telas e comparar:
162
+ 1. Botoes primarios sao sempre do mesmo estilo/cor?
163
+ 2. Espacamento e tipografia sao consistentes?
164
+ 3. Navegacao esta no mesmo lugar em todas as paginas?
165
+ 4. Padroes de formulario sao iguais? (labels, validacao, botoes)
166
+ 5. Icones significam a mesma coisa em contextos diferentes?
167
+ 6. Terminologia e consistente? (nao mistura "Salvar/Enviar/Confirmar" pro mesmo conceito)
168
+
169
+ ### Dimensao 5: Acessibilidade Basica
170
+ **Pergunta:** "Qualquer pessoa consegue usar?"
171
+
172
+ ```javascript
173
+ // Rodar via browser_evaluate
174
+ browser_evaluate(function: "() => {
175
+ const issues = [];
176
+ // Imagens sem alt
177
+ document.querySelectorAll('img:not([alt])').forEach(img => issues.push('img sem alt: ' + img.src));
178
+ // Inputs sem label
179
+ document.querySelectorAll('input:not([aria-label]):not([id])').forEach(i => issues.push('input sem label'));
180
+ // Contraste (simplificado)
181
+ // Botoes sem texto acessivel
182
+ document.querySelectorAll('button:empty').forEach(b => issues.push('botao vazio'));
183
+ // Links sem texto
184
+ document.querySelectorAll('a:not([aria-label])').forEach(a => { if(!a.textContent.trim()) issues.push('link sem texto'); });
185
+ return JSON.stringify(issues);
186
+ }")
187
+ ```
188
+
189
+ Tambem:
190
+ - Tab navigation funciona? (pressionar Tab e ver se foco e visivel)
191
+ - Tamanho minimo de toque (44x44px para mobile)?
192
+ - Texto legivel? (min 14px body, min 12px labels)
193
+
194
+ ### Dimensao 6: Performance Percebida
195
+ **Pergunta:** "Parece rapido?"
196
+
197
+ Para cada pagina:
198
+ ```javascript
199
+ // Medir tempo de carregamento
200
+ browser_evaluate(function: "() => {
201
+ const perf = performance.getEntriesByType('navigation')[0];
202
+ return JSON.stringify({
203
+ ttfb: Math.round(perf.responseStart - perf.requestStart),
204
+ domReady: Math.round(perf.domContentLoadedEventEnd - perf.fetchStart),
205
+ fullLoad: Math.round(perf.loadEventEnd - perf.fetchStart),
206
+ lcp: performance.getEntriesByType('largest-contentful-paint')[0]?.startTime
207
+ });
208
+ }")
209
+ ```
210
+
211
+ Checar network:
212
+ ```
213
+ browser_network_requests(static: false, requestBody: false, requestHeaders: false)
214
+ ```
215
+ - APIs > 1s: LENTO
216
+ - APIs > 3s: MUITO LENTO
217
+ - APIs falhando: BUG
218
+
219
+ Avaliar:
220
+ - Ha skeleton/placeholder enquanto carrega?
221
+ - Conteudo aparece progressivamente ou tudo de uma vez?
222
+ - Transicoes de pagina sao suaves?
223
+ - Ha jank visual (layout shifts)?
224
+
225
+ ## Passo 3: Gerar Relatorio
226
+
227
+ Criar `.plano/ux-review/UX-REPORT.md`:
228
+
229
+ ```markdown
230
+ ---
231
+ tested: [timestamp]
232
+ server: [dev command] @ [port]
233
+ personas: 3
234
+ flows_tested: [N]
235
+ issues_found: [N]
236
+ quick_fixes: [N]
237
+ improvements: [N]
238
+ ---
239
+
240
+ # Relatorio UX Review
241
+
242
+ ## Resumo Executivo
243
+
244
+ [2-3 paragrafos: impressao geral do sistema, pontos fortes, areas criticas]
245
+
246
+ **Score Geral:** [1-10] (onde 1=inutilizavel, 10=experiencia impecavel)
247
+
248
+ | Dimensao | Score (1-10) | Issues |
249
+ |----------|-------------|--------|
250
+ | Clareza | [N] | [N] |
251
+ | Eficiencia | [N] | [N] |
252
+ | Feedback | [N] | [N] |
253
+ | Consistencia | [N] | [N] |
254
+ | Acessibilidade | [N] | [N] |
255
+ | Performance | [N] | [N] |
256
+
257
+ ## Issues por Prioridade
258
+
259
+ ### Criticas (Implementar Agora)
260
+ [Issues que prejudicam significativamente a experiencia]
261
+
262
+ #### UX-001: [Titulo do problema]
263
+ **Dimensao:** [qual]
264
+ **Tela:** [rota]
265
+ **Problema:** [descricao do que esta errado]
266
+ **Impacto:** [como afeta o usuario]
267
+ **Solucao:** [o que fazer para corrigir]
268
+ **Arquivo(s):** [caminhos dos arquivos a modificar]
269
+ **Screenshot:** screenshots/[nome].png
270
+ **Esforco:** P/M/G
271
+
272
+ ### Importantes (Implementar Depois)
273
+ [Issues que incomodam mas nao bloqueiam]
274
+
275
+ ### Menores (Nice to Have)
276
+ [Polimentos que melhoram a experiencia]
277
+
278
+ ## Analise por Fluxo
279
+
280
+ ### Fluxo: [Nome do Fluxo]
281
+ **Persona:** [qual persona testou]
282
+ **Cliques atuais:** [N]
283
+ **Cliques ideais:** [N]
284
+ **Tempo estimado:** [N] segundos
285
+
286
+ | Passo | Acao | Problema? | Screenshot |
287
+ |-------|------|-----------|------------|
288
+ | 1 | [acao] | [sim/nao - descricao] | [path] |
289
+ | 2 | [acao] | [sim/nao - descricao] | [path] |
290
+
291
+ ## Performance por Pagina
292
+
293
+ | Pagina | TTFB | DOM Ready | Full Load | APIs Lentas |
294
+ |--------|------|-----------|-----------|-------------|
295
+ | / | [ms] | [ms] | [ms] | [N] |
296
+ | /dashboard | [ms] | [ms] | [ms] | [N] |
297
+
298
+ ## Acessibilidade
299
+
300
+ | Problema | Quantidade | Paginas |
301
+ |----------|-----------|---------|
302
+ | Imagens sem alt | [N] | [lista] |
303
+ | Inputs sem label | [N] | [lista] |
304
+ | Botoes vazios | [N] | [lista] |
305
+ | Links sem texto | [N] | [lista] |
306
+ | Foco invisivel | [N] | [lista] |
307
+ ```
308
+
309
+ ## Passo 4: Implementar Melhorias
310
+
311
+ **NAO perguntar ao usuario.** Implementar TODAS as melhorias que sao seguras de aplicar.
312
+
313
+ ### 4.1 Classificar Issues por Implementabilidade
314
+
315
+ | Tipo | Implementar? | Exemplos |
316
+ |------|-------------|----------|
317
+ | **Texto/copy** | SIM | Labels confusos, mensagens de erro genericas, CTAs ambiguos, empty states |
318
+ | **Feedback visual** | SIM | Adicionar loading states, toasts de sucesso, hover states, transicoes |
319
+ | **Acessibilidade** | SIM | Alt em imagens, labels em inputs, aria-labels, focus visible |
320
+ | **Espacamento/layout** | SIM | Padding, margin, gap, alinhamento, tamanho de fonte |
321
+ | **Consistencia** | SIM | Unificar cores de botoes, padronizar espacamento, terminologia |
322
+ | **Ordem de tabs** | SIM | tabIndex, autofocus em primeiro campo |
323
+ | **Defaults inteligentes** | SIM | Valores padrao em forms, selecao inicial |
324
+ | **Performance** | SIM | Lazy loading, debounce, memo, skeleton, suspense, caching |
325
+ | **Reestruturacao de fluxo** | SIM | Simplificar navegacao, reorganizar steps, reduzir cliques |
326
+ | **Novo componente** | SIM | Criar wizard, tour guiado, empty states ricos, confirmacao modal, search |
327
+ | **Ajuste de API** | SIM | Novo endpoint pra otimizar UX, ajustar response shape, adicionar paginacao |
328
+
329
+ **UNICA restricao:** NAO fazer mudancas que quebrem funcionalidade existente sem poder verificar. Especificamente:
330
+ - NAO deletar tabelas/colunas do banco
331
+ - NAO remover endpoints que outros sistemas consomem
332
+ - NAO alterar schemas de auth/sessao
333
+
334
+ **Para mudancas estruturais (novo componente, novo fluxo, ajuste de API):**
335
+ 1. Implementar a mudanca
336
+ 2. Verificar via Playwright que o fluxo afetado ainda funciona
337
+ 3. Se quebrou: reverter via `git checkout -- [arquivos]` e registrar como "tentativa falha"
338
+ 4. Se funcionou: commit e seguir
339
+
340
+ ### 4.2 Executar Implementacao
341
+
342
+ Para cada issue implementavel (ordenada por prioridade: critica → importante → menor):
343
+
344
+ 1. Ler arquivo(s) alvo
345
+ 2. Implementar a correcao
346
+ 3. Commit atomico: `ux({area}): {descricao da melhoria}`
347
+ 4. Re-navegar a tela afetada para verificar
348
+ 5. Screenshot "depois" para comparacao
349
+
350
+ ```
351
+ UX-001: [descricao] → Implementado ✓
352
+ UX-002: [descricao] → Implementado ✓ (novo componente criado)
353
+ UX-003: [descricao] → Implementado ✓ (fluxo reestruturado)
354
+ UX-004: [descricao] → Falhou (revertido — quebrou funcionalidade X)
355
+ ```
356
+
357
+ **Para mudancas estruturais (novo componente, novo fluxo, ajuste de API):**
358
+
359
+ 1. Implementar a mudanca completa (componente, rota, API)
360
+ 2. Re-navegar via Playwright para verificar que funciona
361
+ 3. Se funciona: commit e continuar
362
+ 4. Se quebrou algo: `git checkout -- [arquivos afetados]` para reverter e registrar como "tentativa falha — [motivo]"
363
+ 5. Max 2 tentativas por mudanca estrutural
364
+
365
+ ### 4.3 Atualizar Relatorio
366
+
367
+ Adicionar secao ao UX-REPORT.md:
368
+
369
+ ```markdown
370
+ ## Melhorias Implementadas
371
+
372
+ | ID | Melhoria | Arquivo(s) | Commit |
373
+ |----|----------|-----------|--------|
374
+ | UX-001 | [descricao] | [paths] | [hash] |
375
+ | UX-002 | [descricao] | [paths] | [hash] |
376
+
377
+ **Implementadas:** [N] de [M] issues
378
+ **Tentativas falhas (revertidas):** [N] (quebraram funcionalidade existente)
379
+
380
+ ## Antes vs Depois
381
+
382
+ ### UX-001: [Titulo]
383
+ | Antes | Depois |
384
+ |-------|--------|
385
+ | screenshots/ux-001-antes.png | screenshots/ux-001-depois.png |
386
+ ```
387
+
388
+ ## Passo 5: Cleanup
389
+
390
+ ```bash
391
+ kill $DEV_PID 2>/dev/null
392
+ ```
393
+
394
+ `browser_close()`
395
+
396
+ Apresentar resumo:
397
+
398
+ ```
399
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
400
+ UP > UX REVIEW COMPLETO
401
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
402
+
403
+ **Score Geral:** [N]/10
404
+
405
+ | Dimensao | Score |
406
+ |----------|-------|
407
+ | Clareza | [N]/10 |
408
+ | Eficiencia | [N]/10 |
409
+ | Feedback | [N]/10 |
410
+ | Consistencia | [N]/10 |
411
+ | Acessibilidade | [N]/10 |
412
+ | Performance | [N]/10 |
413
+
414
+ **Issues encontradas:** [N]
415
+ **Melhorias implementadas:** [N] (incluindo [X] componentes novos, [Y] ajustes de fluxo)
416
+ **Tentativas falhas:** [N] (revertidas — ver relatorio)
417
+
418
+ Relatorio: .plano/ux-review/UX-REPORT.md
419
+ Screenshots: .plano/ux-review/screenshots/
420
+
421
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
422
+ ```
423
+
424
+ </process>
425
+
426
+ <heuristics>
427
+ ## Heuristicas de Avaliacao UX
428
+
429
+ ### Clareza
430
+ - Heading H1 visivel em < 2s? Se nao → issue
431
+ - CTA primario e o elemento mais proeminente? Se nao → issue
432
+ - Form labels descrevem o que digitar? Se nao → issue
433
+ - Empty state diz o que fazer? Se nao → issue
434
+ - Mais de 3 acoes competindo por atencao na mesma area? → issue
435
+
436
+ ### Eficiencia
437
+ - Fluxo principal leva > 5 cliques? → issue (meta: 3 cliques)
438
+ - Form tem > 6 campos visiveis de uma vez? → issue (agrupar em steps)
439
+ - Acao frequente requer > 2 cliques? → issue (considerar atalho)
440
+ - Navegacao principal tem > 7 items? → issue (agrupar)
441
+ - Busca/filtro ausente em lista > 10 items? → issue
442
+
443
+ ### Feedback
444
+ - Acao sem resposta em < 200ms? → issue (adicionar loading)
445
+ - Operacao > 1s sem indicator? → issue critica
446
+ - Submissao sem mensagem de sucesso? → issue
447
+ - Erro generico ("Algo deu errado")? → issue (ser especifico)
448
+ - Nenhum estado de hover em elementos clicaveis? → issue
449
+
450
+ ### Consistencia
451
+ - Mais de 2 estilos de botao primario? → issue
452
+ - Espacamento diferente entre secoes similares? → issue
453
+ - Mesmo conceito com nomes diferentes? → issue
454
+ - Icones usados inconsistentemente? → issue
455
+
456
+ ### Acessibilidade
457
+ - Imagem sem alt text? → issue
458
+ - Input sem label associado? → issue
459
+ - Contraste < 4.5:1 em texto? → issue
460
+ - Alvo de clique < 44x44px em mobile? → issue
461
+ - Focus ring invisivel? → issue
462
+ - Pagina sem landmark regions? → issue
463
+
464
+ ### Performance Percebida
465
+ - TTFB > 500ms? → warning
466
+ - Full load > 3s? → issue
467
+ - API response > 1s? → issue
468
+ - Layout shift visivel? → issue critica
469
+ - Sem skeleton/loading placeholder? → issue
470
+ </heuristics>
471
+
472
+ <failure_handling>
473
+ ## Tratamento de Falhas
474
+
475
+ **Dev server nao sobe:**
476
+ Sair com erro claro e instrucoes de como subir manualmente.
477
+
478
+ **Pagina em branco:**
479
+ Checar console, registrar como issue critica de UX (usuario ve pagina em branco = pior experiencia possivel).
480
+
481
+ **Auth necessario:**
482
+ Tentar criar conta de teste ou usar seed data. Se nao conseguir: testar apenas paginas publicas.
483
+
484
+ **Componentes dinamicos nao carregam:**
485
+ Esperar ate 5s, retry snapshot. Se persistir: registrar como issue de performance.
486
+ </failure_handling>
487
+
488
+ <success_criteria>
489
+ - [ ] Dev server subiu
490
+ - [ ] Fluxos principais identificados
491
+ - [ ] Cada fluxo navegado como pelo menos 1 persona
492
+ - [ ] 6 dimensoes avaliadas com score
493
+ - [ ] Screenshots de cada tela e problema
494
+ - [ ] UX-REPORT.md gerado com issues priorizadas
495
+ - [ ] Issues implementaveis corrigidas com commits atomicos
496
+ - [ ] Screenshots antes/depois para melhorias implementadas
497
+ - [ ] Re-verificacao apos implementacao
498
+ - [ ] Dev server fechado
499
+ - [ ] Browser fechado
500
+ </success_criteria>