@luanpdd/kit-mcp 0.2.1 → 0.3.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.
Files changed (219) hide show
  1. package/kit/COMANDOS.md +123 -0
  2. package/kit/agents/advisor-researcher.md +121 -0
  3. package/kit/agents/assumptions-analyzer.md +122 -0
  4. package/kit/agents/codebase-mapper.md +787 -0
  5. package/kit/agents/debugger.md +796 -0
  6. package/kit/agents/executor.md +516 -0
  7. package/kit/agents/integration-checker.md +217 -0
  8. package/kit/agents/nyquist-auditor.md +195 -0
  9. package/kit/agents/phase-researcher.md +715 -0
  10. package/kit/agents/plan-checker.md +289 -0
  11. package/kit/agents/planner.md +1373 -0
  12. package/kit/agents/project-researcher.md +671 -0
  13. package/kit/agents/research-synthesizer.md +259 -0
  14. package/kit/agents/roadmapper.md +696 -0
  15. package/kit/agents/ui-auditor.md +458 -0
  16. package/kit/agents/ui-checker.md +319 -0
  17. package/kit/agents/ui-researcher.md +374 -0
  18. package/kit/agents/user-profiler.md +183 -0
  19. package/kit/agents/verifier.md +719 -0
  20. package/kit/commands/adicionar-backlog.md +76 -0
  21. package/kit/commands/adicionar-fase.md +43 -0
  22. package/kit/commands/adicionar-tarefa.md +47 -0
  23. package/kit/commands/adicionar-testes.md +41 -0
  24. package/kit/commands/ajuda.md +22 -0
  25. package/kit/commands/atualizar.md +37 -0
  26. package/kit/commands/auditar-marco.md +36 -0
  27. package/kit/commands/auditar-uat.md +24 -0
  28. package/kit/commands/autonomo.md +41 -0
  29. package/kit/commands/branch-pr.md +25 -0
  30. package/kit/commands/concluir-marco.md +136 -0
  31. package/kit/commands/configuracoes.md +36 -0
  32. package/kit/commands/definir-perfil.md +12 -0
  33. package/kit/commands/depurar.md +173 -0
  34. package/kit/commands/discutir-fase.md +64 -0
  35. package/kit/commands/entrar-discord.md +18 -0
  36. package/kit/commands/estatisticas.md +18 -0
  37. package/kit/commands/executar-fase.md +59 -0
  38. package/kit/commands/expresso.md +47 -0
  39. package/kit/commands/fase-ui.md +34 -0
  40. package/kit/commands/fazer.md +30 -0
  41. package/kit/commands/fio.md +126 -0
  42. package/kit/commands/fluxos-trabalho.md +64 -0
  43. package/kit/commands/forense.md +56 -0
  44. package/kit/commands/gerenciador.md +39 -0
  45. package/kit/commands/inserir-fase.md +32 -0
  46. package/kit/commands/limpeza.md +18 -0
  47. package/kit/commands/listar-hipoteses-fase.md +46 -0
  48. package/kit/commands/listar-workspaces.md +19 -0
  49. package/kit/commands/mapear-codebase.md +71 -0
  50. package/kit/commands/nota.md +34 -0
  51. package/kit/commands/novo-marco.md +44 -0
  52. package/kit/commands/novo-projeto.md +42 -0
  53. package/kit/commands/novo-workspace.md +44 -0
  54. package/kit/commands/pausar-trabalho.md +38 -0
  55. package/kit/commands/perfil-usuario.md +46 -0
  56. package/kit/commands/pesquisar-fase.md +195 -0
  57. package/kit/commands/planejar-fase.md +47 -0
  58. package/kit/commands/planejar-lacunas.md +34 -0
  59. package/kit/commands/plantar-ideia.md +26 -0
  60. package/kit/commands/progresso.md +24 -0
  61. package/kit/commands/proximo.md +24 -0
  62. package/kit/commands/publicar.md +370 -0
  63. package/kit/commands/rapido.md +30 -0
  64. package/kit/commands/reaplicar-patches.md +124 -0
  65. package/kit/commands/relatorio-sessao.md +19 -0
  66. package/kit/commands/remover-fase.md +31 -0
  67. package/kit/commands/remover-workspace.md +26 -0
  68. package/kit/commands/resumo-marco.md +51 -0
  69. package/kit/commands/retomar-trabalho.md +40 -0
  70. package/kit/commands/revisar-backlog.md +60 -0
  71. package/kit/commands/revisar-ui.md +32 -0
  72. package/kit/commands/revisar.md +37 -0
  73. package/kit/commands/saude.md +22 -0
  74. package/kit/commands/setup-notion.md +93 -0
  75. package/kit/commands/sync-main.md +68 -0
  76. package/kit/commands/validar-fase.md +35 -0
  77. package/kit/commands/verificar-tarefas.md +45 -0
  78. package/kit/commands/verificar-trabalho.md +38 -0
  79. package/kit/file-manifest.json +219 -0
  80. package/kit/framework/VERSION +1 -0
  81. package/kit/framework/bin/lib/commands.cjs +959 -0
  82. package/kit/framework/bin/lib/config.cjs +442 -0
  83. package/kit/framework/bin/lib/core.cjs +1230 -0
  84. package/kit/framework/bin/lib/frontmatter.cjs +336 -0
  85. package/kit/framework/bin/lib/init.cjs +1442 -0
  86. package/kit/framework/bin/lib/milestone.cjs +252 -0
  87. package/kit/framework/bin/lib/model-profiles.cjs +68 -0
  88. package/kit/framework/bin/lib/phase.cjs +888 -0
  89. package/kit/framework/bin/lib/profile-output.cjs +952 -0
  90. package/kit/framework/bin/lib/profile-pipeline.cjs +539 -0
  91. package/kit/framework/bin/lib/roadmap.cjs +329 -0
  92. package/kit/framework/bin/lib/security.cjs +382 -0
  93. package/kit/framework/bin/lib/state.cjs +1031 -0
  94. package/kit/framework/bin/lib/template.cjs +222 -0
  95. package/kit/framework/bin/lib/uat.cjs +282 -0
  96. package/kit/framework/bin/lib/verify.cjs +888 -0
  97. package/kit/framework/bin/lib/workstream.cjs +491 -0
  98. package/kit/framework/bin/tools.cjs +918 -0
  99. package/kit/framework/commands/workstreams.md +63 -0
  100. package/kit/framework/references/checkpoints.md +778 -0
  101. package/kit/framework/references/continuation-format.md +249 -0
  102. package/kit/framework/references/decimal-phase-calculation.md +64 -0
  103. package/kit/framework/references/git-integration.md +295 -0
  104. package/kit/framework/references/git-planning-commit.md +38 -0
  105. package/kit/framework/references/model-profile-resolution.md +36 -0
  106. package/kit/framework/references/model-profiles.md +139 -0
  107. package/kit/framework/references/phase-argument-parsing.md +61 -0
  108. package/kit/framework/references/planning-config.md +202 -0
  109. package/kit/framework/references/questioning.md +162 -0
  110. package/kit/framework/references/tdd.md +263 -0
  111. package/kit/framework/references/ui-brand.md +160 -0
  112. package/kit/framework/references/user-profiling.md +657 -0
  113. package/kit/framework/references/verification-patterns.md +612 -0
  114. package/kit/framework/references/workstream-flag.md +58 -0
  115. package/kit/framework/templates/DEBUG.md +164 -0
  116. package/kit/framework/templates/UAT.md +265 -0
  117. package/kit/framework/templates/UI-SPEC.md +100 -0
  118. package/kit/framework/templates/VALIDATION.md +76 -0
  119. package/kit/framework/templates/claude-md.md +122 -0
  120. package/kit/framework/templates/codebase/architecture.md +185 -0
  121. package/kit/framework/templates/codebase/concerns.md +205 -0
  122. package/kit/framework/templates/codebase/conventions.md +204 -0
  123. package/kit/framework/templates/codebase/integrations.md +192 -0
  124. package/kit/framework/templates/codebase/stack.md +158 -0
  125. package/kit/framework/templates/codebase/structure.md +199 -0
  126. package/kit/framework/templates/codebase/testing.md +301 -0
  127. package/kit/framework/templates/config.json +44 -0
  128. package/kit/framework/templates/context.md +352 -0
  129. package/kit/framework/templates/continue-here.md +78 -0
  130. package/kit/framework/templates/copilot-instructions.md +7 -0
  131. package/kit/framework/templates/debug-subagent-prompt.md +91 -0
  132. package/kit/framework/templates/dev-preferences.md +20 -0
  133. package/kit/framework/templates/discovery.md +146 -0
  134. package/kit/framework/templates/discussion-log.md +63 -0
  135. package/kit/framework/templates/milestone-archive.md +123 -0
  136. package/kit/framework/templates/milestone.md +115 -0
  137. package/kit/framework/templates/phase-prompt.md +610 -0
  138. package/kit/framework/templates/planner-subagent-prompt.md +117 -0
  139. package/kit/framework/templates/project.md +186 -0
  140. package/kit/framework/templates/requirements.md +231 -0
  141. package/kit/framework/templates/research-project/ARCHITECTURE.md +204 -0
  142. package/kit/framework/templates/research-project/FEATURES.md +147 -0
  143. package/kit/framework/templates/research-project/PITFALLS.md +200 -0
  144. package/kit/framework/templates/research-project/STACK.md +120 -0
  145. package/kit/framework/templates/research-project/SUMMARY.md +170 -0
  146. package/kit/framework/templates/research.md +419 -0
  147. package/kit/framework/templates/retrospective.md +54 -0
  148. package/kit/framework/templates/roadmap.md +202 -0
  149. package/kit/framework/templates/state.md +176 -0
  150. package/kit/framework/templates/summary-complex.md +59 -0
  151. package/kit/framework/templates/summary-minimal.md +41 -0
  152. package/kit/framework/templates/summary-standard.md +48 -0
  153. package/kit/framework/templates/summary.md +209 -0
  154. package/kit/framework/templates/user-profile.md +146 -0
  155. package/kit/framework/templates/user-setup.md +256 -0
  156. package/kit/framework/templates/verification-report.md +258 -0
  157. package/kit/framework/workflows/add-phase.md +112 -0
  158. package/kit/framework/workflows/add-tests.md +351 -0
  159. package/kit/framework/workflows/add-todo.md +158 -0
  160. package/kit/framework/workflows/audit-milestone.md +340 -0
  161. package/kit/framework/workflows/audit-uat.md +109 -0
  162. package/kit/framework/workflows/autonomous.md +891 -0
  163. package/kit/framework/workflows/check-todos.md +177 -0
  164. package/kit/framework/workflows/cleanup.md +152 -0
  165. package/kit/framework/workflows/complete-milestone.md +696 -0
  166. package/kit/framework/workflows/diagnose-issues.md +231 -0
  167. package/kit/framework/workflows/discovery-phase.md +289 -0
  168. package/kit/framework/workflows/discuss-phase-assumptions.md +653 -0
  169. package/kit/framework/workflows/discuss-phase.md +1049 -0
  170. package/kit/framework/workflows/do.md +104 -0
  171. package/kit/framework/workflows/execute-phase.md +838 -0
  172. package/kit/framework/workflows/execute-plan.md +510 -0
  173. package/kit/framework/workflows/fast.md +102 -0
  174. package/kit/framework/workflows/forensics.md +265 -0
  175. package/kit/framework/workflows/health.md +181 -0
  176. package/kit/framework/workflows/help.md +606 -0
  177. package/kit/framework/workflows/insert-phase.md +130 -0
  178. package/kit/framework/workflows/list-phase-assumptions.md +178 -0
  179. package/kit/framework/workflows/list-workspaces.md +56 -0
  180. package/kit/framework/workflows/manager.md +362 -0
  181. package/kit/framework/workflows/map-codebase.md +377 -0
  182. package/kit/framework/workflows/milestone-summary.md +223 -0
  183. package/kit/framework/workflows/new-milestone.md +486 -0
  184. package/kit/framework/workflows/new-project.md +1250 -0
  185. package/kit/framework/workflows/new-workspace.md +237 -0
  186. package/kit/framework/workflows/next.md +97 -0
  187. package/kit/framework/workflows/node-repair.md +92 -0
  188. package/kit/framework/workflows/note.md +156 -0
  189. package/kit/framework/workflows/pause-work.md +176 -0
  190. package/kit/framework/workflows/plan-milestone-gaps.md +273 -0
  191. package/kit/framework/workflows/plan-phase.md +859 -0
  192. package/kit/framework/workflows/plant-seed.md +169 -0
  193. package/kit/framework/workflows/pr-branch.md +129 -0
  194. package/kit/framework/workflows/profile-user.md +450 -0
  195. package/kit/framework/workflows/progress.md +507 -0
  196. package/kit/framework/workflows/quick.md +757 -0
  197. package/kit/framework/workflows/remove-phase.md +155 -0
  198. package/kit/framework/workflows/remove-workspace.md +90 -0
  199. package/kit/framework/workflows/research-phase.md +82 -0
  200. package/kit/framework/workflows/resume-project.md +326 -0
  201. package/kit/framework/workflows/review.md +228 -0
  202. package/kit/framework/workflows/session-report.md +146 -0
  203. package/kit/framework/workflows/settings.md +283 -0
  204. package/kit/framework/workflows/ship.md +228 -0
  205. package/kit/framework/workflows/stats.md +60 -0
  206. package/kit/framework/workflows/transition.md +671 -0
  207. package/kit/framework/workflows/ui-phase.md +302 -0
  208. package/kit/framework/workflows/ui-review.md +165 -0
  209. package/kit/framework/workflows/update.md +323 -0
  210. package/kit/framework/workflows/validate-phase.md +174 -0
  211. package/kit/framework/workflows/verify-phase.md +252 -0
  212. package/kit/framework/workflows/verify-work.md +637 -0
  213. package/kit/hooks/check-update.js +114 -0
  214. package/kit/hooks/context-monitor.js +156 -0
  215. package/kit/hooks/prompt-guard.js +96 -0
  216. package/kit/hooks/statusline.js +119 -0
  217. package/kit/hooks/workflow-guard.js +94 -0
  218. package/kit/settings.json +45 -0
  219. package/package.json +1 -1
