up-cc 0.16.1 → 2.0.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 (135) hide show
  1. package/README.md +87 -577
  2. package/package.json +5 -3
  3. package/up/CHANGELOG.md +110 -0
  4. package/up/agents/up-arquiteto.md +95 -39
  5. package/up/agents/up-auditor.md +218 -0
  6. package/up/agents/up-executor.md +94 -31
  7. package/up/agents/up-mapeador-codigo.md +63 -10
  8. package/up/agents/up-pesquisador.md +278 -0
  9. package/up/agents/up-revisor.md +249 -0
  10. package/up/agents/up-sintetizador.md +156 -179
  11. package/up/agents/up-tester.md +280 -0
  12. package/up/agents/up-verificador.md +95 -11
  13. package/up/bin/install.js +182 -19
  14. package/up/bin/lib/core.cjs +17 -43
  15. package/up/bin/lib/github.cjs +495 -0
  16. package/up/bin/lib/multica.cjs +424 -0
  17. package/up/bin/up-tools.cjs +167 -46
  18. package/up/commands/auditar.md +66 -0
  19. package/up/commands/build.md +54 -43
  20. package/up/commands/depurar.md +1 -1
  21. package/up/commands/plan.md +52 -38
  22. package/up/commands/rapido.md +15 -9
  23. package/up/commands/testar.md +81 -122
  24. package/up/commands/up.md +106 -0
  25. package/up/hooks/up-session-start.js +107 -0
  26. package/up/references/engineering-principles.md +1 -1
  27. package/up/references/governance-rules.md +5 -5
  28. package/up/references/production-requirements.md +1 -1
  29. package/up/references/severity-levels.md +2 -2
  30. package/up/references/tdd-evidence-types.md +81 -0
  31. package/up/skills/up-brainstorm/SKILL.md +54 -0
  32. package/up/skills/up-brainstorm/visual-companion.md +33 -0
  33. package/up/skills/up-tdd/SKILL.md +39 -0
  34. package/up/skills/up-verificar-antes-de-concluir/SKILL.md +49 -0
  35. package/up/skills/usando-up/SKILL.md +26 -0
  36. package/up/templates/audit-plan.md +3 -3
  37. package/up/templates/audit-report.md +2 -2
  38. package/up/templates/design-tokens.md +2 -2
  39. package/up/workflows/auditar.md +255 -0
  40. package/up/workflows/build.md +600 -386
  41. package/up/workflows/dcrv.md +183 -99
  42. package/up/workflows/governance.md +112 -220
  43. package/up/workflows/plan.md +169 -399
  44. package/up/workflows/rapido.md +7 -1
  45. package/up/workflows/up.md +447 -0
  46. package/up/agents/up-analista-codigo.md +0 -446
  47. package/up/agents/up-api-tester.md +0 -405
  48. package/up/agents/up-architecture-supervisor.md +0 -126
  49. package/up/agents/up-audit-supervisor.md +0 -83
  50. package/up/agents/up-auditor-modernidade.md +0 -378
  51. package/up/agents/up-auditor-performance.md +0 -426
  52. package/up/agents/up-auditor-ux.md +0 -396
  53. package/up/agents/up-backend-specialist.md +0 -175
  54. package/up/agents/up-blind-validator.md +0 -259
  55. package/up/agents/up-chief-architect.md +0 -184
  56. package/up/agents/up-chief-engineer.md +0 -202
  57. package/up/agents/up-chief-operations.md +0 -123
  58. package/up/agents/up-chief-product.md +0 -103
  59. package/up/agents/up-chief-quality.md +0 -211
  60. package/up/agents/up-clone-crawler.md +0 -234
  61. package/up/agents/up-clone-design-extractor.md +0 -227
  62. package/up/agents/up-clone-feature-mapper.md +0 -225
  63. package/up/agents/up-clone-prd-writer.md +0 -169
  64. package/up/agents/up-clone-verifier.md +0 -227
  65. package/up/agents/up-code-reviewer.md +0 -229
  66. package/up/agents/up-consolidador-ideias.md +0 -493
  67. package/up/agents/up-database-specialist.md +0 -169
  68. package/up/agents/up-delivery-auditor.md +0 -247
  69. package/up/agents/up-devops-agent.md +0 -203
  70. package/up/agents/up-execution-supervisor.md +0 -315
  71. package/up/agents/up-exhaustive-tester.md +0 -348
  72. package/up/agents/up-frontend-specialist.md +0 -152
  73. package/up/agents/up-operations-supervisor.md +0 -94
  74. package/up/agents/up-pesquisador-mercado.md +0 -350
  75. package/up/agents/up-pesquisador-projeto.md +0 -358
  76. package/up/agents/up-planning-auditor.md +0 -284
  77. package/up/agents/up-planning-supervisor.md +0 -260
  78. package/up/agents/up-product-analyst.md +0 -192
  79. package/up/agents/up-product-supervisor.md +0 -83
  80. package/up/agents/up-project-ceo.md +0 -352
  81. package/up/agents/up-qa-agent.md +0 -171
  82. package/up/agents/up-quality-supervisor.md +0 -178
  83. package/up/agents/up-requirements-validator.md +0 -230
  84. package/up/agents/up-security-reviewer.md +0 -137
  85. package/up/agents/up-sintetizador-melhorias.md +0 -407
  86. package/up/agents/up-system-designer.md +0 -332
  87. package/up/agents/up-technical-writer.md +0 -188
  88. package/up/agents/up-verification-supervisor.md +0 -111
  89. package/up/agents/up-visual-critic.md +0 -358
  90. package/up/commands/adicionar-fase.md +0 -47
  91. package/up/commands/adicionar-testes.md +0 -145
  92. package/up/commands/ajuda.md +0 -176
  93. package/up/commands/atualizar.md +0 -103
  94. package/up/commands/clone-builder.md +0 -67
  95. package/up/commands/configurar.md +0 -219
  96. package/up/commands/custos.md +0 -67
  97. package/up/commands/dashboard.md +0 -48
  98. package/up/commands/discutir-fase.md +0 -35
  99. package/up/commands/executar-fase.md +0 -40
  100. package/up/commands/ideias.md +0 -49
  101. package/up/commands/iniciar.md +0 -31
  102. package/up/commands/mapear-codigo.md +0 -63
  103. package/up/commands/melhorias.md +0 -45
  104. package/up/commands/mobile-first.md +0 -71
  105. package/up/commands/modo-builder.md +0 -186
  106. package/up/commands/novo-projeto.md +0 -40
  107. package/up/commands/onboard.md +0 -69
  108. package/up/commands/pausar.md +0 -33
  109. package/up/commands/planejar-fase.md +0 -45
  110. package/up/commands/progresso.md +0 -33
  111. package/up/commands/remover-fase.md +0 -34
  112. package/up/commands/resetar.md +0 -27
  113. package/up/commands/retomar.md +0 -35
  114. package/up/commands/saude.md +0 -103
  115. package/up/commands/ux-tester.md +0 -63
  116. package/up/commands/verificar-trabalho.md +0 -35
  117. package/up/workflows/adicionar-fase.md +0 -112
  118. package/up/workflows/builder-e2e.md +0 -501
  119. package/up/workflows/builder.md +0 -3419
  120. package/up/workflows/ceo-intake.md +0 -305
  121. package/up/workflows/ceo-updates.md +0 -183
  122. package/up/workflows/clone-builder.md +0 -320
  123. package/up/workflows/discutir-fase.md +0 -336
  124. package/up/workflows/executar-fase.md +0 -358
  125. package/up/workflows/executar-plano.md +0 -659
  126. package/up/workflows/ideias.md +0 -381
  127. package/up/workflows/iniciar.md +0 -235
  128. package/up/workflows/melhorias.md +0 -409
  129. package/up/workflows/mobile-first.md +0 -692
  130. package/up/workflows/novo-projeto.md +0 -778
  131. package/up/workflows/planejar-fase.md +0 -293
  132. package/up/workflows/progresso.md +0 -226
  133. package/up/workflows/retomar.md +0 -231
  134. package/up/workflows/ux-tester.md +0 -526
  135. package/up/workflows/verificar-trabalho.md +0 -308
