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.
- package/LICENSE +21 -0
- package/README.md +259 -49
- package/agents/up-api-tester.md +405 -0
- package/agents/up-arquiteto.md +461 -0
- package/agents/up-backend-specialist.md +158 -0
- package/agents/up-blind-validator.md +259 -0
- package/agents/up-clone-crawler.md +234 -0
- package/agents/up-clone-design-extractor.md +227 -0
- package/agents/up-clone-feature-mapper.md +225 -0
- package/agents/up-clone-prd-writer.md +169 -0
- package/agents/up-clone-verifier.md +227 -0
- package/agents/up-code-reviewer.md +225 -0
- package/agents/up-database-specialist.md +152 -0
- package/agents/up-devops-agent.md +203 -0
- package/agents/up-executor.md +45 -5
- package/agents/up-exhaustive-tester.md +348 -0
- package/agents/up-frontend-specialist.md +135 -0
- package/agents/up-product-analyst.md +192 -0
- package/agents/up-qa-agent.md +171 -0
- package/agents/up-requirements-validator.md +230 -0
- package/agents/up-security-reviewer.md +137 -0
- package/agents/up-system-designer.md +332 -0
- package/agents/up-technical-writer.md +188 -0
- package/agents/up-visual-critic.md +358 -0
- package/bin/up-tools.cjs +84 -2
- package/commands/clone-builder.md +67 -0
- package/commands/dashboard.md +48 -0
- package/commands/depurar.md +1 -1
- package/commands/mobile-first.md +71 -0
- package/commands/modo-builder.md +178 -0
- package/commands/ux-tester.md +63 -0
- package/package.json +1 -1
- package/references/blueprints/audit.md +29 -0
- package/references/blueprints/booking.md +49 -0
- package/references/blueprints/community.md +48 -0
- package/references/blueprints/crm.md +40 -0
- package/references/blueprints/dashboard.md +48 -0
- package/references/blueprints/data-management.md +42 -0
- package/references/blueprints/ecommerce.md +51 -0
- package/references/blueprints/marketplace.md +48 -0
- package/references/blueprints/notifications.md +32 -0
- package/references/blueprints/saas-users.md +50 -0
- package/references/blueprints/settings.md +31 -0
- package/references/engineering-principles.md +205 -0
- package/references/production-requirements.md +106 -0
- package/references/state-persistence.md +74 -0
- package/templates/builder-defaults.md +73 -0
- package/templates/delivery.md +279 -0
- package/templates/design-tokens.md +151 -0
- package/workflows/builder-e2e.md +501 -0
- package/workflows/builder.md +2248 -0
- package/workflows/clone-builder.md +320 -0
- package/workflows/executar-fase.md +28 -2
- package/workflows/executar-plano.md +404 -6
- package/workflows/mobile-first.md +692 -0
- package/workflows/novo-projeto.md +22 -0
- package/workflows/rapido.md +1 -1
- package/workflows/ux-tester.md +500 -0
package/workflows/rapido.md
CHANGED
|
@@ -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 ~
|
|
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>
|