@@ -0,0 +1,1049 @@
1
+ <purpose>
2
+ Extrair decisões de implementação que agentes downstream precisam. Analisar a fase para identificar áreas cinzentas, deixar o usuário escolher o que discutir, então fazer deep-dive em cada área selecionada até a satisfação.
3
+
4
+ Você é um parceiro de pensamento, não um entrevistador. O usuário é o visionário — você é o construtor. Seu trabalho é capturar decisões que guiarão pesquisa e planejamento, não descobrir a implementação por conta própria.
5
+ </purpose>
6
+
7
+ <downstream_awareness>
8
+ **CONTEXT.md alimenta:**
9
+
10
+ 1. **phase-researcher** — Lê CONTEXT.md para saber O QUE pesquisar
11
+ - "Usuário quer layout baseado em cards" → pesquisador investiga padrões de componentes de card
12
+ - "Scroll infinito decidido" → pesquisador investiga bibliotecas de virtualização
13
+
14
+ 2. **planner** — Lê CONTEXT.md para saber QUAIS decisões estão bloqueadas
15
+ - "Pull-to-refresh no mobile" → planejador inclui isso nas especificações de tarefas
16
+ - "Discrição do Claude: skeleton de carregamento" → planejador pode decidir a abordagem
17
+
18
+ **Seu trabalho:** Capturar decisões claramente o suficiente para que agentes downstream possam agir nelas sem perguntar ao usuário novamente.
19
+
20
+ **Não é seu trabalho:** Descobrir COMO implementar. Isso é o que pesquisa e planejamento fazem com as decisões que você captura.
21
+ </downstream_awareness>
22
+
23
+ <philosophy>
24
+ **Usuário = fundador/visionário. Claude = construtor.**
25
+
26
+ O usuário sabe:
27
+ - Como imagina funcionando
28
+ - Como deve ser o visual/sensação
29
+ - O que é essencial vs bom ter
30
+ - Comportamentos ou referências específicas que têm em mente
31
+
32
+ O usuário não sabe (e não deve ser perguntado):
33
+ - Padrões da base de código (pesquisador lê o código)
34
+ - Riscos técnicos (pesquisador identifica estes)
35
+ - Abordagem de implementação (planejador descobre isso)
36
+ - Métricas de sucesso (inferidas do trabalho)
37
+
38
+ Perguntar sobre visão e escolhas de implementação. Capturar decisões para agentes downstream.
39
+ </philosophy>
40
+
41
+ <scope_guardrail>
42
+ **CRÍTICO: Sem expansão de escopo.**
43
+
44
+ O limite da fase vem do ROADMAP.md e é FIXO. A discussão clarifica COMO implementar o que está no escopo, nunca SE adicionar novas capacidades.
45
+
46
+ **Permitido (clarificando ambiguidade):**
47
+ - "Como os posts devem ser exibidos?" (layout, densidade, informações mostradas)
48
+ - "O que acontece em estado vazio?" (dentro da funcionalidade)
49
+ - "Pull to refresh ou manual?" (escolha de comportamento)
50
+
51
+ **Não permitido (expansão de escopo):**
52
+ - "Deveríamos também adicionar comentários?" (nova capacidade)
53
+ - "E a busca/filtragem?" (nova capacidade)
54
+ - "Talvez incluir favoritos?" (nova capacidade)
55
+
56
+ **A heurística:** Isso clarifica como implementamos o que já está na fase, ou adiciona uma nova capacidade que poderia ser sua própria fase?
57
+
58
+ **Quando o usuário sugere expansão de escopo:**
59
+ ```
60
+ "[Funcionalidade X] seria uma nova capacidade — é sua própria fase.
61
+ Quer que eu anote para o backlog do roadmap?
62
+
63
+ Por enquanto, vamos focar em [domínio da fase]."
64
+ ```
65
+
66
+ Capturar a ideia em uma seção "Ideias Adiadas". Não a perder, não agir sobre ela.
67
+ </scope_guardrail>
68
+
69
+ <gray_area_identification>
70
+ Áreas cinzentas são **decisões de implementação que o usuário se importa** — coisas que podem ir de múltiplas formas e mudariam o resultado.
71
+
72
+ **Como identificar áreas cinzentas:**
73
+
74
+ 1. **Ler o objetivo da fase** do ROADMAP.md
75
+ 2. **Entender o domínio** — Que tipo de coisa está sendo construída?
76
+ - Algo que usuários VÊM → apresentação visual, interações, estados importam
77
+ - Algo que usuários CHAMAM → contratos de interface, respostas, erros importam
78
+ - Algo que usuários EXECUTAM → invocação, saída, modos de comportamento importam
79
+ - Algo que usuários LÊM → estrutura, tom, profundidade, fluxo importam
80
+ - Algo sendo ORGANIZADO → critérios, agrupamento, tratamento de exceções importam
81
+ 3. **Gerar áreas cinzentas específicas da fase** — Não categorias genéricas, mas decisões concretas para ESTA fase
82
+
83
+ **Não usar rótulos de categoria genéricos** (UI, UX, Comportamento). Gerar áreas cinzentas específicas:
84
+
85
+ ```
86
+ Fase: "Autenticação de usuário"
87
+ → Gerenciamento de sessão, Respostas de erro, Política multi-dispositivo, Fluxo de recuperação
88
+
89
+ Fase: "Organizar biblioteca de fotos"
90
+ → Critérios de agrupamento, Tratamento de duplicatas, Convenção de nomenclatura, Estrutura de pastas
91
+
92
+ Fase: "CLI para backups de banco de dados"
93
+ → Formato de saída, Design de flags, Relatório de progresso, Recuperação de erros
94
+
95
+ Fase: "Documentação de API"
96
+ → Estrutura/navegação, Profundidade de exemplos de código, Abordagem de versionamento, Elementos interativos
97
+ ```
98
+
99
+ **A pergunta-chave:** Quais decisões mudariam o resultado que o usuário deveria opinar?
100
+
101
+ **Claude lida com isso (não perguntar):**
102
+ - Detalhes técnicos de implementação
103
+ - Padrões de arquitetura
104
+ - Otimização de performance
105
+ - Escopo (roadmap define isso)
106
+ </gray_area_identification>
107
+
108
+ <answer_validation>
109
+ **IMPORTANTE: Validação de resposta** — Após cada chamada AskUserQuestion, verificar se a resposta está vazia ou contém apenas espaços em branco. Se sim:
110
+ 1. Tentar a pergunta novamente com os mesmos parâmetros
111
+ 2. Se ainda vazia, apresentar as opções como uma lista numerada em texto simples e pedir ao usuário que digite o número da sua escolha
112
+ Nunca prosseguir com uma resposta vazia.
113
+
114
+ **Modo texto (`workflow.text_mode: true` na config ou flag `--text`):**
115
+ Quando o modo texto estiver ativo, **não use AskUserQuestion de forma alguma**. Em vez disso, apresente cada
116
+ pergunta como uma lista numerada em texto simples e peça ao usuário que digite o número da sua escolha.
117
+ Isso é necessário para sessões remotas do Claude Code (modo `/rc`) onde o App Claude
118
+ não pode encaminhar seleções de menu TUI de volta ao host.
119
+
120
+ Ativar modo texto:
121
+ - Por sessão: passar flag `--text` para qualquer comando (ex: `/discutir-fase --text`)
122
+ - Por projeto: `tools config-set workflow.text_mode true`
123
+
124
+ O modo texto aplica-se a TODOS os workflows na sessão, não apenas ao discuss-phase.
125
+ </answer_validation>
126
+
127
+ <process>
128
+
129
+ **Caminho expresso disponível:** Se você já tem um PRD ou documento de critérios de aceitação, use `/planejar-fase {fase} --prd caminho/para/prd.md` para pular esta discussão e ir direto ao planejamento.
130
+
131
+ <step name="initialize" priority="first">
132
+ Número da fase do argumento (obrigatório).
133
+
134
+ ```bash
135
+ INIT=$(node "./.claude/framework/bin/tools.cjs" init phase-op "${PHASE}")
136
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
137
+ AGENT_SKILLS_ADVISOR=$(node "./.claude/framework/bin/tools.cjs" agent-skills advisor 2>/dev/null)
138
+ ```
139
+
140
+ Analisar JSON para: `commit_docs`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `has_research`, `has_context`, `has_plans`, `has_verification`, `plan_count`, `roadmap_exists`, `planning_exists`.
141
+
142
+ **Se `phase_found` for false:**
143
+ ```
144
+ Fase [X] não encontrada no roadmap.
145
+
146
+ Use /progresso ${WS} para ver as fases disponíveis.
147
+ ```
148
+ Sair do workflow.
149
+
150
+ **Se `phase_found` for true:** Continuar para check_existing.
151
+
152
+ **Modo auto** — Se `--auto` estiver presente em ARGUMENTS:
153
+ - Em `check_existing`: auto-selecionar "Pular" (se contexto existir) ou continuar sem prompt (se sem contexto/planos)
154
+ - Em `present_gray_areas`: auto-selecionar TODAS as áreas cinzentas sem perguntar ao usuário
155
+ - Em `discuss_areas`: para cada pergunta de discussão, escolher a opção recomendada (primeira opção, ou a marcada como "recomendada") sem usar AskUserQuestion
156
+ - Logar cada escolha auto-selecionada inline para que o usuário possa revisar decisões no arquivo de contexto
157
+ - Após a discussão concluir, avançar automaticamente para plan-phase (comportamento existente)
158
+ </step>
159
+
160
+ <step name="check_existing">
161
+ Verificar se CONTEXT.md já existe usando `has_context` do init.
162
+
163
+ ```bash
164
+ ls ${phase_dir}/*-CONTEXT.md 2>/dev/null || true
165
+ ```
166
+
167
+ **Se existir:**
168
+
169
+ **Se `--auto`:** Auto-selecionar "Atualizar" — carregar contexto existente e continuar para analyze_phase. Logar: `[auto] Contexto existe — atualizando com decisões auto-selecionadas.`
170
+
171
+ **Caso contrário:** Usar AskUserQuestion:
172
+ - header: "Contexto"
173
+ - question: "Fase [X] já tem contexto. O que você quer fazer?"
174
+ - options:
175
+ - "Atualizar" — Revisar e revisar contexto existente
176
+ - "Visualizar" — Me mostra o que há
177
+ - "Pular" — Usar contexto existente como está
178
+
179
+ Se "Atualizar": Carregar existente, continuar para analyze_phase
180
+ Se "Visualizar": Exibir CONTEXT.md, então oferecer atualizar/pular
181
+ Se "Pular": Sair do workflow
182
+
183
+ **Se não existir:**
184
+
185
+ Verificar `has_plans` e `plan_count` do init. **Se `has_plans` for true:**
186
+
187
+ **Se `--auto`:** Auto-selecionar "Continuar e replanejar depois". Logar: `[auto] Planos existem — continuando com captura de contexto, replanejará depois.`
188
+
189
+ **Caso contrário:** Usar AskUserQuestion:
190
+ - header: "Planos existem"
191
+ - question: "Fase [X] já tem {plan_count} plano(s) criado(s) sem contexto do usuário. Suas decisões aqui não afetarão os planos existentes a menos que você replane."
192
+ - options:
193
+ - "Continuar e replanejar depois" — Capturar contexto, então executar /planejar-fase {X} ${WS} para replanejar
194
+ - "Visualizar planos existentes" — Mostrar planos antes de decidir
195
+ - "Cancelar" — Pular discuss-phase
196
+
197
+ Se "Continuar e replanejar depois": Continuar para analyze_phase.
198
+ Se "Visualizar planos existentes": Exibir arquivos de plano, então oferecer "Continuar" / "Cancelar".
199
+ Se "Cancelar": Sair do workflow.
200
+
201
+ **Se `has_plans` for false:** Continuar para load_prior_context.
202
+ </step>
203
+
204
+ <step name="load_prior_context">
205
+ Ler contexto de projeto e de fases anteriores para evitar re-perguntar questões já decididas e manter consistência.
206
+
207
+ **Passo 1: Ler arquivos em nível de projeto**
208
+ ```bash
209
+ # Arquivos centrais do projeto
210
+ cat .planning/PROJECT.md 2>/dev/null || true
211
+ cat .planning/REQUIREMENTS.md 2>/dev/null || true
212
+ cat .planning/STATE.md 2>/dev/null || true
213
+ ```
214
+
215
+ Extrair destes:
216
+ - **PROJECT.md** — Visão, princípios, inegociáveis, preferências do usuário
217
+ - **REQUIREMENTS.md** — Critérios de aceitação, restrições, must-haves vs bom-ter
218
+ - **STATE.md** — Progresso atual, quaisquer flags ou notas de sessão
219
+
220
+ **Passo 2: Ler todos os arquivos CONTEXT.md anteriores**
221
+ ```bash
222
+ # Encontrar todos os arquivos CONTEXT.md de fases anteriores à atual
223
+ (find .planning/phases -name "*-CONTEXT.md" 2>/dev/null || true) | sort
224
+ ```
225
+
226
+ Para cada CONTEXT.md onde o número de fase < fase atual:
227
+ - Ler a seção `<decisions>` — estas são preferências bloqueadas
228
+ - Ler `<specifics>` — referências particulares ou momentos "quero como X"
229
+ - Notar quaisquer padrões (ex: "usuário consistentemente prefere UI minimalista", "usuário rejeitou atalhos de tecla única")
230
+
231
+ **Passo 3: Construir contexto interno `<prior_decisions>`**
232
+
233
+ Estruturar as informações extraídas:
234
+ ```
235
+ <prior_decisions>
236
+ ## Nível de Projeto
237
+ - [Princípio ou restrição chave do PROJECT.md]
238
+ - [Requisito que afeta esta fase do REQUIREMENTS.md]
239
+
240
+ ## Das Fases Anteriores
241
+ ### Fase N: [Nome]
242
+ - [Decisão que pode ser relevante para a fase atual]
243
+ - [Preferência que estabelece um padrão]
244
+
245
+ ### Fase M: [Nome]
246
+ - [Outra decisão relevante]
247
+ </prior_decisions>
248
+ ```
249
+
250
+ **Uso nos passos subsequentes:**
251
+ - `analyze_phase`: Pular áreas cinzentas já decididas em fases anteriores
252
+ - `present_gray_areas`: Anotar opções com decisões anteriores ("Você escolheu X na Fase 5")
253
+ - `discuss_areas`: Pré-preencher respostas ou sinalizar conflitos ("Isso contradiz a Fase 3 — mesmo aqui ou diferente?")
254
+
255
+ **Se nenhum contexto anterior existir:** Continuar sem — isso é esperado para fases iniciais.
256
+ </step>
257
+
258
+ <step name="cross_reference_todos">
259
+ Verificar se alguma tarefa pendente é relevante ao escopo desta fase. Exibe itens do backlog que de outra forma poderiam ser perdidos.
260
+
261
+ **Carregar e corresponder tarefas:**
262
+ ```bash
263
+ TODO_MATCHES=$(node "./.claude/framework/bin/tools.cjs" todo match-phase "${PHASE_NUMBER}")
264
+ ```
265
+
266
+ Analisar JSON para: `todo_count`, `matches[]` (cada um com `file`, `title`, `area`, `score`, `reasons`).
267
+
268
+ **Se `todo_count` for 0 ou `matches` estiver vazio:** Pular silenciosamente — sem atraso no workflow.
269
+
270
+ **Se correspondências encontradas:**
271
+
272
+ Apresentar tarefas correspondentes ao usuário. Mostrar cada correspondência com seu título, área e por que correspondeu:
273
+
274
+ ```
275
+ 📋 Encontradas {N} tarefa(s) pendente(s) que podem ser relevantes para a Fase {X}:
276
+
277
+ {Para cada correspondência:}
278
+ - **{título}** (área: {área}, relevância: {score}) — correspondeu em {reasons}
279
+ ```
280
+
281
+ Usar AskUserQuestion (multiSelect) perguntando quais tarefas incorporar ao escopo desta fase:
282
+
283
+ ```
284
+ Quais dessas tarefas devem ser incorporadas ao escopo da Fase {X}?
285
+ (Selecione as que se aplicam, ou nenhuma para pular)
286
+ ```
287
+
288
+ **Para tarefas selecionadas (incorporadas):**
289
+ - Armazenar internamente como `<folded_todos>` para inclusão na seção `<decisions>` do CONTEXT.md
290
+ - Estes se tornam itens de escopo adicionais que agentes downstream (pesquisador, planejador) verão
291
+
292
+ **Para tarefas não selecionadas (revisadas mas não incorporadas):**
293
+ - Armazenar internamente como `<reviewed_todos>` para inclusão na seção `<deferred>` do CONTEXT.md
294
+ - Isso evita que fases futuras re-exibam as mesmas tarefas como "perdidas"
295
+
296
+ **Modo auto (`--auto`):** Incorporar todas as tarefas com score >= 0,4 automaticamente. Logar a seleção.
297
+ </step>
298
+
299
+ <step name="scout_codebase">
300
+ Varredura leve do código existente para informar identificação de áreas cinzentas e discussão. Usa ~10% do contexto — aceitável para uma sessão interativa.
301
+
302
+ **Passo 1: Verificar mapas de codebase existentes**
303
+ ```bash
304
+ ls .planning/codebase/*.md 2>/dev/null || true
305
+ ```
306
+
307
+ **Se mapas de codebase existirem:** Ler os mais relevantes (CONVENTIONS.md, STRUCTURE.md, STACK.md com base no tipo de fase). Extrair:
308
+ - Componentes/hooks/utilitários reutilizáveis
309
+ - Padrões estabelecidos (gerenciamento de estado, estilização, busca de dados)
310
+ - Pontos de integração (onde novo código se conectaria)
311
+
312
+ Pular para o Passo 3 abaixo.
313
+
314
+ **Passo 2: Se não há mapas de codebase, fazer grep direcionado**
315
+
316
+ Extrair termos-chave do objetivo da fase (ex: "feed" → "post", "card", "list"; "auth" → "login", "session", "token").
317
+
318
+ ```bash
319
+ # Encontrar arquivos relacionados aos termos do objetivo da fase
320
+ grep -rl "{termo1}\|{termo2}" src/ app/ --include="*.ts" --include="*.tsx" --include="*.js" --include="*.jsx" 2>/dev/null | head -10 || true
321
+
322
+ # Encontrar componentes/hooks existentes
323
+ ls src/components/ 2>/dev/null || true
324
+ ls src/hooks/ 2>/dev/null || true
325
+ ls src/lib/ src/utils/ 2>/dev/null || true
326
+ ```
327
+
328
+ Ler os 3-5 arquivos mais relevantes para entender padrões existentes.
329
+
330
+ **Passo 3: Construir codebase_context interno**
331
+
332
+ Da varredura, identificar:
333
+ - **Ativos reutilizáveis** — componentes, hooks, utilitários existentes que poderiam ser usados nesta fase
334
+ - **Padrões estabelecidos** — como a base de código faz gerenciamento de estado, estilização, busca de dados
335
+ - **Pontos de integração** — onde novo código se conectaria (rotas, nav, providers)
336
+ - **Opções criativas** — abordagens que a arquitetura existente habilita ou restringe
337
+
338
+ Armazenar como `<codebase_context>` interno para uso em analyze_phase e present_gray_areas. Isso NÃO é escrito em arquivo — é usado apenas nesta sessão.
339
+ </step>
340
+
341
+ <step name="analyze_phase">
342
+ Analisar a fase para identificar áreas cinzentas que valem a discussão. **Usar tanto `prior_decisions` quanto `codebase_context` para embasar a análise.**
343
+
344
+ **Ler a descrição da fase do ROADMAP.md e determinar:**
345
+
346
+ 1. **Limite de domínio** — Qual capacidade esta fase está entregando? Declará-la claramente.
347
+
348
+ 1b. **Inicializar acumulador de refs canônicas** — Começar a construir a lista `<canonical_refs>` para CONTEXT.md. Isso se acumula ao longo de toda a discussão, não apenas neste passo.
349
+
350
+ **Fonte 1 (agora):** Copiar `Canonical refs:` do ROADMAP.md para esta fase. Expandir cada uma para um caminho relativo completo.
351
+ **Fonte 2 (agora):** Verificar REQUIREMENTS.md e PROJECT.md por quaisquer specs/ADRs referenciados para esta fase.
352
+ **Fonte 3 (scout_codebase):** Se código existente referencia docs (ex: comentários citando ADRs), adicionar esses.
353
+ **Fonte 4 (discuss_areas):** Quando o usuário disser "leia X", "verifique Y", ou referenciar qualquer doc/spec/ADR durante a discussão — adicionar imediatamente. Estes são frequentemente as refs MAIS importantes porque representam docs que o usuário especificamente quer seguidos.
354
+
355
+ Esta lista é OBRIGATÓRIA no CONTEXT.md. Cada ref deve ter um caminho relativo completo para que agentes downstream possam lê-la diretamente. Se não existirem docs externos, note isso explicitamente.
356
+
357
+ 2. **Verificar decisões anteriores** — Antes de gerar áreas cinzentas, verificar se alguma já foi decidida:
358
+ - Escanear `<prior_decisions>` por escolhas relevantes (ex: "Somente Ctrl+C, sem atalhos de tecla única")
359
+ - Estas estão **pré-respondidas** — não re-perguntar a menos que esta fase tenha necessidades conflitantes
360
+ - Notar decisões anteriores aplicáveis para uso na apresentação
361
+
362
+ 3. **Áreas cinzentas por categoria** — Para cada categoria relevante (UI, UX, Comportamento, Estados Vazios, Conteúdo), identificar 1-2 ambiguidades específicas que mudariam a implementação. **Anotar com contexto de código onde relevante** (ex: "Você já tem um componente Card" ou "Sem padrão existente para isso").
363
+
364
+ 4. **Avaliação de pulo** — Se não existirem áreas cinzentas significativas (infraestrutura pura, implementação clara, ou tudo já decidido em fases anteriores), a fase pode não precisar de discussão.
365
+
366
+ **Detecção de Modo Advisor:**
367
+
368
+ Verificar se o modo advisor deve ativar:
369
+
370
+ 1. Verificar USER-PROFILE.md:
371
+ ```bash
372
+ PROFILE_PATH="./.claude/framework/USER-PROFILE.md"
373
+ ```
374
+ ADVISOR_MODE = arquivo existe em PROFILE_PATH → true, caso contrário → false
375
+
376
+ 2. Se ADVISOR_MODE for true, resolver tier de calibração vendor_philosophy:
377
+ - Prioridade 1: Ler config.json > preferences.vendor_philosophy (override em nível de projeto)
378
+ - Prioridade 2: Ler avaliação Vendor Choices/Philosophy do USER-PROFILE.md (global)
379
+ - Prioridade 3: Padrão para "standard" se nenhum tiver valor ou valor for UNSCORED
380
+
381
+ Mapear para tier de calibração:
382
+ - conservative OU thorough-evaluator → full_maturity
383
+ - opinionated → minimal_decisive
384
+ - pragmatic-fast OU qualquer outro valor OU vazio → standard
385
+
386
+ 3. Resolver modelo para agentes advisor:
387
+ ```bash
388
+ ADVISOR_MODEL=$(node "./.claude/framework/bin/tools.cjs" resolve-model advisor-researcher --raw)
389
+ ```
390
+
391
+ Se ADVISOR_MODE for false, pular todos os passos específicos de advisor — workflow prossegue com fluxo conversacional existente inalterado.
392
+
393
+ **Produzir sua análise internamente, então apresentar ao usuário.**
394
+
395
+ Exemplo de análise para fase "Feed de Posts" (com código e contexto anterior):
396
+ ```
397
+ Domínio: Exibindo posts de usuários seguidos
398
+ Existente: Componente Card (src/components/ui/Card.tsx), hook useInfiniteQuery, Tailwind CSS
399
+ Decisões anteriores: "UI minimalista preferida" (Fase 2), "Sem paginação — sempre scroll infinito" (Fase 4)
400
+ Áreas cinzentas:
401
+ - UI: Estilo de layout (cards vs timeline vs grid) — Componente Card existe com variantes shadow/rounded
402
+ - UI: Densidade de informação (posts completos vs prévias) — sem padrões de densidade existentes
403
+ - Comportamento: Padrão de carregamento — JÁ DECIDIDO: scroll infinito (Fase 4)
404
+ - Estado Vazio: O que mostra quando não há posts — Componente EmptyState existe em ui/
405
+ - Conteúdo: Quais metadados exibir (hora, autor, contagem de reações)
406
+ ```
407
+ </step>
408
+
409
+ <step name="present_gray_areas">
410
+ Apresentar o limite de domínio, decisões anteriores e áreas cinzentas ao usuário.
411
+
412
+ **Primeiro, declarar o limite e quaisquer decisões anteriores que se aplicam:**
413
+ ```
414
+ Fase [X]: [Nome]
415
+ Domínio: [O que esta fase entrega — da sua análise]
416
+
417
+ Vamos clarificar COMO implementar isso.
418
+ (Novas capacidades pertencem a outras fases.)
419
+
420
+ [Se decisões anteriores se aplicam:]
421
+ **Carregando de fases anteriores:**
422
+ - [Decisão da Fase N que se aplica aqui]
423
+ - [Decisão da Fase M que se aplica aqui]
424
+ ```
425
+
426
+ **Se `--auto`:** Auto-selecionar TODAS as áreas cinzentas. Logar: `[auto] Selecionadas todas as áreas cinzentas: [lista de nomes das áreas].` Pular o AskUserQuestion abaixo e continuar diretamente para discuss_areas com todas as áreas selecionadas.
427
+
428
+ **Caso contrário, usar AskUserQuestion (multiSelect: true):**
429
+ - header: "Discutir"
430
+ - question: "Quais áreas você quer discutir para [nome da fase]?"
431
+ - options: Gerar 3-4 áreas cinzentas específicas da fase, cada uma com:
432
+ - "[Área específica]" (rótulo) — concreto, não genérico
433
+ - [1-2 perguntas que isso cobre + anotação de contexto de código] (descrição)
434
+ - **Destacar a escolha recomendada com breve explicação do porquê**
435
+
436
+ **Anotações de decisão anterior:** Quando uma área cinzenta já foi decidida em uma fase anterior, anotá-la:
437
+ ```
438
+ ☐ Atalhos de saída — Como os usuários devem sair?
439
+ (Você decidiu "Somente Ctrl+C, sem atalhos de tecla única" na Fase 5 — revisitar ou manter?)
440
+ ```
441
+
442
+ **Anotações de contexto de código:** Quando o scout encontrou código existente relevante, anotar a descrição da área cinzenta:
443
+ ```
444
+ ☐ Estilo de layout — Cards vs lista vs timeline?
445
+ (Você já tem um componente Card com variantes shadow/rounded. Reutilizá-lo mantém o app consistente.)
446
+ ```
447
+
448
+ **Combinando ambos:** Quando tanto decisões anteriores quanto contexto de código se aplicam:
449
+ ```
450
+ ☐ Comportamento de carregamento — Scroll infinito ou paginação?
451
+ (Você escolheu scroll infinito na Fase 4. Hook useInfiniteQuery já configurado.)
452
+ ```
453
+
454
+ **NÃO incluir opção "pular" ou "você decide".** O usuário executou este comando para discutir — dar escolhas reais.
455
+
456
+ **Exemplos por domínio (com contexto de código):**
457
+
458
+ Para "Feed de Posts" (funcionalidade visual):
459
+ ```
460
+ ☐ Estilo de layout — Cards vs lista vs timeline? (Componente Card existe com variantes)
461
+ ☐ Comportamento de carregamento — Scroll infinito ou paginação? (Hook useInfiniteQuery disponível)
462
+ ☐ Ordenação de conteúdo — Cronológico, algorítmico, ou escolha do usuário?
463
+ ☐ Metadados de post — Quais informações por post? Timestamps, reações, autor?
464
+ ```
465
+
466
+ Para "CLI de backup de banco de dados" (ferramenta de linha de comando):
467
+ ```
468
+ ☐ Formato de saída — JSON, tabela, ou texto simples? Níveis de verbosidade?
469
+ ☐ Design de flags — Flags curtas, longas, ou ambas? Obrigatórias vs opcionais?
470
+ ☐ Relatório de progresso — Silencioso, barra de progresso, ou log verbose?
471
+ ☐ Recuperação de erros — Falhar rápido, tentar novamente, ou solicitar ação?
472
+ ```
473
+
474
+ Para "Organizar biblioteca de fotos" (tarefa de organização):
475
+ ```
476
+ ☐ Critérios de agrupamento — Por data, localização, faces, ou eventos?
477
+ ☐ Tratamento de duplicatas — Manter melhor, manter todos, ou solicitar cada vez?
478
+ ☐ Convenção de nomenclatura — Nomes originais, datas, ou descritivos?
479
+ ☐ Estrutura de pastas — Plana, aninhada por ano, ou por categoria?
480
+ ```
481
+
482
+ Continuar para discuss_areas com áreas selecionadas (ou advisor_research se ADVISOR_MODE for true).
483
+ </step>
484
+
485
+ <step name="advisor_research">
486
+ **Pesquisa Advisor** (somente quando ADVISOR_MODE for true)
487
+
488
+ Após o usuário selecionar áreas cinzentas em present_gray_areas, criar agentes de pesquisa paralelos.
489
+
490
+ 1. Exibir status breve: "Pesquisando {N} áreas..."
491
+
492
+ 2. Para CADA área cinzenta selecionada pelo usuário, criar um Task() em paralelo:
493
+
494
+ Task(
495
+ prompt="First, read @./.claude/agents/advisor-researcher.md for your role and instructions.
496
+
497
+ <gray_area>{area_name}: {area_description from gray area identification}</gray_area>
498
+ <phase_context>{phase_goal and description from ROADMAP.md}</phase_context>
499
+ <project_context>{project name and brief description from PROJECT.md}</project_context>
500
+ <calibration_tier>{resolved calibration tier: full_maturity | standard | minimal_decisive}</calibration_tier>
501
+
502
+ Research this gray area and return a structured comparison table with rationale.
503
+ ${AGENT_SKILLS_ADVISOR}",
504
+ subagent_type="general-purpose",
505
+ model="{ADVISOR_MODEL}",
506
+ description="Research: {area_name}"
507
+ )
508
+
509
+ Todas as chamadas Task() criam simultaneamente — NÃO aguardar uma antes de iniciar a próxima.
510
+
511
+ 3. Após TODOS os agentes retornarem, SINTETIZAR resultados antes de apresentar:
512
+ Para o retorno de cada agente:
513
+ a. Analisar a tabela de comparação markdown e parágrafo de raciocínio
514
+ b. Verificar se todas as 5 colunas estão presentes (Option | Pros | Cons | Complexity | Recommendation) — preencher colunas ausentes em vez de mostrar tabela quebrada
515
+ c. Verificar contagem de opções contra o tier de calibração:
516
+ - full_maturity: 3-5 opções aceitável
517
+ - standard: 2-4 opções aceitável
518
+ - minimal_decisive: 1-2 opções aceitável
519
+ Se agente retornou demais, remover as menos viáveis. Se poucas demais, aceitar como está.
520
+ d. Reescrever parágrafo de raciocínio para incorporar contexto do projeto e contexto de discussão em andamento ao qual o agente não tinha acesso
521
+ e. Se agente retornou apenas 1 opção, converter de formato de tabela para recomendação direta: "Abordagem padrão para {área}: {opção}. {raciocínio}"
522
+
523
+ 4. Armazenar tabelas sintetizadas para uso em discuss_areas.
524
+
525
+ **Se ADVISOR_MODE for false:** Pular este passo inteiramente — prosseguir diretamente de present_gray_areas para discuss_areas.
526
+ </step>
527
+
528
+ <step name="discuss_areas">
529
+ Discutir cada área selecionada com o usuário. O fluxo depende do modo advisor.
530
+
531
+ **Se ADVISOR_MODE for true:**
532
+
533
+ Fluxo de discussão com tabela primeiro — apresentar tabelas de comparação baseadas em pesquisa, então capturar escolhas do usuário.
534
+
535
+ **Para cada área selecionada:**
536
+
537
+ 1. **Apresentar a tabela de comparação sintetizada + parágrafo de raciocínio** (do passo advisor_research)
538
+
539
+ 2. **Usar AskUserQuestion:**
540
+ - header: "{area_name}"
541
+ - question: "Qual abordagem para {area_name}?"
542
+ - options: Extrair da coluna Option da tabela (AskUserQuestion adiciona "Outro" automaticamente)
543
+
544
+ 3. **Registrar a seleção do usuário:**
545
+ - Se o usuário escolher das opções da tabela → registrar como decisão bloqueada para essa área
546
+ - Se o usuário escolher "Outro" → receber seu input, refletir de volta para confirmação, registrar
547
+
548
+ 4. **Após registrar escolha, Claude decide se perguntas de acompanhamento são necessárias:**
549
+ - Se a escolha tem ambiguidade que afetaria o planejamento downstream → fazer 1-2 perguntas de acompanhamento direcionadas usando AskUserQuestion
550
+ - Se a escolha é clara e autocontida → mover para próxima área
551
+ - NÃO fazer as 4 perguntas padrão — a tabela já forneceu o contexto
552
+
553
+ 5. **Após todas as áreas processadas:**
554
+ - header: "Concluído"
555
+ - question: "Isso cobre [listar áreas]. Pronto para criar contexto?"
556
+ - options: "Criar contexto" / "Revisitar uma área"
557
+
558
+ **Tratamento de expansão de escopo (modo advisor):**
559
+ Se o usuário mencionar algo fora do domínio da fase:
560
+ ```
561
+ "[Funcionalidade] parece uma nova capacidade — pertence à sua própria fase.
562
+ Vou anotá-la como uma ideia adiada.
563
+
564
+ De volta a [área atual]: [retornar à pergunta atual]"
565
+ ```
566
+
567
+ Rastrear ideias adiadas internamente.
568
+
569
+ ---
570
+
571
+ **Se ADVISOR_MODE for false:**
572
+
573
+ Para cada área selecionada, conduzir um loop de discussão focado.
574
+
575
+ **Modo pesquisa-antes-das-perguntas:** Verificar se `workflow.research_before_questions` está habilitado na config (do contexto init ou `.planning/config.json`). Quando habilitado, antes de apresentar perguntas para cada área:
576
+ 1. Fazer uma breve busca na web por melhores práticas relacionadas ao tópico da área
577
+ 2. Resumir as principais descobertas em 2-3 bullet points
578
+ 3. Apresentar a pesquisa junto com a pergunta para que o usuário possa tomar uma decisão mais informada
579
+
580
+ Exemplo com pesquisa habilitada:
581
+ ```
582
+ Vamos falar sobre [Estratégia de Autenticação].
583
+
584
+ 📊 Pesquisa de melhores práticas:
585
+ • OAuth 2.0 + PKCE é o padrão atual para SPAs (substitui fluxo implícito)
586
+ • Tokens de sessão com cookies httpOnly preferidos sobre localStorage para proteção XSS
587
+ • Considerar suporte a passkey/WebAuthn — adoção está acelerando em 2025-2026
588
+
589
+ Com esse contexto: Como os usuários devem autenticar?
590
+ ```
591
+
592
+ Quando desabilitado (padrão), pular a pesquisa e apresentar perguntas diretamente como antes.
593
+
594
+ **Suporte a modo texto:** Analisar `--text` opcional de `$ARGUMENTS`.
595
+ - Aceitar flag `--text` OU ler `workflow.text_mode` da config (do contexto init)
596
+ - Quando ativo, substituir TODAS as chamadas `AskUserQuestion` por listas numeradas de texto simples
597
+ - Usuário digita um número para selecionar, ou digita texto livre para "Outro"
598
+ - Isso é necessário para sessões remotas do Claude Code (modo `/rc`) onde menus TUI
599
+ não funcionam através do App Claude
600
+
601
+ **Suporte a modo batch:** Analisar `--batch` opcional de `$ARGUMENTS`.
602
+ - Aceitar `--batch`, `--batch=N`, ou `--batch N`
603
+
604
+ **Suporte a modo analyze:** Analisar `--analyze` opcional de `$ARGUMENTS`.
605
+ Quando `--analyze` estiver ativo, antes de apresentar cada pergunta (ou grupo de perguntas no modo batch), fornecer uma breve **análise de trade-offs** para a decisão:
606
+ - 2-3 opções com prós/contras baseados no contexto da codebase e padrões comuns
607
+ - Uma abordagem recomendada com raciocínio
608
+ - Armadilhas conhecidas ou restrições de fases anteriores
609
+
610
+ Exemplo com `--analyze`:
611
+ ```
612
+ **Análise de trade-offs: Estratégia de autenticação**
613
+
614
+ | Abordagem | Prós | Contras |
615
+ |-----------|------|---------|
616
+ | Cookies de sessão | Simples, httpOnly evita XSS | Requer proteção CSRF, sessões fixas |
617
+ | JWT (stateless) | Escalável, sem estado no servidor | Tamanho do token, complexidade de revogação |
618
+ | OAuth 2.0 + PKCE | Padrão da indústria para SPAs | Mais configuração, UX de fluxo de redirecionamento |
619
+
620
+ 💡 Recomendado: OAuth 2.0 + PKCE — seu app tem login social nos requisitos (REQ-04) e isso se alinha com a configuração NextAuth existente em `src/lib/auth.ts`.
621
+
622
+ Como os usuários devem autenticar?
623
+ ```
624
+
625
+ Isso dá ao usuário contexto para tomar decisões informadas sem prompts extras. Quando `--analyze` estiver ausente, apresentar perguntas diretamente como antes.
626
+ - Aceitar `--batch`, `--batch=N`, ou `--batch N`
627
+ - Padrão de 4 perguntas por batch quando nenhum número é fornecido
628
+ - Limitar tamanhos explícitos a 2-5 para que um batch permaneça respondível
629
+ - Se `--batch` estiver ausente, manter o fluxo existente de uma pergunta por vez
630
+
631
+ **Filosofia:** permanecer adaptativo, mas deixar o usuário escolher o ritmo.
632
+ - Modo padrão: 4 turnos de pergunta única, então verificar se continuar
633
+ - Modo `--batch`: 1 turno agrupado com 2-5 perguntas numeradas, então verificar se continuar
634
+
635
+ Cada resposta (ou conjunto de respostas, no modo batch) deve revelar a próxima pergunta ou próximo batch.
636
+
637
+ **Modo auto (`--auto`):** Para cada área, Claude seleciona a opção recomendada (primeira opção, ou a explicitamente marcada como "recomendada") para cada pergunta sem usar AskUserQuestion. Logar cada escolha auto-selecionada:
638
+ ```
639
+ [auto] [Área] — P: "[texto da pergunta]" → Selecionado: "[opção escolhida]" (padrão recomendado)
640
+ ```
641
+ Após todas as áreas serem auto-resolvidas, pular o prompt "Explorar mais áreas cinzentas" e prosseguir diretamente para write_context.
642
+
643
+ **Modo interativo (sem `--auto`):**
644
+
645
+ **Para cada área:**
646
+
647
+ 1. **Anunciar a área:**
648
+ ```
649
+ Vamos falar sobre [Área].
650
+ ```
651
+
652
+ 2. **Fazer perguntas usando o ritmo selecionado:**
653
+
654
+ **Padrão (sem `--batch`): Fazer 4 perguntas usando AskUserQuestion**
655
+ - header: "[Área]" (máx 12 chars — abreviar se necessário)
656
+ - question: Decisão específica para esta área
657
+ - options: 2-3 escolhas concretas (AskUserQuestion adiciona "Outro" automaticamente), com a escolha recomendada destacada e breve explicação do porquê
658
+ - **Anotar opções com contexto de código** quando relevante:
659
+ ```
660
+ "Como os posts devem ser exibidos?"
661
+ - Cards (reutiliza o componente Card existente — consistente com Mensagens)
662
+ - Lista (mais simples, seria um novo padrão)
663
+ - Timeline (precisa de novo componente Timeline — nenhum existe ainda)
664
+ ```
665
+ - Incluir "Você decide" como opção quando razoável — captura discrição do Claude
666
+ - **Context7 para escolhas de biblioteca:** Quando uma área cinzenta envolve seleção de biblioteca (ex: "magic links" → consultar docs do next-auth) ou decisões de abordagem de API, usar ferramentas `mcp__context7__*` para buscar documentação atual e informar as opções. Não usar Context7 para cada pergunta — apenas quando conhecimento específico da biblioteca melhora as opções.
667
+
668
+ **Modo batch (`--batch`): Fazer 2-5 perguntas numeradas em um turno de texto simples**
669
+ - Agrupar perguntas intimamente relacionadas para a área atual em uma única mensagem
670
+ - Manter cada pergunta concreta e respondível em uma resposta
671
+ - Quando opções são úteis, incluir escolhas inline curtas por pergunta em vez de um AskUserQuestion separado para cada item
672
+ - Após a resposta do usuário, refletir de volta as decisões capturadas, notar itens não respondidos, e fazer apenas o mínimo de acompanhamento necessário antes de prosseguir
673
+ - Preservar adaptabilidade entre batches: usar o conjunto completo de respostas para decidir o próximo batch ou se a área está suficientemente clara
674
+
675
+ 3. **Após o conjunto atual de perguntas, verificar:**
676
+ - header: "[Área]" (máx 12 chars)
677
+ - question: "Mais perguntas sobre [área], ou mover para próxima? (Restantes: [listar outras áreas não visitadas])"
678
+ - options: "Mais perguntas" / "Próxima área"
679
+
680
+ Ao construir o texto da pergunta, listar as áreas não visitadas restantes para que o usuário saiba o que vem a seguir. Por exemplo: "Mais perguntas sobre Layout, ou mover para próxima? (Restantes: Comportamento de carregamento, Ordenação de conteúdo)"
681
+
682
+ Se "Mais perguntas" → fazer mais 4 perguntas únicas, ou mais um batch de 2-5 perguntas quando `--batch` estiver ativo, então verificar novamente
683
+ Se "Próxima área" → prosseguir para próxima área selecionada
684
+ Se "Outro" (texto livre) → interpretar intenção: frases de continuação ("mais", "continuar", "sim", "mais perguntas") mapeiam para "Mais perguntas"; frases de avanço ("feito", "continuar", "próximo", "pular") mapeiam para "Próxima área". Se ambíguo, perguntar: "Continuar com mais perguntas sobre [área], ou mover para a próxima área?"
685
+
686
+ 4. **Após todas as áreas inicialmente selecionadas concluírem:**
687
+ - Resumir o que foi capturado da discussão até agora
688
+ - AskUserQuestion:
689
+ - header: "Concluído"
690
+ - question: "Discutimos [listar áreas]. Quais áreas cinzentas permanecem pouco claras?"
691
+ - options: "Explorar mais áreas cinzentas" / "Estou pronto para o contexto"
692
+ - Se "Explorar mais áreas cinzentas":
693
+ - Identificar 2-4 áreas cinzentas adicionais com base no que foi aprendido
694
+ - Retornar à lógica de present_gray_areas com essas novas áreas
695
+ - Loop: discutir novas áreas, então solicitar novamente
696
+ - Se "Estou pronto para o contexto": Prosseguir para write_context
697
+
698
+ **Acumulação de ref canônica durante a discussão:**
699
+ Quando o usuário referencia um doc, spec, ou ADR durante qualquer resposta — ex: "leia adr-014", "verifique a spec MCP", "de acordo com browse-spec.md" — imediatamente:
700
+ 1. Ler o doc referenciado (ou confirmar que existe)
701
+ 2. Adicioná-lo ao acumulador de refs canônicas com caminho relativo completo
702
+ 3. Usar o que aprendeu do doc para informar perguntas subsequentes
703
+
704
+ Esses docs referenciados pelo usuário são frequentemente MAIS importantes do que refs do ROADMAP.md porque representam docs que o usuário especificamente quer que agentes downstream sigam. Nunca os perder.
705
+
706
+ **Design de perguntas:**
707
+ - Opções devem ser concretas, não abstratas ("Cards" não "Opção A")
708
+ - Cada resposta deve informar a próxima pergunta ou próximo batch
709
+ - Se o usuário escolher "Outro" para fornecer input livre (ex: "deixa eu descrever", "outra coisa", ou uma resposta aberta), fazer o acompanhamento como texto simples — NÃO outro AskUserQuestion. Aguardar eles digitarem no prompt normal, então refletir seu input de volta e confirmar antes de retomar AskUserQuestion ou o próximo batch numerado.
710
+
711
+ **Tratamento de expansão de escopo:**
712
+ Se o usuário mencionar algo fora do domínio da fase:
713
+ ```
714
+ "[Funcionalidade] parece uma nova capacidade — pertence à sua própria fase.
715
+ Vou anotá-la como uma ideia adiada.
716
+
717
+ De volta a [área atual]: [retornar à pergunta atual]"
718
+ ```
719
+
720
+ Rastrear ideias adiadas internamente.
721
+
722
+ **Rastrear dados do log de discussão internamente:**
723
+ Para cada pergunta feita, acumular:
724
+ - Nome da área
725
+ - Todas as opções apresentadas (rótulo + descrição)
726
+ - Qual opção o usuário selecionou (ou sua resposta em texto livre)
727
+ - Quaisquer notas ou esclarecimentos de acompanhamento que o usuário forneceu
728
+ Esses dados são usados para gerar DISCUSSION-LOG.md no passo `write_context`.
729
+ </step>
730
+
731
+ <step name="write_context">
732
+ Criar CONTEXT.md capturando as decisões tomadas.
733
+
734
+ **Também gerar DISCUSSION-LOG.md** — uma trilha de auditoria completa do Q&A do discuss-phase.
735
+ Este arquivo é apenas para referência humana (auditorias de software, revisões de conformidade). NÃO é
736
+ consumido por agentes downstream (pesquisador, planejador, executor).
737
+
738
+ **Encontrar ou criar diretório de fase:**
739
+
740
+ Usar valores do init: `phase_dir`, `phase_slug`, `padded_phase`.
741
+
742
+ Se `phase_dir` for null (fase existe no roadmap mas sem diretório):
743
+ ```bash
744
+ mkdir -p ".planning/phases/${padded_phase}-${phase_slug}"
745
+ ```
746
+
747
+ **Localização do arquivo:** `${phase_dir}/${padded_phase}-CONTEXT.md`
748
+
749
+ **Estruturar o conteúdo pelo que foi discutido:**
750
+
751
+ ```markdown
752
+ # Fase [X]: [Nome] - Contexto
753
+
754
+ **Coletado:** [data]
755
+ **Status:** Pronto para planejamento
756
+
757
+ <domain>
758
+ ## Limite da Fase
759
+
760
+ [Declaração clara do que esta fase entrega — a âncora de escopo]
761
+
762
+ </domain>
763
+
764
+ <decisions>
765
+ ## Decisões de Implementação
766
+
767
+ ### [Categoria 1 que foi discutida]
768
+ - **D-01:** [Decisão ou preferência capturada]
769
+ - **D-02:** [Outra decisão se aplicável]
770
+
771
+ ### [Categoria 2 que foi discutida]
772
+ - **D-03:** [Decisão ou preferência capturada]
773
+
774
+ ### Discrição do Claude
775
+ [Áreas onde o usuário disse "você decide" — notar que Claude tem flexibilidade aqui]
776
+
777
+ ### Tarefas Incorporadas
778
+ [Se alguma tarefa foi incorporada ao escopo do passo cross_reference_todos, listá-las aqui.
779
+ Cada entrada deve incluir o título da tarefa, problema original e como se encaixa no escopo desta fase.
780
+ Se nenhuma tarefa foi incorporada: omitir esta subseção inteiramente.]
781
+
782
+ </decisions>
783
+
784
+ <canonical_refs>
785
+ ## Referências Canônicas
786
+
787
+ **Agentes downstream DEVEM ler estas antes de planejar ou implementar.**
788
+
789
+ [Seção OBRIGATÓRIA. Escrever aqui a lista COMPLETA de refs canônicas acumuladas.
790
+ Fontes: refs do ROADMAP.md + refs do REQUIREMENTS.md + docs referenciados pelo usuário durante
791
+ a discussão + quaisquer docs descobertos durante a varredura da codebase. Agrupar por área de tópico.
792
+ Cada entrada precisa de um caminho relativo completo — não apenas um nome.]
793
+
794
+ ### [Área de tópico 1]
795
+ - `caminho/para/adr-ou-spec.md` — [O que decide/define que é relevante]
796
+ - `caminho/para/doc.md` §N — [Referência de seção específica]
797
+
798
+ ### [Área de tópico 2]
799
+ - `caminho/para/feature-doc.md` — [O que este doc define]
800
+
801
+ [Se sem specs externas: "Sem specs externas — requisitos totalmente capturados nas decisões acima"]
802
+
803
+ </canonical_refs>
804
+
805
+ <code_context>
806
+ ## Insights de Código Existente
807
+
808
+ ### Ativos Reutilizáveis
809
+ - [Componente/hook/utilitário]: [Como poderia ser usado nesta fase]
810
+
811
+ ### Padrões Estabelecidos
812
+ - [Padrão]: [Como restringe/habilita esta fase]
813
+
814
+ ### Pontos de Integração
815
+ - [Onde novo código se conecta ao sistema existente]
816
+
817
+ </code_context>
818
+
819
+ <specifics>
820
+ ## Ideias Específicas
821
+
822
+ [Quaisquer referências particulares, exemplos, ou momentos "quero como X" da discussão]
823
+
824
+ [Se nenhum: "Sem requisitos específicos — aberto a abordagens padrão"]
825
+
826
+ </specifics>
827
+
828
+ <deferred>
829
+ ## Ideias Adiadas
830
+
831
+ [Ideias que surgiram mas pertencem a outras fases. Não as perder.]
832
+
833
+ ### Tarefas Revisadas (não incorporadas)
834
+ [Se alguma tarefa foi revisada em cross_reference_todos mas não incorporada ao escopo,
835
+ listá-las aqui para que fases futuras saibam que foram consideradas.
836
+ Cada entrada: título da tarefa + motivo pelo qual foi adiada (fora do escopo, pertence à Fase Y, etc.)
837
+ Se sem tarefas revisadas-mas-adiadas: omitir esta subseção inteiramente.]
838
+
839
+ [Se nenhum: "Nenhum — discussão ficou dentro do escopo da fase"]
840
+
841
+ </deferred>
842
+
843
+ ---
844
+
845
+ *Fase: XX-nome*
846
+ *Contexto coletado: [data]*
847
+ ```
848
+
849
+ Escrever arquivo.
850
+ </step>
851
+
852
+ <step name="confirm_creation">
853
+ Apresentar resumo e próximos passos:
854
+
855
+ ```
856
+ Criado: .planning/phases/${PADDED_PHASE}-${SLUG}/${PADDED_PHASE}-CONTEXT.md
857
+
858
+ ## Decisões Capturadas
859
+
860
+ ### [Categoria]
861
+ - [Decisão-chave]
862
+
863
+ ### [Categoria]
864
+ - [Decisão-chave]
865
+
866
+ [Se ideias adiadas existirem:]
867
+ ## Anotado para Depois
868
+ - [Ideia adiada] — fase futura
869
+
870
+ ---
871
+
872
+ ## ▶ Próximo Passo
873
+
874
+ **Fase ${PHASE}: [Nome]** — [Objetivo do ROADMAP.md]
875
+
876
+ `/planejar-fase ${PHASE} ${WS}`
877
+
878
+ <sub>`/clear` primeiro → janela de contexto fresca</sub>
879
+
880
+ ---
881
+
882
+ **Também disponível:**
883
+ - `/planejar-fase ${PHASE} --skip-research ${WS}` — planejar sem pesquisa
884
+ - `/fase-ui ${PHASE} ${WS}` — gerar contrato de design de UI antes do planejamento (se a fase tem trabalho de frontend)
885
+ - Revisar/editar CONTEXT.md antes de continuar
886
+
887
+ ---
888
+ ```
889
+ </step>
890
+
891
+ <step name="git_commit">
892
+ **Escrever DISCUSSION-LOG.md antes de commitar:**
893
+
894
+ **Localização do arquivo:** `${phase_dir}/${padded_phase}-DISCUSSION-LOG.md`
895
+
896
+ ```markdown
897
+ # Fase [X]: [Nome] - Log de Discussão
898
+
899
+ > **Somente trilha de auditoria.** Não usar como entrada para agentes de planejamento, pesquisa ou execução.
900
+ > Decisões são capturadas no CONTEXT.md — este log preserva as alternativas consideradas.
901
+
902
+ **Data:** [data ISO]
903
+ **Fase:** [número-fase]-[nome-fase]
904
+ **Áreas discutidas:** [lista separada por vírgula]
905
+
906
+ ---
907
+
908
+ [Para cada área cinzenta discutida:]
909
+
910
+ ## [Nome da Área]
911
+
912
+ | Opção | Descrição | Selecionada |
913
+ |-------|-----------|-------------|
914
+ | [Opção 1] | [Descrição do AskUserQuestion] | |
915
+ | [Opção 2] | [Descrição] | ✓ |
916
+ | [Opção 3] | [Descrição] | |
917
+
918
+ **Escolha do usuário:** [Opção selecionada ou resposta em texto livre]
919
+ **Notas:** [Quaisquer esclarecimentos, contexto de acompanhamento, ou raciocínio fornecido pelo usuário]
920
+
921
+ ---
922
+
923
+ [Repetir para cada área]
924
+
925
+ ## Discrição do Claude
926
+
927
+ [Listar áreas onde o usuário disse "você decide" ou delegou ao Claude]
928
+
929
+ ## Ideias Adiadas
930
+
931
+ [Ideias mencionadas durante a discussão que foram anotadas para fases futuras]
932
+ ```
933
+
934
+ Escrever arquivo.
935
+
936
+ Commitar contexto da fase e log de discussão:
937
+
938
+ ```bash
939
+ node "./.claude/framework/bin/tools.cjs" commit "docs(${padded_phase}): capture phase context" --files "${phase_dir}/${padded_phase}-CONTEXT.md" "${phase_dir}/${padded_phase}-DISCUSSION-LOG.md"
940
+ ```
941
+
942
+ Confirmar: "Commitado: docs(${padded_phase}): capturar contexto da fase"
943
+ </step>
944
+
945
+ <step name="update_state">
946
+ Atualizar STATE.md com informações da sessão:
947
+
948
+ ```bash
949
+ node "./.claude/framework/bin/tools.cjs" state record-session \
950
+ --stopped-at "Phase ${PHASE} context gathered" \
951
+ --resume-file "${phase_dir}/${padded_phase}-CONTEXT.md"
952
+ ```
953
+
954
+ Commitar STATE.md:
955
+
956
+ ```bash
957
+ node "./.claude/framework/bin/tools.cjs" commit "docs(state): record phase ${PHASE} context session" --files .planning/STATE.md
958
+ ```
959
+ </step>
960
+
961
+ <step name="auto_advance">
962
+ Verificar gatilho de avanço automático:
963
+
964
+ 1. Analisar flag `--auto` de $ARGUMENTS
965
+ 2. **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 NÃO toca em `workflow.auto_advance` (preferência persistente do usuário):
966
+ ```bash
967
+ if [[ ! "$ARGUMENTS" =~ --auto ]]; then
968
+ node "./.claude/framework/bin/tools.cjs" config-set workflow._auto_chain_active false 2>/dev/null
969
+ fi
970
+ ```
971
+ 3. Ler tanto a flag de cadeia quanto a preferência do usuário:
972
+ ```bash
973
+ AUTO_CHAIN=$(node "./.claude/framework/bin/tools.cjs" config-get workflow._auto_chain_active 2>/dev/null || echo "false")
974
+ AUTO_CFG=$(node "./.claude/framework/bin/tools.cjs" config-get workflow.auto_advance 2>/dev/null || echo "false")
975
+ ```
976
+
977
+ **Se flag `--auto` presente E `AUTO_CHAIN` não for true:** Persistir flag de cadeia na config (lida com uso direto de `--auto` sem new-project):
978
+ ```bash
979
+ node "./.claude/framework/bin/tools.cjs" config-set workflow._auto_chain_active true
980
+ ```
981
+
982
+ **Se flag `--auto` presente OU `AUTO_CHAIN` for true OU `AUTO_CFG` for true:**
983
+
984
+ Exibir banner:
985
+ ```
986
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
987
+ framework ► AVANÇANDO AUTOMATICAMENTE PARA PLANEJAMENTO
988
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
989
+
990
+ Contexto capturado. Iniciando plan-phase...
991
+ ```
992
+
993
+ Iniciar plan-phase usando a ferramenta Skill para evitar sessões Task aninhadas (que causam freezes de runtime devido ao aninhamento profundo de agentes — ver #686):
994
+ ```
995
+ Skill(skill="framework:planejar-fase", args="${PHASE} --auto ${WS}")
996
+ ```
997
+
998
+ Isso mantém a cadeia de avanço automático plana — discutir, planejar e executar todos rodam no mesmo nível de aninhamento em vez de criar agentes Task cada vez mais profundos.
999
+
1000
+ **Lidar com retorno do plan-phase:**
1001
+ - **FASE CONCLUÍDA** → Cadeia completa bem-sucedida. Exibir:
1002
+ ```
1003
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1004
+ framework ► FASE ${PHASE} CONCLUÍDA
1005
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1006
+
1007
+ Pipeline de avanço automático finalizado: discutir → planejar → executar
1008
+
1009
+ Próximo: /discutir-fase ${NEXT_PHASE} --auto ${WS}
1010
+ <sub>/clear primeiro → janela de contexto fresca</sub>
1011
+ ```
1012
+ - **PLANEJAMENTO CONCLUÍDO** → Planejamento feito, execução não terminou:
1013
+ ```
1014
+ Avanço automático parcial: Planejamento concluído, execução não terminou.
1015
+ Continuar: /executar-fase ${PHASE} ${WS}
1016
+ ```
1017
+ - **PLANEJAMENTO INCONCLUSIVO / CHECKPOINT** → Parar cadeia:
1018
+ ```
1019
+ Avanço automático parado: Planejamento precisa de input.
1020
+ Continuar: /planejar-fase ${PHASE} ${WS}
1021
+ ```
1022
+ - **LACUNAS ENCONTRADAS** → Parar cadeia:
1023
+ ```
1024
+ Avanço automático parado: Lacunas encontradas durante execução.
1025
+ Continuar: /planejar-fase ${PHASE} --gaps ${WS}
1026
+ ```
1027
+
1028
+ **Se nem `--auto` nem config habilitado:**
1029
+ Rotear para passo `confirm_creation` (comportamento existente — mostrar próximos passos manuais).
1030
+ </step>
1031
+
1032
+ </process>
1033
+
1034
+ <success_criteria>
1035
+ - Fase validada contra o roadmap
1036
+ - Contexto anterior carregado (PROJECT.md, REQUIREMENTS.md, STATE.md, arquivos CONTEXT.md anteriores)
1037
+ - Questões já decididas não re-perguntadas (carregadas de fases anteriores)
1038
+ - Codebase varrida por ativos reutilizáveis, padrões e pontos de integração
1039
+ - Áreas cinzentas identificadas por análise inteligente com anotações de código e decisão anterior
1040
+ - Usuário selecionou quais áreas discutir
1041
+ - Cada área selecionada explorada até satisfação do usuário (com opções informadas por código e por decisões anteriores)
1042
+ - Expansão de escopo redirecionada para ideias adiadas
1043
+ - CONTEXT.md captura decisões reais, não visão vaga
1044
+ - CONTEXT.md inclui seção canonical_refs com caminhos completos de arquivos para cada spec/ADR/doc que agentes downstream precisam (OBRIGATÓRIO — nunca omitir)
1045
+ - CONTEXT.md inclui seção code_context com ativos e padrões reutilizáveis
1046
+ - Ideias adiadas preservadas para fases futuras
1047
+ - STATE.md atualizado com informações da sessão
1048
+ - Usuário sabe os próximos passos
1049
+ </success_criteria>