@luanpdd/kit-mcp 1.29.0 → 1.30.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 (331) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +168 -168
  3. package/gates/agent-no-recursive-dispatch.md +82 -82
  4. package/kit/COMANDOS.md +138 -138
  5. package/kit/README.md +76 -76
  6. package/kit/agents/advisor-researcher.md +106 -106
  7. package/kit/agents/assumptions-analyzer.md +107 -107
  8. package/kit/agents/audit-log-implementer.md +313 -313
  9. package/kit/agents/auditor-consistencia-isolamento.md +413 -413
  10. package/kit/agents/b2b-saas-architect.md +156 -156
  11. package/kit/agents/cascading-failures-auditor.md +298 -298
  12. package/kit/agents/codebase-mapper.md +768 -768
  13. package/kit/agents/crm-pipeline-implementer.md +256 -256
  14. package/kit/agents/debugger.md +813 -813
  15. package/kit/agents/detector-tenant-quente.md +337 -337
  16. package/kit/agents/evolution-go-integrator.md +200 -200
  17. package/kit/agents/example-reviewer.md +21 -21
  18. package/kit/agents/executor.md +564 -564
  19. package/kit/agents/integration-checker.md +200 -200
  20. package/kit/agents/invite-flow-implementer.md +189 -189
  21. package/kit/agents/legacy-characterizer.md +368 -368
  22. package/kit/agents/lgpd-compliance-auditor.md +295 -295
  23. package/kit/agents/multi-tenant-isolation-auditor.md +253 -253
  24. package/kit/agents/multi-tenant-rls-writer.md +340 -340
  25. package/kit/agents/nyquist-auditor.md +178 -178
  26. package/kit/agents/observability-coverage-auditor.md +315 -315
  27. package/kit/agents/org-onboarding-implementer.md +223 -223
  28. package/kit/agents/payload-capture-instrumenter.md +273 -273
  29. package/kit/agents/phase-researcher.md +696 -696
  30. package/kit/agents/plan-checker.md +272 -272
  31. package/kit/agents/planner.md +922 -922
  32. package/kit/agents/project-researcher.md +652 -652
  33. package/kit/agents/refactor-safety-auditor.md +404 -404
  34. package/kit/agents/research-synthesizer.md +245 -245
  35. package/kit/agents/roadmapper.md +677 -677
  36. package/kit/agents/seam-finder.md +359 -359
  37. package/kit/agents/shotgun-surgery-detector.md +349 -349
  38. package/kit/agents/supabase-branching-architect.md +562 -562
  39. package/kit/agents/supabase-cicd-pipeline-implementer.md +777 -777
  40. package/kit/agents/supabase-column-privileges-writer.md +399 -399
  41. package/kit/agents/supabase-edge-fn-tester.md +287 -0
  42. package/kit/agents/supabase-edge-fn-writer.md +239 -210
  43. package/kit/agents/supabase-migration-writer.md +385 -385
  44. package/kit/agents/supabase-rbac-implementer.md +392 -392
  45. package/kit/agents/supabase-realtime-implementer.md +363 -267
  46. package/kit/agents/supabase-rls-hardener.md +521 -521
  47. package/kit/agents/supabase-rls-writer.md +323 -323
  48. package/kit/agents/supabase-roles-implementer.md +355 -355
  49. package/kit/agents/super-admin-implementer.md +281 -281
  50. package/kit/agents/ui-auditor.md +437 -437
  51. package/kit/agents/ui-checker.md +302 -302
  52. package/kit/agents/ui-researcher.md +355 -355
  53. package/kit/agents/user-profiler.md +175 -175
  54. package/kit/agents/validador-evolucao-schema.md +335 -335
  55. package/kit/agents/verifier.md +728 -728
  56. package/kit/commands/adicionar-backlog.md +75 -75
  57. package/kit/commands/adicionar-fase.md +42 -42
  58. package/kit/commands/adicionar-tarefa.md +45 -45
  59. package/kit/commands/adicionar-testes.md +41 -41
  60. package/kit/commands/ajuda.md +21 -21
  61. package/kit/commands/atualizar.md +37 -37
  62. package/kit/commands/auditar-cascading.md +111 -111
  63. package/kit/commands/auditar-marco.md +179 -179
  64. package/kit/commands/auditar-observabilidade-cobertura.md +183 -183
  65. package/kit/commands/auditar-refactor.md +219 -219
  66. package/kit/commands/auditar-release.md +109 -109
  67. package/kit/commands/auditar-uat.md +23 -23
  68. package/kit/commands/autonomo.md +40 -40
  69. package/kit/commands/branch-pr.md +24 -24
  70. package/kit/commands/burn-rate-status.md +408 -408
  71. package/kit/commands/capturar-payloads.md +193 -193
  72. package/kit/commands/caracterizar.md +212 -212
  73. package/kit/commands/concluir-marco.md +247 -247
  74. package/kit/commands/configuracoes.md +36 -36
  75. package/kit/commands/dados-distribuidos.md +188 -188
  76. package/kit/commands/definir-perfil.md +10 -10
  77. package/kit/commands/depurar.md +190 -190
  78. package/kit/commands/detectar-duplicacao.md +197 -197
  79. package/kit/commands/discutir-fase.md +131 -131
  80. package/kit/commands/encontrar-seams.md +136 -136
  81. package/kit/commands/entrar-discord.md +17 -17
  82. package/kit/commands/estatisticas.md +18 -18
  83. package/kit/commands/example-greeting.md +33 -33
  84. package/kit/commands/executar-fase.md +58 -58
  85. package/kit/commands/expresso.md +56 -56
  86. package/kit/commands/fase-ui.md +34 -34
  87. package/kit/commands/fazer.md +57 -57
  88. package/kit/commands/fio.md +125 -125
  89. package/kit/commands/fluxos-trabalho.md +64 -64
  90. package/kit/commands/forense.md +176 -176
  91. package/kit/commands/gerenciador.md +38 -38
  92. package/kit/commands/inserir-fase.md +31 -31
  93. package/kit/commands/legacy.md +263 -263
  94. package/kit/commands/limpeza.md +17 -17
  95. package/kit/commands/listar-hipoteses-fase.md +45 -45
  96. package/kit/commands/listar-workspaces.md +18 -18
  97. package/kit/commands/load-shedding.md +117 -117
  98. package/kit/commands/mapear-codebase.md +70 -70
  99. package/kit/commands/multi-tenant.md +163 -163
  100. package/kit/commands/nota.md +33 -33
  101. package/kit/commands/novo-marco.md +43 -43
  102. package/kit/commands/novo-projeto.md +41 -41
  103. package/kit/commands/novo-workspace.md +43 -43
  104. package/kit/commands/pausar-trabalho.md +37 -37
  105. package/kit/commands/perfil-usuario.md +45 -45
  106. package/kit/commands/pesquisar-fase.md +195 -195
  107. package/kit/commands/planejar-fase.md +67 -67
  108. package/kit/commands/planejar-lacunas.md +33 -33
  109. package/kit/commands/plantar-ideia.md +25 -25
  110. package/kit/commands/progresso.md +24 -24
  111. package/kit/commands/proximo.md +30 -30
  112. package/kit/commands/publicar.md +490 -490
  113. package/kit/commands/rapido.md +35 -35
  114. package/kit/commands/reaplicar-patches.md +124 -124
  115. package/kit/commands/refactor-seguro.md +321 -321
  116. package/kit/commands/relatorio-sessao.md +19 -19
  117. package/kit/commands/remover-fase.md +31 -31
  118. package/kit/commands/remover-workspace.md +26 -26
  119. package/kit/commands/resumo-marco.md +50 -50
  120. package/kit/commands/retomar-trabalho.md +40 -40
  121. package/kit/commands/revisar-backlog.md +60 -60
  122. package/kit/commands/revisar-ui.md +32 -32
  123. package/kit/commands/revisar.md +37 -37
  124. package/kit/commands/saude.md +21 -21
  125. package/kit/commands/setup-notion.md +93 -93
  126. package/kit/commands/storytelling.md +179 -179
  127. package/kit/commands/supabase.md +30 -7
  128. package/kit/commands/sync-main.md +68 -68
  129. package/kit/commands/validar-fase.md +35 -35
  130. package/kit/commands/verificar-tarefas.md +44 -44
  131. package/kit/commands/verificar-trabalho.md +64 -64
  132. package/kit/file-manifest.json +15 -8
  133. package/kit/framework/bin/lib/commands.cjs +959 -959
  134. package/kit/framework/bin/lib/config.cjs +442 -442
  135. package/kit/framework/bin/lib/core.cjs +1230 -1230
  136. package/kit/framework/bin/lib/frontmatter.cjs +336 -336
  137. package/kit/framework/bin/lib/init.cjs +1442 -1442
  138. package/kit/framework/bin/lib/milestone.cjs +252 -252
  139. package/kit/framework/bin/lib/model-profiles.cjs +68 -68
  140. package/kit/framework/bin/lib/phase.cjs +888 -888
  141. package/kit/framework/bin/lib/profile-output.cjs +952 -952
  142. package/kit/framework/bin/lib/profile-pipeline.cjs +539 -539
  143. package/kit/framework/bin/lib/roadmap.cjs +329 -329
  144. package/kit/framework/bin/lib/security.cjs +382 -382
  145. package/kit/framework/bin/lib/state.cjs +1031 -1031
  146. package/kit/framework/bin/lib/template.cjs +222 -222
  147. package/kit/framework/bin/lib/uat.cjs +282 -282
  148. package/kit/framework/bin/lib/verify.cjs +888 -888
  149. package/kit/framework/bin/lib/workstream.cjs +491 -491
  150. package/kit/framework/bin/tools.cjs +918 -918
  151. package/kit/framework/commands/workstreams.md +63 -63
  152. package/kit/framework/references/checkpoints.md +778 -778
  153. package/kit/framework/references/continuation-format.md +249 -249
  154. package/kit/framework/references/decimal-phase-calculation.md +64 -64
  155. package/kit/framework/references/git-integration.md +295 -295
  156. package/kit/framework/references/git-planning-commit.md +38 -38
  157. package/kit/framework/references/model-profile-resolution.md +36 -36
  158. package/kit/framework/references/model-profiles.md +139 -139
  159. package/kit/framework/references/phase-argument-parsing.md +61 -61
  160. package/kit/framework/references/planning-config.md +202 -202
  161. package/kit/framework/references/questioning.md +162 -162
  162. package/kit/framework/references/tdd.md +263 -263
  163. package/kit/framework/references/ui-brand.md +160 -160
  164. package/kit/framework/references/user-profiling.md +657 -657
  165. package/kit/framework/references/verification-patterns.md +612 -612
  166. package/kit/framework/references/workstream-flag.md +58 -58
  167. package/kit/framework/templates/DEBUG.md +164 -164
  168. package/kit/framework/templates/UAT.md +265 -265
  169. package/kit/framework/templates/UI-SPEC.md +100 -100
  170. package/kit/framework/templates/VALIDATION.md +76 -76
  171. package/kit/framework/templates/claude-md.md +122 -122
  172. package/kit/framework/templates/codebase/architecture.md +185 -185
  173. package/kit/framework/templates/codebase/concerns.md +205 -205
  174. package/kit/framework/templates/codebase/conventions.md +204 -204
  175. package/kit/framework/templates/codebase/integrations.md +192 -192
  176. package/kit/framework/templates/codebase/stack.md +158 -158
  177. package/kit/framework/templates/codebase/structure.md +199 -199
  178. package/kit/framework/templates/codebase/testing.md +301 -301
  179. package/kit/framework/templates/config.json +44 -44
  180. package/kit/framework/templates/context.md +352 -352
  181. package/kit/framework/templates/continue-here.md +78 -78
  182. package/kit/framework/templates/copilot-instructions.md +7 -7
  183. package/kit/framework/templates/debug-subagent-prompt.md +91 -91
  184. package/kit/framework/templates/dev-preferences.md +20 -20
  185. package/kit/framework/templates/discovery.md +146 -146
  186. package/kit/framework/templates/discussion-log.md +63 -63
  187. package/kit/framework/templates/milestone-archive.md +123 -123
  188. package/kit/framework/templates/milestone.md +115 -115
  189. package/kit/framework/templates/phase-prompt.md +610 -610
  190. package/kit/framework/templates/planner-subagent-prompt.md +117 -117
  191. package/kit/framework/templates/project.md +186 -186
  192. package/kit/framework/templates/requirements.md +231 -231
  193. package/kit/framework/templates/research-project/ARCHITECTURE.md +204 -204
  194. package/kit/framework/templates/research-project/FEATURES.md +147 -147
  195. package/kit/framework/templates/research-project/PITFALLS.md +200 -200
  196. package/kit/framework/templates/research-project/STACK.md +120 -120
  197. package/kit/framework/templates/research-project/SUMMARY.md +170 -170
  198. package/kit/framework/templates/research.md +419 -419
  199. package/kit/framework/templates/retrospective.md +54 -54
  200. package/kit/framework/templates/roadmap.md +202 -202
  201. package/kit/framework/templates/state.md +176 -176
  202. package/kit/framework/templates/summary-complex.md +59 -59
  203. package/kit/framework/templates/summary-minimal.md +41 -41
  204. package/kit/framework/templates/summary-standard.md +48 -48
  205. package/kit/framework/templates/summary.md +209 -209
  206. package/kit/framework/templates/user-profile.md +146 -146
  207. package/kit/framework/templates/user-setup.md +256 -256
  208. package/kit/framework/templates/verification-report.md +258 -258
  209. package/kit/framework/workflows/add-phase.md +112 -112
  210. package/kit/framework/workflows/add-tests.md +351 -351
  211. package/kit/framework/workflows/add-todo.md +158 -158
  212. package/kit/framework/workflows/audit-milestone.md +340 -340
  213. package/kit/framework/workflows/audit-uat.md +109 -109
  214. package/kit/framework/workflows/autonomous.md +891 -891
  215. package/kit/framework/workflows/check-todos.md +177 -177
  216. package/kit/framework/workflows/cleanup.md +152 -152
  217. package/kit/framework/workflows/complete-milestone.md +696 -696
  218. package/kit/framework/workflows/diagnose-issues.md +231 -231
  219. package/kit/framework/workflows/discovery-phase.md +289 -289
  220. package/kit/framework/workflows/discuss-phase-assumptions.md +653 -653
  221. package/kit/framework/workflows/discuss-phase.md +784 -784
  222. package/kit/framework/workflows/do.md +104 -104
  223. package/kit/framework/workflows/execute-phase.md +838 -838
  224. package/kit/framework/workflows/execute-plan.md +510 -510
  225. package/kit/framework/workflows/fast.md +102 -102
  226. package/kit/framework/workflows/forensics.md +265 -265
  227. package/kit/framework/workflows/health.md +181 -181
  228. package/kit/framework/workflows/help.md +619 -619
  229. package/kit/framework/workflows/insert-phase.md +130 -130
  230. package/kit/framework/workflows/list-phase-assumptions.md +178 -178
  231. package/kit/framework/workflows/list-workspaces.md +56 -56
  232. package/kit/framework/workflows/manager.md +362 -362
  233. package/kit/framework/workflows/map-codebase.md +377 -377
  234. package/kit/framework/workflows/milestone-summary.md +223 -223
  235. package/kit/framework/workflows/new-milestone.md +486 -486
  236. package/kit/framework/workflows/new-project.md +1159 -1159
  237. package/kit/framework/workflows/new-workspace.md +237 -237
  238. package/kit/framework/workflows/next.md +97 -97
  239. package/kit/framework/workflows/node-repair.md +92 -92
  240. package/kit/framework/workflows/note.md +156 -156
  241. package/kit/framework/workflows/pause-work.md +176 -176
  242. package/kit/framework/workflows/plan-milestone-gaps.md +273 -273
  243. package/kit/framework/workflows/plan-phase.md +765 -765
  244. package/kit/framework/workflows/plant-seed.md +169 -169
  245. package/kit/framework/workflows/pr-branch.md +129 -129
  246. package/kit/framework/workflows/profile-user.md +450 -450
  247. package/kit/framework/workflows/progress.md +507 -507
  248. package/kit/framework/workflows/quick.md +757 -757
  249. package/kit/framework/workflows/remove-phase.md +155 -155
  250. package/kit/framework/workflows/remove-workspace.md +90 -90
  251. package/kit/framework/workflows/research-phase.md +82 -82
  252. package/kit/framework/workflows/resume-project.md +326 -326
  253. package/kit/framework/workflows/review.md +228 -228
  254. package/kit/framework/workflows/session-report.md +146 -146
  255. package/kit/framework/workflows/settings.md +283 -283
  256. package/kit/framework/workflows/ship.md +228 -228
  257. package/kit/framework/workflows/stats.md +60 -60
  258. package/kit/framework/workflows/transition.md +671 -671
  259. package/kit/framework/workflows/ui-phase.md +302 -302
  260. package/kit/framework/workflows/ui-review.md +165 -165
  261. package/kit/framework/workflows/update.md +323 -323
  262. package/kit/framework/workflows/validate-phase.md +174 -174
  263. package/kit/framework/workflows/verify-phase.md +252 -252
  264. package/kit/framework/workflows/verify-work.md +637 -637
  265. package/kit/hooks/check-update.js +118 -118
  266. package/kit/hooks/context-monitor.js +163 -163
  267. package/kit/hooks/kit-attribution-reminder.cjs +98 -0
  268. package/kit/hooks/prompt-guard.js +103 -103
  269. package/kit/hooks/statusline.js +125 -125
  270. package/kit/hooks/workflow-guard.js +101 -101
  271. package/kit/settings.json +45 -45
  272. package/kit/skills/_shared-supabase/glossary.md +17 -0
  273. package/kit/skills/ai-prompt-characterization/SKILL.md +335 -335
  274. package/kit/skills/armadilhas-sistemas-distribuidos/SKILL.md +447 -447
  275. package/kit/skills/audit-log-multi-tenant/SKILL.md +340 -340
  276. package/kit/skills/b2b-saas-architecture/SKILL.md +300 -300
  277. package/kit/skills/consistencia-leitura-replica/SKILL.md +385 -385
  278. package/kit/skills/crm-lead-pipeline-patterns/SKILL.md +343 -343
  279. package/kit/skills/escolha-modelo-consistencia/SKILL.md +494 -494
  280. package/kit/skills/evolucao-schema-compativel/SKILL.md +448 -448
  281. package/kit/skills/evolution-go-whatsapp-integration/SKILL.md +322 -322
  282. package/kit/skills/example-skill/SKILL.md +42 -42
  283. package/kit/skills/legacy-api-only-applications/SKILL.md +358 -358
  284. package/kit/skills/legacy-characterization-tests/SKILL.md +330 -330
  285. package/kit/skills/legacy-effect-analysis/SKILL.md +331 -331
  286. package/kit/skills/legacy-extract-class/SKILL.md +203 -203
  287. package/kit/skills/legacy-programming-by-difference/SKILL.md +252 -252
  288. package/kit/skills/legacy-seams-and-test-harness/SKILL.md +460 -460
  289. package/kit/skills/legacy-shotgun-surgery/SKILL.md +286 -286
  290. package/kit/skills/legacy-sprout-wrap-techniques/SKILL.md +434 -434
  291. package/kit/skills/legacy-storytelling-naked-crc/SKILL.md +270 -270
  292. package/kit/skills/lgpd-multi-tenant-compliance/SKILL.md +340 -340
  293. package/kit/skills/member-invite-flow/SKILL.md +305 -305
  294. package/kit/skills/member-management-react-shadcn/SKILL.md +328 -328
  295. package/kit/skills/multi-tenant-performance-scaling/SKILL.md +316 -316
  296. package/kit/skills/multi-tenant-rls-hierarchy/SKILL.md +342 -342
  297. package/kit/skills/org-onboarding-flow/SKILL.md +257 -257
  298. package/kit/skills/org-switcher-react-pattern/SKILL.md +349 -349
  299. package/kit/skills/permission-gate-react-pattern/SKILL.md +271 -271
  300. package/kit/skills/postgres-isolamento-concorrencia/SKILL.md +552 -552
  301. package/kit/skills/pre-refactor-characterization/SKILL.md +421 -421
  302. package/kit/skills/rbac-permissions-matrix-supabase/SKILL.md +338 -338
  303. package/kit/skills/streams-eventos-cdc/SKILL.md +711 -711
  304. package/kit/skills/supabase-branching-workflow/SKILL.md +544 -544
  305. package/kit/skills/supabase-ci-cd-github-actions/SKILL.md +880 -880
  306. package/kit/skills/supabase-column-level-security/SKILL.md +426 -426
  307. package/kit/skills/supabase-config-toml-remotes/SKILL.md +807 -807
  308. package/kit/skills/supabase-custom-claims-rbac/SKILL.md +472 -472
  309. package/kit/skills/supabase-edge-functions/SKILL.md +229 -141
  310. package/kit/skills/supabase-edge-functions-auth/SKILL.md +309 -0
  311. package/kit/skills/supabase-edge-functions-limits/SKILL.md +302 -0
  312. package/kit/skills/supabase-edge-functions-mcp-server/SKILL.md +279 -0
  313. package/kit/skills/supabase-edge-functions-testing/SKILL.md +277 -0
  314. package/kit/skills/supabase-edge-runtime-builtins/SKILL.md +357 -0
  315. package/kit/skills/supabase-migration-repair/SKILL.md +823 -823
  316. package/kit/skills/supabase-migrations/SKILL.md +297 -297
  317. package/kit/skills/supabase-pgtap-testing/SKILL.md +1053 -1053
  318. package/kit/skills/supabase-postgres-roles/SKILL.md +392 -392
  319. package/kit/skills/supabase-realtime/SKILL.md +460 -236
  320. package/kit/skills/supabase-rls-defense-in-depth/SKILL.md +418 -418
  321. package/kit/skills/supabase-rls-policies/SKILL.md +635 -635
  322. package/kit/skills/super-admin-platform-pattern/SKILL.md +326 -326
  323. package/kit/skills/tenant-quente-mitigacao/SKILL.md +605 -605
  324. package/kit/skills/whatsapp-conversation-state-machine/SKILL.md +287 -287
  325. package/package.json +1 -1
  326. package/src/core/kit.js +216 -216
  327. package/src/core/reflect.js +247 -247
  328. package/src/core/reverse-sync.js +372 -372
  329. package/src/core/sync.js +418 -418
  330. package/src/core/watch.js +121 -121
  331. package/src/mcp-server/index.js +715 -693
