@luanpdd/kit-mcp 1.30.1 → 1.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +168 -168
- package/gates/agent-no-recursive-dispatch.md +84 -82
- package/kit/COMANDOS.md +138 -138
- package/kit/README.md +76 -76
- package/kit/agents/advisor-researcher.md +107 -106
- package/kit/agents/ai-mutation-tester.md +1 -0
- package/kit/agents/assumptions-analyzer.md +108 -107
- package/kit/agents/audit-log-implementer.md +314 -313
- package/kit/agents/auditor-consistencia-isolamento.md +414 -413
- package/kit/agents/b2b-saas-architect.md +157 -156
- package/kit/agents/burn-rate-forecaster.md +1 -0
- package/kit/agents/cascading-failures-auditor.md +299 -298
- package/kit/agents/codebase-mapper.md +769 -768
- package/kit/agents/crm-pipeline-implementer.md +257 -256
- package/kit/agents/debugger.md +814 -813
- package/kit/agents/detector-tenant-quente.md +338 -337
- package/kit/agents/evolution-go-integrator.md +201 -200
- package/kit/agents/example-reviewer.md +22 -21
- package/kit/agents/executor.md +565 -564
- package/kit/agents/golden-signals-instrumenter.md +1 -0
- package/kit/agents/incident-investigator.md +1 -0
- package/kit/agents/integration-checker.md +201 -200
- package/kit/agents/invite-flow-implementer.md +190 -189
- package/kit/agents/legacy-characterizer.md +369 -368
- package/kit/agents/lgpd-compliance-auditor.md +296 -295
- package/kit/agents/load-shedding-instrumenter.md +1 -0
- package/kit/agents/multi-tenant-isolation-auditor.md +254 -253
- package/kit/agents/multi-tenant-rls-writer.md +341 -340
- package/kit/agents/nyquist-auditor.md +179 -178
- package/kit/agents/observability-coverage-auditor.md +316 -315
- package/kit/agents/observability-instrumenter.md +1 -0
- package/kit/agents/omm-auditor.md +1 -0
- package/kit/agents/org-onboarding-implementer.md +224 -223
- package/kit/agents/payload-capture-instrumenter.md +274 -273
- package/kit/agents/phase-researcher.md +697 -696
- package/kit/agents/plan-checker.md +273 -272
- package/kit/agents/planner.md +923 -922
- package/kit/agents/postmortem-writer.md +1 -0
- package/kit/agents/project-researcher.md +653 -652
- package/kit/agents/prr-conductor.md +1 -0
- package/kit/agents/refactor-safety-auditor.md +405 -404
- package/kit/agents/release-pipeline-auditor.md +1 -0
- package/kit/agents/research-synthesizer.md +246 -245
- package/kit/agents/roadmapper.md +678 -677
- package/kit/agents/schema-checker.md +1 -0
- package/kit/agents/seam-finder.md +360 -359
- package/kit/agents/shotgun-surgery-detector.md +350 -349
- package/kit/agents/slo-engineer.md +1 -0
- package/kit/agents/storytelling-analyst.md +1 -0
- package/kit/agents/supabase-architect.md +1 -0
- package/kit/agents/supabase-auth-bootstrapper.md +1 -0
- package/kit/agents/supabase-branching-architect.md +563 -562
- package/kit/agents/supabase-cicd-pipeline-implementer.md +778 -777
- package/kit/agents/supabase-column-privileges-writer.md +400 -399
- package/kit/agents/supabase-edge-fn-tester.md +2 -1
- package/kit/agents/supabase-edge-fn-writer.md +2 -1
- package/kit/agents/supabase-migration-writer.md +386 -385
- package/kit/agents/supabase-rbac-implementer.md +393 -392
- package/kit/agents/supabase-realtime-implementer.md +364 -363
- package/kit/agents/supabase-rls-hardener.md +522 -521
- package/kit/agents/supabase-rls-writer.md +324 -323
- package/kit/agents/supabase-roles-implementer.md +356 -355
- package/kit/agents/supabase-storage-implementer.md +1 -0
- package/kit/agents/super-admin-implementer.md +282 -281
- package/kit/agents/toil-auditor.md +1 -0
- package/kit/agents/ui-auditor.md +438 -437
- package/kit/agents/ui-checker.md +303 -302
- package/kit/agents/ui-researcher.md +356 -355
- package/kit/agents/user-profiler.md +176 -175
- package/kit/agents/validador-evolucao-schema.md +336 -335
- package/kit/agents/verifier.md +729 -728
- package/kit/commands/adicionar-backlog.md +75 -75
- package/kit/commands/adicionar-fase.md +42 -42
- package/kit/commands/adicionar-tarefa.md +45 -45
- package/kit/commands/adicionar-testes.md +41 -41
- package/kit/commands/ajuda.md +21 -21
- package/kit/commands/atualizar.md +37 -37
- package/kit/commands/auditar-cascading.md +111 -111
- package/kit/commands/auditar-marco.md +179 -179
- package/kit/commands/auditar-observabilidade-cobertura.md +183 -183
- package/kit/commands/auditar-refactor.md +219 -219
- package/kit/commands/auditar-release.md +109 -109
- package/kit/commands/auditar-uat.md +23 -23
- package/kit/commands/autonomo.md +40 -40
- package/kit/commands/branch-pr.md +24 -24
- package/kit/commands/burn-rate-status.md +408 -408
- package/kit/commands/capturar-payloads.md +193 -193
- package/kit/commands/caracterizar.md +212 -212
- package/kit/commands/concluir-marco.md +247 -247
- package/kit/commands/configuracoes.md +36 -36
- package/kit/commands/dados-distribuidos.md +188 -188
- package/kit/commands/definir-perfil.md +10 -10
- package/kit/commands/depurar.md +190 -190
- package/kit/commands/detectar-duplicacao.md +197 -197
- package/kit/commands/discutir-fase.md +131 -131
- package/kit/commands/encontrar-seams.md +136 -136
- package/kit/commands/entrar-discord.md +17 -17
- package/kit/commands/estatisticas.md +18 -18
- package/kit/commands/example-greeting.md +33 -33
- package/kit/commands/executar-fase.md +58 -58
- package/kit/commands/expresso.md +56 -56
- package/kit/commands/fase-ui.md +34 -34
- package/kit/commands/fazer.md +57 -57
- package/kit/commands/fio.md +125 -125
- package/kit/commands/fluxos-trabalho.md +64 -64
- package/kit/commands/forense.md +176 -176
- package/kit/commands/gerenciador.md +38 -38
- package/kit/commands/inserir-fase.md +31 -31
- package/kit/commands/legacy.md +263 -263
- package/kit/commands/limpeza.md +17 -17
- package/kit/commands/listar-hipoteses-fase.md +45 -45
- package/kit/commands/listar-workspaces.md +18 -18
- package/kit/commands/load-shedding.md +117 -117
- package/kit/commands/mapear-codebase.md +70 -70
- package/kit/commands/multi-tenant.md +163 -163
- package/kit/commands/nota.md +33 -33
- package/kit/commands/novo-marco.md +43 -43
- package/kit/commands/novo-projeto.md +41 -41
- package/kit/commands/novo-workspace.md +43 -43
- package/kit/commands/pausar-trabalho.md +37 -37
- package/kit/commands/perfil-usuario.md +45 -45
- package/kit/commands/pesquisar-fase.md +195 -195
- package/kit/commands/planejar-fase.md +67 -67
- package/kit/commands/planejar-lacunas.md +33 -33
- package/kit/commands/plantar-ideia.md +25 -25
- package/kit/commands/progresso.md +24 -24
- package/kit/commands/proximo.md +30 -30
- package/kit/commands/publicar.md +490 -490
- package/kit/commands/rapido.md +35 -35
- package/kit/commands/reaplicar-patches.md +124 -124
- package/kit/commands/refactor-seguro.md +321 -321
- package/kit/commands/relatorio-sessao.md +19 -19
- package/kit/commands/remover-fase.md +31 -31
- package/kit/commands/remover-workspace.md +26 -26
- package/kit/commands/resumo-marco.md +50 -50
- package/kit/commands/retomar-trabalho.md +40 -40
- package/kit/commands/revisar-backlog.md +60 -60
- package/kit/commands/revisar-ui.md +32 -32
- package/kit/commands/revisar.md +37 -37
- package/kit/commands/saude.md +21 -21
- package/kit/commands/setup-notion.md +93 -93
- package/kit/commands/storytelling.md +179 -179
- package/kit/commands/sync-main.md +68 -68
- package/kit/commands/validar-fase.md +35 -35
- package/kit/commands/verificar-tarefas.md +44 -44
- package/kit/commands/verificar-trabalho.md +64 -64
- package/kit/file-manifest.json +82 -81
- package/kit/framework/bin/lib/commands.cjs +959 -959
- package/kit/framework/bin/lib/config.cjs +442 -442
- package/kit/framework/bin/lib/core.cjs +1230 -1230
- package/kit/framework/bin/lib/frontmatter.cjs +336 -336
- package/kit/framework/bin/lib/init.cjs +1442 -1442
- package/kit/framework/bin/lib/milestone.cjs +252 -252
- package/kit/framework/bin/lib/model-profiles.cjs +68 -68
- package/kit/framework/bin/lib/phase.cjs +888 -888
- package/kit/framework/bin/lib/profile-output.cjs +952 -952
- package/kit/framework/bin/lib/profile-pipeline.cjs +539 -539
- package/kit/framework/bin/lib/roadmap.cjs +329 -329
- package/kit/framework/bin/lib/security.cjs +382 -382
- package/kit/framework/bin/lib/state.cjs +1031 -1031
- package/kit/framework/bin/lib/template.cjs +222 -222
- package/kit/framework/bin/lib/uat.cjs +282 -282
- package/kit/framework/bin/lib/verify.cjs +888 -888
- package/kit/framework/bin/lib/workstream.cjs +491 -491
- package/kit/framework/bin/tools.cjs +918 -918
- package/kit/framework/commands/workstreams.md +63 -63
- package/kit/framework/references/checkpoints.md +778 -778
- package/kit/framework/references/continuation-format.md +249 -249
- package/kit/framework/references/decimal-phase-calculation.md +64 -64
- package/kit/framework/references/git-integration.md +295 -295
- package/kit/framework/references/git-planning-commit.md +38 -38
- package/kit/framework/references/model-profile-resolution.md +36 -36
- package/kit/framework/references/model-profiles.md +139 -139
- package/kit/framework/references/phase-argument-parsing.md +61 -61
- package/kit/framework/references/planning-config.md +202 -202
- package/kit/framework/references/questioning.md +162 -162
- package/kit/framework/references/tdd.md +263 -263
- package/kit/framework/references/ui-brand.md +160 -160
- package/kit/framework/references/user-profiling.md +657 -657
- package/kit/framework/references/verification-patterns.md +612 -612
- package/kit/framework/references/workstream-flag.md +58 -58
- package/kit/framework/templates/DEBUG.md +164 -164
- package/kit/framework/templates/UAT.md +265 -265
- package/kit/framework/templates/UI-SPEC.md +100 -100
- package/kit/framework/templates/VALIDATION.md +76 -76
- package/kit/framework/templates/claude-md.md +122 -122
- package/kit/framework/templates/codebase/architecture.md +185 -185
- package/kit/framework/templates/codebase/concerns.md +205 -205
- package/kit/framework/templates/codebase/conventions.md +204 -204
- package/kit/framework/templates/codebase/integrations.md +192 -192
- package/kit/framework/templates/codebase/stack.md +158 -158
- package/kit/framework/templates/codebase/structure.md +199 -199
- package/kit/framework/templates/codebase/testing.md +301 -301
- package/kit/framework/templates/config.json +44 -44
- package/kit/framework/templates/context.md +352 -352
- package/kit/framework/templates/continue-here.md +78 -78
- package/kit/framework/templates/copilot-instructions.md +7 -7
- package/kit/framework/templates/debug-subagent-prompt.md +91 -91
- package/kit/framework/templates/dev-preferences.md +20 -20
- package/kit/framework/templates/discovery.md +146 -146
- package/kit/framework/templates/discussion-log.md +63 -63
- package/kit/framework/templates/milestone-archive.md +123 -123
- package/kit/framework/templates/milestone.md +115 -115
- package/kit/framework/templates/phase-prompt.md +610 -610
- package/kit/framework/templates/planner-subagent-prompt.md +117 -117
- package/kit/framework/templates/project.md +186 -186
- package/kit/framework/templates/requirements.md +231 -231
- package/kit/framework/templates/research-project/ARCHITECTURE.md +204 -204
- package/kit/framework/templates/research-project/FEATURES.md +147 -147
- package/kit/framework/templates/research-project/PITFALLS.md +200 -200
- package/kit/framework/templates/research-project/STACK.md +120 -120
- package/kit/framework/templates/research-project/SUMMARY.md +170 -170
- package/kit/framework/templates/research.md +419 -419
- package/kit/framework/templates/retrospective.md +54 -54
- package/kit/framework/templates/roadmap.md +202 -202
- package/kit/framework/templates/state.md +176 -176
- package/kit/framework/templates/summary-complex.md +59 -59
- package/kit/framework/templates/summary-minimal.md +41 -41
- package/kit/framework/templates/summary-standard.md +48 -48
- package/kit/framework/templates/summary.md +209 -209
- package/kit/framework/templates/user-profile.md +146 -146
- package/kit/framework/templates/user-setup.md +256 -256
- package/kit/framework/templates/verification-report.md +258 -258
- package/kit/framework/workflows/add-phase.md +112 -112
- package/kit/framework/workflows/add-tests.md +351 -351
- package/kit/framework/workflows/add-todo.md +158 -158
- package/kit/framework/workflows/audit-milestone.md +340 -340
- package/kit/framework/workflows/audit-uat.md +109 -109
- package/kit/framework/workflows/autonomous.md +891 -891
- package/kit/framework/workflows/check-todos.md +177 -177
- package/kit/framework/workflows/cleanup.md +152 -152
- package/kit/framework/workflows/complete-milestone.md +696 -696
- package/kit/framework/workflows/diagnose-issues.md +231 -231
- package/kit/framework/workflows/discovery-phase.md +289 -289
- package/kit/framework/workflows/discuss-phase-assumptions.md +653 -653
- package/kit/framework/workflows/discuss-phase.md +784 -784
- package/kit/framework/workflows/do.md +104 -104
- package/kit/framework/workflows/execute-phase.md +838 -838
- package/kit/framework/workflows/execute-plan.md +510 -510
- package/kit/framework/workflows/fast.md +102 -102
- package/kit/framework/workflows/forensics.md +265 -265
- package/kit/framework/workflows/health.md +181 -181
- package/kit/framework/workflows/help.md +619 -619
- package/kit/framework/workflows/insert-phase.md +130 -130
- package/kit/framework/workflows/list-phase-assumptions.md +178 -178
- package/kit/framework/workflows/list-workspaces.md +56 -56
- package/kit/framework/workflows/manager.md +362 -362
- package/kit/framework/workflows/map-codebase.md +377 -377
- package/kit/framework/workflows/milestone-summary.md +223 -223
- package/kit/framework/workflows/new-milestone.md +486 -486
- package/kit/framework/workflows/new-project.md +1159 -1159
- package/kit/framework/workflows/new-workspace.md +237 -237
- package/kit/framework/workflows/next.md +97 -97
- package/kit/framework/workflows/node-repair.md +92 -92
- package/kit/framework/workflows/note.md +156 -156
- package/kit/framework/workflows/pause-work.md +176 -176
- package/kit/framework/workflows/plan-milestone-gaps.md +273 -273
- package/kit/framework/workflows/plan-phase.md +765 -765
- package/kit/framework/workflows/plant-seed.md +169 -169
- package/kit/framework/workflows/pr-branch.md +129 -129
- package/kit/framework/workflows/profile-user.md +450 -450
- package/kit/framework/workflows/progress.md +507 -507
- package/kit/framework/workflows/quick.md +757 -757
- package/kit/framework/workflows/remove-phase.md +155 -155
- package/kit/framework/workflows/remove-workspace.md +90 -90
- package/kit/framework/workflows/research-phase.md +82 -82
- package/kit/framework/workflows/resume-project.md +326 -326
- package/kit/framework/workflows/review.md +228 -228
- package/kit/framework/workflows/session-report.md +146 -146
- package/kit/framework/workflows/settings.md +283 -283
- package/kit/framework/workflows/ship.md +228 -228
- package/kit/framework/workflows/stats.md +60 -60
- package/kit/framework/workflows/transition.md +671 -671
- package/kit/framework/workflows/ui-phase.md +302 -302
- package/kit/framework/workflows/ui-review.md +165 -165
- package/kit/framework/workflows/update.md +323 -323
- package/kit/framework/workflows/validate-phase.md +174 -174
- package/kit/framework/workflows/verify-phase.md +252 -252
- package/kit/framework/workflows/verify-work.md +637 -637
- package/kit/hooks/check-update.js +118 -118
- package/kit/hooks/context-monitor.js +163 -163
- package/kit/hooks/kit-attribution-reminder.cjs +30 -36
- package/kit/hooks/kit-router.cjs +137 -0
- package/kit/hooks/prompt-guard.js +103 -103
- package/kit/hooks/statusline.js +125 -125
- package/kit/hooks/workflow-guard.js +101 -101
- package/kit/settings.json +45 -45
- package/kit/skills/ai-prompt-characterization/SKILL.md +335 -335
- package/kit/skills/armadilhas-sistemas-distribuidos/SKILL.md +447 -447
- package/kit/skills/audit-log-multi-tenant/SKILL.md +340 -340
- package/kit/skills/b2b-saas-architecture/SKILL.md +300 -300
- package/kit/skills/consistencia-leitura-replica/SKILL.md +385 -385
- package/kit/skills/crm-lead-pipeline-patterns/SKILL.md +343 -343
- package/kit/skills/escolha-modelo-consistencia/SKILL.md +494 -494
- package/kit/skills/evolucao-schema-compativel/SKILL.md +448 -448
- package/kit/skills/evolution-go-whatsapp-integration/SKILL.md +322 -322
- package/kit/skills/example-skill/SKILL.md +42 -42
- package/kit/skills/legacy-api-only-applications/SKILL.md +358 -358
- package/kit/skills/legacy-characterization-tests/SKILL.md +330 -330
- package/kit/skills/legacy-effect-analysis/SKILL.md +331 -331
- package/kit/skills/legacy-extract-class/SKILL.md +203 -203
- package/kit/skills/legacy-programming-by-difference/SKILL.md +252 -252
- package/kit/skills/legacy-seams-and-test-harness/SKILL.md +460 -460
- package/kit/skills/legacy-shotgun-surgery/SKILL.md +286 -286
- package/kit/skills/legacy-sprout-wrap-techniques/SKILL.md +434 -434
- package/kit/skills/legacy-storytelling-naked-crc/SKILL.md +270 -270
- package/kit/skills/lgpd-multi-tenant-compliance/SKILL.md +340 -340
- package/kit/skills/member-invite-flow/SKILL.md +305 -305
- package/kit/skills/member-management-react-shadcn/SKILL.md +328 -328
- package/kit/skills/multi-tenant-performance-scaling/SKILL.md +316 -316
- package/kit/skills/multi-tenant-rls-hierarchy/SKILL.md +342 -342
- package/kit/skills/org-onboarding-flow/SKILL.md +257 -257
- package/kit/skills/org-switcher-react-pattern/SKILL.md +349 -349
- package/kit/skills/permission-gate-react-pattern/SKILL.md +271 -271
- package/kit/skills/postgres-isolamento-concorrencia/SKILL.md +552 -552
- package/kit/skills/pre-refactor-characterization/SKILL.md +421 -421
- package/kit/skills/rbac-permissions-matrix-supabase/SKILL.md +338 -338
- package/kit/skills/streams-eventos-cdc/SKILL.md +711 -711
- package/kit/skills/supabase-branching-workflow/SKILL.md +544 -544
- package/kit/skills/supabase-ci-cd-github-actions/SKILL.md +880 -880
- package/kit/skills/supabase-column-level-security/SKILL.md +426 -426
- package/kit/skills/supabase-config-toml-remotes/SKILL.md +807 -807
- package/kit/skills/supabase-custom-claims-rbac/SKILL.md +472 -472
- package/kit/skills/supabase-edge-functions/SKILL.md +1 -1
- package/kit/skills/supabase-edge-functions-auth/SKILL.md +1 -1
- package/kit/skills/supabase-edge-functions-limits/SKILL.md +1 -1
- package/kit/skills/supabase-edge-functions-mcp-server/SKILL.md +1 -1
- package/kit/skills/supabase-edge-functions-testing/SKILL.md +1 -1
- package/kit/skills/supabase-edge-runtime-builtins/SKILL.md +1 -1
- package/kit/skills/supabase-migration-repair/SKILL.md +823 -823
- package/kit/skills/supabase-migrations/SKILL.md +297 -297
- package/kit/skills/supabase-pgtap-testing/SKILL.md +1053 -1053
- package/kit/skills/supabase-postgres-roles/SKILL.md +392 -392
- package/kit/skills/supabase-realtime/SKILL.md +460 -460
- package/kit/skills/supabase-rls-defense-in-depth/SKILL.md +418 -418
- package/kit/skills/supabase-rls-policies/SKILL.md +635 -635
- package/kit/skills/super-admin-platform-pattern/SKILL.md +326 -326
- package/kit/skills/tenant-quente-mitigacao/SKILL.md +605 -605
- package/kit/skills/whatsapp-conversation-state-machine/SKILL.md +287 -287
- package/package.json +1 -1
- package/src/core/kit.js +216 -216
- package/src/core/reflect.js +247 -247
- package/src/core/reverse-sync.js +372 -372
- package/src/core/sync.js +437 -418
- package/src/core/watch.js +121 -121
- package/src/mcp-server/index.js +794 -715
|
@@ -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>
|