@@ -1,659 +0,0 @@
1
- <purpose>
2
- Executar um prompt de fase (PLAN.md) e criar o resumo do resultado (SUMMARY.md).
3
-
4
- **PRINCIPIO CENTRAL: Verificacao funcional por task.**
5
- Cada task NAO esta completa ate que funcione DE VERDADE — nao apenas que o arquivo exista.
6
- Backend task → curl o endpoint, verificar resposta.
7
- Frontend task → abrir no browser, verificar que renderiza e interage.
8
- Integracao → verificar que frontend chama backend corretamente.
9
- </purpose>
10
-
11
- <required_reading>
12
- Ler STATE.md antes de qualquer operacao para carregar contexto do projeto.
13
- Ler config.json para configuracoes de comportamento de planejamento.
14
- </required_reading>
15
-
16
- <process>
17
-
18
- <step name="init_context" priority="first">
19
- Carregar contexto de execucao:
20
-
21
- ```bash
22
- INIT=$(node "$HOME/.claude/up/bin/up-tools.cjs" init executar-fase "${PHASE}")
23
- if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
24
- ```
25
-
26
- Extrair do init JSON: `commit_docs`, `phase_dir`, `phase_number`, `plans`, `summaries`, `incomplete_plans`, `state_path`, `config_path`.
27
-
28
- Se `.plano/` faltando: erro.
29
-
30
- **Detectar modo de execucao:**
31
-
32
- ```bash
33
- BUILDER_MODE=$(node -e "try{const c=JSON.parse(require('fs').readFileSync('.plano/config.json','utf8'));console.log(c.builder_mode===true?'true':'false')}catch{console.log('false')}" 2>/dev/null)
34
- ```
35
-
36
- Tambem verificar se o prompt contem `<builder_mode>`. Se sim: `$BUILDER_MODE = true`.
37
-
38
- **Quando `$BUILDER_MODE = true`:**
39
- - NAO usar AskUserQuestion em nenhum momento
40
- - NAO mostrar menus de "Proximo" ou sugerir comandos
41
- - NAO parar pra pedir confirmacao (Regra 4 → decidir autonomamente)
42
- - Retornar resultado silenciosamente para o orquestrador
43
- </step>
44
-
45
- <step name="setup_test_data">
46
- ## CRITICO: Criar Dados de Teste ANTES de Executar Tasks
47
-
48
- Se o projeto tem banco de dados (Supabase, Postgres, SQLite, etc.), criar dados de teste para poder verificar funcionalidades.
49
-
50
- **Detectar banco:**
51
- ```bash
52
- # Supabase
53
- grep -r "SUPABASE_URL\|supabase" .env* package.json 2>/dev/null | head -3
54
-
55
- # Prisma
56
- ls prisma/schema.prisma 2>/dev/null
57
-
58
- # Drizzle
59
- ls drizzle.config.* 2>/dev/null
60
-
61
- # SQLite
62
- find . -name "*.db" -o -name "*.sqlite" 2>/dev/null | head -3
63
- ```
64
-
65
- **Se banco disponivel e vazio (projeto novo/greenfield):**
66
-
67
- 1. Rodar migrations pendentes:
68
- ```bash
69
- npx prisma migrate dev 2>/dev/null || npx supabase db push 2>/dev/null || npx drizzle-kit push 2>/dev/null
70
- ```
71
-
72
- 2. Criar usuario de teste (se sistema tem auth):
73
- ```bash
74
- # Via Supabase CLI
75
- npx supabase functions invoke create-test-user 2>/dev/null
76
-
77
- # Ou via API do proprio app (se signup endpoint existe)
78
- curl -s -X POST http://localhost:$DEV_PORT/api/auth/signup \
79
- -H "Content-Type: application/json" \
80
- -d '{"email":"teste@teste.com","password":"Teste123!","name":"Usuario Teste"}'
81
-
82
- # Ou via SQL direto (Supabase)
83
- # INSERT INTO auth.users ...
84
- ```
85
-
86
- **Dados de teste padrao:**
87
-
88
- | Tipo | Dados |
89
- |------|-------|
90
- | **Admin** | admin@teste.com / Admin123! / role: admin |
91
- | **Usuario** | user@teste.com / User123! / role: user |
92
- | **Nomes** | Usar nomes realistas (Maria Silva, Joao Santos) |
93
- | **Valores** | Numeros redondos (100, 250, 1000) |
94
- | **Datas** | Data atual ou proxima semana |
95
- | **Textos** | "Teste automatico - [dominio]" |
96
-
97
- 3. Criar seed data do dominio (se seed script existe):
98
- ```bash
99
- npm run db:seed 2>/dev/null || npx prisma db seed 2>/dev/null || npx tsx prisma/seed.ts 2>/dev/null
100
- ```
101
-
102
- 4. Se NAO existe seed script: criar dados via API apos endpoints estarem prontos (durante execucao das tasks)
103
-
104
- **Salvar credenciais de teste para uso durante verificacao:**
105
- ```
106
- $TEST_ADMIN_EMAIL = "admin@teste.com"
107
- $TEST_ADMIN_PASSWORD = "Admin123!"
108
- $TEST_USER_EMAIL = "user@teste.com"
109
- $TEST_USER_PASSWORD = "User123!"
110
- ```
111
-
112
- **Se banco NAO disponivel ou sem acesso:** Pular. Registrar como `[PRECISA-CREDENCIAL]`.
113
-
114
- </step>
115
-
116
- <step name="start_dev_server">
117
- ## CRITICO: Subir Dev Server ANTES de Executar Qualquer Task
118
-
119
- Detectar e subir o servidor de desenvolvimento:
120
-
121
- ```bash
122
- # Detectar comando de dev
123
- if [ -f package.json ]; then
124
- DEV_CMD=$(node -e "const p=require('./package.json'); const s=p.scripts||{}; console.log(s.dev||s.start||'')")
125
- fi
126
-
127
- # Subir em background
128
- if [ -n "$DEV_CMD" ]; then
129
- npm run dev > /tmp/up-dev-server.log 2>&1 &
130
- DEV_PID=$!
131
-
132
- # Esperar ficar pronto (max 30s)
133
- PORT=$(node -e "const p=require('./package.json'); const s=p.scripts||{}; const d=s.dev||''; const m=d.match(/--port\s+(\d+)|PORT=(\d+)/); console.log(m?m[1]||m[2]:'3000')" 2>/dev/null || echo "3000")
134
- for i in $(seq 1 30); do
135
- curl -s http://localhost:$PORT > /dev/null 2>&1 && break
136
- sleep 1
137
- done
138
- fi
139
- ```
140
-
141
- Se o servidor subiu: `$DEV_SERVER_ACTIVE = true`, `$DEV_PORT = $PORT`
142
- Se nao subiu: `$DEV_SERVER_ACTIVE = false` — continuar sem verificacao funcional runtime (fallback para verificacao estatica)
143
-
144
- **Manter o servidor rodando durante TODA a execucao do plano.**
145
- </step>
146
-
147
- <step name="identify_plan">
148
- ```bash
149
- ls .plano/fases/XX-nome/*-PLAN.md 2>/dev/null | sort
150
- ls .plano/fases/XX-nome/*-SUMMARY.md 2>/dev/null | sort
151
- ```
152
-
153
- Encontrar primeiro PLAN sem SUMMARY correspondente.
154
-
155
- <if mode="yolo">
156
- Auto-aprovar: `Executar {fase}-{plano}-PLAN.md [Plano X de Y para Fase Z]` -> parse_segments.
157
- </if>
158
-
159
- <if mode="interactive">
160
- Apresentar identificacao do plano, esperar confirmacao.
161
- </if>
162
- </step>
163
-
164
- <step name="record_start_time">
165
- ```bash
166
- PLAN_START_TIME=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
167
- PLAN_START_EPOCH=$(date +%s)
168
-
169
- # Wave 3 (v0.12+) — timeout supervisor + stuck detector
170
- mkdir -p .plano/runtime
171
- ACTIVITY_LOG=".plano/runtime/agent-activity-${PHASE:-current}.log"
172
- echo "${PLAN_START_TIME}|start|${PHASE:-current}" >> "$ACTIVITY_LOG"
173
- LAST_ACTIVITY_EPOCH=$PLAN_START_EPOCH
174
-
175
- TIMEOUT_SOFT=${UP_TIMEOUT_SOFT:-1200} # 20m
176
- TIMEOUT_HARD=${UP_TIMEOUT_HARD:-1800} # 30m
177
- TIMEOUT_IDLE=${UP_TIMEOUT_IDLE:-600} # 10m
178
- ```
179
- </step>
180
-
181
- <step name="timeout_check_protocol">
182
- **Wave 3 — Timeout & Stuck Detection (executar entre tarefas)**
183
-
184
- Apos COMPLETAR cada tarefa do plano:
185
-
186
- 1. Append activity log:
187
- ```bash
188
- echo "$(date -u +%Y-%m-%dT%H:%M:%SZ)|task_complete|task_${TASK_NUMBER}" >> "$ACTIVITY_LOG"
189
- LAST_ACTIVITY_EPOCH=$(date +%s)
190
- ```
191
-
192
- 2. Run timeout + stuck check:
193
- ```bash
194
- TIMEOUT=$(node "$HOME/.claude/up/bin/up-tools.cjs" timeout \
195
- --start $PLAN_START_EPOCH \
196
- --soft $TIMEOUT_SOFT \
197
- --hard $TIMEOUT_HARD \
198
- --idle-since $LAST_ACTIVITY_EPOCH \
199
- --idle $TIMEOUT_IDLE)
200
- STUCK=$(node "$HOME/.claude/up/bin/up-tools.cjs" stuck-check \
201
- --log "$ACTIVITY_LOG" --window 10 --threshold 3)
202
- ```
203
-
204
- 3. Decisao por status:
205
-
206
- | Status | Acao |
207
- |--------|------|
208
- | `ok` | Continuar normal |
209
- | `soft_warning` | Acelerar — pular tarefas opcionais, simplificar |
210
- | `idle_warning` | Tentar destravar; se proxima tarefa nao avanca, abortar |
211
- | `hard_abort` | PARAR e retornar ABORTED_TIMEOUT |
212
- | stuck=true | PARAR e retornar ABORTED_STUCK |
213
-
214
- 4. Se hard_abort ou stuck:
215
- ```bash
216
- mkdir -p .plano/governance
217
- echo "$(date -u +%Y-%m-%dT%H:%M:%SZ)|phase-${PHASE}|executor|ABORTED|${TIMEOUT_STATUS:-stuck}|elapsed=$(($(date +%s) - PLAN_START_EPOCH))s" >> .plano/governance/aborts.log
218
-
219
- # Salvar PARTIAL-SUMMARY.md com tarefas completas
220
- cat > "${PHASE_DIR}/PARTIAL-SUMMARY.md" <<'EOF'
221
- ---
222
- phase: ${PHASE}
223
- status: aborted
224
- reason: ${TIMEOUT_STATUS:-stuck}
225
- last_completed_task: ${TASK_NUMBER}
226
- EOF
227
- ```
228
-
229
- Retornar mensagem estruturada:
230
- ```
231
- ABORTED: Fase {phase} por {timeout|stuck}
232
- Tarefas: {N}/{TOTAL} completas
233
- Decorrido: {elapsed}s
234
- Estado parcial: .plano/fases/{phase}/PARTIAL-SUMMARY.md
235
- ```
236
-
237
- NAO continuar trabalho apos abort. Orquestrador decide proximo passo (retry com escopo reduzido, escalar pro chief, etc).
238
- </step>
239
-
240
- <step name="load_prompt">
241
- ```bash
242
- cat .plano/fases/XX-nome/{fase}-{plano}-PLAN.md
243
- ```
244
- Este E as instrucoes de execucao. Seguir exatamente. Se plano referencia CONTEXT.md: honrar visao do usuario em tudo.
245
- </step>
246
-
247
- <step name="execute">
248
- Desvios sao normais -- tratar via regras abaixo.
249
-
250
- 1. Ler arquivos de @contexto do prompt
251
- 2. Por tarefa:
252
- - `type="auto"`: Implementar → **verificar funcionalmente** → commitar → registrar
253
- - `type="checkpoint:*"`: PARAR -> checkpoint_protocol -> esperar usuario -> continuar
254
- 3. Executar verificacoes `<verification>`
255
- 4. Confirmar `<success_criteria>` atendido
256
- 5. Documentar desvios no Summary
257
- </step>
258
-
259
- <runtime_verification>
260
- ## VERIFICACAO FUNCIONAL POR TASK (CRITICO)
261
-
262
- **Apos CADA task implementada, ANTES de commitar, verificar que FUNCIONA:**
263
-
264
- ### Task de Backend (API route, endpoint, middleware)
265
-
266
- ```bash
267
- # 1. Verificar que o servidor recarregou (hot reload)
268
- sleep 2
269
-
270
- # 2. Se endpoint requer auth, fazer login primeiro com usuario de teste
271
- # Usar credenciais criadas no step setup_test_data
272
- AUTH_TOKEN=""
273
- if [endpoint requer auth]; then
274
- AUTH_RESPONSE=$(curl -s -X POST http://localhost:$DEV_PORT/api/auth/login \
275
- -H "Content-Type: application/json" \
276
- -d "{\"email\":\"$TEST_ADMIN_EMAIL\",\"password\":\"$TEST_ADMIN_PASSWORD\"}")
277
- AUTH_TOKEN=$(echo $AUTH_RESPONSE | node -e "process.stdin.on('data',d=>{try{console.log(JSON.parse(d).token||JSON.parse(d).data?.token||'')}catch{console.log('')}})")
278
- fi
279
-
280
- # 3. Testar o endpoint criado/modificado
281
- curl -s -X POST http://localhost:$DEV_PORT/api/messages \
282
- -H "Content-Type: application/json" \
283
- -H "Authorization: Bearer $AUTH_TOKEN" \
284
- -d '{"content":"teste automatico"}' \
285
- -w "\n%{http_code}"
286
-
287
- # 4. Verificar response
288
- # - Status code correto (200, 201, etc.)?
289
- # - Response body tem a estrutura esperada?
290
- # - Nao retornou 500 ou erro?
291
- # - Se 401: credencial de teste invalida ou auth middleware errado
292
- ```
293
-
294
- **Se resposta inesperada:**
295
- 1. Ler log do servidor: `tail -20 /tmp/up-dev-server.log`
296
- 2. Identificar erro (import faltando, typo, tipo errado)
297
- 3. Corrigir inline
298
- 4. Re-testar (max 3 tentativas)
299
- 5. Se ainda falha: registrar como issue e continuar
300
-
301
- ### Task de Frontend (componente, pagina, UI)
302
-
303
- Se Playwright MCP disponivel:
304
- ```
305
- browser_navigate(url: "http://localhost:$DEV_PORT/[rota]")
306
- browser_snapshot()
307
- ```
308
-
309
- Verificar:
310
- - Pagina renderiza sem erro? (nao tela branca)
311
- - Componente esperado existe no snapshot?
312
- - Console sem erros? `browser_console_messages(level: "error")`
313
-
314
- Se Playwright NAO disponivel:
315
- ```bash
316
- # Fallback: verificar que a pagina responde
317
- curl -s http://localhost:$DEV_PORT/[rota] | head -20
318
- # Deve retornar HTML, nao erro
319
- ```
320
-
321
- **Se tela branca ou erro:**
322
- 1. Checar console/logs
323
- 2. Corrigir (import faltando, componente errado, props faltando)
324
- 3. Re-testar (max 3 tentativas)
325
-
326
- ### Task de Integracao (frontend chamando backend)
327
-
328
- ```
329
- # 0. Se pagina requer auth, fazer login primeiro via Playwright
330
- if [rota protegida]:
331
- browser_navigate(url: "http://localhost:$DEV_PORT/login")
332
- browser_snapshot()
333
- browser_fill_form(fields: [
334
- {ref: "[email-input]", value: "$TEST_ADMIN_EMAIL"},
335
- {ref: "[password-input]", value: "$TEST_ADMIN_PASSWORD"}
336
- ])
337
- browser_click(ref: "[submit-button]")
338
- # Esperar redirect pos-login
339
- browser_snapshot() # deve estar na pagina protegida agora
340
-
341
- # 1. Navegar para a pagina
342
- browser_navigate(url: "http://localhost:$DEV_PORT/[rota]")
343
-
344
- # 2. Interagir (clicar botao, submeter form)
345
- browser_snapshot()
346
- browser_click(ref: "[ref-do-botao]")
347
- # ou
348
- browser_fill_form(fields: [...])
349
- browser_press_key(key: "Enter")
350
-
351
- # 3. Verificar que a acao funcionou
352
- browser_snapshot() # novo estado
353
- browser_network_requests() # API foi chamada?
354
-
355
- # 4. Checar erros
356
- browser_console_messages(level: "error")
357
- ```
358
-
359
- **Se a acao nao funcionou:**
360
- 1. Checar network requests — API retornou erro?
361
- 2. Checar console — erro no frontend?
362
- 3. Comparar URL do fetch com a rota real do backend
363
- 4. Corrigir conexao frontend↔backend
364
- 5. Re-testar (max 3 tentativas)
365
-
366
- ### Task de Database (schema, migration, seed)
367
-
368
- ```bash
369
- # Verificar que migration rodou
370
- npx prisma migrate status 2>/dev/null || npx supabase db push --dry-run 2>/dev/null
371
-
372
- # Verificar que seed populou
373
- # (se seed task)
374
- curl -s http://localhost:$DEV_PORT/api/[recurso] | head -5
375
- # Deve retornar dados, nao lista vazia
376
- ```
377
-
378
- ### Quando Pular Verificacao Funcional
379
-
380
- - Task de config/setup (tsconfig, eslint, deps): pular
381
- - Task de types/interfaces only: pular
382
- - Task de testes (escrita de testes): pular (testes sao a verificacao)
383
- - `$DEV_SERVER_ACTIVE = false`: pular runtime, usar verificacao estatica
384
-
385
- ### Quando Precisa de Credencial/Acesso Externo
386
-
387
- Se a verificacao requer algo que o executor NAO tem:
388
- - Cookies de sessao do usuario (Instagram, WhatsApp, etc.)
389
- - Login em servico externo (dashboard de terceiro, admin panel externo)
390
- - Token OAuth com permissoes especificas
391
- - Acesso fisico (camera, microfone, GPS)
392
- - Pagamento real (testar checkout com cartao)
393
-
394
- **NAO perguntar ao usuario. NAO parar o builder.**
395
-
396
- Em vez disso:
397
- 1. Testar o maximo possivel SEM a credencial (mock, dados locais, dry-run)
398
- 2. Registrar no SUMMARY.md como `[PRECISA-CREDENCIAL]`:
399
-
400
- ```markdown
401
- ## Verificacoes Pendentes (Credenciais Necessarias)
402
-
403
- | Task | O que testar | Credencial necessaria | Como obter |
404
- |------|-------------|----------------------|-----------|
405
- | 3 | Integração Instagram | Cookie de sessão Instagram | Login manual no Playwright |
406
- | 5 | Webhook WhatsApp | Token UazAPI configurado | Configurar em .env |
407
- | 7 | Checkout Stripe | Chave de teste Stripe | Dashboard Stripe > API Keys |
408
- ```
409
-
410
- Estas verificacoes serao agregadas no DELIVERY.md na secao "Testes Pendentes de Credenciais".
411
-
412
- ### Verificacao Estatica (Fallback)
413
-
414
- Se dev server nao esta ativo:
415
- ```bash
416
- # TypeScript compila?
417
- npx tsc --noEmit 2>&1 | tail -10
418
-
419
- # ESLint passa?
420
- npx eslint src/ --quiet 2>&1 | tail -10
421
-
422
- # Build funciona?
423
- npm run build 2>&1 | tail -10
424
- ```
425
-
426
- </runtime_verification>
427
-
428
- <task_completion_protocol>
429
- ## Protocolo de Conclusao por Task
430
-
431
- Uma task SO esta completa quando:
432
-
433
- 1. **Codigo escrito** — arquivo(s) criado(s)/modificado(s)
434
- 2. **Verificacao funcional PASSOU** — endpoint responde / pagina renderiza / acao funciona
435
- 3. **Commit feito** — atomico, com mensagem descritiva
436
- 4. **Hash registrado** — para o SUMMARY
437
-
438
- Se verificacao funcional FALHA apos 3 tentativas:
439
- - Registrar como `[FUNCIONAL-FALHA]` no SUMMARY com descricao do problema
440
- - Commitar o que tem (codigo pode estar correto mas dependencia de outra task)
441
- - Continuar para proxima task
442
- - O code reviewer (Reflect step) vai pegar isso depois
443
-
444
- </task_completion_protocol>
445
-
446
- <deviation_rules>
447
-
448
- ## Regras de Desvio
449
-
450
- Voce VAI descobrir trabalho nao planejado. Aplicar automaticamente, rastrear todos para Summary.
451
-
452
- | Regra | Gatilho | Acao | Permissao |
453
- |-------|---------|------|-----------|
454
- | **1: Bug** | Comportamento quebrado, erros, queries erradas, erros de tipo, vulns de seguranca | Corrigir -> testar -> verificar -> rastrear `[Regra 1 - Bug]` | Auto |
455
- | **2: Critico Faltante** | Essenciais faltando: tratamento de erro, validacao, auth, CSRF/CORS | Adicionar -> testar -> verificar -> rastrear `[Regra 2 - Critico Faltante]` | Auto |
456
- | **3: Bloqueante** | Impede conclusao: deps faltando, tipos errados, imports quebrados | Corrigir bloqueio -> verificar que prossegue -> rastrear `[Regra 3 - Bloqueante]` | Auto |
457
- | **4: Arquitetural** | Mudanca estrutural: nova tabela DB, mudanca de schema, novo servico | **Se $BUILDER_MODE:** decidir autonomamente → rastrear `[Regra 4 - Arquitetural (auto)]`. **Se modo normal:** PARAR → apresentar decisao → rastrear. | Perguntar (normal) / Auto (builder) |
458
- | **5: Conexao Frontend↔Backend** | Frontend chama URL errada, payload errado, response shape diferente | Corrigir URL/payload/parsing -> re-testar -> rastrear `[Regra 5 - Conexao]` | Auto |
459
-
460
- **Regra 5 e NOVA e CRITICA.** A maioria dos problemas "nada funciona" vem de:
461
- - Frontend fazendo fetch para `/api/messages` mas backend tem `/api/message` (sem s)
462
- - Frontend enviando `{ message: "oi" }` mas backend espera `{ content: "oi" }`
463
- - Frontend esperando `response.data.messages` mas backend retorna `response.messages`
464
- - Frontend usando `GET` mas backend espera `POST`
465
- - CORS bloqueando a requisicao
466
-
467
- **SEMPRE verificar**: URL + metodo HTTP + payload shape + response shape + CORS.
468
-
469
- **Prioridade:** Regra 4 (PARAR) > Regra 5 (conexao) > Regras 1-3 (auto) > incerto -> Regra 4
470
-
471
- </deviation_rules>
472
-
473
- <task_commit>
474
- ## Protocolo de Commit por Tarefa
475
-
476
- Apos cada tarefa (verificacao funcional PASSOU, criterios de conclusao atendidos), commitar imediatamente.
477
-
478
- **1. Verificar:** `git status --short`
479
-
480
- **2. Stagear individualmente** (NUNCA `git add .` ou `git add -A`):
481
- ```bash
482
- git add src/api/auth.ts
483
- git add src/types/user.ts
484
- ```
485
-
486
- **3. Tipo de commit:**
487
-
488
- | Tipo | Quando | Exemplo |
489
- |------|--------|---------|
490
- | `feat` | Nova funcionalidade | feat(08-02): criar endpoint de registro |
491
- | `fix` | Correcao de bug | fix(08-02): corrigir regex de validacao de email |
492
- | `test` | Apenas teste | test(08-02): adicionar teste para hashing de senha |
493
- | `refactor` | Sem mudanca de comportamento | refactor(08-02): extrair validacao para helper |
494
- | `docs` | Documentacao | docs(08-02): adicionar docs da API |
495
- | `chore` | Config/deps | chore(08-02): adicionar dependencia bcrypt |
496
-
497
- **4. Formato:** `{tipo}({fase}-{plano}): {descricao}`
498
-
499
- **5. Registrar hash:**
500
- ```bash
501
- TASK_COMMIT=$(git rev-parse --short HEAD)
502
- ```
503
-
504
- </task_commit>
505
-
506
- <step name="checkpoint_protocol">
507
- Em `type="checkpoint:*"`: automatizar tudo possivel primeiro. Checkpoints sao apenas para verificacao/decisoes.
508
-
509
- Exibir: box `CHECKPOINT: [Tipo]` -> Progresso {X}/{Y} -> Nome da tarefa -> conteudo especifico do tipo -> `SUA ACAO: [sinal]`
510
-
511
- | Tipo | Conteudo | Sinal de retomada |
512
- |------|----------|-------------------|
513
- | human-verify (90%) | O que foi construido + passos de verificacao | "aprovado" ou descrever problemas |
514
- | decision (9%) | Decisao necessaria + contexto + opcoes | "Selecionar: opcao-id" |
515
- | human-action (1%) | O que foi automatizado + UM passo manual | "feito" |
516
- </step>
517
-
518
- <step name="wave_integration_check">
519
- ## Verificacao de Integracao por Wave
520
-
521
- **Apos TODAS as tasks de uma wave completarem**, verificar que as pecas se conectam:
522
-
523
- ```bash
524
- # 1. App ainda roda? (hot reload pode ter quebrado)
525
- curl -s http://localhost:$DEV_PORT/ > /dev/null 2>&1
526
- if [ $? -ne 0 ]; then
527
- echo "DEV SERVER CAIU — reiniciando"
528
- npm run dev > /tmp/up-dev-server.log 2>&1 &
529
- DEV_PID=$!
530
- sleep 5
531
- fi
532
- ```
533
-
534
- Se Playwright disponivel:
535
- ```
536
- # 2. Navegar para pagina principal da feature
537
- browser_navigate(url: "http://localhost:$DEV_PORT/[rota-principal]")
538
- browser_snapshot()
539
-
540
- # 3. Verificar que nao ha erros de console
541
- browser_console_messages(level: "error")
542
-
543
- # 4. Verificar que dados carregam (se aplicavel)
544
- # O snapshot deve mostrar dados reais, nao loading infinito ou erro
545
-
546
- # 5. Tentar interacao basica
547
- browser_click(ref: "[botao-principal]") # se existir
548
- browser_snapshot() # verificar resultado
549
- ```
550
-
551
- **Se integracao quebrada:**
552
- - Identificar: e problema de URL? payload? auth? CORS?
553
- - Corrigir (Regra 5 de desvio)
554
- - Re-testar
555
- - Commitar fix: `fix({fase}-{plano}): corrigir integracao [descricao]`
556
-
557
- </step>
558
-
559
- <step name="create_summary">
560
- Criar `{fase}-{plano}-SUMMARY.md` em `.plano/fases/XX-nome/`.
561
-
562
- **Frontmatter:** fase, plano, subsistema, tags | requer/fornece/afeta | tech-stack.adicionado/padroes | key-files.criados/modificados | decisoes-chave | requisitos-completados | duracao, completado.
563
-
564
- Titulo: `# Fase [X] Plano [Y]: [Nome] Resumo`
565
-
566
- One-liner SUBSTANCIAL: "Auth JWT com rotacao de refresh usando jose library" nao "Autenticacao implementada"
567
-
568
- **NOVO — Secao de verificacao funcional no SUMMARY:**
569
-
570
- ```markdown
571
- ## Verificacao Funcional
572
-
573
- | Task | Tipo | Verificacao | Resultado |
574
- |------|------|------------|-----------|
575
- | 1 | backend | curl POST /api/messages → 201 | PASSOU |
576
- | 2 | frontend | /chat renderiza, input existe | PASSOU |
577
- | 3 | integracao | enviar mensagem → aparece na lista | PASSOU |
578
- | 4 | backend | curl GET /api/messages → 200 + array | PASSOU |
579
-
580
- **Dev server:** ativo na porta {PORT}
581
- **Problemas de conexao frontend↔backend:** {0 | N encontrados e corrigidos}
582
- ```
583
- </step>
584
-
585
- <step name="cleanup_dev_server">
586
- **NAO matar o dev server ao finalizar o plano.**
587
- O proximo plano da mesma fase vai precisar dele.
588
- O servidor so e morto no final da FASE (pelo orquestrador executar-fase.md).
589
- </step>
590
-
591
- <step name="update_current_position">
592
- Atualizar STATE.md:
593
-
594
- ```bash
595
- node "$HOME/.claude/up/bin/up-tools.cjs" state advance-plan
596
- node "$HOME/.claude/up/bin/up-tools.cjs" state update-progress
597
- ```
598
- </step>
599
-
600
- <step name="update_roadmap">
601
- ```bash
602
- node "$HOME/.claude/up/bin/up-tools.cjs" roadmap update-plan-progress "${PHASE}"
603
- ```
604
- </step>
605
-
606
- <step name="update_requirements">
607
- Marcar requisitos completados do campo `requirements:` do frontmatter do PLAN.md:
608
-
609
- ```bash
610
- node "$HOME/.claude/up/bin/up-tools.cjs" requirements mark-complete ${REQ_IDS}
611
- ```
612
- </step>
613
-
614
- <step name="git_commit_metadata">
615
- Codigo da tarefa ja committed por tarefa. Commitar metadados do plano:
616
-
617
- ```bash
618
- node "$HOME/.claude/up/bin/up-tools.cjs" commit "docs({fase}-{plano}): completar plano [nome]" --files .plano/fases/XX-nome/{fase}-{plano}-SUMMARY.md .plano/STATE.md .plano/ROADMAP.md .plano/REQUIREMENTS.md
619
- ```
620
- </step>
621
-
622
- <step name="offer_next">
623
-
624
- **Se $BUILDER_MODE = true:**
625
- NAO mostrar menus ou sugerir proximos passos. Retornar resultado silenciosamente:
626
- ```markdown
627
- ## PLANO COMPLETO
628
-
629
- **Plano:** {fase}-{plano}
630
- **Tarefas:** {completadas}/{total}
631
- **Verificacao funcional:** {passed}/{total}
632
- ```
633
- O orquestrador do builder controla o que vem depois. FIM.
634
-
635
- **Se modo normal (interativo):**
636
-
637
- ```bash
638
- ls -1 .plano/fases/[dir-fase-atual]/*-PLAN.md 2>/dev/null | wc -l
639
- ls -1 .plano/fases/[dir-fase-atual]/*-SUMMARY.md 2>/dev/null | wc -l
640
- ```
641
-
642
- | Condicao | Rota | Acao |
643
- |----------|------|------|
644
- | summaries < plans | **A: Mais planos** | Encontrar proximo PLAN sem SUMMARY. Yolo: auto-continuar. Interativo: mostrar proximo plano. |
645
- | summaries = plans, atual < maior fase | **B: Fase pronta** | Mostrar conclusao, sugerir `/up:planejar-fase {Z+1}` |
646
- | summaries = plans, atual = maior fase | **C: Todas fases prontas** | Mostrar banner de conclusao |
647
- </step>
648
-
649
- </process>
650
-
651
- <success_criteria>
652
- - Todas tarefas do PLAN.md completadas
653
- - **Verificacao funcional passou por task (endpoint responde, pagina renderiza, acao funciona)**
654
- - **Integracao frontend↔backend verificada**
655
- - Todas verificacoes passam
656
- - SUMMARY.md criado com conteudo substancial E secao de verificacao funcional
657
- - STATE.md atualizado (posicao, decisoes, problemas, sessao)
658
- - ROADMAP.md atualizado
659
- </success_criteria>