@luanpdd/kit-mcp 1.33.0 → 1.35.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 (379) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +168 -168
  3. package/gates/agent-no-recursive-dispatch.md +84 -84
  4. package/kit/COMANDOS.md +138 -138
  5. package/kit/COMPATIBILITY.md +70 -70
  6. package/kit/README.md +76 -76
  7. package/kit/agents/advisor-researcher.md +109 -109
  8. package/kit/agents/ai-mutation-tester.md +289 -289
  9. package/kit/agents/assumptions-analyzer.md +110 -110
  10. package/kit/agents/audit-log-implementer.md +314 -314
  11. package/kit/agents/auditor-consistencia-isolamento.md +414 -414
  12. package/kit/agents/b2b-saas-architect.md +157 -157
  13. package/kit/agents/burn-rate-forecaster.md +153 -153
  14. package/kit/agents/cascading-failures-auditor.md +299 -299
  15. package/kit/agents/codebase-mapper.md +769 -769
  16. package/kit/agents/crm-pipeline-implementer.md +257 -257
  17. package/kit/agents/debugger.md +814 -814
  18. package/kit/agents/designer-ui.md +216 -216
  19. package/kit/agents/detector-tenant-quente.md +338 -338
  20. package/kit/agents/evolution-go-integrator.md +201 -201
  21. package/kit/agents/example-reviewer.md +22 -22
  22. package/kit/agents/executor.md +565 -565
  23. package/kit/agents/golden-signals-instrumenter.md +232 -232
  24. package/kit/agents/incident-investigator.md +238 -238
  25. package/kit/agents/integration-checker.md +203 -203
  26. package/kit/agents/invite-flow-implementer.md +190 -190
  27. package/kit/agents/legacy-characterizer.md +369 -369
  28. package/kit/agents/lgpd-compliance-auditor.md +296 -296
  29. package/kit/agents/load-shedding-instrumenter.md +290 -290
  30. package/kit/agents/multi-tenant-isolation-auditor.md +254 -254
  31. package/kit/agents/multi-tenant-rls-writer.md +341 -341
  32. package/kit/agents/nyquist-auditor.md +181 -181
  33. package/kit/agents/observability-coverage-auditor.md +316 -316
  34. package/kit/agents/observability-instrumenter.md +191 -191
  35. package/kit/agents/omm-auditor.md +291 -291
  36. package/kit/agents/org-onboarding-implementer.md +224 -224
  37. package/kit/agents/payload-capture-instrumenter.md +274 -274
  38. package/kit/agents/phase-researcher.md +697 -697
  39. package/kit/agents/plan-checker.md +275 -275
  40. package/kit/agents/planner.md +923 -923
  41. package/kit/agents/postmortem-writer.md +273 -273
  42. package/kit/agents/project-researcher.md +653 -653
  43. package/kit/agents/prr-conductor.md +287 -287
  44. package/kit/agents/refactor-safety-auditor.md +405 -405
  45. package/kit/agents/release-pipeline-auditor.md +364 -364
  46. package/kit/agents/research-synthesizer.md +246 -246
  47. package/kit/agents/roadmapper.md +678 -678
  48. package/kit/agents/schema-checker.md +160 -160
  49. package/kit/agents/seam-finder.md +360 -360
  50. package/kit/agents/shotgun-surgery-detector.md +350 -350
  51. package/kit/agents/slo-engineer.md +217 -217
  52. package/kit/agents/storytelling-analyst.md +300 -300
  53. package/kit/agents/supabase-architect.md +249 -249
  54. package/kit/agents/supabase-auth-bootstrapper.md +400 -400
  55. package/kit/agents/supabase-auth-hook-writer.md +418 -418
  56. package/kit/agents/supabase-branching-architect.md +563 -563
  57. package/kit/agents/supabase-cicd-pipeline-implementer.md +778 -778
  58. package/kit/agents/supabase-column-privileges-writer.md +400 -400
  59. package/kit/agents/supabase-edge-fn-tester.md +288 -288
  60. package/kit/agents/supabase-edge-fn-writer.md +341 -341
  61. package/kit/agents/supabase-mfa-implementer.md +439 -439
  62. package/kit/agents/supabase-migration-writer.md +386 -386
  63. package/kit/agents/supabase-oauth-server-implementer.md +507 -507
  64. package/kit/agents/supabase-rbac-implementer.md +393 -393
  65. package/kit/agents/supabase-realtime-implementer.md +364 -364
  66. package/kit/agents/supabase-rls-hardener.md +522 -522
  67. package/kit/agents/supabase-rls-writer.md +324 -324
  68. package/kit/agents/supabase-roles-implementer.md +356 -356
  69. package/kit/agents/supabase-social-auth-implementer.md +451 -451
  70. package/kit/agents/supabase-sso-saml-architect.md +549 -549
  71. package/kit/agents/supabase-storage-implementer.md +407 -407
  72. package/kit/agents/super-admin-implementer.md +282 -282
  73. package/kit/agents/toil-auditor.md +268 -268
  74. package/kit/agents/ui-auditor.md +438 -438
  75. package/kit/agents/ui-checker.md +305 -305
  76. package/kit/agents/ui-researcher.md +356 -356
  77. package/kit/agents/user-profiler.md +176 -176
  78. package/kit/agents/validador-evolucao-schema.md +336 -336
  79. package/kit/agents/verifier.md +729 -729
  80. package/kit/agents/workflow-generator.md +167 -0
  81. package/kit/commands/adicionar-backlog.md +75 -75
  82. package/kit/commands/adicionar-fase.md +42 -42
  83. package/kit/commands/adicionar-tarefa.md +45 -45
  84. package/kit/commands/adicionar-testes.md +41 -41
  85. package/kit/commands/ajuda.md +21 -21
  86. package/kit/commands/atualizar.md +37 -37
  87. package/kit/commands/auditar-cascading.md +111 -111
  88. package/kit/commands/auditar-marco.md +179 -179
  89. package/kit/commands/auditar-observabilidade-cobertura-workflow.md +121 -0
  90. package/kit/commands/auditar-observabilidade-cobertura.md +183 -183
  91. package/kit/commands/auditar-refactor.md +219 -219
  92. package/kit/commands/auditar-release.md +109 -109
  93. package/kit/commands/auditar-uat.md +23 -23
  94. package/kit/commands/autonomo.md +40 -40
  95. package/kit/commands/branch-pr.md +24 -24
  96. package/kit/commands/burn-rate-status.md +408 -408
  97. package/kit/commands/capturar-payloads.md +193 -193
  98. package/kit/commands/caracterizar.md +212 -212
  99. package/kit/commands/concluir-marco.md +247 -247
  100. package/kit/commands/configuracoes.md +36 -36
  101. package/kit/commands/criar-workflow.md +158 -0
  102. package/kit/commands/dados-distribuidos.md +188 -188
  103. package/kit/commands/definir-perfil.md +10 -10
  104. package/kit/commands/depurar.md +190 -190
  105. package/kit/commands/detectar-duplicacao.md +197 -197
  106. package/kit/commands/discutir-fase.md +131 -131
  107. package/kit/commands/encontrar-seams.md +136 -136
  108. package/kit/commands/entrar-discord.md +17 -17
  109. package/kit/commands/estatisticas.md +18 -18
  110. package/kit/commands/example-greeting.md +33 -33
  111. package/kit/commands/executar-fase.md +58 -58
  112. package/kit/commands/expresso.md +56 -56
  113. package/kit/commands/fase-ui.md +34 -34
  114. package/kit/commands/fazer.md +57 -57
  115. package/kit/commands/fio.md +125 -125
  116. package/kit/commands/fluxos-trabalho.md +64 -64
  117. package/kit/commands/forense.md +176 -176
  118. package/kit/commands/gerenciador.md +38 -38
  119. package/kit/commands/inserir-fase.md +31 -31
  120. package/kit/commands/legacy.md +263 -263
  121. package/kit/commands/limpeza.md +17 -17
  122. package/kit/commands/listar-hipoteses-fase.md +45 -45
  123. package/kit/commands/listar-workspaces.md +18 -18
  124. package/kit/commands/load-shedding.md +117 -117
  125. package/kit/commands/mapear-codebase.md +70 -70
  126. package/kit/commands/multi-tenant.md +163 -163
  127. package/kit/commands/nota.md +33 -33
  128. package/kit/commands/novo-marco.md +43 -43
  129. package/kit/commands/novo-projeto.md +41 -41
  130. package/kit/commands/novo-workspace.md +43 -43
  131. package/kit/commands/pausar-trabalho.md +37 -37
  132. package/kit/commands/perfil-usuario.md +45 -45
  133. package/kit/commands/pesquisar-fase.md +195 -195
  134. package/kit/commands/planejar-fase.md +67 -67
  135. package/kit/commands/planejar-lacunas.md +33 -33
  136. package/kit/commands/plantar-ideia.md +25 -25
  137. package/kit/commands/progresso.md +24 -24
  138. package/kit/commands/proximo.md +30 -30
  139. package/kit/commands/publicar.md +490 -490
  140. package/kit/commands/rapido.md +35 -35
  141. package/kit/commands/reaplicar-patches.md +124 -124
  142. package/kit/commands/refactor-seguro.md +321 -321
  143. package/kit/commands/relatorio-sessao.md +19 -19
  144. package/kit/commands/remover-fase.md +31 -31
  145. package/kit/commands/remover-workspace.md +26 -26
  146. package/kit/commands/resumo-marco.md +50 -50
  147. package/kit/commands/retomar-trabalho.md +40 -40
  148. package/kit/commands/revisar-backlog.md +60 -60
  149. package/kit/commands/revisar-ui.md +32 -32
  150. package/kit/commands/revisar.md +37 -37
  151. package/kit/commands/saude.md +21 -21
  152. package/kit/commands/setup-notion.md +93 -93
  153. package/kit/commands/storytelling.md +179 -179
  154. package/kit/commands/supabase.md +238 -238
  155. package/kit/commands/sync-main.md +68 -68
  156. package/kit/commands/validar-fase.md +35 -35
  157. package/kit/commands/verificar-tarefas.md +44 -44
  158. package/kit/commands/verificar-trabalho.md +64 -64
  159. package/kit/file-manifest.json +424 -419
  160. package/kit/framework/bin/lib/commands.cjs +959 -959
  161. package/kit/framework/bin/lib/config.cjs +442 -442
  162. package/kit/framework/bin/lib/core.cjs +1230 -1230
  163. package/kit/framework/bin/lib/frontmatter.cjs +336 -336
  164. package/kit/framework/bin/lib/init.cjs +1442 -1442
  165. package/kit/framework/bin/lib/milestone.cjs +252 -252
  166. package/kit/framework/bin/lib/model-profiles.cjs +68 -68
  167. package/kit/framework/bin/lib/phase.cjs +888 -888
  168. package/kit/framework/bin/lib/profile-output.cjs +952 -952
  169. package/kit/framework/bin/lib/profile-pipeline.cjs +539 -539
  170. package/kit/framework/bin/lib/roadmap.cjs +329 -329
  171. package/kit/framework/bin/lib/security.cjs +382 -382
  172. package/kit/framework/bin/lib/state.cjs +1031 -1031
  173. package/kit/framework/bin/lib/template.cjs +222 -222
  174. package/kit/framework/bin/lib/uat.cjs +282 -282
  175. package/kit/framework/bin/lib/verify.cjs +888 -888
  176. package/kit/framework/bin/lib/workstream.cjs +491 -491
  177. package/kit/framework/bin/tools.cjs +918 -918
  178. package/kit/framework/commands/workstreams.md +63 -63
  179. package/kit/framework/references/checkpoints.md +778 -778
  180. package/kit/framework/references/continuation-format.md +249 -249
  181. package/kit/framework/references/decimal-phase-calculation.md +64 -64
  182. package/kit/framework/references/git-integration.md +295 -295
  183. package/kit/framework/references/git-planning-commit.md +38 -38
  184. package/kit/framework/references/model-profile-resolution.md +36 -36
  185. package/kit/framework/references/model-profiles.md +139 -139
  186. package/kit/framework/references/phase-argument-parsing.md +61 -61
  187. package/kit/framework/references/planning-config.md +202 -202
  188. package/kit/framework/references/questioning.md +162 -162
  189. package/kit/framework/references/tdd.md +263 -263
  190. package/kit/framework/references/ui-brand.md +160 -160
  191. package/kit/framework/references/user-profiling.md +657 -657
  192. package/kit/framework/references/verification-patterns.md +612 -612
  193. package/kit/framework/references/workstream-flag.md +58 -58
  194. package/kit/framework/templates/DEBUG.md +164 -164
  195. package/kit/framework/templates/UAT.md +265 -265
  196. package/kit/framework/templates/UI-SPEC.md +100 -100
  197. package/kit/framework/templates/VALIDATION.md +76 -76
  198. package/kit/framework/templates/claude-md.md +122 -122
  199. package/kit/framework/templates/codebase/architecture.md +185 -185
  200. package/kit/framework/templates/codebase/concerns.md +205 -205
  201. package/kit/framework/templates/codebase/conventions.md +204 -204
  202. package/kit/framework/templates/codebase/integrations.md +192 -192
  203. package/kit/framework/templates/codebase/stack.md +158 -158
  204. package/kit/framework/templates/codebase/structure.md +199 -199
  205. package/kit/framework/templates/codebase/testing.md +301 -301
  206. package/kit/framework/templates/config.json +44 -44
  207. package/kit/framework/templates/context.md +352 -352
  208. package/kit/framework/templates/continue-here.md +78 -78
  209. package/kit/framework/templates/copilot-instructions.md +7 -7
  210. package/kit/framework/templates/debug-subagent-prompt.md +91 -91
  211. package/kit/framework/templates/dev-preferences.md +20 -20
  212. package/kit/framework/templates/discovery.md +146 -146
  213. package/kit/framework/templates/discussion-log.md +63 -63
  214. package/kit/framework/templates/milestone-archive.md +123 -123
  215. package/kit/framework/templates/milestone.md +115 -115
  216. package/kit/framework/templates/phase-prompt.md +610 -610
  217. package/kit/framework/templates/planner-subagent-prompt.md +117 -117
  218. package/kit/framework/templates/project.md +186 -186
  219. package/kit/framework/templates/requirements.md +231 -231
  220. package/kit/framework/templates/research-project/ARCHITECTURE.md +204 -204
  221. package/kit/framework/templates/research-project/FEATURES.md +147 -147
  222. package/kit/framework/templates/research-project/PITFALLS.md +200 -200
  223. package/kit/framework/templates/research-project/STACK.md +120 -120
  224. package/kit/framework/templates/research-project/SUMMARY.md +170 -170
  225. package/kit/framework/templates/research.md +419 -419
  226. package/kit/framework/templates/retrospective.md +54 -54
  227. package/kit/framework/templates/roadmap.md +202 -202
  228. package/kit/framework/templates/state.md +176 -176
  229. package/kit/framework/templates/summary-complex.md +59 -59
  230. package/kit/framework/templates/summary-minimal.md +41 -41
  231. package/kit/framework/templates/summary-standard.md +48 -48
  232. package/kit/framework/templates/summary.md +209 -209
  233. package/kit/framework/templates/user-profile.md +146 -146
  234. package/kit/framework/templates/user-setup.md +256 -256
  235. package/kit/framework/templates/verification-report.md +258 -258
  236. package/kit/framework/workflows/add-phase.md +112 -112
  237. package/kit/framework/workflows/add-tests.md +351 -351
  238. package/kit/framework/workflows/add-todo.md +158 -158
  239. package/kit/framework/workflows/audit-milestone.md +340 -340
  240. package/kit/framework/workflows/audit-uat.md +109 -109
  241. package/kit/framework/workflows/autonomous.md +891 -891
  242. package/kit/framework/workflows/check-todos.md +177 -177
  243. package/kit/framework/workflows/cleanup.md +152 -152
  244. package/kit/framework/workflows/complete-milestone.md +696 -696
  245. package/kit/framework/workflows/diagnose-issues.md +231 -231
  246. package/kit/framework/workflows/discovery-phase.md +289 -289
  247. package/kit/framework/workflows/discuss-phase-assumptions.md +653 -653
  248. package/kit/framework/workflows/discuss-phase.md +784 -784
  249. package/kit/framework/workflows/do.md +104 -104
  250. package/kit/framework/workflows/execute-phase.md +838 -838
  251. package/kit/framework/workflows/execute-plan.md +510 -510
  252. package/kit/framework/workflows/fast.md +102 -102
  253. package/kit/framework/workflows/forensics.md +265 -265
  254. package/kit/framework/workflows/health.md +181 -181
  255. package/kit/framework/workflows/help.md +619 -619
  256. package/kit/framework/workflows/insert-phase.md +130 -130
  257. package/kit/framework/workflows/list-phase-assumptions.md +178 -178
  258. package/kit/framework/workflows/list-workspaces.md +56 -56
  259. package/kit/framework/workflows/manager.md +362 -362
  260. package/kit/framework/workflows/map-codebase.md +377 -377
  261. package/kit/framework/workflows/milestone-summary.md +223 -223
  262. package/kit/framework/workflows/new-milestone.md +486 -486
  263. package/kit/framework/workflows/new-project.md +1159 -1159
  264. package/kit/framework/workflows/new-workspace.md +237 -237
  265. package/kit/framework/workflows/next.md +97 -97
  266. package/kit/framework/workflows/node-repair.md +92 -92
  267. package/kit/framework/workflows/note.md +156 -156
  268. package/kit/framework/workflows/pause-work.md +176 -176
  269. package/kit/framework/workflows/plan-milestone-gaps.md +273 -273
  270. package/kit/framework/workflows/plan-phase.md +765 -765
  271. package/kit/framework/workflows/plant-seed.md +169 -169
  272. package/kit/framework/workflows/pr-branch.md +129 -129
  273. package/kit/framework/workflows/profile-user.md +450 -450
  274. package/kit/framework/workflows/progress.md +507 -507
  275. package/kit/framework/workflows/quick.md +757 -757
  276. package/kit/framework/workflows/remove-phase.md +155 -155
  277. package/kit/framework/workflows/remove-workspace.md +90 -90
  278. package/kit/framework/workflows/research-phase.md +82 -82
  279. package/kit/framework/workflows/resume-project.md +326 -326
  280. package/kit/framework/workflows/review.md +228 -228
  281. package/kit/framework/workflows/session-report.md +146 -146
  282. package/kit/framework/workflows/settings.md +283 -283
  283. package/kit/framework/workflows/ship.md +228 -228
  284. package/kit/framework/workflows/stats.md +60 -60
  285. package/kit/framework/workflows/transition.md +671 -671
  286. package/kit/framework/workflows/ui-phase.md +302 -302
  287. package/kit/framework/workflows/ui-review.md +165 -165
  288. package/kit/framework/workflows/update.md +323 -323
  289. package/kit/framework/workflows/validate-phase.md +174 -174
  290. package/kit/framework/workflows/verify-phase.md +252 -252
  291. package/kit/framework/workflows/verify-work.md +637 -637
  292. package/kit/hooks/check-update.js +118 -118
  293. package/kit/hooks/context-monitor.js +163 -163
  294. package/kit/hooks/kit-attribution-reminder.cjs +92 -92
  295. package/kit/hooks/kit-router.cjs +137 -137
  296. package/kit/hooks/prompt-guard.js +103 -103
  297. package/kit/hooks/statusline.js +125 -125
  298. package/kit/hooks/workflow-guard.js +101 -101
  299. package/kit/settings.json +45 -45
  300. package/kit/skills/ai-prompt-characterization/SKILL.md +335 -335
  301. package/kit/skills/armadilhas-sistemas-distribuidos/SKILL.md +447 -447
  302. package/kit/skills/audit-log-multi-tenant/SKILL.md +340 -340
  303. package/kit/skills/b2b-saas-architecture/SKILL.md +300 -300
  304. package/kit/skills/consistencia-leitura-replica/SKILL.md +385 -385
  305. package/kit/skills/crm-lead-pipeline-patterns/SKILL.md +343 -343
  306. package/kit/skills/dynamic-workflow-authoring/SKILL.md +223 -0
  307. package/kit/skills/escolha-modelo-consistencia/SKILL.md +494 -494
  308. package/kit/skills/evolucao-schema-compativel/SKILL.md +448 -448
  309. package/kit/skills/evolution-go-whatsapp-integration/SKILL.md +322 -322
  310. package/kit/skills/example-skill/SKILL.md +42 -42
  311. package/kit/skills/legacy-api-only-applications/SKILL.md +358 -358
  312. package/kit/skills/legacy-characterization-tests/SKILL.md +330 -330
  313. package/kit/skills/legacy-effect-analysis/SKILL.md +331 -331
  314. package/kit/skills/legacy-extract-class/SKILL.md +203 -203
  315. package/kit/skills/legacy-programming-by-difference/SKILL.md +252 -252
  316. package/kit/skills/legacy-seams-and-test-harness/SKILL.md +460 -460
  317. package/kit/skills/legacy-shotgun-surgery/SKILL.md +286 -286
  318. package/kit/skills/legacy-sprout-wrap-techniques/SKILL.md +434 -434
  319. package/kit/skills/legacy-storytelling-naked-crc/SKILL.md +270 -270
  320. package/kit/skills/lgpd-multi-tenant-compliance/SKILL.md +340 -340
  321. package/kit/skills/member-invite-flow/SKILL.md +305 -305
  322. package/kit/skills/member-management-react-shadcn/SKILL.md +328 -328
  323. package/kit/skills/multi-tenant-performance-scaling/SKILL.md +316 -316
  324. package/kit/skills/multi-tenant-rls-hierarchy/SKILL.md +342 -342
  325. package/kit/skills/org-onboarding-flow/SKILL.md +257 -257
  326. package/kit/skills/org-switcher-react-pattern/SKILL.md +349 -349
  327. package/kit/skills/permission-gate-react-pattern/SKILL.md +271 -271
  328. package/kit/skills/postgres-isolamento-concorrencia/SKILL.md +552 -552
  329. package/kit/skills/pre-refactor-characterization/SKILL.md +421 -421
  330. package/kit/skills/rbac-permissions-matrix-supabase/SKILL.md +338 -338
  331. package/kit/skills/streams-eventos-cdc/SKILL.md +711 -711
  332. package/kit/skills/supabase-auth-hardening/SKILL.md +674 -674
  333. package/kit/skills/supabase-auth-hooks/SKILL.md +875 -875
  334. package/kit/skills/supabase-auth-methods/SKILL.md +486 -486
  335. package/kit/skills/supabase-auth-sessions/SKILL.md +579 -579
  336. package/kit/skills/supabase-auth-ssr/SKILL.md +306 -306
  337. package/kit/skills/supabase-branching-workflow/SKILL.md +544 -544
  338. package/kit/skills/supabase-ci-cd-github-actions/SKILL.md +880 -880
  339. package/kit/skills/supabase-column-level-security/SKILL.md +426 -426
  340. package/kit/skills/supabase-config-toml-remotes/SKILL.md +807 -807
  341. package/kit/skills/supabase-custom-claims-rbac/SKILL.md +472 -472
  342. package/kit/skills/supabase-edge-functions/SKILL.md +330 -330
  343. package/kit/skills/supabase-edge-functions-auth/SKILL.md +309 -309
  344. package/kit/skills/supabase-edge-functions-limits/SKILL.md +302 -302
  345. package/kit/skills/supabase-edge-functions-mcp-server/SKILL.md +279 -279
  346. package/kit/skills/supabase-edge-functions-testing/SKILL.md +277 -277
  347. package/kit/skills/supabase-edge-runtime-builtins/SKILL.md +357 -357
  348. package/kit/skills/supabase-enterprise-sso-saml/SKILL.md +545 -545
  349. package/kit/skills/supabase-jwt-signing-keys/SKILL.md +399 -399
  350. package/kit/skills/supabase-mfa/SKILL.md +488 -488
  351. package/kit/skills/supabase-migration-repair/SKILL.md +823 -823
  352. package/kit/skills/supabase-migrations/SKILL.md +297 -297
  353. package/kit/skills/supabase-oauth-server/SKILL.md +537 -537
  354. package/kit/skills/supabase-pgtap-testing/SKILL.md +1053 -1053
  355. package/kit/skills/supabase-postgres-roles/SKILL.md +392 -392
  356. package/kit/skills/supabase-realtime/SKILL.md +460 -460
  357. package/kit/skills/supabase-rls-defense-in-depth/SKILL.md +418 -418
  358. package/kit/skills/supabase-rls-policies/SKILL.md +635 -635
  359. package/kit/skills/supabase-social-oauth/SKILL.md +480 -480
  360. package/kit/skills/supabase-third-party-auth/SKILL.md +450 -450
  361. package/kit/skills/super-admin-platform-pattern/SKILL.md +326 -326
  362. package/kit/skills/tenant-quente-mitigacao/SKILL.md +605 -605
  363. package/kit/skills/ui-anti-padroes-ia/SKILL.md +261 -261
  364. package/kit/skills/ui-contexto-produto/SKILL.md +248 -248
  365. package/kit/skills/ui-cor-estrategia/SKILL.md +213 -213
  366. package/kit/skills/ui-critica-auditoria/SKILL.md +260 -260
  367. package/kit/skills/ui-motion-funcional/SKILL.md +264 -264
  368. package/kit/skills/ui-ritmo-espacial/SKILL.md +259 -259
  369. package/kit/skills/ui-tipografia/SKILL.md +211 -211
  370. package/kit/skills/whatsapp-conversation-state-machine/SKILL.md +287 -287
  371. package/kit/workflows/auditar-observabilidade-cobertura.workflow.js +250 -0
  372. package/package.json +65 -63
  373. package/src/core/kit.js +333 -216
  374. package/src/core/reflect.js +247 -247
  375. package/src/core/registry.js +123 -112
  376. package/src/core/reverse-sync.js +448 -372
  377. package/src/core/sync.js +477 -437
  378. package/src/core/watch.js +121 -121
  379. package/src/mcp-server/index.js +794 -794