@@ -1,838 +1,838 @@
1
- <purpose>
2
- Executar todos os planos de uma fase usando execução paralela em ondas. O orquestrador permanece enxuto — delega execução de planos para subagentes.
3
- </purpose>
4
-
5
- <core_principle>
6
- O orquestrador coordena, não executa. Cada subagente carrega o contexto completo do execute-plan. Orquestrador: descobrir planos → analisar deps → agrupar em ondas → criar agentes → lidar com checkpoints → coletar resultados.
7
- </core_principle>
8
-
9
- <runtime_compatibility>
10
- **Criação de subagentes é específica do runtime:**
11
- - **Claude Code:** Usa `Task(subagent_type="executor", ...)` — bloqueia até concluir, retorna resultado
12
- - **Copilot:** Criação de subagentes não retorna sinais de conclusão de forma confiável. **Padrão é execução sequencial inline**: ler e seguir execute-plan.md diretamente para cada plano em vez de criar agentes paralelos. Só tente paralelismo se o usuário solicitar explicitamente — e nesse caso, use o fallback de spot-check no passo 3 para detectar conclusão.
13
- - **Outros runtimes:** Se a ferramenta `Task`/`task` não estiver disponível, use execução sequencial inline como fallback. Verifique disponibilidade da ferramenta em runtime em vez de assumir pelo nome do runtime.
14
-
15
- **Regra de fallback:** Se um agente criado conclui seu trabalho (commits visíveis, SUMMARY.md existe) mas o orquestrador nunca recebe o sinal de conclusão, tratar como bem-sucedido com base em spot-checks e continuar para próxima onda/plano. Nunca bloquear indefinidamente aguardando sinal — sempre verificar via filesystem e estado do git.
16
- </runtime_compatibility>
17
-
18
- <required_reading>
19
- Ler STATE.md antes de qualquer operação para carregar contexto do projeto.
20
- </required_reading>
21
-
22
- <available_agent_types>
23
- Tipos de subagentes framework válidos registrados em .claude/agents/ (ou equivalente para seu runtime).
24
- Sempre use o nome exato desta lista — não use 'general-purpose' ou outros tipos embutidos como fallback:
25
-
26
- - executor — Executa tarefas do plano, commits, cria SUMMARY.md
27
- - verifier — Verifica conclusão de fase, verifica quality gates
28
- - planner — Cria planos detalhados a partir do escopo da fase
29
- - phase-researcher — Pesquisa abordagens técnicas para uma fase
30
- - plan-checker — Revisa qualidade do plano antes da execução
31
- - debugger — Diagnostica e corrige problemas
32
- - codebase-mapper — Mapeia estrutura do projeto e dependências
33
- - integration-checker — Verifica integração entre fases
34
- - nyquist-auditor — Valida cobertura de verificação
35
- - ui-researcher — Pesquisa abordagens de UI/UX
36
- - ui-checker — Revisa qualidade de implementação de UI
37
- - ui-auditor — Audita UI em relação aos requisitos de design
38
- </available_agent_types>
39
-
40
- <process>
41
-
42
- <step name="parse_args" priority="first">
43
- Analisar `$ARGUMENTS` antes de carregar qualquer contexto:
44
-
45
- - Primeiro token posicional → `PHASE_ARG`
46
- - `--wave N` opcional → `WAVE_FILTER`
47
- - `--gaps-only` opcional mantém seu significado atual
48
-
49
- Se `--wave` estiver ausente, preservar o comportamento atual de executar todas as ondas incompletas na fase.
50
- </step>
51
-
52
- <step name="initialize" priority="first">
53
- Carregar todo o contexto em uma chamada:
54
-
55
- ```bash
56
- INIT=$(node "./.claude/framework/bin/tools.cjs" init execute-phase "${PHASE_ARG}")
57
- if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
58
- AGENT_SKILLS=$(node "./.claude/framework/bin/tools.cjs" agent-skills executor 2>/dev/null)
59
- ```
60
-
61
- Analisar JSON para: `executor_model`, `verifier_model`, `commit_docs`, `parallelization`, `branching_strategy`, `branch_name`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `plans`, `incomplete_plans`, `plan_count`, `incomplete_count`, `state_exists`, `roadmap_exists`, `phase_req_ids`.
62
-
63
- **Se `phase_found` for false:** Erro — diretório de fase não encontrado.
64
- **Se `plan_count` for 0:** Erro — nenhum plano encontrado na fase.
65
- **Se `state_exists` for false mas `.planning/` existir:** Oferecer reconstruir ou continuar.
66
-
67
- Quando `parallelization` for false, planos dentro de uma onda executam sequencialmente.
68
-
69
- **Detecção de runtime para Copilot:**
70
- Verificar se o runtime atual é Copilot testando o padrão de agente `@executor`
71
- ou ausência da API de subagente `Task()`. Se rodando no Copilot, forçar execução sequencial inline
72
- independente da configuração `parallelization` — os sinais de conclusão de subagentes do Copilot
73
- são não confiáveis (ver `<runtime_compatibility>`). Definir `COPILOT_SEQUENTIAL=true`
74
- internamente e pular o passo `execute_waves` em favor do caminho inline do `check_interactive_mode`
75
- para cada plano.
76
-
77
- **OBRIGATÓRIO — Sincronizar flag de cadeia com intenção.** Se o usuário invocou manualmente (sem `--auto`), limpar a flag de cadeia efêmera de qualquer cadeia `--auto` anterior interrompida. Isso impede que `_auto_chain_active: true` obsoleto cause avanço automático indesejado. Isso NÃO toca em `workflow.auto_advance` (preferência persistente do usuário). Você DEVE executar este bloco bash antes de qualquer leitura de config:
78
- ```bash
79
- # OBRIGATÓRIO: impede auto-cadeia obsoleta de execuções --auto anteriores
80
- if [[ ! "$ARGUMENTS" =~ --auto ]]; then
81
- node "./.claude/framework/bin/tools.cjs" config-set workflow._auto_chain_active false 2>/dev/null
82
- fi
83
- ```
84
- </step>
85
-
86
- <step name="check_interactive_mode">
87
- **Analisar flag `--interactive` de $ARGUMENTS.**
88
-
89
- **Se flag `--interactive` presente:** Alternar para modo de execução interativo.
90
-
91
- Modo interativo executa planos sequencialmente **inline** (sem criação de subagentes) com
92
- checkpoints do usuário entre tarefas. O usuário pode revisar, modificar ou redirecionar o trabalho a qualquer momento.
93
-
94
- **Fluxo de execução interativo:**
95
-
96
- 1. Carregar inventário de planos normalmente (discover_and_group_plans)
97
- 2. Para cada plano (sequencialmente, ignorando agrupamento de ondas):
98
-
99
- a. **Apresentar o plano ao usuário:**
100
- ```
101
- ## Plano {plan_id}: {plan_name}
102
-
103
- Objetivo: {do arquivo do plano}
104
- Tarefas: {task_count}
105
-
106
- Opções:
107
- - Executar (prosseguir com todas as tarefas)
108
- - Revisar primeiro (mostrar detalhamento de tarefas antes de começar)
109
- - Pular (ir para próximo plano)
110
- - Parar (encerrar execução, salvar progresso)
111
- ```
112
-
113
- b. **Se "Revisar primeiro":** Ler e exibir o arquivo do plano completo. Perguntar novamente: Executar, Modificar, Pular.
114
-
115
- c. **Se "Executar":** Ler e seguir `./.claude/framework/workflows/execute-plan.md` **inline**
116
- (NÃO criar subagente). Executar tarefas uma por vez.
117
-
118
- d. **Após cada tarefa:** Pausar brevemente. Se o usuário intervir (digitar qualquer coisa), parar e resolver
119
- o feedback antes de continuar. Caso contrário, prosseguir para próxima tarefa.
120
-
121
- e. **Após plano concluído:** Mostrar resultados, commitar, criar SUMMARY.md, então apresentar próximo plano.
122
-
123
- 3. Após todos os planos: prosseguir para verificação (mesmo que modo normal).
124
-
125
- **Benefícios do modo interativo:**
126
- - Sem overhead de subagente — uso de tokens dramaticamente menor
127
- - Usuário detecta erros cedo — economiza ciclos de verificação custosos
128
- - Mantém estrutura de planejamento/rastreamento do framework
129
- - Melhor para: fases pequenas, correções de bugs, lacunas de verificação, aprendendo framework
130
-
131
- **Pular para passo handle_branching** (planos interativos executam inline após agrupamento).
132
- </step>
133
-
134
- <step name="handle_branching">
135
- Verificar `branching_strategy` do init:
136
-
137
- **"none":** Pular, continuar no branch atual.
138
-
139
- **"phase" ou "milestone":** Usar `branch_name` pré-computado do init:
140
- ```bash
141
- git checkout -b "$BRANCH_NAME" 2>/dev/null || git checkout "$BRANCH_NAME"
142
- ```
143
-
144
- Todos os commits subsequentes vão para este branch. Usuário gerencia o merge.
145
- </step>
146
-
147
- <step name="validate_phase">
148
- Do JSON do init: `phase_dir`, `plan_count`, `incomplete_count`.
149
-
150
- Reportar: "Encontrados {plan_count} planos em {phase_dir} ({incomplete_count} incompletos)"
151
-
152
- **Atualizar STATE.md para início de fase:**
153
- ```bash
154
- node "./.claude/framework/bin/tools.cjs" state begin-phase --phase "${PHASE_NUMBER}" --name "${PHASE_NAME}" --plans "${PLAN_COUNT}"
155
- ```
156
- Isso atualiza Status, Última Atividade, Foco Atual, Posição Atual e contagens de planos no STATE.md para que o frontmatter e o texto do corpo reflitam a fase ativa imediatamente.
157
- </step>
158
-
159
- <step name="discover_and_group_plans">
160
- Carregar inventário de planos com agrupamento de ondas em uma chamada:
161
-
162
- ```bash
163
- PLAN_INDEX=$(node "./.claude/framework/bin/tools.cjs" phase-plan-index "${PHASE_NUMBER}")
164
- ```
165
-
166
- Analisar JSON para: `phase`, `plans[]` (cada um com `id`, `wave`, `autonomous`, `objective`, `files_modified`, `task_count`, `has_summary`), `waves` (mapa de número de onda → IDs de plano), `incomplete`, `has_checkpoints`.
167
-
168
- **Filtragem:** Pular planos onde `has_summary: true`. Se `--gaps-only`: também pular planos não gap_closure. Se `WAVE_FILTER` definido: também pular planos cujo `wave` não seja igual a `WAVE_FILTER`.
169
-
170
- **Verificação de segurança de onda:** Se `WAVE_FILTER` estiver definido e ainda houver planos incompletos em qualquer onda anterior que correspondam ao modo de execução atual, PARAR e dizer ao usuário para terminar as ondas anteriores primeiro. Não deixar Onda 2+ executar enquanto planos de ondas prerequisito anteriores permanecerem incompletos.
171
-
172
- Se todos filtrados: "Nenhum plano incompleto correspondente" → sair.
173
-
174
- Reportar:
175
- ```
176
- ## Plano de Execução
177
-
178
- **Fase {X}: {Nome}** — {total_plans} planos correspondentes em {wave_count} onda(s)
179
-
180
- {Se WAVE_FILTER definido: `Filtro de onda ativo: executando apenas Onda {WAVE_FILTER}`.}
181
-
182
- | Onda | Planos | O que constrói |
183
- |------|--------|----------------|
184
- | 1 | 01-01, 01-02 | {dos objetivos dos planos, 3-8 palavras} |
185
- | 2 | 01-03 | ... |
186
- ```
187
- </step>
188
-
189
- <step name="execute_waves">
190
- Executar cada onda selecionada em sequência. Dentro de uma onda: paralelo se `PARALLELIZATION=true`, sequencial se `false`.
191
-
192
- **Para cada onda:**
193
-
194
- 1. **Descrever o que está sendo construído (ANTES de criar agentes):**
195
-
196
- Ler o `<objective>` de cada plano. Extrair o que está sendo construído e por quê.
197
-
198
- ```
199
- ---
200
- ## Onda {N}
201
-
202
- **{ID do Plano}: {Nome do Plano}**
203
- {2-3 frases: o que constrói, abordagem técnica, por que importa}
204
-
205
- Criando {count} agente(s)...
206
- ---
207
- ```
208
-
209
- - Ruim: "Executando plano de geração de terreno"
210
- - Bom: "Gerador de terreno procedural usando ruído Perlin — cria mapas de altura, zonas de bioma e malhas de colisão. Necessário antes que a física de veículos possa interagir com o solo."
211
-
212
- 2. **Criar agentes executores:**
213
-
214
- Passar apenas caminhos — executores leem arquivos com seu contexto fresco.
215
- Para modelos 200k, isso mantém o contexto do orquestrador enxuto (~10-15%).
216
- Para modelos 1M+ (Opus 4.6, Sonnet 4.6), contexto mais rico pode ser passado diretamente.
217
-
218
- ```
219
- Task(
220
- subagent_type="executor",
221
- model="{executor_model}",
222
- isolation="worktree",
223
- prompt="
224
- <objective>
225
- Execute plan {plan_number} of phase {phase_number}-{phase_name}.
226
- Commit each task atomically. Create SUMMARY.md. Update STATE.md and ROADMAP.md.
227
- </objective>
228
-
229
- <parallel_execution>
230
- You are running as a PARALLEL executor agent. Use --no-verify on all git
231
- commits to avoid pre-commit hook contention with other agents. The
232
- orchestrator validates hooks once after all agents complete.
233
- For tools commits: add --no-verify flag.
234
- For direct git commits: use git commit --no-verify -m "..."
235
- </parallel_execution>
236
-
237
- <execution_context>
238
- @./.claude/framework/workflows/execute-plan.md
239
- @./.claude/framework/templates/summary.md
240
- @./.claude/framework/references/checkpoints.md
241
- @./.claude/framework/references/tdd.md
242
- </execution_context>
243
-
244
- <files_to_read>
245
- Read these files at execution start using the Read tool:
246
- - {phase_dir}/{plan_file} (Plan)
247
- - .planning/PROJECT.md (Project context — core value, requirements, evolution rules)
248
- - .planning/STATE.md (State)
249
- - .planning/config.json (Config, if exists)
250
- - ./CLAUDE.md (Project instructions, if exists — follow project-specific guidelines and coding conventions)
251
- - .claude/skills/ or .agents/skills/ (Project skills, if either exists — list skills, read SKILL.md for each, follow relevant rules during implementation)
252
- </files_to_read>
253
-
254
- ${AGENT_SKILLS}
255
-
256
- <mcp_tools>
257
- If CLAUDE.md or project instructions reference MCP tools (e.g. jCodeMunch, context7,
258
- or other MCP servers), prefer those tools over Grep/Glob for code navigation when available.
259
- MCP tools often save significant tokens by providing structured code indexes.
260
- Check tool availability first — if MCP tools are not accessible, fall back to Grep/Glob.
261
- </mcp_tools>
262
-
263
- <success_criteria>
264
- - [ ] All tasks executed
265
- - [ ] Each task committed individually
266
- - [ ] SUMMARY.md created in plan directory
267
- - [ ] STATE.md updated with position and decisions
268
- - [ ] ROADMAP.md updated with plan progress (via `roadmap update-plan-progress`)
269
- </success_criteria>
270
- "
271
- )
272
- ```
273
-
274
- 3. **Aguardar todos os agentes da onda concluírem.**
275
-
276
- **Fallback de sinal de conclusão (Copilot e runtimes onde Task() pode não retornar):**
277
-
278
- Se um agente criado não retornar sinal de conclusão mas parecer ter terminado
279
- seu trabalho, NÃO bloquear indefinidamente. Em vez disso, verificar conclusão via spot-checks:
280
-
281
- ```bash
282
- # Para cada plano nesta onda, verificar se o executor terminou:
283
- SUMMARY_EXISTS=$(test -f "{phase_dir}/{plan_number}-{plan_padded}-SUMMARY.md" && echo "true" || echo "false")
284
- COMMITS_FOUND=$(git log --oneline --all --grep="{phase_number}-{plan_padded}" --since="1 hour ago" | head -1)
285
- ```
286
-
287
- **Se SUMMARY.md existir E commits forem encontrados:** O agente concluiu com sucesso —
288
- tratar como concluído e prosseguir para passo 4. Logar: `"✓ {Plan ID} concluído (verificado via spot-check — sinal de conclusão não recebido)"`
289
-
290
- **Se SUMMARY.md NÃO existir após espera razoável:** O agente pode ainda estar
291
- rodando ou pode ter falhado silenciosamente. Verificar `git log --oneline -5` por
292
- atividade recente. Se commits ainda aparecerem, aguardar mais. Se sem atividade, reportar
293
- o plano como falhado e encaminhar para o manipulador de falhas no passo 5.
294
-
295
- **Este fallback se aplica automaticamente a todos os runtimes.** Task() do Claude Code normalmente
296
- retorna de forma síncrona, mas o fallback garante resiliência se não retornar.
297
-
298
- 4. **Validação de hook pós-onda (somente modo paralelo):**
299
-
300
- Quando agentes commitaram com `--no-verify`, executar hooks pre-commit uma vez após a onda:
301
- ```bash
302
- # Executar hooks pre-commit do projeto no estado atual
303
- git diff --cached --quiet || git stash # fazer stash de mudanças não staged
304
- git hook run pre-commit 2>&1 || echo "⚠ Hooks pre-commit falharam — revisar antes de continuar"
305
- ```
306
- Se hooks falharem: reportar a falha e perguntar "Corrigir problemas de hook agora?" ou "Continuar para próxima onda?"
307
-
308
- 5. **Reportar conclusão — verificar claims via spot-check primeiro:**
309
-
310
- Para cada SUMMARY.md:
311
- - Verificar se os primeiros 2 arquivos de `key-files.created` existem no disco
312
- - Verificar se `git log --oneline --all --grep="{phase}-{plan}"` retorna ≥1 commit
313
- - Verificar marcador `## Self-Check: FAILED`
314
-
315
- Se QUALQUER spot-check falhar: reportar qual plano falhou, encaminhar para manipulador de falhas — perguntar "Tentar plano novamente?" ou "Continuar com ondas restantes?"
316
-
317
- Se passar:
318
- ```
319
- ---
320
- ## Onda {N} Concluída
321
-
322
- **{ID do Plano}: {Nome do Plano}**
323
- {O que foi construído — do SUMMARY.md}
324
- {Desvios notáveis, se houver}
325
-
326
- {Se mais ondas: o que isso habilita para a próxima onda}
327
- ---
328
- ```
329
-
330
- - Ruim: "Onda 2 concluída. Prosseguindo para Onda 3."
331
- - Bom: "Sistema de terreno concluído — 3 tipos de bioma, texturização baseada em altura, malhas de colisão de física. Física de veículos (Onda 3) agora pode referenciar superfícies do solo."
332
-
333
- 5. **Tratar falhas:**
334
-
335
- **Bug conhecido do Claude Code (classifyHandoffIfNeeded):** Se um agente reportar "falhado" com erro contendo `classifyHandoffIfNeeded is not defined`, este é um bug de runtime do Claude Code — não um problema do framework ou do agente. O erro dispara no manipulador de conclusão APÓS todas as chamadas de ferramenta terminarem. Neste caso: executar os mesmos spot-checks do passo 4 (SUMMARY.md existe, commits presentes, sem Self-Check: FAILED). Se spot-checks PASSAREM → tratar como **bem-sucedido**. Se spot-checks FALHAREM → tratar como falha real abaixo.
336
-
337
- Para falhas reais: reportar qual plano falhou → perguntar "Continuar?" ou "Parar?" → se continuar, planos dependentes podem também falhar. Se parar, relatório de conclusão parcial.
338
-
339
- 5b. **Verificação de dependência pré-onda (ondas 2+ apenas):**
340
-
341
- Antes de criar onda N+1, para cada plano na onda seguinte:
342
- ```bash
343
- node "./.claude/framework/bin/tools.cjs" verify key-links {phase_dir}/{plan}-PLAN.md
344
- ```
345
-
346
- Se qualquer key-link de artefato de onda ANTERIOR falhar na verificação:
347
-
348
- ## Lacuna de Conexão Entre Planos
349
-
350
- | Plano | Link | De | Padrão Esperado | Status |
351
- |-------|------|----|-----------------|--------|
352
- | {plan} | {via} | {from} | {pattern} | NÃO ENCONTRADO |
353
-
354
- Artefatos da Onda {N} podem não estar corretamente conectados. Opções:
355
- 1. Investigar e corrigir antes de continuar
356
- 2. Continuar (pode causar falhas em cascata na onda {N+1})
357
-
358
- Key-links referenciando arquivos na onda ATUAL (próxima) são ignorados.
359
-
360
- 6. **Executar planos de checkpoint entre ondas** — ver `<checkpoint_handling>`.
361
-
362
- 7. **Prosseguir para próxima onda.**
363
- </step>
364
-
365
- <step name="checkpoint_handling">
366
- Planos com `autonomous: false` requerem interação do usuário.
367
-
368
- **Tratamento de checkpoint em modo automático:**
369
-
370
- Ler config de avanço automático (flag de cadeia + preferência do usuário):
371
- ```bash
372
- AUTO_CHAIN=$(node "./.claude/framework/bin/tools.cjs" config-get workflow._auto_chain_active 2>/dev/null || echo "false")
373
- AUTO_CFG=$(node "./.claude/framework/bin/tools.cjs" config-get workflow.auto_advance 2>/dev/null || echo "false")
374
- ```
375
-
376
- Quando o executor retorna um checkpoint E (`AUTO_CHAIN` é `"true"` OU `AUTO_CFG` é `"true"`):
377
- - **human-verify** → Criar agente de continuação automaticamente com `{user_response}` = `"approved"`. Logar `⚡ Checkpoint aprovado automaticamente`.
378
- - **decision** → Criar agente de continuação automaticamente com `{user_response}` = primeira opção dos detalhes do checkpoint. Logar `⚡ Selecionado automaticamente: [opção]`.
379
- - **human-action** → Apresentar ao usuário (comportamento existente abaixo). Gates de autenticação não podem ser automatizados.
380
-
381
- **Fluxo padrão (não modo automático, ou tipo human-action):**
382
-
383
- 1. Criar agente para plano de checkpoint
384
- 2. Agente roda até tarefa de checkpoint ou gate de autenticação → retorna estado estruturado
385
- 3. Retorno do agente inclui: tabela de tarefas concluídas, tarefa atual + bloqueador, tipo/detalhes do checkpoint, o que está aguardando
386
- 4. **Apresentar ao usuário:**
387
- ```
388
- ## Checkpoint: [Tipo]
389
-
390
- **Plano:** 03-03 Layout do Dashboard
391
- **Progresso:** 2/3 tarefas concluídas
392
-
393
- [Detalhes do Checkpoint do retorno do agente]
394
- [Seção Aguardando do retorno do agente]
395
- ```
396
- 5. Usuário responde: "approved"/"done" | descrição de problema | seleção de decisão
397
- 6. **Criar agente de continuação (NÃO retomar)** usando template continuation-prompt.md:
398
- - `{completed_tasks_table}`: Do retorno do checkpoint
399
- - `{resume_task_number}` + `{resume_task_name}`: Tarefa atual
400
- - `{user_response}`: O que o usuário forneceu
401
- - `{resume_instructions}`: Baseado no tipo de checkpoint
402
- 7. Agente de continuação verifica commits anteriores, continua do ponto de retomada
403
- 8. Repetir até plano concluir ou usuário parar
404
-
405
- **Por que agente fresco, não retomada:** Retomada depende de serialização interna que quebra com chamadas de ferramenta paralelas. Agentes frescos com estado explícito são mais confiáveis.
406
-
407
- **Checkpoints em ondas paralelas:** Agente pausa e retorna enquanto outros agentes paralelos podem concluir. Apresentar checkpoint, criar continuação, aguardar todos antes da próxima onda.
408
- </step>
409
-
410
- <step name="aggregate_results">
411
- Após todas as ondas:
412
-
413
- ```markdown
414
- ## Fase {X}: {Nome} — Execução Concluída
415
-
416
- **Ondas:** {N} | **Planos:** {M}/{total} concluídos
417
-
418
- | Onda | Planos | Status |
419
- |------|--------|--------|
420
- | 1 | plan-01, plan-02 | ✓ Concluído |
421
- | CP | plan-03 | ✓ Verificado |
422
- | 2 | plan-04 | ✓ Concluído |
423
-
424
- ### Detalhes dos Planos
425
- 1. **03-01**: [one-liner do SUMMARY.md]
426
- 2. **03-02**: [one-liner do SUMMARY.md]
427
-
428
- ### Problemas Encontrados
429
- [Agregar dos SUMMARYs, ou "Nenhum"]
430
- ```
431
- </step>
432
-
433
- <step name="handle_partial_wave_execution">
434
- Se `WAVE_FILTER` foi usado, re-executar descoberta de planos após execução:
435
-
436
- ```bash
437
- POST_PLAN_INDEX=$(node "./.claude/framework/bin/tools.cjs" phase-plan-index "${PHASE_NUMBER}")
438
- ```
439
-
440
- Aplicar as mesmas regras de filtragem "incompleto" de antes:
441
- - ignorar planos com `has_summary: true`
442
- - se `--gaps-only`, considerar apenas planos `gap_closure: true`
443
-
444
- **Se planos incompletos ainda restarem em qualquer lugar da fase:**
445
- - PARAR aqui
446
- - NÃO executar verificação de fase
447
- - NÃO marcar fase como completa no ROADMAP/STATE
448
- - Apresentar:
449
-
450
- ```markdown
451
- ## Onda {WAVE_FILTER} Concluída
452
-
453
- Onda selecionada terminou com sucesso. Esta fase ainda tem planos incompletos, portanto verificação em nível de fase e conclusão foram intencionalmente puladas.
454
-
455
- /executar-fase {phase} ${WS} # Continuar ondas restantes
456
- /executar-fase {phase} --wave {next} ${WS} # Executar a próxima onda explicitamente
457
- ```
458
-
459
- **Se nenhum plano incompleto restar após a onda selecionada terminar:**
460
- - continuar com o fluxo normal de verificação e conclusão em nível de fase abaixo
461
- - isso significa que a onda selecionada foi o último trabalho restante na fase
462
- </step>
463
-
464
- <step name="close_parent_artifacts">
465
- **Somente para fases decimais/polish (padrão X.Y):** Fechar o ciclo de feedback resolvendo artefatos UAT e debug do pai.
466
-
467
- **Pular se** o número da fase não tiver decimal (ex: `3`, `04`) — aplica-se apenas a fases de gap-closure como `4.1`, `03.1`.
468
-
469
- **1. Detectar fase decimal e derivar pai:**
470
- ```bash
471
- # Verificar se phase_number contém um decimal
472
- if [[ "$PHASE_NUMBER" == *.* ]]; then
473
- PARENT_PHASE="${PHASE_NUMBER%%.*}"
474
- fi
475
- ```
476
-
477
- **2. Encontrar arquivo UAT do pai:**
478
- ```bash
479
- PARENT_INFO=$(node "./.claude/framework/bin/tools.cjs" find-phase "${PARENT_PHASE}" --raw)
480
- # Extrair diretório do JSON PARENT_INFO, então encontrar arquivo UAT nesse diretório
481
- ```
482
-
483
- **Se nenhum UAT pai encontrado:** Pular este passo (gap-closure pode ter sido acionado por VERIFICATION.md em vez disso).
484
-
485
- **3. Atualizar status de lacunas do UAT:**
486
-
487
- Ler seção `## Gaps` do arquivo UAT pai. Para cada entrada de lacuna com `status: failed`:
488
- - Atualizar para `status: resolved`
489
-
490
- **4. Atualizar frontmatter do UAT:**
491
-
492
- Se todas as lacunas agora tiverem `status: resolved`:
493
- - Atualizar frontmatter `status: diagnosed` → `status: resolved`
494
- - Atualizar timestamp `updated:` do frontmatter
495
-
496
- **5. Resolver sessões de debug referenciadas:**
497
-
498
- Para cada lacuna que tiver campo `debug_session:`:
499
- - Ler o arquivo de sessão de debug
500
- - Atualizar frontmatter `status:` → `resolved`
501
- - Atualizar timestamp `updated:` do frontmatter
502
- - Mover para diretório resolvido:
503
- ```bash
504
- mkdir -p .planning/debug/resolved
505
- mv .planning/debug/{slug}.md .planning/debug/resolved/
506
- ```
507
-
508
- **6. Commitar artefatos atualizados:**
509
- ```bash
510
- node "./.claude/framework/bin/tools.cjs" commit "docs(phase-${PARENT_PHASE}): resolve UAT gaps and debug sessions after ${PHASE_NUMBER} gap closure" --files .planning/phases/*${PARENT_PHASE}*/*-UAT.md .planning/debug/resolved/*.md
511
- ```
512
- </step>
513
-
514
- <step name="regression_gate">
515
- Executar suítes de teste de fases anteriores para detectar regressões entre fases ANTES da verificação.
516
-
517
- **Pular se:** Esta é a primeira fase (sem fases anteriores), ou nenhum arquivo VERIFICATION.md anterior existe.
518
-
519
- **Passo 1: Descobrir arquivos de teste de fases anteriores**
520
- ```bash
521
- # Encontrar todos os arquivos VERIFICATION.md de fases anteriores no milestone atual
522
- PRIOR_VERIFICATIONS=$(find .planning/phases/ -name "*-VERIFICATION.md" ! -path "*${PHASE_NUMBER}*" 2>/dev/null)
523
- ```
524
-
525
- **Passo 2: Extrair listas de arquivos de teste de verificações anteriores**
526
-
527
- Para cada VERIFICATION.md encontrado, procurar referências de arquivos de teste:
528
- - Linhas contendo caminhos `test`, `spec` ou `__tests__`
529
- - Seção "Test Suite" ou "Automated Checks"
530
- - Padrões de arquivos de `key-files.created` em arquivos SUMMARY.md correspondentes que correspondam a `*.test.*` ou `*.spec.*`
531
-
532
- Coletar todos os caminhos únicos de arquivos de teste em `REGRESSION_FILES`.
533
-
534
- **Passo 3: Executar testes de regressão (se encontrados)**
535
-
536
- ```bash
537
- # Detectar runner de testes e executar testes de fase anterior
538
- if [ -f "package.json" ]; then
539
- # Node.js — usar runner de testes do projeto
540
- npx jest ${REGRESSION_FILES} --passWithNoTests --no-coverage -q 2>&1 || npx vitest run ${REGRESSION_FILES} 2>&1
541
- elif [ -f "Cargo.toml" ]; then
542
- cargo test 2>&1
543
- elif [ -f "requirements.txt" ] || [ -f "pyproject.toml" ]; then
544
- python -m pytest ${REGRESSION_FILES} -q --tb=short 2>&1
545
- fi
546
- ```
547
-
548
- **Passo 4: Reportar resultados**
549
-
550
- Se todos os testes passarem:
551
- ```
552
- ✓ Gate de regressão: {N} arquivos de teste de fase anterior passaram — nenhuma regressão detectada
553
- ```
554
- → Prosseguir para verify_phase_goal
555
-
556
- Se algum teste falhar:
557
- ```
558
- ## ⚠ Regressão Entre Fases Detectada
559
-
560
- A execução da Fase {X} pode ter quebrado funcionalidade de fases anteriores.
561
-
562
- | Arquivo de Teste | Fase | Status | Detalhe |
563
- |------------------|------|--------|---------|
564
- | {file} | {origin_phase} | FALHOU | {first_failure_line} |
565
-
566
- Opções:
567
- 1. Corrigir regressões antes da verificação (recomendado)
568
- 2. Continuar para verificação mesmo assim (regressões vão se acumular)
569
- 3. Abortar fase — reverter e replanejar
570
- ```
571
-
572
- Usar AskUserQuestion para apresentar as opções.
573
- </step>
574
-
575
- <step name="verify_phase_goal">
576
- Verificar se a fase atingiu seu OBJETIVO, não apenas se as tarefas foram concluídas.
577
-
578
- ```bash
579
- VERIFIER_SKILLS=$(node "./.claude/framework/bin/tools.cjs" agent-skills verifier 2>/dev/null)
580
- ```
581
-
582
- ```
583
- Task(
584
- prompt="Verify phase {phase_number} goal achievement.
585
- Phase directory: {phase_dir}
586
- Phase goal: {goal from ROADMAP.md}
587
- Phase requirement IDs: {phase_req_ids}
588
- Check must_haves against actual codebase.
589
- Cross-reference requirement IDs from PLAN frontmatter against REQUIREMENTS.md — every ID MUST be accounted for.
590
- Create VERIFICATION.md.
591
- ${VERIFIER_SKILLS}",
592
- subagent_type="verifier",
593
- model="{verifier_model}"
594
- )
595
- ```
596
-
597
- Ler status:
598
- ```bash
599
- grep "^status:" "$PHASE_DIR"/*-VERIFICATION.md | cut -d: -f2 | tr -d ' '
600
- ```
601
-
602
- | Status | Ação |
603
- |--------|------|
604
- | `passed` | → update_roadmap |
605
- | `human_needed` | Apresentar itens para teste humano, obter aprovação ou feedback |
606
- | `gaps_found` | Apresentar resumo de lacunas, oferecer `/planejar-fase {phase} --gaps ${WS}` |
607
-
608
- **Se human_needed:**
609
-
610
- **Passo A: Persistir itens de verificação humana como arquivo UAT.**
611
-
612
- Criar `{phase_dir}/{phase_num}-HUMAN-UAT.md` usando formato de template UAT:
613
-
614
- ```markdown
615
- ---
616
- status: partial
617
- phase: {phase_num}-{phase_name}
618
- source: [{phase_num}-VERIFICATION.md]
619
- started: [agora ISO]
620
- updated: [agora ISO]
621
- ---
622
-
623
- ## Teste Atual
624
-
625
- [aguardando teste humano]
626
-
627
- ## Testes
628
-
629
- {Para cada item human_verification do VERIFICATION.md:}
630
-
631
- ### {N}. {descrição do item}
632
- expected: {comportamento esperado do VERIFICATION.md}
633
- result: [pendente]
634
-
635
- ## Resumo
636
-
637
- total: {count}
638
- passed: 0
639
- issues: 0
640
- pending: {count}
641
- skipped: 0
642
- blocked: 0
643
-
644
- ## Lacunas
645
- ```
646
-
647
- Commitar o arquivo:
648
- ```bash
649
- node "./.claude/framework/bin/tools.cjs" commit "test({phase_num}): persist human verification items as UAT" --files "{phase_dir}/{phase_num}-HUMAN-UAT.md"
650
- ```
651
-
652
- **Passo B: Apresentar ao usuário:**
653
-
654
- ```
655
- ## ✓ Fase {X}: {Nome} — Verificação Humana Necessária
656
-
657
- Todas as verificações automatizadas passaram. {N} itens precisam de teste humano:
658
-
659
- {Da seção human_verification do VERIFICATION.md}
660
-
661
- Itens salvos em `{phase_num}-HUMAN-UAT.md` — aparecerão em `/progresso` e `/auditar-uat`.
662
-
663
- "approved" → continuar | Reportar problemas → gap closure
664
- ```
665
-
666
- **Se o usuário disser "approved":** Prosseguir para `update_roadmap`. O arquivo HUMAN-UAT.md persiste com `status: partial` e aparecerá em verificações futuras de progresso até o usuário executar `/verificar-trabalho` nele.
667
-
668
- **Se o usuário reportar problemas:** Prosseguir para gap closure como implementado atualmente.
669
-
670
- **Se gaps_found:**
671
- ```
672
- ## ⚠ Fase {X}: {Nome} — Lacunas Encontradas
673
-
674
- **Pontuação:** {N}/{M} must-haves verificados
675
- **Relatório:** {phase_dir}/{phase_num}-VERIFICATION.md
676
-
677
- ### O Que Está Faltando
678
- {Resumos de lacunas do VERIFICATION.md}
679
-
680
- ---
681
- ## ▶ Próximo Passo
682
-
683
- `/planejar-fase {X} --gaps ${WS}`
684
-
685
- <sub>`/clear` primeiro → janela de contexto fresca</sub>
686
-
687
- Também: `cat {phase_dir}/{phase_num}-VERIFICATION.md` — relatório completo
688
- Também: `/verificar-trabalho {X} ${WS}` — teste manual primeiro
689
- ```
690
-
691
- Ciclo de gap closure: `/planejar-fase {X} --gaps ${WS}` lê VERIFICATION.md → cria planos de lacuna com `gap_closure: true` → usuário executa `/executar-fase {X} --gaps-only ${WS}` → verificador re-executa.
692
- </step>
693
-
694
- <step name="update_roadmap">
695
- **Marcar fase como completa e atualizar todos os arquivos de rastreamento:**
696
-
697
- ```bash
698
- COMPLETION=$(node "./.claude/framework/bin/tools.cjs" phase complete "${PHASE_NUMBER}")
699
- ```
700
-
701
- O CLI gerencia:
702
- - Marcar checkbox de fase `[x]` com data de conclusão
703
- - Atualizar tabela de Progresso (Status → Completo, data)
704
- - Atualizar contagem de planos para final
705
- - Avançar STATE.md para próxima fase
706
- - Atualizar rastreabilidade do REQUIREMENTS.md
707
- - Escanear por dívida de verificação (retorna array `warnings`)
708
-
709
- Extrair do resultado: `next_phase`, `next_phase_name`, `is_last_phase`, `warnings`, `has_warnings`.
710
-
711
- **Se has_warnings for true:**
712
- ```
713
- ## Fase {X} marcada como completa com {N} avisos:
714
-
715
- {listar cada aviso}
716
-
717
- Estes itens são rastreados e aparecerão em `/progresso` e `/auditar-uat`.
718
- ```
719
-
720
- ```bash
721
- node "./.claude/framework/bin/tools.cjs" commit "docs(phase-{X}): complete phase execution" --files .planning/ROADMAP.md .planning/STATE.md .planning/REQUIREMENTS.md {phase_dir}/*-VERIFICATION.md
722
- ```
723
- </step>
724
-
725
- <step name="update_project_md">
726
- **Evoluir PROJECT.md para refletir conclusão de fase (evita drift de documento de planejamento — #956):**
727
-
728
- PROJECT.md rastreia requisitos validados, decisões e estado atual. Sem este passo,
729
- PROJECT.md fica para trás silenciosamente ao longo de múltiplas fases.
730
-
731
- 1. Ler `.planning/PROJECT.md`
732
- 2. Se o arquivo existir e tiver seção `## Requisitos Validados` ou `## Requisitos`:
733
- - Mover requisitos validados por esta fase de Ativos → Validados
734
- - Adicionar nota breve: `Validado na Fase {X}: {Nome}`
735
- 3. Se o arquivo tiver seção `## Estado Atual` ou similar:
736
- - Atualizá-la para refletir conclusão desta fase (ex: "Fase {X} completa — {one-liner}")
737
- 4. Atualizar o rodapé `Última atualização:` para a data de hoje
738
- 5. Commitar a mudança:
739
-
740
- ```bash
741
- node "./.claude/framework/bin/tools.cjs" commit "docs(phase-{X}): evolve PROJECT.md after phase completion" --files .planning/PROJECT.md
742
- ```
743
-
744
- **Pular este passo se** `.planning/PROJECT.md` não existir.
745
- </step>
746
-
747
- <step name="offer_next">
748
-
749
- **Exceção:** Se `gaps_found`, o passo `verify_phase_goal` já apresenta o caminho de gap-closure (`/planejar-fase {X} --gaps`). Nenhum roteamento adicional necessário — pular avanço automático.
750
-
751
- **Verificação sem transição (criado por cadeia de avanço automático):**
752
-
753
- Analisar flag `--no-transition` de $ARGUMENTS.
754
-
755
- **Se flag `--no-transition` presente:**
756
-
757
- Execute-phase foi criado por avanço automático do plan-phase. NÃO executar transition.md.
758
- Após verificação passar e roadmap ser atualizado, retornar status de conclusão ao pai:
759
-
760
- ```
761
- ## FASE CONCLUÍDA
762
-
763
- Fase: ${PHASE_NUMBER} - ${PHASE_NAME}
764
- Planos: ${completed_count}/${total_count}
765
- Verificação: {Passou | Lacunas Encontradas}
766
-
767
- [Incluir saída de aggregate_results]
768
- ```
769
-
770
- PARAR. Não prosseguir para avanço automático ou transição.
771
-
772
- **Se flag `--no-transition` NÃO estiver presente:**
773
-
774
- **Detecção de avanço automático:**
775
-
776
- 1. Analisar flag `--auto` de $ARGUMENTS
777
- 2. Ler tanto a flag de cadeia quanto a preferência do usuário (flag de cadeia já sincronizada no passo init):
778
- ```bash
779
- AUTO_CHAIN=$(node "./.claude/framework/bin/tools.cjs" config-get workflow._auto_chain_active 2>/dev/null || echo "false")
780
- AUTO_CFG=$(node "./.claude/framework/bin/tools.cjs" config-get workflow.auto_advance 2>/dev/null || echo "false")
781
- ```
782
-
783
- **Se flag `--auto` presente OU `AUTO_CHAIN` for true OU `AUTO_CFG` for true (E verificação passou sem lacunas):**
784
-
785
- ```
786
- ╔══════════════════════════════════════════╗
787
- ║ AVANÇANDO AUTOMATICAMENTE → TRANSIÇÃO ║
788
- ║ Fase {X} verificada, continuando cadeia ║
789
- ╚══════════════════════════════════════════╝
790
- ```
791
-
792
- Executar o workflow de transição inline (NÃO usar Task — contexto do orquestrador está ~10-15%, transição precisa de dados de conclusão de fase já no contexto):
793
-
794
- Ler e seguir `./.claude/framework/workflows/transition.md`, propagando a flag `--auto` para que ela se propague para a invocação da próxima fase.
795
-
796
- **Se nenhum de `--auto`, `AUTO_CHAIN` ou `AUTO_CFG` for true:**
797
-
798
- **PARAR. Não avançar automaticamente. Não executar transição. Não planejar próxima fase. Apresentar opções ao usuário e aguardar.**
799
-
800
- **IMPORTANTE: NÃO existe comando `/transition`. Nunca sugeri-lo. O workflow de transição é interno apenas.**
801
-
802
- ```
803
- ## ✓ Fase {X}: {Nome} Concluída
804
-
805
- /progresso ${WS} — ver roadmap atualizado
806
- /discutir-fase {next} ${WS} — discutir próxima fase antes de planejar
807
- /planejar-fase {next} ${WS} — planejar próxima fase
808
- /executar-fase {next} ${WS} — executar próxima fase
809
- ```
810
-
811
- Sugira apenas os comandos listados acima. Não invente ou alucine nomes de comandos.
812
- </step>
813
-
814
- </process>
815
-
816
- <context_efficiency>
817
- Orquestrador: ~10-15% do contexto para janelas 200k, pode usar mais para janelas 1M+.
818
- Subagentes: contexto fresco por agente (200k-1M dependendo do modelo). Sem polling (Task bloqueia). Sem vazamento de contexto.
819
-
820
- Para modelos de contexto 1M+, considerar:
821
- - Passar contexto mais rico (snippets de código, saídas de dependências) diretamente para executores em vez de apenas caminhos de arquivo
822
- - Executar fases pequenas (≤3 planos, sem dependências) inline sem overhead de criação de subagente
823
- - Relaxar recomendações de /clear — início de degradação de contexto é muito mais distante com janela 5x
824
- </context_efficiency>
825
-
826
- <failure_handling>
827
- - **Falha falsa classifyHandoffIfNeeded:** Agente reporta "falhado" mas erro é `classifyHandoffIfNeeded is not defined` → Bug do Claude Code, não framework. Spot-check (SUMMARY existe, commits presentes) → se passou, tratar como sucesso
828
- - **Agente falha no meio do plano:** SUMMARY.md ausente → reportar, perguntar ao usuário como prosseguir
829
- - **Cadeia de dependências quebra:** Onda 1 falha → Dependentes da Onda 2 provavelmente falham → usuário escolhe tentar ou pular
830
- - **Todos os agentes na onda falham:** Problema sistêmico → parar, reportar para investigação
831
- - **Checkpoint não resolvível:** "Pular este plano?" ou "Abortar execução da fase?" → registrar progresso parcial no STATE.md
832
- </failure_handling>
833
-
834
- <resumption>
835
- Re-executar `/executar-fase {phase}` → discover_plans encontra SUMMARYs concluídos → os pula → retoma do primeiro plano incompleto → continua execução de ondas.
836
-
837
- STATE.md rastreia: último plano concluído, onda atual, checkpoints pendentes.
838
- </resumption>
1
+ <purpose>
2
+ Executar todos os planos de uma fase usando execução paralela em ondas. O orquestrador permanece enxuto — delega execução de planos para subagentes.
3
+ </purpose>
4
+
5
+ <core_principle>
6
+ O orquestrador coordena, não executa. Cada subagente carrega o contexto completo do execute-plan. Orquestrador: descobrir planos → analisar deps → agrupar em ondas → criar agentes → lidar com checkpoints → coletar resultados.
7
+ </core_principle>
8
+
9
+ <runtime_compatibility>
10
+ **Criação de subagentes é específica do runtime:**
11
+ - **Claude Code:** Usa `Task(subagent_type="executor", ...)` — bloqueia até concluir, retorna resultado
12
+ - **Copilot:** Criação de subagentes não retorna sinais de conclusão de forma confiável. **Padrão é execução sequencial inline**: ler e seguir execute-plan.md diretamente para cada plano em vez de criar agentes paralelos. Só tente paralelismo se o usuário solicitar explicitamente — e nesse caso, use o fallback de spot-check no passo 3 para detectar conclusão.
13
+ - **Outros runtimes:** Se a ferramenta `Task`/`task` não estiver disponível, use execução sequencial inline como fallback. Verifique disponibilidade da ferramenta em runtime em vez de assumir pelo nome do runtime.
14
+
15
+ **Regra de fallback:** Se um agente criado conclui seu trabalho (commits visíveis, SUMMARY.md existe) mas o orquestrador nunca recebe o sinal de conclusão, tratar como bem-sucedido com base em spot-checks e continuar para próxima onda/plano. Nunca bloquear indefinidamente aguardando sinal — sempre verificar via filesystem e estado do git.
16
+ </runtime_compatibility>
17
+
18
+ <required_reading>
19
+ Ler STATE.md antes de qualquer operação para carregar contexto do projeto.
20
+ </required_reading>
21
+
22
+ <available_agent_types>
23
+ Tipos de subagentes framework válidos registrados em .claude/agents/ (ou equivalente para seu runtime).
24
+ Sempre use o nome exato desta lista — não use 'general-purpose' ou outros tipos embutidos como fallback:
25
+
26
+ - executor — Executa tarefas do plano, commits, cria SUMMARY.md
27
+ - verifier — Verifica conclusão de fase, verifica quality gates
28
+ - planner — Cria planos detalhados a partir do escopo da fase
29
+ - phase-researcher — Pesquisa abordagens técnicas para uma fase
30
+ - plan-checker — Revisa qualidade do plano antes da execução
31
+ - debugger — Diagnostica e corrige problemas
32
+ - codebase-mapper — Mapeia estrutura do projeto e dependências
33
+ - integration-checker — Verifica integração entre fases
34
+ - nyquist-auditor — Valida cobertura de verificação
35
+ - ui-researcher — Pesquisa abordagens de UI/UX
36
+ - ui-checker — Revisa qualidade de implementação de UI
37
+ - ui-auditor — Audita UI em relação aos requisitos de design
38
+ </available_agent_types>
39
+
40
+ <process>
41
+
42
+ <step name="parse_args" priority="first">
43
+ Analisar `$ARGUMENTS` antes de carregar qualquer contexto:
44
+
45
+ - Primeiro token posicional → `PHASE_ARG`
46
+ - `--wave N` opcional → `WAVE_FILTER`
47
+ - `--gaps-only` opcional mantém seu significado atual
48
+
49
+ Se `--wave` estiver ausente, preservar o comportamento atual de executar todas as ondas incompletas na fase.
50
+ </step>
51
+
52
+ <step name="initialize" priority="first">
53
+ Carregar todo o contexto em uma chamada:
54
+
55
+ ```bash
56
+ INIT=$(node "./.claude/framework/bin/tools.cjs" init execute-phase "${PHASE_ARG}")
57
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
58
+ AGENT_SKILLS=$(node "./.claude/framework/bin/tools.cjs" agent-skills executor 2>/dev/null)
59
+ ```
60
+
61
+ Analisar JSON para: `executor_model`, `verifier_model`, `commit_docs`, `parallelization`, `branching_strategy`, `branch_name`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `plans`, `incomplete_plans`, `plan_count`, `incomplete_count`, `state_exists`, `roadmap_exists`, `phase_req_ids`.
62
+
63
+ **Se `phase_found` for false:** Erro — diretório de fase não encontrado.
64
+ **Se `plan_count` for 0:** Erro — nenhum plano encontrado na fase.
65
+ **Se `state_exists` for false mas `.planning/` existir:** Oferecer reconstruir ou continuar.
66
+
67
+ Quando `parallelization` for false, planos dentro de uma onda executam sequencialmente.
68
+
69
+ **Detecção de runtime para Copilot:**
70
+ Verificar se o runtime atual é Copilot testando o padrão de agente `@executor`
71
+ ou ausência da API de subagente `Task()`. Se rodando no Copilot, forçar execução sequencial inline
72
+ independente da configuração `parallelization` — os sinais de conclusão de subagentes do Copilot
73
+ são não confiáveis (ver `<runtime_compatibility>`). Definir `COPILOT_SEQUENTIAL=true`
74
+ internamente e pular o passo `execute_waves` em favor do caminho inline do `check_interactive_mode`
75
+ para cada plano.
76
+
77
+ **OBRIGATÓRIO — Sincronizar flag de cadeia com intenção.** Se o usuário invocou manualmente (sem `--auto`), limpar a flag de cadeia efêmera de qualquer cadeia `--auto` anterior interrompida. Isso impede que `_auto_chain_active: true` obsoleto cause avanço automático indesejado. Isso NÃO toca em `workflow.auto_advance` (preferência persistente do usuário). Você DEVE executar este bloco bash antes de qualquer leitura de config:
78
+ ```bash
79
+ # OBRIGATÓRIO: impede auto-cadeia obsoleta de execuções --auto anteriores
80
+ if [[ ! "$ARGUMENTS" =~ --auto ]]; then
81
+ node "./.claude/framework/bin/tools.cjs" config-set workflow._auto_chain_active false 2>/dev/null
82
+ fi
83
+ ```
84
+ </step>
85
+
86
+ <step name="check_interactive_mode">
87
+ **Analisar flag `--interactive` de $ARGUMENTS.**
88
+
89
+ **Se flag `--interactive` presente:** Alternar para modo de execução interativo.
90
+
91
+ Modo interativo executa planos sequencialmente **inline** (sem criação de subagentes) com
92
+ checkpoints do usuário entre tarefas. O usuário pode revisar, modificar ou redirecionar o trabalho a qualquer momento.
93
+
94
+ **Fluxo de execução interativo:**
95
+
96
+ 1. Carregar inventário de planos normalmente (discover_and_group_plans)
97
+ 2. Para cada plano (sequencialmente, ignorando agrupamento de ondas):
98
+
99
+ a. **Apresentar o plano ao usuário:**
100
+ ```
101
+ ## Plano {plan_id}: {plan_name}
102
+
103
+ Objetivo: {do arquivo do plano}
104
+ Tarefas: {task_count}
105
+
106
+ Opções:
107
+ - Executar (prosseguir com todas as tarefas)
108
+ - Revisar primeiro (mostrar detalhamento de tarefas antes de começar)
109
+ - Pular (ir para próximo plano)
110
+ - Parar (encerrar execução, salvar progresso)
111
+ ```
112
+
113
+ b. **Se "Revisar primeiro":** Ler e exibir o arquivo do plano completo. Perguntar novamente: Executar, Modificar, Pular.
114
+
115
+ c. **Se "Executar":** Ler e seguir `./.claude/framework/workflows/execute-plan.md` **inline**
116
+ (NÃO criar subagente). Executar tarefas uma por vez.
117
+
118
+ d. **Após cada tarefa:** Pausar brevemente. Se o usuário intervir (digitar qualquer coisa), parar e resolver
119
+ o feedback antes de continuar. Caso contrário, prosseguir para próxima tarefa.
120
+
121
+ e. **Após plano concluído:** Mostrar resultados, commitar, criar SUMMARY.md, então apresentar próximo plano.
122
+
123
+ 3. Após todos os planos: prosseguir para verificação (mesmo que modo normal).
124
+
125
+ **Benefícios do modo interativo:**
126
+ - Sem overhead de subagente — uso de tokens dramaticamente menor
127
+ - Usuário detecta erros cedo — economiza ciclos de verificação custosos
128
+ - Mantém estrutura de planejamento/rastreamento do framework
129
+ - Melhor para: fases pequenas, correções de bugs, lacunas de verificação, aprendendo framework
130
+
131
+ **Pular para passo handle_branching** (planos interativos executam inline após agrupamento).
132
+ </step>
133
+
134
+ <step name="handle_branching">
135
+ Verificar `branching_strategy` do init:
136
+
137
+ **"none":** Pular, continuar no branch atual.
138
+
139
+ **"phase" ou "milestone":** Usar `branch_name` pré-computado do init:
140
+ ```bash
141
+ git checkout -b "$BRANCH_NAME" 2>/dev/null || git checkout "$BRANCH_NAME"
142
+ ```
143
+
144
+ Todos os commits subsequentes vão para este branch. Usuário gerencia o merge.
145
+ </step>
146
+
147
+ <step name="validate_phase">
148
+ Do JSON do init: `phase_dir`, `plan_count`, `incomplete_count`.
149
+
150
+ Reportar: "Encontrados {plan_count} planos em {phase_dir} ({incomplete_count} incompletos)"
151
+
152
+ **Atualizar STATE.md para início de fase:**
153
+ ```bash
154
+ node "./.claude/framework/bin/tools.cjs" state begin-phase --phase "${PHASE_NUMBER}" --name "${PHASE_NAME}" --plans "${PLAN_COUNT}"
155
+ ```
156
+ Isso atualiza Status, Última Atividade, Foco Atual, Posição Atual e contagens de planos no STATE.md para que o frontmatter e o texto do corpo reflitam a fase ativa imediatamente.
157
+ </step>
158
+
159
+ <step name="discover_and_group_plans">
160
+ Carregar inventário de planos com agrupamento de ondas em uma chamada:
161
+
162
+ ```bash
163
+ PLAN_INDEX=$(node "./.claude/framework/bin/tools.cjs" phase-plan-index "${PHASE_NUMBER}")
164
+ ```
165
+
166
+ Analisar JSON para: `phase`, `plans[]` (cada um com `id`, `wave`, `autonomous`, `objective`, `files_modified`, `task_count`, `has_summary`), `waves` (mapa de número de onda → IDs de plano), `incomplete`, `has_checkpoints`.
167
+
168
+ **Filtragem:** Pular planos onde `has_summary: true`. Se `--gaps-only`: também pular planos não gap_closure. Se `WAVE_FILTER` definido: também pular planos cujo `wave` não seja igual a `WAVE_FILTER`.
169
+
170
+ **Verificação de segurança de onda:** Se `WAVE_FILTER` estiver definido e ainda houver planos incompletos em qualquer onda anterior que correspondam ao modo de execução atual, PARAR e dizer ao usuário para terminar as ondas anteriores primeiro. Não deixar Onda 2+ executar enquanto planos de ondas prerequisito anteriores permanecerem incompletos.
171
+
172
+ Se todos filtrados: "Nenhum plano incompleto correspondente" → sair.
173
+
174
+ Reportar:
175
+ ```
176
+ ## Plano de Execução
177
+
178
+ **Fase {X}: {Nome}** — {total_plans} planos correspondentes em {wave_count} onda(s)
179
+
180
+ {Se WAVE_FILTER definido: `Filtro de onda ativo: executando apenas Onda {WAVE_FILTER}`.}
181
+
182
+ | Onda | Planos | O que constrói |
183
+ |------|--------|----------------|
184
+ | 1 | 01-01, 01-02 | {dos objetivos dos planos, 3-8 palavras} |
185
+ | 2 | 01-03 | ... |
186
+ ```
187
+ </step>
188
+
189
+ <step name="execute_waves">
190
+ Executar cada onda selecionada em sequência. Dentro de uma onda: paralelo se `PARALLELIZATION=true`, sequencial se `false`.
191
+
192
+ **Para cada onda:**
193
+
194
+ 1. **Descrever o que está sendo construído (ANTES de criar agentes):**
195
+
196
+ Ler o `<objective>` de cada plano. Extrair o que está sendo construído e por quê.
197
+
198
+ ```
199
+ ---
200
+ ## Onda {N}
201
+
202
+ **{ID do Plano}: {Nome do Plano}**
203
+ {2-3 frases: o que constrói, abordagem técnica, por que importa}
204
+
205
+ Criando {count} agente(s)...
206
+ ---
207
+ ```
208
+
209
+ - Ruim: "Executando plano de geração de terreno"
210
+ - Bom: "Gerador de terreno procedural usando ruído Perlin — cria mapas de altura, zonas de bioma e malhas de colisão. Necessário antes que a física de veículos possa interagir com o solo."
211
+
212
+ 2. **Criar agentes executores:**
213
+
214
+ Passar apenas caminhos — executores leem arquivos com seu contexto fresco.
215
+ Para modelos 200k, isso mantém o contexto do orquestrador enxuto (~10-15%).
216
+ Para modelos 1M+ (Opus 4.6, Sonnet 4.6), contexto mais rico pode ser passado diretamente.
217
+
218
+ ```
219
+ Task(
220
+ subagent_type="executor",
221
+ model="{executor_model}",
222
+ isolation="worktree",
223
+ prompt="
224
+ <objective>
225
+ Execute plan {plan_number} of phase {phase_number}-{phase_name}.
226
+ Commit each task atomically. Create SUMMARY.md. Update STATE.md and ROADMAP.md.
227
+ </objective>
228
+
229
+ <parallel_execution>
230
+ You are running as a PARALLEL executor agent. Use --no-verify on all git
231
+ commits to avoid pre-commit hook contention with other agents. The
232
+ orchestrator validates hooks once after all agents complete.
233
+ For tools commits: add --no-verify flag.
234
+ For direct git commits: use git commit --no-verify -m "..."
235
+ </parallel_execution>
236
+
237
+ <execution_context>
238
+ @./.claude/framework/workflows/execute-plan.md
239
+ @./.claude/framework/templates/summary.md
240
+ @./.claude/framework/references/checkpoints.md
241
+ @./.claude/framework/references/tdd.md
242
+ </execution_context>
243
+
244
+ <files_to_read>
245
+ Read these files at execution start using the Read tool:
246
+ - {phase_dir}/{plan_file} (Plan)
247
+ - .planning/PROJECT.md (Project context — core value, requirements, evolution rules)
248
+ - .planning/STATE.md (State)
249
+ - .planning/config.json (Config, if exists)
250
+ - ./CLAUDE.md (Project instructions, if exists — follow project-specific guidelines and coding conventions)
251
+ - .claude/skills/ or .agents/skills/ (Project skills, if either exists — list skills, read SKILL.md for each, follow relevant rules during implementation)
252
+ </files_to_read>
253
+
254
+ ${AGENT_SKILLS}
255
+
256
+ <mcp_tools>
257
+ If CLAUDE.md or project instructions reference MCP tools (e.g. jCodeMunch, context7,
258
+ or other MCP servers), prefer those tools over Grep/Glob for code navigation when available.
259
+ MCP tools often save significant tokens by providing structured code indexes.
260
+ Check tool availability first — if MCP tools are not accessible, fall back to Grep/Glob.
261
+ </mcp_tools>
262
+
263
+ <success_criteria>
264
+ - [ ] All tasks executed
265
+ - [ ] Each task committed individually
266
+ - [ ] SUMMARY.md created in plan directory
267
+ - [ ] STATE.md updated with position and decisions
268
+ - [ ] ROADMAP.md updated with plan progress (via `roadmap update-plan-progress`)
269
+ </success_criteria>
270
+ "
271
+ )
272
+ ```
273
+
274
+ 3. **Aguardar todos os agentes da onda concluírem.**
275
+
276
+ **Fallback de sinal de conclusão (Copilot e runtimes onde Task() pode não retornar):**
277
+
278
+ Se um agente criado não retornar sinal de conclusão mas parecer ter terminado
279
+ seu trabalho, NÃO bloquear indefinidamente. Em vez disso, verificar conclusão via spot-checks:
280
+
281
+ ```bash
282
+ # Para cada plano nesta onda, verificar se o executor terminou:
283
+ SUMMARY_EXISTS=$(test -f "{phase_dir}/{plan_number}-{plan_padded}-SUMMARY.md" && echo "true" || echo "false")
284
+ COMMITS_FOUND=$(git log --oneline --all --grep="{phase_number}-{plan_padded}" --since="1 hour ago" | head -1)
285
+ ```
286
+
287
+ **Se SUMMARY.md existir E commits forem encontrados:** O agente concluiu com sucesso —
288
+ tratar como concluído e prosseguir para passo 4. Logar: `"✓ {Plan ID} concluído (verificado via spot-check — sinal de conclusão não recebido)"`
289
+
290
+ **Se SUMMARY.md NÃO existir após espera razoável:** O agente pode ainda estar
291
+ rodando ou pode ter falhado silenciosamente. Verificar `git log --oneline -5` por
292
+ atividade recente. Se commits ainda aparecerem, aguardar mais. Se sem atividade, reportar
293
+ o plano como falhado e encaminhar para o manipulador de falhas no passo 5.
294
+
295
+ **Este fallback se aplica automaticamente a todos os runtimes.** Task() do Claude Code normalmente
296
+ retorna de forma síncrona, mas o fallback garante resiliência se não retornar.
297
+
298
+ 4. **Validação de hook pós-onda (somente modo paralelo):**
299
+
300
+ Quando agentes commitaram com `--no-verify`, executar hooks pre-commit uma vez após a onda:
301
+ ```bash
302
+ # Executar hooks pre-commit do projeto no estado atual
303
+ git diff --cached --quiet || git stash # fazer stash de mudanças não staged
304
+ git hook run pre-commit 2>&1 || echo "⚠ Hooks pre-commit falharam — revisar antes de continuar"
305
+ ```
306
+ Se hooks falharem: reportar a falha e perguntar "Corrigir problemas de hook agora?" ou "Continuar para próxima onda?"
307
+
308
+ 5. **Reportar conclusão — verificar claims via spot-check primeiro:**
309
+
310
+ Para cada SUMMARY.md:
311
+ - Verificar se os primeiros 2 arquivos de `key-files.created` existem no disco
312
+ - Verificar se `git log --oneline --all --grep="{phase}-{plan}"` retorna ≥1 commit
313
+ - Verificar marcador `## Self-Check: FAILED`
314
+
315
+ Se QUALQUER spot-check falhar: reportar qual plano falhou, encaminhar para manipulador de falhas — perguntar "Tentar plano novamente?" ou "Continuar com ondas restantes?"
316
+
317
+ Se passar:
318
+ ```
319
+ ---
320
+ ## Onda {N} Concluída
321
+
322
+ **{ID do Plano}: {Nome do Plano}**
323
+ {O que foi construído — do SUMMARY.md}
324
+ {Desvios notáveis, se houver}
325
+
326
+ {Se mais ondas: o que isso habilita para a próxima onda}
327
+ ---
328
+ ```
329
+
330
+ - Ruim: "Onda 2 concluída. Prosseguindo para Onda 3."
331
+ - Bom: "Sistema de terreno concluído — 3 tipos de bioma, texturização baseada em altura, malhas de colisão de física. Física de veículos (Onda 3) agora pode referenciar superfícies do solo."
332
+
333
+ 5. **Tratar falhas:**
334
+
335
+ **Bug conhecido do Claude Code (classifyHandoffIfNeeded):** Se um agente reportar "falhado" com erro contendo `classifyHandoffIfNeeded is not defined`, este é um bug de runtime do Claude Code — não um problema do framework ou do agente. O erro dispara no manipulador de conclusão APÓS todas as chamadas de ferramenta terminarem. Neste caso: executar os mesmos spot-checks do passo 4 (SUMMARY.md existe, commits presentes, sem Self-Check: FAILED). Se spot-checks PASSAREM → tratar como **bem-sucedido**. Se spot-checks FALHAREM → tratar como falha real abaixo.
336
+
337
+ Para falhas reais: reportar qual plano falhou → perguntar "Continuar?" ou "Parar?" → se continuar, planos dependentes podem também falhar. Se parar, relatório de conclusão parcial.
338
+
339
+ 5b. **Verificação de dependência pré-onda (ondas 2+ apenas):**
340
+
341
+ Antes de criar onda N+1, para cada plano na onda seguinte:
342
+ ```bash
343
+ node "./.claude/framework/bin/tools.cjs" verify key-links {phase_dir}/{plan}-PLAN.md
344
+ ```
345
+
346
+ Se qualquer key-link de artefato de onda ANTERIOR falhar na verificação:
347
+
348
+ ## Lacuna de Conexão Entre Planos
349
+
350
+ | Plano | Link | De | Padrão Esperado | Status |
351
+ |-------|------|----|-----------------|--------|
352
+ | {plan} | {via} | {from} | {pattern} | NÃO ENCONTRADO |
353
+
354
+ Artefatos da Onda {N} podem não estar corretamente conectados. Opções:
355
+ 1. Investigar e corrigir antes de continuar
356
+ 2. Continuar (pode causar falhas em cascata na onda {N+1})
357
+
358
+ Key-links referenciando arquivos na onda ATUAL (próxima) são ignorados.
359
+
360
+ 6. **Executar planos de checkpoint entre ondas** — ver `<checkpoint_handling>`.
361
+
362
+ 7. **Prosseguir para próxima onda.**
363
+ </step>
364
+
365
+ <step name="checkpoint_handling">
366
+ Planos com `autonomous: false` requerem interação do usuário.
367
+
368
+ **Tratamento de checkpoint em modo automático:**
369
+
370
+ Ler config de avanço automático (flag de cadeia + preferência do usuário):
371
+ ```bash
372
+ AUTO_CHAIN=$(node "./.claude/framework/bin/tools.cjs" config-get workflow._auto_chain_active 2>/dev/null || echo "false")
373
+ AUTO_CFG=$(node "./.claude/framework/bin/tools.cjs" config-get workflow.auto_advance 2>/dev/null || echo "false")
374
+ ```
375
+
376
+ Quando o executor retorna um checkpoint E (`AUTO_CHAIN` é `"true"` OU `AUTO_CFG` é `"true"`):
377
+ - **human-verify** → Criar agente de continuação automaticamente com `{user_response}` = `"approved"`. Logar `⚡ Checkpoint aprovado automaticamente`.
378
+ - **decision** → Criar agente de continuação automaticamente com `{user_response}` = primeira opção dos detalhes do checkpoint. Logar `⚡ Selecionado automaticamente: [opção]`.
379
+ - **human-action** → Apresentar ao usuário (comportamento existente abaixo). Gates de autenticação não podem ser automatizados.
380
+
381
+ **Fluxo padrão (não modo automático, ou tipo human-action):**
382
+
383
+ 1. Criar agente para plano de checkpoint
384
+ 2. Agente roda até tarefa de checkpoint ou gate de autenticação → retorna estado estruturado
385
+ 3. Retorno do agente inclui: tabela de tarefas concluídas, tarefa atual + bloqueador, tipo/detalhes do checkpoint, o que está aguardando
386
+ 4. **Apresentar ao usuário:**
387
+ ```
388
+ ## Checkpoint: [Tipo]
389
+
390
+ **Plano:** 03-03 Layout do Dashboard
391
+ **Progresso:** 2/3 tarefas concluídas
392
+
393
+ [Detalhes do Checkpoint do retorno do agente]
394
+ [Seção Aguardando do retorno do agente]
395
+ ```
396
+ 5. Usuário responde: "approved"/"done" | descrição de problema | seleção de decisão
397
+ 6. **Criar agente de continuação (NÃO retomar)** usando template continuation-prompt.md:
398
+ - `{completed_tasks_table}`: Do retorno do checkpoint
399
+ - `{resume_task_number}` + `{resume_task_name}`: Tarefa atual
400
+ - `{user_response}`: O que o usuário forneceu
401
+ - `{resume_instructions}`: Baseado no tipo de checkpoint
402
+ 7. Agente de continuação verifica commits anteriores, continua do ponto de retomada
403
+ 8. Repetir até plano concluir ou usuário parar
404
+
405
+ **Por que agente fresco, não retomada:** Retomada depende de serialização interna que quebra com chamadas de ferramenta paralelas. Agentes frescos com estado explícito são mais confiáveis.
406
+
407
+ **Checkpoints em ondas paralelas:** Agente pausa e retorna enquanto outros agentes paralelos podem concluir. Apresentar checkpoint, criar continuação, aguardar todos antes da próxima onda.
408
+ </step>
409
+
410
+ <step name="aggregate_results">
411
+ Após todas as ondas:
412
+
413
+ ```markdown
414
+ ## Fase {X}: {Nome} — Execução Concluída
415
+
416
+ **Ondas:** {N} | **Planos:** {M}/{total} concluídos
417
+
418
+ | Onda | Planos | Status |
419
+ |------|--------|--------|
420
+ | 1 | plan-01, plan-02 | ✓ Concluído |
421
+ | CP | plan-03 | ✓ Verificado |
422
+ | 2 | plan-04 | ✓ Concluído |
423
+
424
+ ### Detalhes dos Planos
425
+ 1. **03-01**: [one-liner do SUMMARY.md]
426
+ 2. **03-02**: [one-liner do SUMMARY.md]
427
+
428
+ ### Problemas Encontrados
429
+ [Agregar dos SUMMARYs, ou "Nenhum"]
430
+ ```
431
+ </step>
432
+
433
+ <step name="handle_partial_wave_execution">
434
+ Se `WAVE_FILTER` foi usado, re-executar descoberta de planos após execução:
435
+
436
+ ```bash
437
+ POST_PLAN_INDEX=$(node "./.claude/framework/bin/tools.cjs" phase-plan-index "${PHASE_NUMBER}")
438
+ ```
439
+
440
+ Aplicar as mesmas regras de filtragem "incompleto" de antes:
441
+ - ignorar planos com `has_summary: true`
442
+ - se `--gaps-only`, considerar apenas planos `gap_closure: true`
443
+
444
+ **Se planos incompletos ainda restarem em qualquer lugar da fase:**
445
+ - PARAR aqui
446
+ - NÃO executar verificação de fase
447
+ - NÃO marcar fase como completa no ROADMAP/STATE
448
+ - Apresentar:
449
+
450
+ ```markdown
451
+ ## Onda {WAVE_FILTER} Concluída
452
+
453
+ Onda selecionada terminou com sucesso. Esta fase ainda tem planos incompletos, portanto verificação em nível de fase e conclusão foram intencionalmente puladas.
454
+
455
+ /executar-fase {phase} ${WS} # Continuar ondas restantes
456
+ /executar-fase {phase} --wave {next} ${WS} # Executar a próxima onda explicitamente
457
+ ```
458
+
459
+ **Se nenhum plano incompleto restar após a onda selecionada terminar:**
460
+ - continuar com o fluxo normal de verificação e conclusão em nível de fase abaixo
461
+ - isso significa que a onda selecionada foi o último trabalho restante na fase
462
+ </step>
463
+
464
+ <step name="close_parent_artifacts">
465
+ **Somente para fases decimais/polish (padrão X.Y):** Fechar o ciclo de feedback resolvendo artefatos UAT e debug do pai.
466
+
467
+ **Pular se** o número da fase não tiver decimal (ex: `3`, `04`) — aplica-se apenas a fases de gap-closure como `4.1`, `03.1`.
468
+
469
+ **1. Detectar fase decimal e derivar pai:**
470
+ ```bash
471
+ # Verificar se phase_number contém um decimal
472
+ if [[ "$PHASE_NUMBER" == *.* ]]; then
473
+ PARENT_PHASE="${PHASE_NUMBER%%.*}"
474
+ fi
475
+ ```
476
+
477
+ **2. Encontrar arquivo UAT do pai:**
478
+ ```bash
479
+ PARENT_INFO=$(node "./.claude/framework/bin/tools.cjs" find-phase "${PARENT_PHASE}" --raw)
480
+ # Extrair diretório do JSON PARENT_INFO, então encontrar arquivo UAT nesse diretório
481
+ ```
482
+
483
+ **Se nenhum UAT pai encontrado:** Pular este passo (gap-closure pode ter sido acionado por VERIFICATION.md em vez disso).
484
+
485
+ **3. Atualizar status de lacunas do UAT:**
486
+
487
+ Ler seção `## Gaps` do arquivo UAT pai. Para cada entrada de lacuna com `status: failed`:
488
+ - Atualizar para `status: resolved`
489
+
490
+ **4. Atualizar frontmatter do UAT:**
491
+
492
+ Se todas as lacunas agora tiverem `status: resolved`:
493
+ - Atualizar frontmatter `status: diagnosed` → `status: resolved`
494
+ - Atualizar timestamp `updated:` do frontmatter
495
+
496
+ **5. Resolver sessões de debug referenciadas:**
497
+
498
+ Para cada lacuna que tiver campo `debug_session:`:
499
+ - Ler o arquivo de sessão de debug
500
+ - Atualizar frontmatter `status:` → `resolved`
501
+ - Atualizar timestamp `updated:` do frontmatter
502
+ - Mover para diretório resolvido:
503
+ ```bash
504
+ mkdir -p .planning/debug/resolved
505
+ mv .planning/debug/{slug}.md .planning/debug/resolved/
506
+ ```
507
+
508
+ **6. Commitar artefatos atualizados:**
509
+ ```bash
510
+ node "./.claude/framework/bin/tools.cjs" commit "docs(phase-${PARENT_PHASE}): resolve UAT gaps and debug sessions after ${PHASE_NUMBER} gap closure" --files .planning/phases/*${PARENT_PHASE}*/*-UAT.md .planning/debug/resolved/*.md
511
+ ```
512
+ </step>
513
+
514
+ <step name="regression_gate">
515
+ Executar suítes de teste de fases anteriores para detectar regressões entre fases ANTES da verificação.
516
+
517
+ **Pular se:** Esta é a primeira fase (sem fases anteriores), ou nenhum arquivo VERIFICATION.md anterior existe.
518
+
519
+ **Passo 1: Descobrir arquivos de teste de fases anteriores**
520
+ ```bash
521
+ # Encontrar todos os arquivos VERIFICATION.md de fases anteriores no milestone atual
522
+ PRIOR_VERIFICATIONS=$(find .planning/phases/ -name "*-VERIFICATION.md" ! -path "*${PHASE_NUMBER}*" 2>/dev/null)
523
+ ```
524
+
525
+ **Passo 2: Extrair listas de arquivos de teste de verificações anteriores**
526
+
527
+ Para cada VERIFICATION.md encontrado, procurar referências de arquivos de teste:
528
+ - Linhas contendo caminhos `test`, `spec` ou `__tests__`
529
+ - Seção "Test Suite" ou "Automated Checks"
530
+ - Padrões de arquivos de `key-files.created` em arquivos SUMMARY.md correspondentes que correspondam a `*.test.*` ou `*.spec.*`
531
+
532
+ Coletar todos os caminhos únicos de arquivos de teste em `REGRESSION_FILES`.
533
+
534
+ **Passo 3: Executar testes de regressão (se encontrados)**
535
+
536
+ ```bash
537
+ # Detectar runner de testes e executar testes de fase anterior
538
+ if [ -f "package.json" ]; then
539
+ # Node.js — usar runner de testes do projeto
540
+ npx jest ${REGRESSION_FILES} --passWithNoTests --no-coverage -q 2>&1 || npx vitest run ${REGRESSION_FILES} 2>&1
541
+ elif [ -f "Cargo.toml" ]; then
542
+ cargo test 2>&1
543
+ elif [ -f "requirements.txt" ] || [ -f "pyproject.toml" ]; then
544
+ python -m pytest ${REGRESSION_FILES} -q --tb=short 2>&1
545
+ fi
546
+ ```
547
+
548
+ **Passo 4: Reportar resultados**
549
+
550
+ Se todos os testes passarem:
551
+ ```
552
+ ✓ Gate de regressão: {N} arquivos de teste de fase anterior passaram — nenhuma regressão detectada
553
+ ```
554
+ → Prosseguir para verify_phase_goal
555
+
556
+ Se algum teste falhar:
557
+ ```
558
+ ## ⚠ Regressão Entre Fases Detectada
559
+
560
+ A execução da Fase {X} pode ter quebrado funcionalidade de fases anteriores.
561
+
562
+ | Arquivo de Teste | Fase | Status | Detalhe |
563
+ |------------------|------|--------|---------|
564
+ | {file} | {origin_phase} | FALHOU | {first_failure_line} |
565
+
566
+ Opções:
567
+ 1. Corrigir regressões antes da verificação (recomendado)
568
+ 2. Continuar para verificação mesmo assim (regressões vão se acumular)
569
+ 3. Abortar fase — reverter e replanejar
570
+ ```
571
+
572
+ Usar AskUserQuestion para apresentar as opções.
573
+ </step>
574
+
575
+ <step name="verify_phase_goal">
576
+ Verificar se a fase atingiu seu OBJETIVO, não apenas se as tarefas foram concluídas.
577
+
578
+ ```bash
579
+ VERIFIER_SKILLS=$(node "./.claude/framework/bin/tools.cjs" agent-skills verifier 2>/dev/null)
580
+ ```
581
+
582
+ ```
583
+ Task(
584
+ prompt="Verify phase {phase_number} goal achievement.
585
+ Phase directory: {phase_dir}
586
+ Phase goal: {goal from ROADMAP.md}
587
+ Phase requirement IDs: {phase_req_ids}
588
+ Check must_haves against actual codebase.
589
+ Cross-reference requirement IDs from PLAN frontmatter against REQUIREMENTS.md — every ID MUST be accounted for.
590
+ Create VERIFICATION.md.
591
+ ${VERIFIER_SKILLS}",
592
+ subagent_type="verifier",
593
+ model="{verifier_model}"
594
+ )
595
+ ```
596
+
597
+ Ler status:
598
+ ```bash
599
+ grep "^status:" "$PHASE_DIR"/*-VERIFICATION.md | cut -d: -f2 | tr -d ' '
600
+ ```
601
+
602
+ | Status | Ação |
603
+ |--------|------|
604
+ | `passed` | → update_roadmap |
605
+ | `human_needed` | Apresentar itens para teste humano, obter aprovação ou feedback |
606
+ | `gaps_found` | Apresentar resumo de lacunas, oferecer `/planejar-fase {phase} --gaps ${WS}` |
607
+
608
+ **Se human_needed:**
609
+
610
+ **Passo A: Persistir itens de verificação humana como arquivo UAT.**
611
+
612
+ Criar `{phase_dir}/{phase_num}-HUMAN-UAT.md` usando formato de template UAT:
613
+
614
+ ```markdown
615
+ ---
616
+ status: partial
617
+ phase: {phase_num}-{phase_name}
618
+ source: [{phase_num}-VERIFICATION.md]
619
+ started: [agora ISO]
620
+ updated: [agora ISO]
621
+ ---
622
+
623
+ ## Teste Atual
624
+
625
+ [aguardando teste humano]
626
+
627
+ ## Testes
628
+
629
+ {Para cada item human_verification do VERIFICATION.md:}
630
+
631
+ ### {N}. {descrição do item}
632
+ expected: {comportamento esperado do VERIFICATION.md}
633
+ result: [pendente]
634
+
635
+ ## Resumo
636
+
637
+ total: {count}
638
+ passed: 0
639
+ issues: 0
640
+ pending: {count}
641
+ skipped: 0
642
+ blocked: 0
643
+
644
+ ## Lacunas
645
+ ```
646
+
647
+ Commitar o arquivo:
648
+ ```bash
649
+ node "./.claude/framework/bin/tools.cjs" commit "test({phase_num}): persist human verification items as UAT" --files "{phase_dir}/{phase_num}-HUMAN-UAT.md"
650
+ ```
651
+
652
+ **Passo B: Apresentar ao usuário:**
653
+
654
+ ```
655
+ ## ✓ Fase {X}: {Nome} — Verificação Humana Necessária
656
+
657
+ Todas as verificações automatizadas passaram. {N} itens precisam de teste humano:
658
+
659
+ {Da seção human_verification do VERIFICATION.md}
660
+
661
+ Itens salvos em `{phase_num}-HUMAN-UAT.md` — aparecerão em `/progresso` e `/auditar-uat`.
662
+
663
+ "approved" → continuar | Reportar problemas → gap closure
664
+ ```
665
+
666
+ **Se o usuário disser "approved":** Prosseguir para `update_roadmap`. O arquivo HUMAN-UAT.md persiste com `status: partial` e aparecerá em verificações futuras de progresso até o usuário executar `/verificar-trabalho` nele.
667
+
668
+ **Se o usuário reportar problemas:** Prosseguir para gap closure como implementado atualmente.
669
+
670
+ **Se gaps_found:**
671
+ ```
672
+ ## ⚠ Fase {X}: {Nome} — Lacunas Encontradas
673
+
674
+ **Pontuação:** {N}/{M} must-haves verificados
675
+ **Relatório:** {phase_dir}/{phase_num}-VERIFICATION.md
676
+
677
+ ### O Que Está Faltando
678
+ {Resumos de lacunas do VERIFICATION.md}
679
+
680
+ ---
681
+ ## ▶ Próximo Passo
682
+
683
+ `/planejar-fase {X} --gaps ${WS}`
684
+
685
+ <sub>`/clear` primeiro → janela de contexto fresca</sub>
686
+
687
+ Também: `cat {phase_dir}/{phase_num}-VERIFICATION.md` — relatório completo
688
+ Também: `/verificar-trabalho {X} ${WS}` — teste manual primeiro
689
+ ```
690
+
691
+ Ciclo de gap closure: `/planejar-fase {X} --gaps ${WS}` lê VERIFICATION.md → cria planos de lacuna com `gap_closure: true` → usuário executa `/executar-fase {X} --gaps-only ${WS}` → verificador re-executa.
692
+ </step>
693
+
694
+ <step name="update_roadmap">
695
+ **Marcar fase como completa e atualizar todos os arquivos de rastreamento:**
696
+
697
+ ```bash
698
+ COMPLETION=$(node "./.claude/framework/bin/tools.cjs" phase complete "${PHASE_NUMBER}")
699
+ ```
700
+
701
+ O CLI gerencia:
702
+ - Marcar checkbox de fase `[x]` com data de conclusão
703
+ - Atualizar tabela de Progresso (Status → Completo, data)
704
+ - Atualizar contagem de planos para final
705
+ - Avançar STATE.md para próxima fase
706
+ - Atualizar rastreabilidade do REQUIREMENTS.md
707
+ - Escanear por dívida de verificação (retorna array `warnings`)
708
+
709
+ Extrair do resultado: `next_phase`, `next_phase_name`, `is_last_phase`, `warnings`, `has_warnings`.
710
+
711
+ **Se has_warnings for true:**
712
+ ```
713
+ ## Fase {X} marcada como completa com {N} avisos:
714
+
715
+ {listar cada aviso}
716
+
717
+ Estes itens são rastreados e aparecerão em `/progresso` e `/auditar-uat`.
718
+ ```
719
+
720
+ ```bash
721
+ node "./.claude/framework/bin/tools.cjs" commit "docs(phase-{X}): complete phase execution" --files .planning/ROADMAP.md .planning/STATE.md .planning/REQUIREMENTS.md {phase_dir}/*-VERIFICATION.md
722
+ ```
723
+ </step>
724
+
725
+ <step name="update_project_md">
726
+ **Evoluir PROJECT.md para refletir conclusão de fase (evita drift de documento de planejamento — #956):**
727
+
728
+ PROJECT.md rastreia requisitos validados, decisões e estado atual. Sem este passo,
729
+ PROJECT.md fica para trás silenciosamente ao longo de múltiplas fases.
730
+
731
+ 1. Ler `.planning/PROJECT.md`
732
+ 2. Se o arquivo existir e tiver seção `## Requisitos Validados` ou `## Requisitos`:
733
+ - Mover requisitos validados por esta fase de Ativos → Validados
734
+ - Adicionar nota breve: `Validado na Fase {X}: {Nome}`
735
+ 3. Se o arquivo tiver seção `## Estado Atual` ou similar:
736
+ - Atualizá-la para refletir conclusão desta fase (ex: "Fase {X} completa — {one-liner}")
737
+ 4. Atualizar o rodapé `Última atualização:` para a data de hoje
738
+ 5. Commitar a mudança:
739
+
740
+ ```bash
741
+ node "./.claude/framework/bin/tools.cjs" commit "docs(phase-{X}): evolve PROJECT.md after phase completion" --files .planning/PROJECT.md
742
+ ```
743
+
744
+ **Pular este passo se** `.planning/PROJECT.md` não existir.
745
+ </step>
746
+
747
+ <step name="offer_next">
748
+
749
+ **Exceção:** Se `gaps_found`, o passo `verify_phase_goal` já apresenta o caminho de gap-closure (`/planejar-fase {X} --gaps`). Nenhum roteamento adicional necessário — pular avanço automático.
750
+
751
+ **Verificação sem transição (criado por cadeia de avanço automático):**
752
+
753
+ Analisar flag `--no-transition` de $ARGUMENTS.
754
+
755
+ **Se flag `--no-transition` presente:**
756
+
757
+ Execute-phase foi criado por avanço automático do plan-phase. NÃO executar transition.md.
758
+ Após verificação passar e roadmap ser atualizado, retornar status de conclusão ao pai:
759
+
760
+ ```
761
+ ## FASE CONCLUÍDA
762
+
763
+ Fase: ${PHASE_NUMBER} - ${PHASE_NAME}
764
+ Planos: ${completed_count}/${total_count}
765
+ Verificação: {Passou | Lacunas Encontradas}
766
+
767
+ [Incluir saída de aggregate_results]
768
+ ```
769
+
770
+ PARAR. Não prosseguir para avanço automático ou transição.
771
+
772
+ **Se flag `--no-transition` NÃO estiver presente:**
773
+
774
+ **Detecção de avanço automático:**
775
+
776
+ 1. Analisar flag `--auto` de $ARGUMENTS
777
+ 2. Ler tanto a flag de cadeia quanto a preferência do usuário (flag de cadeia já sincronizada no passo init):
778
+ ```bash
779
+ AUTO_CHAIN=$(node "./.claude/framework/bin/tools.cjs" config-get workflow._auto_chain_active 2>/dev/null || echo "false")
780
+ AUTO_CFG=$(node "./.claude/framework/bin/tools.cjs" config-get workflow.auto_advance 2>/dev/null || echo "false")
781
+ ```
782
+
783
+ **Se flag `--auto` presente OU `AUTO_CHAIN` for true OU `AUTO_CFG` for true (E verificação passou sem lacunas):**
784
+
785
+ ```
786
+ ╔══════════════════════════════════════════╗
787
+ ║ AVANÇANDO AUTOMATICAMENTE → TRANSIÇÃO ║
788
+ ║ Fase {X} verificada, continuando cadeia ║
789
+ ╚══════════════════════════════════════════╝
790
+ ```
791
+
792
+ Executar o workflow de transição inline (NÃO usar Task — contexto do orquestrador está ~10-15%, transição precisa de dados de conclusão de fase já no contexto):
793
+
794
+ Ler e seguir `./.claude/framework/workflows/transition.md`, propagando a flag `--auto` para que ela se propague para a invocação da próxima fase.
795
+
796
+ **Se nenhum de `--auto`, `AUTO_CHAIN` ou `AUTO_CFG` for true:**
797
+
798
+ **PARAR. Não avançar automaticamente. Não executar transição. Não planejar próxima fase. Apresentar opções ao usuário e aguardar.**
799
+
800
+ **IMPORTANTE: NÃO existe comando `/transition`. Nunca sugeri-lo. O workflow de transição é interno apenas.**
801
+
802
+ ```
803
+ ## ✓ Fase {X}: {Nome} Concluída
804
+
805
+ /progresso ${WS} — ver roadmap atualizado
806
+ /discutir-fase {next} ${WS} — discutir próxima fase antes de planejar
807
+ /planejar-fase {next} ${WS} — planejar próxima fase
808
+ /executar-fase {next} ${WS} — executar próxima fase
809
+ ```
810
+
811
+ Sugira apenas os comandos listados acima. Não invente ou alucine nomes de comandos.
812
+ </step>
813
+
814
+ </process>
815
+
816
+ <context_efficiency>
817
+ Orquestrador: ~10-15% do contexto para janelas 200k, pode usar mais para janelas 1M+.
818
+ Subagentes: contexto fresco por agente (200k-1M dependendo do modelo). Sem polling (Task bloqueia). Sem vazamento de contexto.
819
+
820
+ Para modelos de contexto 1M+, considerar:
821
+ - Passar contexto mais rico (snippets de código, saídas de dependências) diretamente para executores em vez de apenas caminhos de arquivo
822
+ - Executar fases pequenas (≤3 planos, sem dependências) inline sem overhead de criação de subagente
823
+ - Relaxar recomendações de /clear — início de degradação de contexto é muito mais distante com janela 5x
824
+ </context_efficiency>
825
+
826
+ <failure_handling>
827
+ - **Falha falsa classifyHandoffIfNeeded:** Agente reporta "falhado" mas erro é `classifyHandoffIfNeeded is not defined` → Bug do Claude Code, não framework. Spot-check (SUMMARY existe, commits presentes) → se passou, tratar como sucesso
828
+ - **Agente falha no meio do plano:** SUMMARY.md ausente → reportar, perguntar ao usuário como prosseguir
829
+ - **Cadeia de dependências quebra:** Onda 1 falha → Dependentes da Onda 2 provavelmente falham → usuário escolhe tentar ou pular
830
+ - **Todos os agentes na onda falham:** Problema sistêmico → parar, reportar para investigação
831
+ - **Checkpoint não resolvível:** "Pular este plano?" ou "Abortar execução da fase?" → registrar progresso parcial no STATE.md
832
+ </failure_handling>
833
+
834
+ <resumption>
835
+ Re-executar `/executar-fase {phase}` → discover_plans encontra SUMMARYs concluídos → os pula → retoma do primeiro plano incompleto → continua execução de ondas.
836
+
837
+ STATE.md rastreia: último plano concluído, onda atual, checkpoints pendentes.
838
+ </resumption>