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
@@ -0,0 +1,501 @@
1
+ <purpose>
2
+ Teste E2E via Playwright MCP para o modo builder. Abre o browser real, navega pelas funcionalidades, interage com a UI, tira screenshots e registra bugs encontrados.
3
+
4
+ Usado em dois momentos:
5
+ 1. **Por fase** (Estagio 3): Testa funcionalidades da fase recem-executada
6
+ 2. **Final completo** (Estagio 5): Smoke test de todas as rotas + fluxos E2E principais
7
+
8
+ Autonomo: NAO pergunta ao usuario. Se encontra bug, tenta corrigir (max 1 tentativa por bug).
9
+ </purpose>
10
+
11
+ <tools_available>
12
+ Ferramentas Playwright MCP disponiveis:
13
+ - `browser_navigate` — navegar para URL
14
+ - `browser_snapshot` — capturar acessibilidade da pagina (melhor que screenshot para acoes)
15
+ - `browser_take_screenshot` — capturar imagem da pagina (evidencia visual)
16
+ - `browser_click` — clicar em elemento (por ref do snapshot)
17
+ - `browser_type` — digitar texto em campo
18
+ - `browser_fill_form` — preencher multiplos campos de formulario
19
+ - `browser_select_option` — selecionar opcao em dropdown
20
+ - `browser_press_key` — pressionar tecla
21
+ - `browser_hover` — hover em elemento
22
+ - `browser_navigate_back` — voltar pagina
23
+ - `browser_console_messages` — ver logs do console (erros JS)
24
+ - `browser_network_requests` — ver requisicoes de rede (APIs falhando)
25
+ - `browser_evaluate` — executar JS na pagina
26
+ - `browser_run_code` — executar snippet Playwright completo
27
+ - `browser_tabs` — gerenciar abas
28
+ - `browser_resize` — redimensionar browser
29
+ - `browser_close` — fechar browser
30
+ </tools_available>
31
+
32
+ <process>
33
+
34
+ ## Passo 1: Subir Dev Server
35
+
36
+ Detectar como subir o servidor baseado na stack:
37
+
38
+ ```bash
39
+ # Detectar comando de dev
40
+ if [ -f package.json ]; then
41
+ # Checar scripts disponiveis
42
+ node -e "const p=require('./package.json'); console.log(JSON.stringify(p.scripts||{}))"
43
+ fi
44
+ ```
45
+
46
+ | Stack | Comando | Porta tipica |
47
+ |-------|---------|-------------|
48
+ | Next.js | `pnpm dev` ou `npm run dev` | 3000 |
49
+ | Vite/React | `pnpm dev` ou `npm run dev` | 5173 |
50
+ | Python/FastAPI | `uvicorn main:app --reload` | 8000 |
51
+ | Python/Flask | `flask run` | 5000 |
52
+
53
+ Subir servidor em background:
54
+ ```bash
55
+ # Rodar em background e esperar ficar pronto
56
+ cd [project_dir]
57
+ [DEV_COMMAND] &
58
+ DEV_PID=$!
59
+ ```
60
+
61
+ Esperar servidor estar pronto:
62
+ ```bash
63
+ # Tentar ate 30 segundos
64
+ for i in $(seq 1 30); do
65
+ curl -s http://localhost:[PORT] > /dev/null 2>&1 && break
66
+ sleep 1
67
+ done
68
+ ```
69
+
70
+ Se nao subir em 30s: registrar como falha, pular testes E2E.
71
+
72
+ Definir `$BASE_URL` = `http://localhost:[PORT]`
73
+
74
+ ## Passo 2: Descobrir Rotas/Paginas
75
+
76
+ **Opcao A — Inferir de PLANs/SUMMARYs (preferido):**
77
+
78
+ Ler SUMMARYs da fase e extrair rotas criadas:
79
+ - Procurar padroes: `route.ts`, `page.tsx`, `/api/`, `router.get`, `app.get`
80
+ - Montar lista de rotas a testar
81
+
82
+ **Opcao B — Inferir de arquivos (fallback):**
83
+
84
+ ```bash
85
+ # Next.js App Router
86
+ find app -name "page.tsx" -o -name "page.ts" 2>/dev/null | head -20
87
+
88
+ # Next.js Pages Router
89
+ find pages -name "*.tsx" -o -name "*.ts" 2>/dev/null | grep -v "_app\|_document\|api/" | head -20
90
+
91
+ # Vite/React (checar react-router)
92
+ grep -r "path:" src/ --include="*.tsx" --include="*.ts" 2>/dev/null | head -20
93
+
94
+ # API routes
95
+ find . -path "*/api/*" -name "*.ts" -o -name "*.py" 2>/dev/null | head -20
96
+ ```
97
+
98
+ Montar `$ROUTES` = lista de URLs a visitar.
99
+
100
+ ## Passo 3: Teste por Fase (chamado do Estagio 3)
101
+
102
+ Para a fase recem-completada, testar as funcionalidades especificas.
103
+
104
+ ### 3.1 Extrair Testes da Fase
105
+
106
+ Ler os must_haves dos PLANs da fase:
107
+ ```yaml
108
+ must_haves:
109
+ truths:
110
+ - "Usuario pode ver lista de transacoes"
111
+ - "Usuario pode adicionar nova transacao"
112
+ ```
113
+
114
+ Cada truth vira um teste E2E:
115
+ - Traduzir truth em acoes concretas no browser
116
+ - Ex: "Usuario pode ver lista" → navegar → snapshot → verificar se lista existe
117
+
118
+ ### 3.2 Executar Testes
119
+
120
+ Para cada teste:
121
+
122
+ ```
123
+ 1. Navegar para a pagina relevante
124
+ mcp__plugin_playwright_playwright__browser_navigate(url: "$BASE_URL/[rota]")
125
+
126
+ 2. Capturar snapshot (para obter refs dos elementos)
127
+ mcp__plugin_playwright_playwright__browser_snapshot()
128
+
129
+ 3. Verificar que elementos esperados existem
130
+ - Procurar refs no snapshot que correspondem ao esperado
131
+ - Se nao encontrou: BUG — funcionalidade ausente
132
+
133
+ 4. Interagir (se o teste requer)
134
+ - Clicar: browser_click(ref: "[ref]")
135
+ - Preencher: browser_fill_form(fields: [...])
136
+ - Submeter: browser_press_key(key: "Enter") ou browser_click no botao
137
+
138
+ 5. Verificar resultado da interacao
139
+ - Novo snapshot apos acao
140
+ - Verificar mudanca esperada (novo item na lista, mensagem de sucesso, redirect)
141
+
142
+ 6. Tirar screenshot como evidencia
143
+ mcp__plugin_playwright_playwright__browser_take_screenshot(
144
+ type: "png",
145
+ filename: ".plano/fases/[fase]/screenshots/teste-[N].png"
146
+ )
147
+
148
+ 7. Checar console por erros
149
+ mcp__plugin_playwright_playwright__browser_console_messages(level: "error")
150
+ - Se ha erros JS: registrar como BUG
151
+
152
+ 8. Checar network por falhas
153
+ mcp__plugin_playwright_playwright__browser_network_requests(static: false, requestBody: false, requestHeaders: false)
154
+ - Filtrar por status >= 400
155
+ - Se ha falhas de API: registrar como BUG
156
+ ```
157
+
158
+ ### 3.3 Registrar Resultados
159
+
160
+ Criar `.plano/fases/[fase]/E2E-RESULTS.md`:
161
+
162
+ ```markdown
163
+ ---
164
+ phase: [fase]
165
+ tested: [timestamp]
166
+ server: [dev command] @ [port]
167
+ total: [N]
168
+ passed: [N]
169
+ failed: [N]
170
+ bugs: [N]
171
+ ---
172
+
173
+ # Testes E2E — Fase [X]: [Nome]
174
+
175
+ ## Resultados
176
+
177
+ ### Teste 1: [Nome do teste]
178
+ **Must-have:** [truth original]
179
+ **Rota:** [URL testada]
180
+ **Acoes:** [O que foi feito]
181
+ **Resultado:** PASSOU | FALHOU
182
+ **Screenshot:** screenshots/teste-1.png
183
+ [Se falhou:]
184
+ **Bug:** [Descricao do que deu errado]
185
+ **Console:** [Erros JS, se houver]
186
+ **Network:** [Falhas de API, se houver]
187
+
188
+ ### Teste 2: [Nome do teste]
189
+ ...
190
+
191
+ ## Erros de Console (Globais)
192
+ [Lista de erros JS encontrados durante todos os testes]
193
+
194
+ ## Resumo
195
+ - Total: [N] testes
196
+ - Passou: [N]
197
+ - Falhou: [N]
198
+ - Bugs encontrados: [N]
199
+ ```
200
+
201
+ ### 3.4 Tentar Corrigir Bugs
202
+
203
+ Se bugs foram encontrados:
204
+
205
+ Para cada bug:
206
+
207
+ **Loop de correcao (max 5 tentativas por bug):**
208
+
209
+ ```
210
+ tentativa = 1
211
+ enquanto tentativa <= 5 E bug nao corrigido:
212
+ 1. Analisar o bug (screenshot + console + network + codigo)
213
+ 2. Se tentativa > 1: analisar POR QUE a correcao anterior nao funcionou
214
+ 3. Localizar arquivo provavel (`grep` pela rota/componente/erro)
215
+ 4. Corrigir inline (Edit tool)
216
+ 5. Commit atomico: `fix(fase-X): [descricao do bug] (tentativa {tentativa})`
217
+ 6. Re-testar apenas o teste que falhou
218
+ 7. Se passou: marcar como corrigido, sair do loop
219
+ 8. Se ainda falha: tentativa += 1, voltar ao passo 1 com novo contexto
220
+ ```
221
+
222
+ Apos 5 tentativas sem correcao: registrar no E2E-RESULTS.md como "nao corrigido apos 5 tentativas" com descricao de cada tentativa feita.
223
+
224
+ ## Passo 4: Teste Final Completo (chamado do Estagio 5)
225
+
226
+ Apos TODAS as fases completarem, fazer teste completo:
227
+
228
+ ### 4.1 Smoke Test de Rotas
229
+
230
+ Visitar TODAS as rotas descobertas no Passo 2:
231
+
232
+ Para cada rota:
233
+ ```
234
+ 1. browser_navigate(url: rota)
235
+ 2. Esperar 2 segundos (conteudo carregar)
236
+ 3. browser_take_screenshot(filename: ".plano/e2e/smoke/[rota-slug].png")
237
+ 4. browser_console_messages(level: "error") — checar erros
238
+ 5. Registrar: rota acessivel (200) ou quebrada (erro/blank/404)
239
+ ```
240
+
241
+ ### 4.2 Fluxos E2E Principais
242
+
243
+ Identificar 3-5 fluxos criticos do projeto (baseado em REQUIREMENTS.md):
244
+
245
+ **Exemplos de fluxos por dominio:**
246
+
247
+ | Dominio | Fluxos tipicos |
248
+ |---------|---------------|
249
+ | SaaS | Signup → Login → Dashboard → Criar item → Ver item |
250
+ | E-commerce | Browse → Add to cart → Checkout → Confirmar |
251
+ | Dashboard | Login → Ver graficos → Filtrar → Exportar |
252
+ | Social | Signup → Criar post → Feed → Comentar |
253
+ | Financeiro | Login → Ver transacoes → Adicionar → Categorizar → Relatorio |
254
+
255
+ Para cada fluxo:
256
+
257
+ ```
258
+ 1. Navegar para inicio do fluxo
259
+ 2. Para cada passo do fluxo:
260
+ a. Snapshot (obter refs)
261
+ b. Interagir (clicar, preencher, submeter)
262
+ c. Verificar resultado esperado
263
+ d. Screenshot de evidencia
264
+ e. Checar console/network
265
+ 3. Verificar estado final do fluxo
266
+ ```
267
+
268
+ ### 4.3 Teste de Responsividade
269
+
270
+ Se o projeto tem UI web:
271
+
272
+ ```
273
+ # Desktop (1920x1080)
274
+ browser_resize(width: 1920, height: 1080)
275
+ browser_navigate(url: $BASE_URL)
276
+ browser_take_screenshot(filename: ".plano/e2e/responsive/desktop.png")
277
+
278
+ # Tablet (768x1024)
279
+ browser_resize(width: 768, height: 1024)
280
+ browser_take_screenshot(filename: ".plano/e2e/responsive/tablet.png")
281
+
282
+ # Mobile (375x812)
283
+ browser_resize(width: 375, height: 812)
284
+ browser_take_screenshot(filename: ".plano/e2e/responsive/mobile.png")
285
+ ```
286
+
287
+ ### 4.4 Gerar Relatorio Final E2E
288
+
289
+ Criar `.plano/e2e/E2E-REPORT.md`:
290
+
291
+ ```markdown
292
+ ---
293
+ tested: [timestamp]
294
+ server: [dev command] @ [port]
295
+ routes_total: [N]
296
+ routes_ok: [N]
297
+ routes_broken: [N]
298
+ flows_total: [N]
299
+ flows_passed: [N]
300
+ flows_failed: [N]
301
+ bugs_found: [N]
302
+ bugs_fixed: [N]
303
+ ---
304
+
305
+ # Relatorio de Testes E2E
306
+
307
+ ## Smoke Test de Rotas
308
+
309
+ | Rota | Status | Erros Console | Screenshot |
310
+ |------|--------|---------------|------------|
311
+ | / | OK | 0 | smoke/index.png |
312
+ | /dashboard | OK | 0 | smoke/dashboard.png |
313
+ | /settings | ERRO | 1 | smoke/settings.png |
314
+
315
+ **Rotas acessiveis:** [N]/[M]
316
+
317
+ ## Fluxos E2E
318
+
319
+ ### Fluxo 1: [Nome]
320
+ **Passos:** [N]
321
+ **Resultado:** PASSOU | FALHOU no passo [X]
322
+ **Screenshots:** [lista]
323
+ [Se falhou: descricao do bug]
324
+
325
+ ### Fluxo 2: [Nome]
326
+ ...
327
+
328
+ ## Responsividade
329
+
330
+ | Viewport | Screenshot | Problemas |
331
+ |----------|-----------|-----------|
332
+ | Desktop (1920x1080) | responsive/desktop.png | Nenhum |
333
+ | Tablet (768x1024) | responsive/tablet.png | [problemas] |
334
+ | Mobile (375x812) | responsive/mobile.png | [problemas] |
335
+
336
+ ## Bugs Encontrados
337
+
338
+ | # | Descricao | Severidade | Rota | Corrigido? |
339
+ |---|-----------|-----------|------|-----------|
340
+ | 1 | [bug] | [alta/media/baixa] | [rota] | Sim/Nao |
341
+
342
+ ## Erros de Console (Todos)
343
+
344
+ [Lista agregada de todos erros JS encontrados]
345
+
346
+ ## Metricas
347
+
348
+ | Metrica | Valor |
349
+ |---------|-------|
350
+ | Rotas testadas | [N] |
351
+ | Rotas OK | [N] |
352
+ | Fluxos testados | [N] |
353
+ | Fluxos OK | [N] |
354
+ | Bugs encontrados | [N] |
355
+ | Bugs corrigidos | [N] |
356
+ | Screenshots gerados | [N] |
357
+ ```
358
+
359
+ ## Passo 5: Cleanup
360
+
361
+ ```bash
362
+ # Matar dev server
363
+ kill $DEV_PID 2>/dev/null
364
+
365
+ # Fechar browser
366
+ ```
367
+
368
+ mcp__plugin_playwright_playwright__browser_close()
369
+
370
+ </process>
371
+
372
+ <smart_testing>
373
+ ## Testes Inteligentes — Adaptar ao Dominio
374
+
375
+ O builder NAO executa testes genericos. Cada teste e derivado dos REQUIREMENTS e must_haves do projeto.
376
+
377
+ **Como derivar testes dos must_haves:**
378
+
379
+ ```yaml
380
+ # must_have original:
381
+ truths:
382
+ - "Usuario pode ver lista de transacoes"
383
+
384
+ # Teste E2E derivado:
385
+ 1. Navegar para /transactions (ou rota equivalente)
386
+ 2. Snapshot: verificar que existe uma lista/tabela
387
+ 3. Verificar que tem pelo menos headers/colunas esperadas
388
+ 4. Screenshot de evidencia
389
+ ```
390
+
391
+ ```yaml
392
+ # must_have original:
393
+ truths:
394
+ - "Usuario pode criar nova transacao"
395
+
396
+ # Teste E2E derivado:
397
+ 1. Navegar para /transactions/new (ou clicar em botao "Nova")
398
+ 2. Snapshot: verificar que existe formulario
399
+ 3. Preencher campos obrigatorios com dados de teste
400
+ 4. Submeter formulario
401
+ 5. Verificar redirect ou mensagem de sucesso
402
+ 6. Navegar para lista: verificar que novo item aparece
403
+ 7. Screenshots em cada passo
404
+ ```
405
+
406
+ **Dados de teste:**
407
+
408
+ Usar dados realistas mas falsos:
409
+ - Email: `teste@example.com`
410
+ - Nome: `Usuario Teste`
411
+ - Valores: numeros redondos (100, 250, 1000)
412
+ - Datas: data atual ou proxima semana
413
+ - Textos: "Teste automatico - [timestamp]"
414
+
415
+ **Interacoes com auth:**
416
+
417
+ Se o projeto tem autenticacao:
418
+ 1. Primeiro: tentar acessar pagina protegida (deve redirecionar para login)
419
+ 2. Se Supabase Auth: criar usuario de teste via API
420
+ 3. Se custom auth: usar formulario de signup
421
+ 4. Fazer login antes dos testes
422
+ 5. Manter sessao para todos os testes seguintes
423
+
424
+ ```bash
425
+ # Criar usuario de teste via Supabase (se aplicavel)
426
+ # O executor ja deve ter criado um seed/migration com dados de teste
427
+ # Se nao: usar signup form
428
+ ```
429
+ </smart_testing>
430
+
431
+ <failure_handling>
432
+ ## Tratamento de Falhas
433
+
434
+ **Dev server nao sobe:**
435
+ - Checar se porta ja esta em uso: `lsof -i :[PORT]`
436
+ - Tentar porta alternativa
437
+ - Se nao resolver: pular E2E, registrar no DELIVERY.md
438
+
439
+ **Pagina em branco:**
440
+ - Checar console_messages por erros
441
+ - Pode ser hydration error, missing env var, build error
442
+ - Registrar como bug critico
443
+
444
+ **Elemento nao encontrado no snapshot:**
445
+ - Pode ser loading state — esperar 2s e re-snapshot
446
+ - Pode ser rota errada — verificar SUMMARY para rota correta
447
+ - Se persiste: registrar como bug
448
+
449
+ **Timeout em interacao:**
450
+ - Re-tentar ate 3 vezes com espera crescente (1s, 3s, 5s)
451
+ - Se persiste: registrar como bug e seguir pro proximo teste
452
+
453
+ **Principio:** Testes E2E nunca bloqueiam o builder. Falhas sao registradas e contornadas.
454
+ </failure_handling>
455
+
456
+ <directories>
457
+ ## Estrutura de Arquivos
458
+
459
+ ```
460
+ .plano/
461
+ fases/
462
+ XX-nome/
463
+ screenshots/ # Screenshots por fase
464
+ teste-1.png
465
+ teste-2.png
466
+ E2E-RESULTS.md # Resultados da fase
467
+ e2e/ # Teste final completo
468
+ smoke/ # Screenshots do smoke test
469
+ index.png
470
+ dashboard.png
471
+ responsive/ # Screenshots de responsividade
472
+ desktop.png
473
+ tablet.png
474
+ mobile.png
475
+ flows/ # Screenshots dos fluxos E2E
476
+ flow-1-step-1.png
477
+ flow-1-step-2.png
478
+ E2E-REPORT.md # Relatorio final completo
479
+ ```
480
+ </directories>
481
+
482
+ <success_criteria>
483
+ **Teste por fase:**
484
+ - [ ] Dev server subiu
485
+ - [ ] Must-haves da fase traduzidos em testes
486
+ - [ ] Cada teste executado (navegar + interagir + verificar)
487
+ - [ ] Screenshots tirados como evidencia
488
+ - [ ] Console e network checados
489
+ - [ ] Bugs registrados com descricao
490
+ - [ ] Tentativa de correcao (max 1x por bug)
491
+ - [ ] E2E-RESULTS.md criado na pasta da fase
492
+
493
+ **Teste final:**
494
+ - [ ] Todas rotas visitadas (smoke test)
495
+ - [ ] 3-5 fluxos E2E principais testados
496
+ - [ ] Responsividade verificada (desktop/tablet/mobile)
497
+ - [ ] Bugs agregados e priorizados
498
+ - [ ] E2E-REPORT.md gerado em .plano/e2e/
499
+ - [ ] Dev server fechado
500
+ - [ ] Browser fechado
501
+ </success_criteria>