@@ -1,784 +1,784 @@
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 = visionário. Claude = construtor.**
25
-
26
- Usuário SABE: como imagina, visual/sensação, essencial vs nice-to-have, referências específicas.
27
- Usuário NÃO sabe (não pergunte): padrões da codebase (pesquisador lê), riscos técnicos (pesquisador), abordagem de implementação (planejador), métricas (inferidas).
28
-
29
- Pergunte sobre visão e escolhas; capture decisões pra agentes downstream.
30
- </philosophy>
31
-
32
- <scope_guardrail>
33
- **CRÍTICO: sem expansão de escopo.** Limite da fase vem do ROADMAP e é FIXO. Discussão clarifica COMO, nunca SE adicionar capacidades.
34
-
35
- | Permitido (clarifica) | Não permitido (expande) |
36
- |---|---|
37
- | "Como exibir posts?" (layout, densidade) | "Adicionar comentários?" (nova capacidade) |
38
- | "O que em estado vazio?" | "E busca/filtragem?" |
39
- | "Pull-to-refresh ou manual?" | "Incluir favoritos?" |
40
-
41
- **Heurística:** clarifica o que já está na fase, ou adiciona capacidade que merece fase própria?
42
-
43
- **Quando usuário sugere expansão:** "[X] seria nova capacidade — fase própria. Anoto pro backlog. De volta a [tópico]." Capture em "Ideias Adiadas". Não perca, não aja.
44
- </scope_guardrail>
45
-
46
- <supabase_detection>
47
- **Detecção de fase Supabase:** antes de identificar áreas cinzentas genéricas, verifique se a fase mexe em Supabase (DB/Auth/Realtime/Edge Functions/Storage/RLS/migrations).
48
-
49
- Sinais de fase Supabase no objetivo do ROADMAP.md ou nos REQs mapeados:
50
- - Menções a "Supabase", "Postgres", "RLS", "policy", "migration", "supabase/migrations/", "supabase/schemas/", "supabase/functions/"
51
- - Menções a "Auth Next.js", "@supabase/ssr", "magic link", "OAuth", "MFA"
52
- - Menções a "broadcast", "realtime", "presence", "postgres_changes"
53
- - Menções a "Edge Function", "Deno", "pgvector", "RAG", "pg_cron", "pgmq"
54
- - Menções a "bucket", "signed URL", "storage.objects"
55
-
56
- **Se for fase Supabase:** considere delegar a discussão para o agent `supabase-architect` em vez de gerar áreas cinzentas genéricas. O architect já tem template de perguntas Supabase-específicas (tier Free/Pro, branches, RLS strategy multi-tenant, schema design, topology realtime, custos de egress/branches).
57
-
58
- ```
59
- Task(subagent_type=supabase-architect, prompt="Projete schema + RLS + topologia para esta fase Supabase: {phase_goal}. Retorne plano em formato Markdown estruturado para servir de base ao CONTEXT.md.")
60
- ```
61
-
62
- Use o output do architect como base do `<decisions>` do CONTEXT.md em vez de fazer questionamento manual. **Para fases mistas** (parte Supabase, parte genérica) — use architect só para a parte Supabase, depois faça discussão padrão para o resto.
63
- </supabase_detection>
64
-
65
- <gray_area_identification>
66
- Á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.
67
-
68
- **Como identificar áreas cinzentas:**
69
-
70
- 1. **Ler o objetivo da fase** do ROADMAP.md
71
- 2. **Entender o domínio** — Que tipo de coisa está sendo construída?
72
- - Algo que usuários VÊM → apresentação visual, interações, estados importam
73
- - Algo que usuários CHAMAM → contratos de interface, respostas, erros importam
74
- - Algo que usuários EXECUTAM → invocação, saída, modos de comportamento importam
75
- - Algo que usuários LÊM → estrutura, tom, profundidade, fluxo importam
76
- - Algo sendo ORGANIZADO → critérios, agrupamento, tratamento de exceções importam
77
- 3. **Gerar áreas cinzentas específicas da fase** — Não categorias genéricas, mas decisões concretas para ESTA fase
78
-
79
- **Não use rótulos genéricos** (UI/UX/Comportamento). Gere áreas específicas. Exemplos: Auth → sessão, erros, multi-device, recuperação. Backups CLI → output, flags, progress, recovery. Foto biblioteca → agrupamento, duplicatas, nomenclatura, pastas. API docs → estrutura, exemplos, versionamento, interativos.
80
-
81
- **Pergunta-chave:** quais decisões mudariam o resultado que o usuário deveria opinar?
82
-
83
- **Claude trata sozinho (não perguntar):** detalhes técnicos, padrões de arquitetura, otimização, escopo (roadmap define).
84
- </gray_area_identification>
85
-
86
- <answer_validation>
87
- **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:
88
- 1. Tentar a pergunta novamente com os mesmos parâmetros
89
- 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
90
- Nunca prosseguir com uma resposta vazia.
91
-
92
- **Modo texto (`workflow.text_mode: true` na config ou flag `--text`):**
93
- Quando o modo texto estiver ativo, **não use AskUserQuestion de forma alguma**. Em vez disso, apresente cada
94
- pergunta como uma lista numerada em texto simples e peça ao usuário que digite o número da sua escolha.
95
- Isso é necessário para sessões remotas do Claude Code (modo `/rc`) onde o App Claude
96
- não pode encaminhar seleções de menu TUI de volta ao host.
97
-
98
- Ativar modo texto:
99
- - Por sessão: passar flag `--text` para qualquer comando (ex: `/discutir-fase --text`)
100
- - Por projeto: `tools config-set workflow.text_mode true`
101
-
102
- O modo texto aplica-se a TODOS os workflows na sessão, não apenas ao discuss-phase.
103
- </answer_validation>
104
-
105
- <process>
106
-
107
- **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.
108
-
109
- <step name="initialize" priority="first">
110
- Número da fase do argumento (obrigatório).
111
-
112
- ```bash
113
- INIT=$(node "./.claude/framework/bin/tools.cjs" init phase-op "${PHASE}")
114
- if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
115
- AGENT_SKILLS_ADVISOR=$(node "./.claude/framework/bin/tools.cjs" agent-skills advisor 2>/dev/null)
116
- ```
117
-
118
- 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`.
119
-
120
- **Se `phase_found` for false:**
121
- ```
122
- Fase [X] não encontrada no roadmap.
123
-
124
- Use /progresso ${WS} para ver as fases disponíveis.
125
- ```
126
- Sair do workflow.
127
-
128
- **Se `phase_found` for true:** Continuar para check_existing.
129
-
130
- **Modo auto** — Se `--auto` estiver presente em ARGUMENTS:
131
- - Em `check_existing`: auto-selecionar "Pular" (se contexto existir) ou continuar sem prompt (se sem contexto/planos)
132
- - Em `present_gray_areas`: auto-selecionar TODAS as áreas cinzentas sem perguntar ao usuário
133
- - 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
134
- - Logar cada escolha auto-selecionada inline para que o usuário possa revisar decisões no arquivo de contexto
135
- - Após a discussão concluir, avançar automaticamente para plan-phase (comportamento existente)
136
- </step>
137
-
138
- <step name="check_existing">
139
- Verificar se CONTEXT.md já existe usando `has_context` do init.
140
-
141
- ```bash
142
- ls ${phase_dir}/*-CONTEXT.md 2>/dev/null || true
143
- ```
144
-
145
- **Se existir:**
146
-
147
- **Se `--auto`:** Auto-selecionar "Atualizar" — carregar contexto existente e continuar para analyze_phase. Logar: `[auto] Contexto existe — atualizando com decisões auto-selecionadas.`
148
-
149
- **Caso contrário:** Usar AskUserQuestion:
150
- - header: "Contexto"
151
- - question: "Fase [X] já tem contexto. O que você quer fazer?"
152
- - options:
153
- - "Atualizar" — Revisar e revisar contexto existente
154
- - "Visualizar" — Me mostra o que há
155
- - "Pular" — Usar contexto existente como está
156
-
157
- Se "Atualizar": Carregar existente, continuar para analyze_phase
158
- Se "Visualizar": Exibir CONTEXT.md, então oferecer atualizar/pular
159
- Se "Pular": Sair do workflow
160
-
161
- **Se não existir:**
162
-
163
- Verificar `has_plans` e `plan_count` do init. **Se `has_plans` for true:**
164
-
165
- **Se `--auto`:** Auto-selecionar "Continuar e replanejar depois". Logar: `[auto] Planos existem — continuando com captura de contexto, replanejará depois.`
166
-
167
- **Caso contrário:** Usar AskUserQuestion:
168
- - header: "Planos existem"
169
- - 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."
170
- - options:
171
- - "Continuar e replanejar depois" — Capturar contexto, então executar /planejar-fase {X} ${WS} para replanejar
172
- - "Visualizar planos existentes" — Mostrar planos antes de decidir
173
- - "Cancelar" — Pular discuss-phase
174
-
175
- Se "Continuar e replanejar depois": Continuar para analyze_phase.
176
- Se "Visualizar planos existentes": Exibir arquivos de plano, então oferecer "Continuar" / "Cancelar".
177
- Se "Cancelar": Sair do workflow.
178
-
179
- **Se `has_plans` for false:** Continuar para load_prior_context.
180
- </step>
181
-
182
- <step name="load_prior_context">
183
- Ler PROJECT.md (visão/princípios/inegociáveis), REQUIREMENTS.md (critérios/must-haves), STATE.md (progresso/flags). Encontrar CONTEXT.md anteriores (`find .planning/phases -name "*-CONTEXT.md" | sort`); pra cada um com número < fase atual, extrair `<decisions>` (preferências bloqueadas) e `<specifics>` (refs particulares).
184
-
185
- Construir contexto interno `<prior_decisions>` com seções "Nível de Projeto" + "Das Fases Anteriores".
186
-
187
- **Uso downstream:** `analyze_phase` pula áreas já decididas; `present_gray_areas` anota com refs ("Você escolheu X na Fase 5"); `discuss_areas` pré-preenche ou sinaliza conflitos. Sem contexto anterior → continuar (esperado pra fases iniciais).
188
- </step>
189
-
190
- <step name="cross_reference_todos">
191
- Verificar se alguma tarefa pendente é relevante ao escopo desta fase. Exibe itens do backlog que de outra forma poderiam ser perdidos.
192
-
193
- **Carregar e corresponder tarefas:**
194
- ```bash
195
- TODO_MATCHES=$(node "./.claude/framework/bin/tools.cjs" todo match-phase "${PHASE_NUMBER}")
196
- ```
197
-
198
- Analisar JSON para: `todo_count`, `matches[]` (cada um com `file`, `title`, `area`, `score`, `reasons`).
199
-
200
- **Se `todo_count` for 0 ou `matches` estiver vazio:** Pular silenciosamente — sem atraso no workflow.
201
-
202
- **Se correspondências encontradas:**
203
-
204
- Apresentar tarefas correspondentes ao usuário. Mostrar cada correspondência com seu título, área e por que correspondeu:
205
-
206
- ```
207
- 📋 Encontradas {N} tarefa(s) pendente(s) que podem ser relevantes para a Fase {X}:
208
-
209
- {Para cada correspondência:}
210
- - **{título}** (área: {área}, relevância: {score}) — correspondeu em {reasons}
211
- ```
212
-
213
- Usar AskUserQuestion (multiSelect) perguntando quais tarefas incorporar ao escopo desta fase:
214
-
215
- ```
216
- Quais dessas tarefas devem ser incorporadas ao escopo da Fase {X}?
217
- (Selecione as que se aplicam, ou nenhuma para pular)
218
- ```
219
-
220
- **Para tarefas selecionadas (incorporadas):**
221
- - Armazenar internamente como `<folded_todos>` para inclusão na seção `<decisions>` do CONTEXT.md
222
- - Estes se tornam itens de escopo adicionais que agentes downstream (pesquisador, planejador) verão
223
-
224
- **Para tarefas não selecionadas (revisadas mas não incorporadas):**
225
- - Armazenar internamente como `<reviewed_todos>` para inclusão na seção `<deferred>` do CONTEXT.md
226
- - Isso evita que fases futuras re-exibam as mesmas tarefas como "perdidas"
227
-
228
- **Modo auto (`--auto`):** Incorporar todas as tarefas com score >= 0,4 automaticamente. Logar a seleção.
229
- </step>
230
-
231
- <step name="scout_codebase">
232
- 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.
233
-
234
- **Passo 1: Verificar mapas de codebase existentes**
235
- ```bash
236
- ls .planning/codebase/*.md 2>/dev/null || true
237
- ```
238
-
239
- **Mapas de codebase existem (`.planning/codebase/*.md`):** ler CONVENTIONS/STRUCTURE/STACK conforme tipo da fase. Extrair: ativos reutilizáveis, padrões estabelecidos, pontos de integração.
240
-
241
- **Sem mapas:** grep direcionado por termos-chave do objetivo (`grep -rl "termo1\|termo2" src/ app/ --include='*.{ts,tsx,js,jsx}' | head -10`) + `ls src/{components,hooks,lib,utils}/`. Ler 3-5 arquivos mais relevantes.
242
-
243
- Construir `<codebase_context>` interno: ativos reutilizáveis, padrões, pontos de integração, opções criativas que a arquitetura habilita/restringe. Não escreve em arquivo — só sessão atual.
244
- </step>
245
-
246
- <step name="analyze_phase">
247
- Analisar a fase para identificar áreas cinzentas que valem a discussão. **Usar tanto `prior_decisions` quanto `codebase_context` para embasar a análise.**
248
-
249
- **Ler a descrição da fase do ROADMAP.md e determinar:**
250
-
251
- 1. **Limite de domínio** — Qual capacidade esta fase está entregando? Declará-la claramente.
252
-
253
- 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.
254
-
255
- **Fonte 1 (agora):** Copiar `Canonical refs:` do ROADMAP.md para esta fase. Expandir cada uma para um caminho relativo completo.
256
- **Fonte 2 (agora):** Verificar REQUIREMENTS.md e PROJECT.md por quaisquer specs/ADRs referenciados para esta fase.
257
- **Fonte 3 (scout_codebase):** Se código existente referencia docs (ex: comentários citando ADRs), adicionar esses.
258
- **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.
259
-
260
- 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.
261
-
262
- 2. **Verificar decisões anteriores** — Antes de gerar áreas cinzentas, verificar se alguma já foi decidida:
263
- - Escanear `<prior_decisions>` por escolhas relevantes (ex: "Somente Ctrl+C, sem atalhos de tecla única")
264
- - Estas estão **pré-respondidas** — não re-perguntar a menos que esta fase tenha necessidades conflitantes
265
- - Notar decisões anteriores aplicáveis para uso na apresentação
266
-
267
- 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").
268
-
269
- 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.
270
-
271
- **Detecção de Modo Advisor:**
272
-
273
- `ADVISOR_MODE = exists("./.claude/framework/USER-PROFILE.md")`. Se false, pular todos os passos advisor — workflow conversacional inalterado.
274
-
275
- Se true, resolver `calibration_tier` por prioridade: (1) `config.json > preferences.vendor_philosophy` (project), (2) USER-PROFILE.md Vendor Choices/Philosophy (global), (3) default `standard`. Mapeamento: `conservative`/`thorough-evaluator` → `full_maturity`; `opinionated` → `minimal_decisive`; `pragmatic-fast` ou outro/vazio → `standard`.
276
-
277
- `ADVISOR_MODEL=$(node "./.claude/framework/bin/tools.cjs" resolve-model advisor-researcher --raw)`
278
-
279
- **Produzir sua análise internamente, então apresentar ao usuário.**
280
-
281
- Exemplo de análise para fase "Feed de Posts" (com código e contexto anterior):
282
- ```
283
- Domínio: Exibindo posts de usuários seguidos
284
- Existente: Componente Card (src/components/ui/Card.tsx), hook useInfiniteQuery, Tailwind CSS
285
- Decisões anteriores: "UI minimalista preferida" (Fase 2), "Sem paginação — sempre scroll infinito" (Fase 4)
286
- Áreas cinzentas:
287
- - UI: Estilo de layout (cards vs timeline vs grid) — Componente Card existe com variantes shadow/rounded
288
- - UI: Densidade de informação (posts completos vs prévias) — sem padrões de densidade existentes
289
- - Comportamento: Padrão de carregamento — JÁ DECIDIDO: scroll infinito (Fase 4)
290
- - Estado Vazio: O que mostra quando não há posts — Componente EmptyState existe em ui/
291
- - Conteúdo: Quais metadados exibir (hora, autor, contagem de reações)
292
- ```
293
- </step>
294
-
295
- <step name="present_gray_areas">
296
- Apresentar o limite de domínio, decisões anteriores e áreas cinzentas ao usuário.
297
-
298
- **Primeiro, declarar o limite e quaisquer decisões anteriores que se aplicam:**
299
- ```
300
- Fase [X]: [Nome]
301
- Domínio: [O que esta fase entrega — da sua análise]
302
-
303
- Vamos clarificar COMO implementar isso.
304
- (Novas capacidades pertencem a outras fases.)
305
-
306
- [Se decisões anteriores se aplicam:]
307
- **Carregando de fases anteriores:**
308
- - [Decisão da Fase N que se aplica aqui]
309
- - [Decisão da Fase M que se aplica aqui]
310
- ```
311
-
312
- **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.
313
-
314
- **Caso contrário, usar AskUserQuestion (multiSelect: true):**
315
- - header: "Discutir"
316
- - question: "Quais áreas você quer discutir para [nome da fase]?"
317
- - options: Gerar 3-4 áreas cinzentas específicas da fase, cada uma com:
318
- - "[Área específica]" (rótulo) — concreto, não genérico
319
- - [1-2 perguntas que isso cobre + anotação de contexto de código] (descrição)
320
- - **Destacar a escolha recomendada com breve explicação do porquê**
321
-
322
- **Anotações de decisão anterior:** Quando uma área cinzenta já foi decidida em uma fase anterior, anotá-la:
323
- ```
324
- ☐ Atalhos de saída — Como os usuários devem sair?
325
- (Você decidiu "Somente Ctrl+C, sem atalhos de tecla única" na Fase 5 — revisitar ou manter?)
326
- ```
327
-
328
- **Anotações de contexto de código:** Quando o scout encontrou código existente relevante, anotar a descrição da área cinzenta:
329
- ```
330
- ☐ Estilo de layout — Cards vs lista vs timeline?
331
- (Você já tem um componente Card com variantes shadow/rounded. Reutilizá-lo mantém o app consistente.)
332
- ```
333
-
334
- **Combinando ambos:** Quando tanto decisões anteriores quanto contexto de código se aplicam:
335
- ```
336
- ☐ Comportamento de carregamento — Scroll infinito ou paginação?
337
- (Você escolheu scroll infinito na Fase 4. Hook useInfiniteQuery já configurado.)
338
- ```
339
-
340
- **NÃO incluir opção "pular" ou "você decide".** O usuário executou este comando para discutir — dar escolhas reais.
341
-
342
- **Exemplos por domínio:**
343
- - Feed de Posts: layout (cards/lista/timeline), carregamento (infinito/paginação), ordenação, metadados
344
- - Backup CLI: output (JSON/tabela/texto), flags (curtas/longas), progress (silencioso/bar/verbose), recovery (fail-fast/retry)
345
- - Foto biblioteca: agrupamento (data/local/face/evento), duplicatas (melhor/todos/prompt), nomenclatura, pastas
346
-
347
- Continuar para discuss_areas com áreas selecionadas (ou advisor_research se ADVISOR_MODE for true).
348
- </step>
349
-
350
- <step name="advisor_research">
351
- **Pesquisa Advisor** (somente quando ADVISOR_MODE for true)
352
-
353
- Após o usuário selecionar áreas cinzentas em present_gray_areas, criar agentes de pesquisa paralelos.
354
-
355
- 1. Exibir status breve: "Pesquisando {N} áreas..."
356
-
357
- 2. Para CADA área cinzenta selecionada pelo usuário, criar um Task() em paralelo:
358
-
359
- Task(
360
- prompt="First, read @./.claude/agents/advisor-researcher.md for your role and instructions.
361
-
362
- <gray_area>{area_name}: {area_description from gray area identification}</gray_area>
363
- <phase_context>{phase_goal and description from ROADMAP.md}</phase_context>
364
- <project_context>{project name and brief description from PROJECT.md}</project_context>
365
- <calibration_tier>{resolved calibration tier: full_maturity | standard | minimal_decisive}</calibration_tier>
366
-
367
- Research this gray area and return a structured comparison table with rationale.
368
- ${AGENT_SKILLS_ADVISOR}",
369
- subagent_type="general-purpose",
370
- model="{ADVISOR_MODEL}",
371
- description="Research: {area_name}"
372
- )
373
-
374
- Todas as chamadas Task() criam simultaneamente — NÃO aguardar uma antes de iniciar a próxima.
375
-
376
- 3. Após TODOS os agentes retornarem, SINTETIZAR resultados antes de apresentar:
377
- Para o retorno de cada agente:
378
- a. Analisar a tabela de comparação markdown e parágrafo de raciocínio
379
- b. Verificar se todas as 5 colunas estão presentes (Option | Pros | Cons | Complexity | Recommendation) — preencher colunas ausentes em vez de mostrar tabela quebrada
380
- c. Verificar contagem de opções contra o tier de calibração:
381
- - full_maturity: 3-5 opções aceitável
382
- - standard: 2-4 opções aceitável
383
- - minimal_decisive: 1-2 opções aceitável
384
- Se agente retornou demais, remover as menos viáveis. Se poucas demais, aceitar como está.
385
- 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
386
- 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}"
387
-
388
- 4. Armazenar tabelas sintetizadas para uso em discuss_areas.
389
-
390
- **Se ADVISOR_MODE for false:** Pular este passo inteiramente — prosseguir diretamente de present_gray_areas para discuss_areas.
391
- </step>
392
-
393
- <step name="discuss_areas">
394
- Discutir cada área selecionada com o usuário. O fluxo depende do modo advisor.
395
-
396
- **Se ADVISOR_MODE for true:**
397
-
398
- Fluxo de discussão com tabela primeiro — apresentar tabelas de comparação baseadas em pesquisa, então capturar escolhas do usuário.
399
-
400
- **Para cada área selecionada:**
401
-
402
- 1. **Apresentar a tabela de comparação sintetizada + parágrafo de raciocínio** (do passo advisor_research)
403
-
404
- 2. **Usar AskUserQuestion:**
405
- - header: "{area_name}"
406
- - question: "Qual abordagem para {area_name}?"
407
- - options: Extrair da coluna Option da tabela (AskUserQuestion adiciona "Outro" automaticamente)
408
-
409
- 3. **Registrar a seleção do usuário:**
410
- - Se o usuário escolher das opções da tabela → registrar como decisão bloqueada para essa área
411
- - Se o usuário escolher "Outro" → receber seu input, refletir de volta para confirmação, registrar
412
-
413
- 4. **Após registrar escolha, Claude decide se perguntas de acompanhamento são necessárias:**
414
- - Se a escolha tem ambiguidade que afetaria o planejamento downstream → fazer 1-2 perguntas de acompanhamento direcionadas usando AskUserQuestion
415
- - Se a escolha é clara e autocontida → mover para próxima área
416
- - NÃO fazer as 4 perguntas padrão — a tabela já forneceu o contexto
417
-
418
- 5. **Após todas as áreas processadas:**
419
- - header: "Concluído"
420
- - question: "Isso cobre [listar áreas]. Pronto para criar contexto?"
421
- - options: "Criar contexto" / "Revisitar uma área"
422
-
423
- **Tratamento de expansão de escopo (modo advisor):**
424
- Se o usuário mencionar algo fora do domínio da fase:
425
- ```
426
- "[Funcionalidade] parece uma nova capacidade — pertence à sua própria fase.
427
- Vou anotá-la como uma ideia adiada.
428
-
429
- De volta a [área atual]: [retornar à pergunta atual]"
430
- ```
431
-
432
- Rastrear ideias adiadas internamente.
433
-
434
- ---
435
-
436
- **Se ADVISOR_MODE for false:**
437
-
438
- Para cada área selecionada, conduzir um loop de discussão focado.
439
-
440
- **Modos opcionais (lidos de config + args):**
441
-
442
- - **`workflow.research_before_questions: true`** ou padrão off — antes de cada área, fazer 2-3 bullet de melhores práticas via web, apresentar com a pergunta. Ex: "OAuth 2.0 + PKCE é padrão atual pra SPAs; cookies httpOnly preferidos vs localStorage; passkey/WebAuthn em alta 2025-2026."
443
- - **`--text` ou `workflow.text_mode: true`** — substitui TODOS AskUserQuestion por listas numeradas em texto simples (necessário em sessões remotas Claude Code `/rc`).
444
- - **`--batch[=N]`** (default 4 quando ausente, range 2-5) — 1 turno agrupado com N perguntas numeradas em vez de N turnos de pergunta única. Após responder, refletir capturas e fazer follow-up mínimo.
445
- - **`--analyze`** — antes de cada pergunta (ou batch), fornecer mini-tabela de trade-offs (2-3 opções, prós/contras baseados na codebase + padrões), recomendação destacada, pitfalls.
446
-
447
- **Filosofia:** adaptativo, usuário escolhe o ritmo. Default: 4 turnos de pergunta única, depois verifica continuar. `--batch`: 1 turno agrupado, depois verifica.
448
-
449
- Cada resposta (ou conjunto de respostas, no modo batch) deve revelar a próxima pergunta ou próximo batch.
450
-
451
- **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:
452
- ```
453
- [auto] [Área] — P: "[texto da pergunta]" → Selecionado: "[opção escolhida]" (padrão recomendado)
454
- ```
455
- Após todas as áreas serem auto-resolvidas, pular o prompt "Explorar mais áreas cinzentas" e prosseguir diretamente para write_context.
456
-
457
- **Modo interativo (sem `--auto`):**
458
-
459
- **Para cada área:**
460
-
461
- 1. **Anunciar a área:**
462
- ```
463
- Vamos falar sobre [Área].
464
- ```
465
-
466
- 2. **Fazer perguntas usando o ritmo selecionado:**
467
-
468
- **Padrão (sem `--batch`): Fazer 4 perguntas usando AskUserQuestion**
469
- - header: "[Área]" (máx 12 chars — abreviar se necessário)
470
- - question: Decisão específica para esta área
471
- - options: 2-3 escolhas concretas (AskUserQuestion adiciona "Outro" automaticamente), com a escolha recomendada destacada e breve explicação do porquê
472
- - **Anotar opções com contexto de código** quando relevante:
473
- ```
474
- "Como os posts devem ser exibidos?"
475
- - Cards (reutiliza o componente Card existente — consistente com Mensagens)
476
- - Lista (mais simples, seria um novo padrão)
477
- - Timeline (precisa de novo componente Timeline — nenhum existe ainda)
478
- ```
479
- - Incluir "Você decide" como opção quando razoável — captura discrição do Claude
480
- - **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.
481
-
482
- **Modo batch (`--batch`): Fazer 2-5 perguntas numeradas em um turno de texto simples**
483
- - Agrupar perguntas intimamente relacionadas para a área atual em uma única mensagem
484
- - Manter cada pergunta concreta e respondível em uma resposta
485
- - Quando opções são úteis, incluir escolhas inline curtas por pergunta em vez de um AskUserQuestion separado para cada item
486
- - 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
487
- - Preservar adaptabilidade entre batches: usar o conjunto completo de respostas para decidir o próximo batch ou se a área está suficientemente clara
488
-
489
- 3. **Após o conjunto atual de perguntas, verificar:**
490
- - header: "[Área]" (máx 12 chars)
491
- - question: "Mais perguntas sobre [área], ou mover para próxima? (Restantes: [listar outras áreas não visitadas])"
492
- - options: "Mais perguntas" / "Próxima área"
493
-
494
- 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)"
495
-
496
- Se "Mais perguntas" → fazer mais 4 perguntas únicas, ou mais um batch de 2-5 perguntas quando `--batch` estiver ativo, então verificar novamente
497
- Se "Próxima área" → prosseguir para próxima área selecionada
498
- 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?"
499
-
500
- 4. **Após todas as áreas inicialmente selecionadas concluírem:**
501
- - Resumir o que foi capturado da discussão até agora
502
- - AskUserQuestion:
503
- - header: "Concluído"
504
- - question: "Discutimos [listar áreas]. Quais áreas cinzentas permanecem pouco claras?"
505
- - options: "Explorar mais áreas cinzentas" / "Estou pronto para o contexto"
506
- - Se "Explorar mais áreas cinzentas":
507
- - Identificar 2-4 áreas cinzentas adicionais com base no que foi aprendido
508
- - Retornar à lógica de present_gray_areas com essas novas áreas
509
- - Loop: discutir novas áreas, então solicitar novamente
510
- - Se "Estou pronto para o contexto": Prosseguir para write_context
511
-
512
- **Acumulação de refs canônicas:** quando usuário referencia doc/spec/ADR (ex: "leia adr-014"), imediatamente: leia o doc, adicione ao acumulador com caminho relativo completo, use pra informar perguntas seguintes. Esses são frequentemente MAIS importantes que refs do ROADMAP — usuário quer que agentes downstream sigam. Nunca perca.
513
-
514
- **Design de perguntas:** opções concretas (não "Opção A"), cada resposta informa a próxima. Se usuário escolher "Outro" pra texto livre, faça acompanhamento em prompt simples (NÃO outro AskUserQuestion); reflita de volta e confirme.
515
-
516
- **Expansão de escopo:** ver `<scope_guardrail>` acima — anote como Ideia Adiada, retorne ao tópico.
517
-
518
- **Log interno por pergunta:** área, opções apresentadas, seleção do usuário, notas de acompanhamento. Usado pra gerar DISCUSSION-LOG.md no `write_context`.
519
- </step>
520
-
521
- <step name="write_context">
522
- Criar CONTEXT.md capturando as decisões tomadas.
523
-
524
- **Também gerar DISCUSSION-LOG.md** — uma trilha de auditoria completa do Q&A do discuss-phase.
525
- Este arquivo é apenas para referência humana (auditorias de software, revisões de conformidade). NÃO é
526
- consumido por agentes downstream (pesquisador, planejador, executor).
527
-
528
- **Encontrar ou criar diretório de fase:**
529
-
530
- Usar valores do init: `phase_dir`, `phase_slug`, `padded_phase`.
531
-
532
- Se `phase_dir` for null (fase existe no roadmap mas sem diretório):
533
- ```bash
534
- mkdir -p ".planning/phases/${padded_phase}-${phase_slug}"
535
- ```
536
-
537
- **Localização do arquivo:** `${phase_dir}/${padded_phase}-CONTEXT.md`
538
-
539
- **Estruturar o conteúdo pelo que foi discutido:**
540
-
541
- ```markdown
542
- # Fase [X]: [Nome] - Contexto
543
-
544
- **Coletado:** [data]
545
- **Status:** Pronto para planejamento
546
-
547
- <domain>
548
- ## Limite da Fase
549
-
550
- [Declaração clara do que esta fase entrega — a âncora de escopo]
551
-
552
- </domain>
553
-
554
- <decisions>
555
- ## Decisões de Implementação
556
-
557
- ### [Categoria 1 que foi discutida]
558
- - **D-01:** [Decisão ou preferência capturada]
559
- - **D-02:** [Outra decisão se aplicável]
560
-
561
- ### [Categoria 2 que foi discutida]
562
- - **D-03:** [Decisão ou preferência capturada]
563
-
564
- ### Discrição do Claude
565
- [Áreas onde o usuário disse "você decide" — notar que Claude tem flexibilidade aqui]
566
-
567
- ### Tarefas Incorporadas
568
- [Se alguma tarefa foi incorporada ao escopo do passo cross_reference_todos, listá-las aqui.
569
- Cada entrada deve incluir o título da tarefa, problema original e como se encaixa no escopo desta fase.
570
- Se nenhuma tarefa foi incorporada: omitir esta subseção inteiramente.]
571
-
572
- </decisions>
573
-
574
- <canonical_refs>
575
- ## Referências Canônicas
576
-
577
- **Agentes downstream DEVEM ler estas antes de planejar ou implementar.**
578
-
579
- [Seção OBRIGATÓRIA. Escrever aqui a lista COMPLETA de refs canônicas acumuladas.
580
- Fontes: refs do ROADMAP.md + refs do REQUIREMENTS.md + docs referenciados pelo usuário durante
581
- a discussão + quaisquer docs descobertos durante a varredura da codebase. Agrupar por área de tópico.
582
- Cada entrada precisa de um caminho relativo completo — não apenas um nome.]
583
-
584
- ### [Área de tópico 1]
585
- - `caminho/para/adr-ou-spec.md` — [O que decide/define que é relevante]
586
- - `caminho/para/doc.md` §N — [Referência de seção específica]
587
-
588
- ### [Área de tópico 2]
589
- - `caminho/para/feature-doc.md` — [O que este doc define]
590
-
591
- [Se sem specs externas: "Sem specs externas — requisitos totalmente capturados nas decisões acima"]
592
-
593
- </canonical_refs>
594
-
595
- <code_context>
596
- ## Insights de Código Existente
597
-
598
- ### Ativos Reutilizáveis
599
- - [Componente/hook/utilitário]: [Como poderia ser usado nesta fase]
600
-
601
- ### Padrões Estabelecidos
602
- - [Padrão]: [Como restringe/habilita esta fase]
603
-
604
- ### Pontos de Integração
605
- - [Onde novo código se conecta ao sistema existente]
606
-
607
- </code_context>
608
-
609
- <specifics>
610
- ## Ideias Específicas
611
-
612
- [Quaisquer referências particulares, exemplos, ou momentos "quero como X" da discussão]
613
-
614
- [Se nenhum: "Sem requisitos específicos — aberto a abordagens padrão"]
615
-
616
- </specifics>
617
-
618
- <deferred>
619
- ## Ideias Adiadas
620
-
621
- [Ideias que surgiram mas pertencem a outras fases. Não as perder.]
622
-
623
- ### Tarefas Revisadas (não incorporadas)
624
- [Se alguma tarefa foi revisada em cross_reference_todos mas não incorporada ao escopo,
625
- listá-las aqui para que fases futuras saibam que foram consideradas.
626
- Cada entrada: título da tarefa + motivo pelo qual foi adiada (fora do escopo, pertence à Fase Y, etc.)
627
- Se sem tarefas revisadas-mas-adiadas: omitir esta subseção inteiramente.]
628
-
629
- [Se nenhum: "Nenhum — discussão ficou dentro do escopo da fase"]
630
-
631
- </deferred>
632
-
633
- ---
634
-
635
- *Fase: XX-nome*
636
- *Contexto coletado: [data]*
637
- ```
638
-
639
- Escrever arquivo.
640
- </step>
641
-
642
- <step name="confirm_creation">
643
- Apresentar resumo e próximos passos:
644
-
645
- ```
646
- Criado: .planning/phases/${PADDED_PHASE}-${SLUG}/${PADDED_PHASE}-CONTEXT.md
647
-
648
- ## Decisões Capturadas
649
-
650
- ### [Categoria]
651
- - [Decisão-chave]
652
-
653
- ### [Categoria]
654
- - [Decisão-chave]
655
-
656
- [Se ideias adiadas existirem:]
657
- ## Anotado para Depois
658
- - [Ideia adiada] — fase futura
659
-
660
- ---
661
-
662
- ## ▶ Próximo Passo
663
-
664
- **Fase ${PHASE}: [Nome]** — [Objetivo do ROADMAP.md]
665
-
666
- `/planejar-fase ${PHASE} ${WS}`
667
-
668
- <sub>`/clear` primeiro → janela de contexto fresca</sub>
669
-
670
- ---
671
-
672
- **Também disponível:**
673
- - `/planejar-fase ${PHASE} --skip-research ${WS}` — planejar sem pesquisa
674
- - `/fase-ui ${PHASE} ${WS}` — gerar contrato de design de UI antes do planejamento (se a fase tem trabalho de frontend)
675
- - Revisar/editar CONTEXT.md antes de continuar
676
-
677
- ---
678
- ```
679
- </step>
680
-
681
- <step name="git_commit">
682
- **Escrever DISCUSSION-LOG.md antes de commitar:**
683
-
684
- **Localização do arquivo:** `${phase_dir}/${padded_phase}-DISCUSSION-LOG.md`
685
-
686
- ```markdown
687
- # Fase [X]: [Nome] - Log de Discussão
688
-
689
- > **Somente trilha de auditoria.** Não usar como entrada para agentes de planejamento, pesquisa ou execução.
690
- > Decisões são capturadas no CONTEXT.md — este log preserva as alternativas consideradas.
691
-
692
- **Data:** [data ISO]
693
- **Fase:** [número-fase]-[nome-fase]
694
- **Áreas discutidas:** [lista separada por vírgula]
695
-
696
- ---
697
-
698
- [Para cada área cinzenta discutida:]
699
-
700
- ## [Nome da Área]
701
-
702
- | Opção | Descrição | Selecionada |
703
- |-------|-----------|-------------|
704
- | [Opção 1] | [Descrição do AskUserQuestion] | |
705
- | [Opção 2] | [Descrição] | ✓ |
706
- | [Opção 3] | [Descrição] | |
707
-
708
- **Escolha do usuário:** [Opção selecionada ou resposta em texto livre]
709
- **Notas:** [Quaisquer esclarecimentos, contexto de acompanhamento, ou raciocínio fornecido pelo usuário]
710
-
711
- ---
712
-
713
- [Repetir para cada área]
714
-
715
- ## Discrição do Claude
716
-
717
- [Listar áreas onde o usuário disse "você decide" ou delegou ao Claude]
718
-
719
- ## Ideias Adiadas
720
-
721
- [Ideias mencionadas durante a discussão que foram anotadas para fases futuras]
722
- ```
723
-
724
- Escrever arquivo.
725
-
726
- Commitar contexto da fase e log de discussão:
727
-
728
- ```bash
729
- 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"
730
- ```
731
-
732
- Confirmar: "Commitado: docs(${padded_phase}): capturar contexto da fase"
733
- </step>
734
-
735
- <step name="update_state">
736
- Atualizar STATE.md com informações da sessão:
737
-
738
- ```bash
739
- node "./.claude/framework/bin/tools.cjs" state record-session \
740
- --stopped-at "Phase ${PHASE} context gathered" \
741
- --resume-file "${phase_dir}/${padded_phase}-CONTEXT.md"
742
- ```
743
-
744
- Commitar STATE.md:
745
-
746
- ```bash
747
- node "./.claude/framework/bin/tools.cjs" commit "docs(state): record phase ${PHASE} context session" --files .planning/STATE.md
748
- ```
749
- </step>
750
-
751
- <step name="auto_advance">
752
- **Detecção:** flag `--auto` em $ARGUMENTS, OR `workflow._auto_chain_active=true`, OR `workflow.auto_advance=true`.
753
-
754
- **Sync de cadeia:** se usuário invocou manualmente (sem `--auto`), zere `workflow._auto_chain_active` (mas NÃO toque `workflow.auto_advance` — preferência do usuário). Se `--auto` presente e cadeia não estava ativa, set `_auto_chain_active=true` (handle uso direto de `--auto` sem new-project).
755
-
756
- **Quando ativo:** dispare `Skill(skill="framework:planejar-fase", args="${PHASE} --auto ${WS}")` (use Skill, não Task aninhado — evita freeze de runtime, issue #686).
757
-
758
- **Roteamento de retorno do plan-phase:**
759
- - `FASE CONCLUÍDA` → cadeia completa. Próximo: `/discutir-fase ${NEXT_PHASE} --auto ${WS}` (após `/clear`)
760
- - `PLANEJAMENTO CONCLUÍDO` → execução parou. Continuar: `/executar-fase ${PHASE} ${WS}`
761
- - `PLANEJAMENTO INCONCLUSIVO / CHECKPOINT` → parou. Continuar: `/planejar-fase ${PHASE} ${WS}`
762
- - `LACUNAS ENCONTRADAS` → parou. Continuar: `/planejar-fase ${PHASE} --gaps ${WS}`
763
-
764
- **Quando inativo:** rotear pra `confirm_creation` (comportamento manual existente).
765
- </step>
766
-
767
- </process>
768
-
769
- <success_criteria>
770
- - Fase validada contra o roadmap
771
- - Contexto anterior carregado (PROJECT.md, REQUIREMENTS.md, STATE.md, arquivos CONTEXT.md anteriores)
772
- - Questões já decididas não re-perguntadas (carregadas de fases anteriores)
773
- - Codebase varrida por ativos reutilizáveis, padrões e pontos de integração
774
- - Áreas cinzentas identificadas por análise inteligente com anotações de código e decisão anterior
775
- - Usuário selecionou quais áreas discutir
776
- - Cada área selecionada explorada até satisfação do usuário (com opções informadas por código e por decisões anteriores)
777
- - Expansão de escopo redirecionada para ideias adiadas
778
- - CONTEXT.md captura decisões reais, não visão vaga
779
- - 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)
780
- - CONTEXT.md inclui seção code_context com ativos e padrões reutilizáveis
781
- - Ideias adiadas preservadas para fases futuras
782
- - STATE.md atualizado com informações da sessão
783
- - Usuário sabe os próximos passos
784
- </success_criteria>
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 = visionário. Claude = construtor.**
25
+
26
+ Usuário SABE: como imagina, visual/sensação, essencial vs nice-to-have, referências específicas.
27
+ Usuário NÃO sabe (não pergunte): padrões da codebase (pesquisador lê), riscos técnicos (pesquisador), abordagem de implementação (planejador), métricas (inferidas).
28
+
29
+ Pergunte sobre visão e escolhas; capture decisões pra agentes downstream.
30
+ </philosophy>
31
+
32
+ <scope_guardrail>
33
+ **CRÍTICO: sem expansão de escopo.** Limite da fase vem do ROADMAP e é FIXO. Discussão clarifica COMO, nunca SE adicionar capacidades.
34
+
35
+ | Permitido (clarifica) | Não permitido (expande) |
36
+ |---|---|
37
+ | "Como exibir posts?" (layout, densidade) | "Adicionar comentários?" (nova capacidade) |
38
+ | "O que em estado vazio?" | "E busca/filtragem?" |
39
+ | "Pull-to-refresh ou manual?" | "Incluir favoritos?" |
40
+
41
+ **Heurística:** clarifica o que já está na fase, ou adiciona capacidade que merece fase própria?
42
+
43
+ **Quando usuário sugere expansão:** "[X] seria nova capacidade — fase própria. Anoto pro backlog. De volta a [tópico]." Capture em "Ideias Adiadas". Não perca, não aja.
44
+ </scope_guardrail>
45
+
46
+ <supabase_detection>
47
+ **Detecção de fase Supabase:** antes de identificar áreas cinzentas genéricas, verifique se a fase mexe em Supabase (DB/Auth/Realtime/Edge Functions/Storage/RLS/migrations).
48
+
49
+ Sinais de fase Supabase no objetivo do ROADMAP.md ou nos REQs mapeados:
50
+ - Menções a "Supabase", "Postgres", "RLS", "policy", "migration", "supabase/migrations/", "supabase/schemas/", "supabase/functions/"
51
+ - Menções a "Auth Next.js", "@supabase/ssr", "magic link", "OAuth", "MFA"
52
+ - Menções a "broadcast", "realtime", "presence", "postgres_changes"
53
+ - Menções a "Edge Function", "Deno", "pgvector", "RAG", "pg_cron", "pgmq"
54
+ - Menções a "bucket", "signed URL", "storage.objects"
55
+
56
+ **Se for fase Supabase:** considere delegar a discussão para o agent `supabase-architect` em vez de gerar áreas cinzentas genéricas. O architect já tem template de perguntas Supabase-específicas (tier Free/Pro, branches, RLS strategy multi-tenant, schema design, topology realtime, custos de egress/branches).
57
+
58
+ ```
59
+ Task(subagent_type=supabase-architect, prompt="Projete schema + RLS + topologia para esta fase Supabase: {phase_goal}. Retorne plano em formato Markdown estruturado para servir de base ao CONTEXT.md.")
60
+ ```
61
+
62
+ Use o output do architect como base do `<decisions>` do CONTEXT.md em vez de fazer questionamento manual. **Para fases mistas** (parte Supabase, parte genérica) — use architect só para a parte Supabase, depois faça discussão padrão para o resto.
63
+ </supabase_detection>
64
+
65
+ <gray_area_identification>
66
+ Á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.
67
+
68
+ **Como identificar áreas cinzentas:**
69
+
70
+ 1. **Ler o objetivo da fase** do ROADMAP.md
71
+ 2. **Entender o domínio** — Que tipo de coisa está sendo construída?
72
+ - Algo que usuários VÊM → apresentação visual, interações, estados importam
73
+ - Algo que usuários CHAMAM → contratos de interface, respostas, erros importam
74
+ - Algo que usuários EXECUTAM → invocação, saída, modos de comportamento importam
75
+ - Algo que usuários LÊM → estrutura, tom, profundidade, fluxo importam
76
+ - Algo sendo ORGANIZADO → critérios, agrupamento, tratamento de exceções importam
77
+ 3. **Gerar áreas cinzentas específicas da fase** — Não categorias genéricas, mas decisões concretas para ESTA fase
78
+
79
+ **Não use rótulos genéricos** (UI/UX/Comportamento). Gere áreas específicas. Exemplos: Auth → sessão, erros, multi-device, recuperação. Backups CLI → output, flags, progress, recovery. Foto biblioteca → agrupamento, duplicatas, nomenclatura, pastas. API docs → estrutura, exemplos, versionamento, interativos.
80
+
81
+ **Pergunta-chave:** quais decisões mudariam o resultado que o usuário deveria opinar?
82
+
83
+ **Claude trata sozinho (não perguntar):** detalhes técnicos, padrões de arquitetura, otimização, escopo (roadmap define).
84
+ </gray_area_identification>
85
+
86
+ <answer_validation>
87
+ **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:
88
+ 1. Tentar a pergunta novamente com os mesmos parâmetros
89
+ 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
90
+ Nunca prosseguir com uma resposta vazia.
91
+
92
+ **Modo texto (`workflow.text_mode: true` na config ou flag `--text`):**
93
+ Quando o modo texto estiver ativo, **não use AskUserQuestion de forma alguma**. Em vez disso, apresente cada
94
+ pergunta como uma lista numerada em texto simples e peça ao usuário que digite o número da sua escolha.
95
+ Isso é necessário para sessões remotas do Claude Code (modo `/rc`) onde o App Claude
96
+ não pode encaminhar seleções de menu TUI de volta ao host.
97
+
98
+ Ativar modo texto:
99
+ - Por sessão: passar flag `--text` para qualquer comando (ex: `/discutir-fase --text`)
100
+ - Por projeto: `tools config-set workflow.text_mode true`
101
+
102
+ O modo texto aplica-se a TODOS os workflows na sessão, não apenas ao discuss-phase.
103
+ </answer_validation>
104
+
105
+ <process>
106
+
107
+ **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.
108
+
109
+ <step name="initialize" priority="first">
110
+ Número da fase do argumento (obrigatório).
111
+
112
+ ```bash
113
+ INIT=$(node "./.claude/framework/bin/tools.cjs" init phase-op "${PHASE}")
114
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
115
+ AGENT_SKILLS_ADVISOR=$(node "./.claude/framework/bin/tools.cjs" agent-skills advisor 2>/dev/null)
116
+ ```
117
+
118
+ 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`.
119
+
120
+ **Se `phase_found` for false:**
121
+ ```
122
+ Fase [X] não encontrada no roadmap.
123
+
124
+ Use /progresso ${WS} para ver as fases disponíveis.
125
+ ```
126
+ Sair do workflow.
127
+
128
+ **Se `phase_found` for true:** Continuar para check_existing.
129
+
130
+ **Modo auto** — Se `--auto` estiver presente em ARGUMENTS:
131
+ - Em `check_existing`: auto-selecionar "Pular" (se contexto existir) ou continuar sem prompt (se sem contexto/planos)
132
+ - Em `present_gray_areas`: auto-selecionar TODAS as áreas cinzentas sem perguntar ao usuário
133
+ - 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
134
+ - Logar cada escolha auto-selecionada inline para que o usuário possa revisar decisões no arquivo de contexto
135
+ - Após a discussão concluir, avançar automaticamente para plan-phase (comportamento existente)
136
+ </step>
137
+
138
+ <step name="check_existing">
139
+ Verificar se CONTEXT.md já existe usando `has_context` do init.
140
+
141
+ ```bash
142
+ ls ${phase_dir}/*-CONTEXT.md 2>/dev/null || true
143
+ ```
144
+
145
+ **Se existir:**
146
+
147
+ **Se `--auto`:** Auto-selecionar "Atualizar" — carregar contexto existente e continuar para analyze_phase. Logar: `[auto] Contexto existe — atualizando com decisões auto-selecionadas.`
148
+
149
+ **Caso contrário:** Usar AskUserQuestion:
150
+ - header: "Contexto"
151
+ - question: "Fase [X] já tem contexto. O que você quer fazer?"
152
+ - options:
153
+ - "Atualizar" — Revisar e revisar contexto existente
154
+ - "Visualizar" — Me mostra o que há
155
+ - "Pular" — Usar contexto existente como está
156
+
157
+ Se "Atualizar": Carregar existente, continuar para analyze_phase
158
+ Se "Visualizar": Exibir CONTEXT.md, então oferecer atualizar/pular
159
+ Se "Pular": Sair do workflow
160
+
161
+ **Se não existir:**
162
+
163
+ Verificar `has_plans` e `plan_count` do init. **Se `has_plans` for true:**
164
+
165
+ **Se `--auto`:** Auto-selecionar "Continuar e replanejar depois". Logar: `[auto] Planos existem — continuando com captura de contexto, replanejará depois.`
166
+
167
+ **Caso contrário:** Usar AskUserQuestion:
168
+ - header: "Planos existem"
169
+ - 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."
170
+ - options:
171
+ - "Continuar e replanejar depois" — Capturar contexto, então executar /planejar-fase {X} ${WS} para replanejar
172
+ - "Visualizar planos existentes" — Mostrar planos antes de decidir
173
+ - "Cancelar" — Pular discuss-phase
174
+
175
+ Se "Continuar e replanejar depois": Continuar para analyze_phase.
176
+ Se "Visualizar planos existentes": Exibir arquivos de plano, então oferecer "Continuar" / "Cancelar".
177
+ Se "Cancelar": Sair do workflow.
178
+
179
+ **Se `has_plans` for false:** Continuar para load_prior_context.
180
+ </step>
181
+
182
+ <step name="load_prior_context">
183
+ Ler PROJECT.md (visão/princípios/inegociáveis), REQUIREMENTS.md (critérios/must-haves), STATE.md (progresso/flags). Encontrar CONTEXT.md anteriores (`find .planning/phases -name "*-CONTEXT.md" | sort`); pra cada um com número < fase atual, extrair `<decisions>` (preferências bloqueadas) e `<specifics>` (refs particulares).
184
+
185
+ Construir contexto interno `<prior_decisions>` com seções "Nível de Projeto" + "Das Fases Anteriores".
186
+
187
+ **Uso downstream:** `analyze_phase` pula áreas já decididas; `present_gray_areas` anota com refs ("Você escolheu X na Fase 5"); `discuss_areas` pré-preenche ou sinaliza conflitos. Sem contexto anterior → continuar (esperado pra fases iniciais).
188
+ </step>
189
+
190
+ <step name="cross_reference_todos">
191
+ Verificar se alguma tarefa pendente é relevante ao escopo desta fase. Exibe itens do backlog que de outra forma poderiam ser perdidos.
192
+
193
+ **Carregar e corresponder tarefas:**
194
+ ```bash
195
+ TODO_MATCHES=$(node "./.claude/framework/bin/tools.cjs" todo match-phase "${PHASE_NUMBER}")
196
+ ```
197
+
198
+ Analisar JSON para: `todo_count`, `matches[]` (cada um com `file`, `title`, `area`, `score`, `reasons`).
199
+
200
+ **Se `todo_count` for 0 ou `matches` estiver vazio:** Pular silenciosamente — sem atraso no workflow.
201
+
202
+ **Se correspondências encontradas:**
203
+
204
+ Apresentar tarefas correspondentes ao usuário. Mostrar cada correspondência com seu título, área e por que correspondeu:
205
+
206
+ ```
207
+ 📋 Encontradas {N} tarefa(s) pendente(s) que podem ser relevantes para a Fase {X}:
208
+
209
+ {Para cada correspondência:}
210
+ - **{título}** (área: {área}, relevância: {score}) — correspondeu em {reasons}
211
+ ```
212
+
213
+ Usar AskUserQuestion (multiSelect) perguntando quais tarefas incorporar ao escopo desta fase:
214
+
215
+ ```
216
+ Quais dessas tarefas devem ser incorporadas ao escopo da Fase {X}?
217
+ (Selecione as que se aplicam, ou nenhuma para pular)
218
+ ```
219
+
220
+ **Para tarefas selecionadas (incorporadas):**
221
+ - Armazenar internamente como `<folded_todos>` para inclusão na seção `<decisions>` do CONTEXT.md
222
+ - Estes se tornam itens de escopo adicionais que agentes downstream (pesquisador, planejador) verão
223
+
224
+ **Para tarefas não selecionadas (revisadas mas não incorporadas):**
225
+ - Armazenar internamente como `<reviewed_todos>` para inclusão na seção `<deferred>` do CONTEXT.md
226
+ - Isso evita que fases futuras re-exibam as mesmas tarefas como "perdidas"
227
+
228
+ **Modo auto (`--auto`):** Incorporar todas as tarefas com score >= 0,4 automaticamente. Logar a seleção.
229
+ </step>
230
+
231
+ <step name="scout_codebase">
232
+ 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.
233
+
234
+ **Passo 1: Verificar mapas de codebase existentes**
235
+ ```bash
236
+ ls .planning/codebase/*.md 2>/dev/null || true
237
+ ```
238
+
239
+ **Mapas de codebase existem (`.planning/codebase/*.md`):** ler CONVENTIONS/STRUCTURE/STACK conforme tipo da fase. Extrair: ativos reutilizáveis, padrões estabelecidos, pontos de integração.
240
+
241
+ **Sem mapas:** grep direcionado por termos-chave do objetivo (`grep -rl "termo1\|termo2" src/ app/ --include='*.{ts,tsx,js,jsx}' | head -10`) + `ls src/{components,hooks,lib,utils}/`. Ler 3-5 arquivos mais relevantes.
242
+
243
+ Construir `<codebase_context>` interno: ativos reutilizáveis, padrões, pontos de integração, opções criativas que a arquitetura habilita/restringe. Não escreve em arquivo — só sessão atual.
244
+ </step>
245
+
246
+ <step name="analyze_phase">
247
+ Analisar a fase para identificar áreas cinzentas que valem a discussão. **Usar tanto `prior_decisions` quanto `codebase_context` para embasar a análise.**
248
+
249
+ **Ler a descrição da fase do ROADMAP.md e determinar:**
250
+
251
+ 1. **Limite de domínio** — Qual capacidade esta fase está entregando? Declará-la claramente.
252
+
253
+ 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.
254
+
255
+ **Fonte 1 (agora):** Copiar `Canonical refs:` do ROADMAP.md para esta fase. Expandir cada uma para um caminho relativo completo.
256
+ **Fonte 2 (agora):** Verificar REQUIREMENTS.md e PROJECT.md por quaisquer specs/ADRs referenciados para esta fase.
257
+ **Fonte 3 (scout_codebase):** Se código existente referencia docs (ex: comentários citando ADRs), adicionar esses.
258
+ **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.
259
+
260
+ 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.
261
+
262
+ 2. **Verificar decisões anteriores** — Antes de gerar áreas cinzentas, verificar se alguma já foi decidida:
263
+ - Escanear `<prior_decisions>` por escolhas relevantes (ex: "Somente Ctrl+C, sem atalhos de tecla única")
264
+ - Estas estão **pré-respondidas** — não re-perguntar a menos que esta fase tenha necessidades conflitantes
265
+ - Notar decisões anteriores aplicáveis para uso na apresentação
266
+
267
+ 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").
268
+
269
+ 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.
270
+
271
+ **Detecção de Modo Advisor:**
272
+
273
+ `ADVISOR_MODE = exists("./.claude/framework/USER-PROFILE.md")`. Se false, pular todos os passos advisor — workflow conversacional inalterado.
274
+
275
+ Se true, resolver `calibration_tier` por prioridade: (1) `config.json > preferences.vendor_philosophy` (project), (2) USER-PROFILE.md Vendor Choices/Philosophy (global), (3) default `standard`. Mapeamento: `conservative`/`thorough-evaluator` → `full_maturity`; `opinionated` → `minimal_decisive`; `pragmatic-fast` ou outro/vazio → `standard`.
276
+
277
+ `ADVISOR_MODEL=$(node "./.claude/framework/bin/tools.cjs" resolve-model advisor-researcher --raw)`
278
+
279
+ **Produzir sua análise internamente, então apresentar ao usuário.**
280
+
281
+ Exemplo de análise para fase "Feed de Posts" (com código e contexto anterior):
282
+ ```
283
+ Domínio: Exibindo posts de usuários seguidos
284
+ Existente: Componente Card (src/components/ui/Card.tsx), hook useInfiniteQuery, Tailwind CSS
285
+ Decisões anteriores: "UI minimalista preferida" (Fase 2), "Sem paginação — sempre scroll infinito" (Fase 4)
286
+ Áreas cinzentas:
287
+ - UI: Estilo de layout (cards vs timeline vs grid) — Componente Card existe com variantes shadow/rounded
288
+ - UI: Densidade de informação (posts completos vs prévias) — sem padrões de densidade existentes
289
+ - Comportamento: Padrão de carregamento — JÁ DECIDIDO: scroll infinito (Fase 4)
290
+ - Estado Vazio: O que mostra quando não há posts — Componente EmptyState existe em ui/
291
+ - Conteúdo: Quais metadados exibir (hora, autor, contagem de reações)
292
+ ```
293
+ </step>
294
+
295
+ <step name="present_gray_areas">
296
+ Apresentar o limite de domínio, decisões anteriores e áreas cinzentas ao usuário.
297
+
298
+ **Primeiro, declarar o limite e quaisquer decisões anteriores que se aplicam:**
299
+ ```
300
+ Fase [X]: [Nome]
301
+ Domínio: [O que esta fase entrega — da sua análise]
302
+
303
+ Vamos clarificar COMO implementar isso.
304
+ (Novas capacidades pertencem a outras fases.)
305
+
306
+ [Se decisões anteriores se aplicam:]
307
+ **Carregando de fases anteriores:**
308
+ - [Decisão da Fase N que se aplica aqui]
309
+ - [Decisão da Fase M que se aplica aqui]
310
+ ```
311
+
312
+ **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.
313
+
314
+ **Caso contrário, usar AskUserQuestion (multiSelect: true):**
315
+ - header: "Discutir"
316
+ - question: "Quais áreas você quer discutir para [nome da fase]?"
317
+ - options: Gerar 3-4 áreas cinzentas específicas da fase, cada uma com:
318
+ - "[Área específica]" (rótulo) — concreto, não genérico
319
+ - [1-2 perguntas que isso cobre + anotação de contexto de código] (descrição)
320
+ - **Destacar a escolha recomendada com breve explicação do porquê**
321
+
322
+ **Anotações de decisão anterior:** Quando uma área cinzenta já foi decidida em uma fase anterior, anotá-la:
323
+ ```
324
+ ☐ Atalhos de saída — Como os usuários devem sair?
325
+ (Você decidiu "Somente Ctrl+C, sem atalhos de tecla única" na Fase 5 — revisitar ou manter?)
326
+ ```
327
+
328
+ **Anotações de contexto de código:** Quando o scout encontrou código existente relevante, anotar a descrição da área cinzenta:
329
+ ```
330
+ ☐ Estilo de layout — Cards vs lista vs timeline?
331
+ (Você já tem um componente Card com variantes shadow/rounded. Reutilizá-lo mantém o app consistente.)
332
+ ```
333
+
334
+ **Combinando ambos:** Quando tanto decisões anteriores quanto contexto de código se aplicam:
335
+ ```
336
+ ☐ Comportamento de carregamento — Scroll infinito ou paginação?
337
+ (Você escolheu scroll infinito na Fase 4. Hook useInfiniteQuery já configurado.)
338
+ ```
339
+
340
+ **NÃO incluir opção "pular" ou "você decide".** O usuário executou este comando para discutir — dar escolhas reais.
341
+
342
+ **Exemplos por domínio:**
343
+ - Feed de Posts: layout (cards/lista/timeline), carregamento (infinito/paginação), ordenação, metadados
344
+ - Backup CLI: output (JSON/tabela/texto), flags (curtas/longas), progress (silencioso/bar/verbose), recovery (fail-fast/retry)
345
+ - Foto biblioteca: agrupamento (data/local/face/evento), duplicatas (melhor/todos/prompt), nomenclatura, pastas
346
+
347
+ Continuar para discuss_areas com áreas selecionadas (ou advisor_research se ADVISOR_MODE for true).
348
+ </step>
349
+
350
+ <step name="advisor_research">
351
+ **Pesquisa Advisor** (somente quando ADVISOR_MODE for true)
352
+
353
+ Após o usuário selecionar áreas cinzentas em present_gray_areas, criar agentes de pesquisa paralelos.
354
+
355
+ 1. Exibir status breve: "Pesquisando {N} áreas..."
356
+
357
+ 2. Para CADA área cinzenta selecionada pelo usuário, criar um Task() em paralelo:
358
+
359
+ Task(
360
+ prompt="First, read @./.claude/agents/advisor-researcher.md for your role and instructions.
361
+
362
+ <gray_area>{area_name}: {area_description from gray area identification}</gray_area>
363
+ <phase_context>{phase_goal and description from ROADMAP.md}</phase_context>
364
+ <project_context>{project name and brief description from PROJECT.md}</project_context>
365
+ <calibration_tier>{resolved calibration tier: full_maturity | standard | minimal_decisive}</calibration_tier>
366
+
367
+ Research this gray area and return a structured comparison table with rationale.
368
+ ${AGENT_SKILLS_ADVISOR}",
369
+ subagent_type="general-purpose",
370
+ model="{ADVISOR_MODEL}",
371
+ description="Research: {area_name}"
372
+ )
373
+
374
+ Todas as chamadas Task() criam simultaneamente — NÃO aguardar uma antes de iniciar a próxima.
375
+
376
+ 3. Após TODOS os agentes retornarem, SINTETIZAR resultados antes de apresentar:
377
+ Para o retorno de cada agente:
378
+ a. Analisar a tabela de comparação markdown e parágrafo de raciocínio
379
+ b. Verificar se todas as 5 colunas estão presentes (Option | Pros | Cons | Complexity | Recommendation) — preencher colunas ausentes em vez de mostrar tabela quebrada
380
+ c. Verificar contagem de opções contra o tier de calibração:
381
+ - full_maturity: 3-5 opções aceitável
382
+ - standard: 2-4 opções aceitável
383
+ - minimal_decisive: 1-2 opções aceitável
384
+ Se agente retornou demais, remover as menos viáveis. Se poucas demais, aceitar como está.
385
+ 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
386
+ 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}"
387
+
388
+ 4. Armazenar tabelas sintetizadas para uso em discuss_areas.
389
+
390
+ **Se ADVISOR_MODE for false:** Pular este passo inteiramente — prosseguir diretamente de present_gray_areas para discuss_areas.
391
+ </step>
392
+
393
+ <step name="discuss_areas">
394
+ Discutir cada área selecionada com o usuário. O fluxo depende do modo advisor.
395
+
396
+ **Se ADVISOR_MODE for true:**
397
+
398
+ Fluxo de discussão com tabela primeiro — apresentar tabelas de comparação baseadas em pesquisa, então capturar escolhas do usuário.
399
+
400
+ **Para cada área selecionada:**
401
+
402
+ 1. **Apresentar a tabela de comparação sintetizada + parágrafo de raciocínio** (do passo advisor_research)
403
+
404
+ 2. **Usar AskUserQuestion:**
405
+ - header: "{area_name}"
406
+ - question: "Qual abordagem para {area_name}?"
407
+ - options: Extrair da coluna Option da tabela (AskUserQuestion adiciona "Outro" automaticamente)
408
+
409
+ 3. **Registrar a seleção do usuário:**
410
+ - Se o usuário escolher das opções da tabela → registrar como decisão bloqueada para essa área
411
+ - Se o usuário escolher "Outro" → receber seu input, refletir de volta para confirmação, registrar
412
+
413
+ 4. **Após registrar escolha, Claude decide se perguntas de acompanhamento são necessárias:**
414
+ - Se a escolha tem ambiguidade que afetaria o planejamento downstream → fazer 1-2 perguntas de acompanhamento direcionadas usando AskUserQuestion
415
+ - Se a escolha é clara e autocontida → mover para próxima área
416
+ - NÃO fazer as 4 perguntas padrão — a tabela já forneceu o contexto
417
+
418
+ 5. **Após todas as áreas processadas:**
419
+ - header: "Concluído"
420
+ - question: "Isso cobre [listar áreas]. Pronto para criar contexto?"
421
+ - options: "Criar contexto" / "Revisitar uma área"
422
+
423
+ **Tratamento de expansão de escopo (modo advisor):**
424
+ Se o usuário mencionar algo fora do domínio da fase:
425
+ ```
426
+ "[Funcionalidade] parece uma nova capacidade — pertence à sua própria fase.
427
+ Vou anotá-la como uma ideia adiada.
428
+
429
+ De volta a [área atual]: [retornar à pergunta atual]"
430
+ ```
431
+
432
+ Rastrear ideias adiadas internamente.
433
+
434
+ ---
435
+
436
+ **Se ADVISOR_MODE for false:**
437
+
438
+ Para cada área selecionada, conduzir um loop de discussão focado.
439
+
440
+ **Modos opcionais (lidos de config + args):**
441
+
442
+ - **`workflow.research_before_questions: true`** ou padrão off — antes de cada área, fazer 2-3 bullet de melhores práticas via web, apresentar com a pergunta. Ex: "OAuth 2.0 + PKCE é padrão atual pra SPAs; cookies httpOnly preferidos vs localStorage; passkey/WebAuthn em alta 2025-2026."
443
+ - **`--text` ou `workflow.text_mode: true`** — substitui TODOS AskUserQuestion por listas numeradas em texto simples (necessário em sessões remotas Claude Code `/rc`).
444
+ - **`--batch[=N]`** (default 4 quando ausente, range 2-5) — 1 turno agrupado com N perguntas numeradas em vez de N turnos de pergunta única. Após responder, refletir capturas e fazer follow-up mínimo.
445
+ - **`--analyze`** — antes de cada pergunta (ou batch), fornecer mini-tabela de trade-offs (2-3 opções, prós/contras baseados na codebase + padrões), recomendação destacada, pitfalls.
446
+
447
+ **Filosofia:** adaptativo, usuário escolhe o ritmo. Default: 4 turnos de pergunta única, depois verifica continuar. `--batch`: 1 turno agrupado, depois verifica.
448
+
449
+ Cada resposta (ou conjunto de respostas, no modo batch) deve revelar a próxima pergunta ou próximo batch.
450
+
451
+ **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:
452
+ ```
453
+ [auto] [Área] — P: "[texto da pergunta]" → Selecionado: "[opção escolhida]" (padrão recomendado)
454
+ ```
455
+ Após todas as áreas serem auto-resolvidas, pular o prompt "Explorar mais áreas cinzentas" e prosseguir diretamente para write_context.
456
+
457
+ **Modo interativo (sem `--auto`):**
458
+
459
+ **Para cada área:**
460
+
461
+ 1. **Anunciar a área:**
462
+ ```
463
+ Vamos falar sobre [Área].
464
+ ```
465
+
466
+ 2. **Fazer perguntas usando o ritmo selecionado:**
467
+
468
+ **Padrão (sem `--batch`): Fazer 4 perguntas usando AskUserQuestion**
469
+ - header: "[Área]" (máx 12 chars — abreviar se necessário)
470
+ - question: Decisão específica para esta área
471
+ - options: 2-3 escolhas concretas (AskUserQuestion adiciona "Outro" automaticamente), com a escolha recomendada destacada e breve explicação do porquê
472
+ - **Anotar opções com contexto de código** quando relevante:
473
+ ```
474
+ "Como os posts devem ser exibidos?"
475
+ - Cards (reutiliza o componente Card existente — consistente com Mensagens)
476
+ - Lista (mais simples, seria um novo padrão)
477
+ - Timeline (precisa de novo componente Timeline — nenhum existe ainda)
478
+ ```
479
+ - Incluir "Você decide" como opção quando razoável — captura discrição do Claude
480
+ - **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.
481
+
482
+ **Modo batch (`--batch`): Fazer 2-5 perguntas numeradas em um turno de texto simples**
483
+ - Agrupar perguntas intimamente relacionadas para a área atual em uma única mensagem
484
+ - Manter cada pergunta concreta e respondível em uma resposta
485
+ - Quando opções são úteis, incluir escolhas inline curtas por pergunta em vez de um AskUserQuestion separado para cada item
486
+ - 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
487
+ - Preservar adaptabilidade entre batches: usar o conjunto completo de respostas para decidir o próximo batch ou se a área está suficientemente clara
488
+
489
+ 3. **Após o conjunto atual de perguntas, verificar:**
490
+ - header: "[Área]" (máx 12 chars)
491
+ - question: "Mais perguntas sobre [área], ou mover para próxima? (Restantes: [listar outras áreas não visitadas])"
492
+ - options: "Mais perguntas" / "Próxima área"
493
+
494
+ 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)"
495
+
496
+ Se "Mais perguntas" → fazer mais 4 perguntas únicas, ou mais um batch de 2-5 perguntas quando `--batch` estiver ativo, então verificar novamente
497
+ Se "Próxima área" → prosseguir para próxima área selecionada
498
+ 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?"
499
+
500
+ 4. **Após todas as áreas inicialmente selecionadas concluírem:**
501
+ - Resumir o que foi capturado da discussão até agora
502
+ - AskUserQuestion:
503
+ - header: "Concluído"
504
+ - question: "Discutimos [listar áreas]. Quais áreas cinzentas permanecem pouco claras?"
505
+ - options: "Explorar mais áreas cinzentas" / "Estou pronto para o contexto"
506
+ - Se "Explorar mais áreas cinzentas":
507
+ - Identificar 2-4 áreas cinzentas adicionais com base no que foi aprendido
508
+ - Retornar à lógica de present_gray_areas com essas novas áreas
509
+ - Loop: discutir novas áreas, então solicitar novamente
510
+ - Se "Estou pronto para o contexto": Prosseguir para write_context
511
+
512
+ **Acumulação de refs canônicas:** quando usuário referencia doc/spec/ADR (ex: "leia adr-014"), imediatamente: leia o doc, adicione ao acumulador com caminho relativo completo, use pra informar perguntas seguintes. Esses são frequentemente MAIS importantes que refs do ROADMAP — usuário quer que agentes downstream sigam. Nunca perca.
513
+
514
+ **Design de perguntas:** opções concretas (não "Opção A"), cada resposta informa a próxima. Se usuário escolher "Outro" pra texto livre, faça acompanhamento em prompt simples (NÃO outro AskUserQuestion); reflita de volta e confirme.
515
+
516
+ **Expansão de escopo:** ver `<scope_guardrail>` acima — anote como Ideia Adiada, retorne ao tópico.
517
+
518
+ **Log interno por pergunta:** área, opções apresentadas, seleção do usuário, notas de acompanhamento. Usado pra gerar DISCUSSION-LOG.md no `write_context`.
519
+ </step>
520
+
521
+ <step name="write_context">
522
+ Criar CONTEXT.md capturando as decisões tomadas.
523
+
524
+ **Também gerar DISCUSSION-LOG.md** — uma trilha de auditoria completa do Q&A do discuss-phase.
525
+ Este arquivo é apenas para referência humana (auditorias de software, revisões de conformidade). NÃO é
526
+ consumido por agentes downstream (pesquisador, planejador, executor).
527
+
528
+ **Encontrar ou criar diretório de fase:**
529
+
530
+ Usar valores do init: `phase_dir`, `phase_slug`, `padded_phase`.
531
+
532
+ Se `phase_dir` for null (fase existe no roadmap mas sem diretório):
533
+ ```bash
534
+ mkdir -p ".planning/phases/${padded_phase}-${phase_slug}"
535
+ ```
536
+
537
+ **Localização do arquivo:** `${phase_dir}/${padded_phase}-CONTEXT.md`
538
+
539
+ **Estruturar o conteúdo pelo que foi discutido:**
540
+
541
+ ```markdown
542
+ # Fase [X]: [Nome] - Contexto
543
+
544
+ **Coletado:** [data]
545
+ **Status:** Pronto para planejamento
546
+
547
+ <domain>
548
+ ## Limite da Fase
549
+
550
+ [Declaração clara do que esta fase entrega — a âncora de escopo]
551
+
552
+ </domain>
553
+
554
+ <decisions>
555
+ ## Decisões de Implementação
556
+
557
+ ### [Categoria 1 que foi discutida]
558
+ - **D-01:** [Decisão ou preferência capturada]
559
+ - **D-02:** [Outra decisão se aplicável]
560
+
561
+ ### [Categoria 2 que foi discutida]
562
+ - **D-03:** [Decisão ou preferência capturada]
563
+
564
+ ### Discrição do Claude
565
+ [Áreas onde o usuário disse "você decide" — notar que Claude tem flexibilidade aqui]
566
+
567
+ ### Tarefas Incorporadas
568
+ [Se alguma tarefa foi incorporada ao escopo do passo cross_reference_todos, listá-las aqui.
569
+ Cada entrada deve incluir o título da tarefa, problema original e como se encaixa no escopo desta fase.
570
+ Se nenhuma tarefa foi incorporada: omitir esta subseção inteiramente.]
571
+
572
+ </decisions>
573
+
574
+ <canonical_refs>
575
+ ## Referências Canônicas
576
+
577
+ **Agentes downstream DEVEM ler estas antes de planejar ou implementar.**
578
+
579
+ [Seção OBRIGATÓRIA. Escrever aqui a lista COMPLETA de refs canônicas acumuladas.
580
+ Fontes: refs do ROADMAP.md + refs do REQUIREMENTS.md + docs referenciados pelo usuário durante
581
+ a discussão + quaisquer docs descobertos durante a varredura da codebase. Agrupar por área de tópico.
582
+ Cada entrada precisa de um caminho relativo completo — não apenas um nome.]
583
+
584
+ ### [Área de tópico 1]
585
+ - `caminho/para/adr-ou-spec.md` — [O que decide/define que é relevante]
586
+ - `caminho/para/doc.md` §N — [Referência de seção específica]
587
+
588
+ ### [Área de tópico 2]
589
+ - `caminho/para/feature-doc.md` — [O que este doc define]
590
+
591
+ [Se sem specs externas: "Sem specs externas — requisitos totalmente capturados nas decisões acima"]
592
+
593
+ </canonical_refs>
594
+
595
+ <code_context>
596
+ ## Insights de Código Existente
597
+
598
+ ### Ativos Reutilizáveis
599
+ - [Componente/hook/utilitário]: [Como poderia ser usado nesta fase]
600
+
601
+ ### Padrões Estabelecidos
602
+ - [Padrão]: [Como restringe/habilita esta fase]
603
+
604
+ ### Pontos de Integração
605
+ - [Onde novo código se conecta ao sistema existente]
606
+
607
+ </code_context>
608
+
609
+ <specifics>
610
+ ## Ideias Específicas
611
+
612
+ [Quaisquer referências particulares, exemplos, ou momentos "quero como X" da discussão]
613
+
614
+ [Se nenhum: "Sem requisitos específicos — aberto a abordagens padrão"]
615
+
616
+ </specifics>
617
+
618
+ <deferred>
619
+ ## Ideias Adiadas
620
+
621
+ [Ideias que surgiram mas pertencem a outras fases. Não as perder.]
622
+
623
+ ### Tarefas Revisadas (não incorporadas)
624
+ [Se alguma tarefa foi revisada em cross_reference_todos mas não incorporada ao escopo,
625
+ listá-las aqui para que fases futuras saibam que foram consideradas.
626
+ Cada entrada: título da tarefa + motivo pelo qual foi adiada (fora do escopo, pertence à Fase Y, etc.)
627
+ Se sem tarefas revisadas-mas-adiadas: omitir esta subseção inteiramente.]
628
+
629
+ [Se nenhum: "Nenhum — discussão ficou dentro do escopo da fase"]
630
+
631
+ </deferred>
632
+
633
+ ---
634
+
635
+ *Fase: XX-nome*
636
+ *Contexto coletado: [data]*
637
+ ```
638
+
639
+ Escrever arquivo.
640
+ </step>
641
+
642
+ <step name="confirm_creation">
643
+ Apresentar resumo e próximos passos:
644
+
645
+ ```
646
+ Criado: .planning/phases/${PADDED_PHASE}-${SLUG}/${PADDED_PHASE}-CONTEXT.md
647
+
648
+ ## Decisões Capturadas
649
+
650
+ ### [Categoria]
651
+ - [Decisão-chave]
652
+
653
+ ### [Categoria]
654
+ - [Decisão-chave]
655
+
656
+ [Se ideias adiadas existirem:]
657
+ ## Anotado para Depois
658
+ - [Ideia adiada] — fase futura
659
+
660
+ ---
661
+
662
+ ## ▶ Próximo Passo
663
+
664
+ **Fase ${PHASE}: [Nome]** — [Objetivo do ROADMAP.md]
665
+
666
+ `/planejar-fase ${PHASE} ${WS}`
667
+
668
+ <sub>`/clear` primeiro → janela de contexto fresca</sub>
669
+
670
+ ---
671
+
672
+ **Também disponível:**
673
+ - `/planejar-fase ${PHASE} --skip-research ${WS}` — planejar sem pesquisa
674
+ - `/fase-ui ${PHASE} ${WS}` — gerar contrato de design de UI antes do planejamento (se a fase tem trabalho de frontend)
675
+ - Revisar/editar CONTEXT.md antes de continuar
676
+
677
+ ---
678
+ ```
679
+ </step>
680
+
681
+ <step name="git_commit">
682
+ **Escrever DISCUSSION-LOG.md antes de commitar:**
683
+
684
+ **Localização do arquivo:** `${phase_dir}/${padded_phase}-DISCUSSION-LOG.md`
685
+
686
+ ```markdown
687
+ # Fase [X]: [Nome] - Log de Discussão
688
+
689
+ > **Somente trilha de auditoria.** Não usar como entrada para agentes de planejamento, pesquisa ou execução.
690
+ > Decisões são capturadas no CONTEXT.md — este log preserva as alternativas consideradas.
691
+
692
+ **Data:** [data ISO]
693
+ **Fase:** [número-fase]-[nome-fase]
694
+ **Áreas discutidas:** [lista separada por vírgula]
695
+
696
+ ---
697
+
698
+ [Para cada área cinzenta discutida:]
699
+
700
+ ## [Nome da Área]
701
+
702
+ | Opção | Descrição | Selecionada |
703
+ |-------|-----------|-------------|
704
+ | [Opção 1] | [Descrição do AskUserQuestion] | |
705
+ | [Opção 2] | [Descrição] | ✓ |
706
+ | [Opção 3] | [Descrição] | |
707
+
708
+ **Escolha do usuário:** [Opção selecionada ou resposta em texto livre]
709
+ **Notas:** [Quaisquer esclarecimentos, contexto de acompanhamento, ou raciocínio fornecido pelo usuário]
710
+
711
+ ---
712
+
713
+ [Repetir para cada área]
714
+
715
+ ## Discrição do Claude
716
+
717
+ [Listar áreas onde o usuário disse "você decide" ou delegou ao Claude]
718
+
719
+ ## Ideias Adiadas
720
+
721
+ [Ideias mencionadas durante a discussão que foram anotadas para fases futuras]
722
+ ```
723
+
724
+ Escrever arquivo.
725
+
726
+ Commitar contexto da fase e log de discussão:
727
+
728
+ ```bash
729
+ 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"
730
+ ```
731
+
732
+ Confirmar: "Commitado: docs(${padded_phase}): capturar contexto da fase"
733
+ </step>
734
+
735
+ <step name="update_state">
736
+ Atualizar STATE.md com informações da sessão:
737
+
738
+ ```bash
739
+ node "./.claude/framework/bin/tools.cjs" state record-session \
740
+ --stopped-at "Phase ${PHASE} context gathered" \
741
+ --resume-file "${phase_dir}/${padded_phase}-CONTEXT.md"
742
+ ```
743
+
744
+ Commitar STATE.md:
745
+
746
+ ```bash
747
+ node "./.claude/framework/bin/tools.cjs" commit "docs(state): record phase ${PHASE} context session" --files .planning/STATE.md
748
+ ```
749
+ </step>
750
+
751
+ <step name="auto_advance">
752
+ **Detecção:** flag `--auto` em $ARGUMENTS, OR `workflow._auto_chain_active=true`, OR `workflow.auto_advance=true`.
753
+
754
+ **Sync de cadeia:** se usuário invocou manualmente (sem `--auto`), zere `workflow._auto_chain_active` (mas NÃO toque `workflow.auto_advance` — preferência do usuário). Se `--auto` presente e cadeia não estava ativa, set `_auto_chain_active=true` (handle uso direto de `--auto` sem new-project).
755
+
756
+ **Quando ativo:** dispare `Skill(skill="framework:planejar-fase", args="${PHASE} --auto ${WS}")` (use Skill, não Task aninhado — evita freeze de runtime, issue #686).
757
+
758
+ **Roteamento de retorno do plan-phase:**
759
+ - `FASE CONCLUÍDA` → cadeia completa. Próximo: `/discutir-fase ${NEXT_PHASE} --auto ${WS}` (após `/clear`)
760
+ - `PLANEJAMENTO CONCLUÍDO` → execução parou. Continuar: `/executar-fase ${PHASE} ${WS}`
761
+ - `PLANEJAMENTO INCONCLUSIVO / CHECKPOINT` → parou. Continuar: `/planejar-fase ${PHASE} ${WS}`
762
+ - `LACUNAS ENCONTRADAS` → parou. Continuar: `/planejar-fase ${PHASE} --gaps ${WS}`
763
+
764
+ **Quando inativo:** rotear pra `confirm_creation` (comportamento manual existente).
765
+ </step>
766
+
767
+ </process>
768
+
769
+ <success_criteria>
770
+ - Fase validada contra o roadmap
771
+ - Contexto anterior carregado (PROJECT.md, REQUIREMENTS.md, STATE.md, arquivos CONTEXT.md anteriores)
772
+ - Questões já decididas não re-perguntadas (carregadas de fases anteriores)
773
+ - Codebase varrida por ativos reutilizáveis, padrões e pontos de integração
774
+ - Áreas cinzentas identificadas por análise inteligente com anotações de código e decisão anterior
775
+ - Usuário selecionou quais áreas discutir
776
+ - Cada área selecionada explorada até satisfação do usuário (com opções informadas por código e por decisões anteriores)
777
+ - Expansão de escopo redirecionada para ideias adiadas
778
+ - CONTEXT.md captura decisões reais, não visão vaga
779
+ - 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)
780
+ - CONTEXT.md inclui seção code_context com ativos e padrões reutilizáveis
781
+ - Ideias adiadas preservadas para fases futuras
782
+ - STATE.md atualizado com informações da sessão
783
+ - Usuário sabe os próximos passos
784
+ </success_criteria>