@luanpdd/kit-mcp 1.30.2 → 1.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (347) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +168 -168
  3. package/gates/agent-no-recursive-dispatch.md +84 -82
  4. package/kit/COMANDOS.md +138 -138
  5. package/kit/README.md +76 -76
  6. package/kit/agents/advisor-researcher.md +107 -106
  7. package/kit/agents/ai-mutation-tester.md +1 -0
  8. package/kit/agents/assumptions-analyzer.md +108 -107
  9. package/kit/agents/audit-log-implementer.md +314 -313
  10. package/kit/agents/auditor-consistencia-isolamento.md +414 -413
  11. package/kit/agents/b2b-saas-architect.md +157 -156
  12. package/kit/agents/burn-rate-forecaster.md +1 -0
  13. package/kit/agents/cascading-failures-auditor.md +299 -298
  14. package/kit/agents/codebase-mapper.md +769 -768
  15. package/kit/agents/crm-pipeline-implementer.md +257 -256
  16. package/kit/agents/debugger.md +814 -813
  17. package/kit/agents/detector-tenant-quente.md +338 -337
  18. package/kit/agents/evolution-go-integrator.md +201 -200
  19. package/kit/agents/example-reviewer.md +22 -21
  20. package/kit/agents/executor.md +565 -564
  21. package/kit/agents/golden-signals-instrumenter.md +1 -0
  22. package/kit/agents/incident-investigator.md +1 -0
  23. package/kit/agents/integration-checker.md +201 -200
  24. package/kit/agents/invite-flow-implementer.md +190 -189
  25. package/kit/agents/legacy-characterizer.md +369 -368
  26. package/kit/agents/lgpd-compliance-auditor.md +296 -295
  27. package/kit/agents/load-shedding-instrumenter.md +1 -0
  28. package/kit/agents/multi-tenant-isolation-auditor.md +254 -253
  29. package/kit/agents/multi-tenant-rls-writer.md +341 -340
  30. package/kit/agents/nyquist-auditor.md +179 -178
  31. package/kit/agents/observability-coverage-auditor.md +316 -315
  32. package/kit/agents/observability-instrumenter.md +1 -0
  33. package/kit/agents/omm-auditor.md +1 -0
  34. package/kit/agents/org-onboarding-implementer.md +224 -223
  35. package/kit/agents/payload-capture-instrumenter.md +274 -273
  36. package/kit/agents/phase-researcher.md +697 -696
  37. package/kit/agents/plan-checker.md +273 -272
  38. package/kit/agents/planner.md +923 -922
  39. package/kit/agents/postmortem-writer.md +1 -0
  40. package/kit/agents/project-researcher.md +653 -652
  41. package/kit/agents/prr-conductor.md +1 -0
  42. package/kit/agents/refactor-safety-auditor.md +405 -404
  43. package/kit/agents/release-pipeline-auditor.md +1 -0
  44. package/kit/agents/research-synthesizer.md +246 -245
  45. package/kit/agents/roadmapper.md +678 -677
  46. package/kit/agents/schema-checker.md +1 -0
  47. package/kit/agents/seam-finder.md +360 -359
  48. package/kit/agents/shotgun-surgery-detector.md +350 -349
  49. package/kit/agents/slo-engineer.md +1 -0
  50. package/kit/agents/storytelling-analyst.md +1 -0
  51. package/kit/agents/supabase-architect.md +1 -0
  52. package/kit/agents/supabase-auth-bootstrapper.md +1 -0
  53. package/kit/agents/supabase-branching-architect.md +563 -562
  54. package/kit/agents/supabase-cicd-pipeline-implementer.md +778 -777
  55. package/kit/agents/supabase-column-privileges-writer.md +400 -399
  56. package/kit/agents/supabase-edge-fn-tester.md +2 -1
  57. package/kit/agents/supabase-edge-fn-writer.md +2 -1
  58. package/kit/agents/supabase-migration-writer.md +386 -385
  59. package/kit/agents/supabase-rbac-implementer.md +393 -392
  60. package/kit/agents/supabase-realtime-implementer.md +364 -363
  61. package/kit/agents/supabase-rls-hardener.md +522 -521
  62. package/kit/agents/supabase-rls-writer.md +324 -323
  63. package/kit/agents/supabase-roles-implementer.md +356 -355
  64. package/kit/agents/supabase-storage-implementer.md +1 -0
  65. package/kit/agents/super-admin-implementer.md +282 -281
  66. package/kit/agents/toil-auditor.md +1 -0
  67. package/kit/agents/ui-auditor.md +438 -437
  68. package/kit/agents/ui-checker.md +303 -302
  69. package/kit/agents/ui-researcher.md +356 -355
  70. package/kit/agents/user-profiler.md +176 -175
  71. package/kit/agents/validador-evolucao-schema.md +336 -335
  72. package/kit/agents/verifier.md +729 -728
  73. package/kit/commands/adicionar-backlog.md +75 -75
  74. package/kit/commands/adicionar-fase.md +42 -42
  75. package/kit/commands/adicionar-tarefa.md +45 -45
  76. package/kit/commands/adicionar-testes.md +41 -41
  77. package/kit/commands/ajuda.md +21 -21
  78. package/kit/commands/atualizar.md +37 -37
  79. package/kit/commands/auditar-cascading.md +111 -111
  80. package/kit/commands/auditar-marco.md +179 -179
  81. package/kit/commands/auditar-observabilidade-cobertura.md +183 -183
  82. package/kit/commands/auditar-refactor.md +219 -219
  83. package/kit/commands/auditar-release.md +109 -109
  84. package/kit/commands/auditar-uat.md +23 -23
  85. package/kit/commands/autonomo.md +40 -40
  86. package/kit/commands/branch-pr.md +24 -24
  87. package/kit/commands/burn-rate-status.md +408 -408
  88. package/kit/commands/capturar-payloads.md +193 -193
  89. package/kit/commands/caracterizar.md +212 -212
  90. package/kit/commands/concluir-marco.md +247 -247
  91. package/kit/commands/configuracoes.md +36 -36
  92. package/kit/commands/dados-distribuidos.md +188 -188
  93. package/kit/commands/definir-perfil.md +10 -10
  94. package/kit/commands/depurar.md +190 -190
  95. package/kit/commands/detectar-duplicacao.md +197 -197
  96. package/kit/commands/discutir-fase.md +131 -131
  97. package/kit/commands/encontrar-seams.md +136 -136
  98. package/kit/commands/entrar-discord.md +17 -17
  99. package/kit/commands/estatisticas.md +18 -18
  100. package/kit/commands/example-greeting.md +33 -33
  101. package/kit/commands/executar-fase.md +58 -58
  102. package/kit/commands/expresso.md +56 -56
  103. package/kit/commands/fase-ui.md +34 -34
  104. package/kit/commands/fazer.md +57 -57
  105. package/kit/commands/fio.md +125 -125
  106. package/kit/commands/fluxos-trabalho.md +64 -64
  107. package/kit/commands/forense.md +176 -176
  108. package/kit/commands/gerenciador.md +38 -38
  109. package/kit/commands/inserir-fase.md +31 -31
  110. package/kit/commands/legacy.md +263 -263
  111. package/kit/commands/limpeza.md +17 -17
  112. package/kit/commands/listar-hipoteses-fase.md +45 -45
  113. package/kit/commands/listar-workspaces.md +18 -18
  114. package/kit/commands/load-shedding.md +117 -117
  115. package/kit/commands/mapear-codebase.md +70 -70
  116. package/kit/commands/multi-tenant.md +163 -163
  117. package/kit/commands/nota.md +33 -33
  118. package/kit/commands/novo-marco.md +43 -43
  119. package/kit/commands/novo-projeto.md +41 -41
  120. package/kit/commands/novo-workspace.md +43 -43
  121. package/kit/commands/pausar-trabalho.md +37 -37
  122. package/kit/commands/perfil-usuario.md +45 -45
  123. package/kit/commands/pesquisar-fase.md +195 -195
  124. package/kit/commands/planejar-fase.md +67 -67
  125. package/kit/commands/planejar-lacunas.md +33 -33
  126. package/kit/commands/plantar-ideia.md +25 -25
  127. package/kit/commands/progresso.md +24 -24
  128. package/kit/commands/proximo.md +30 -30
  129. package/kit/commands/publicar.md +490 -490
  130. package/kit/commands/rapido.md +35 -35
  131. package/kit/commands/reaplicar-patches.md +124 -124
  132. package/kit/commands/refactor-seguro.md +321 -321
  133. package/kit/commands/relatorio-sessao.md +19 -19
  134. package/kit/commands/remover-fase.md +31 -31
  135. package/kit/commands/remover-workspace.md +26 -26
  136. package/kit/commands/resumo-marco.md +50 -50
  137. package/kit/commands/retomar-trabalho.md +40 -40
  138. package/kit/commands/revisar-backlog.md +60 -60
  139. package/kit/commands/revisar-ui.md +32 -32
  140. package/kit/commands/revisar.md +37 -37
  141. package/kit/commands/saude.md +21 -21
  142. package/kit/commands/setup-notion.md +93 -93
  143. package/kit/commands/storytelling.md +179 -179
  144. package/kit/commands/sync-main.md +68 -68
  145. package/kit/commands/validar-fase.md +35 -35
  146. package/kit/commands/verificar-tarefas.md +44 -44
  147. package/kit/commands/verificar-trabalho.md +64 -64
  148. package/kit/file-manifest.json +82 -81
  149. package/kit/framework/bin/lib/commands.cjs +959 -959
  150. package/kit/framework/bin/lib/config.cjs +442 -442
  151. package/kit/framework/bin/lib/core.cjs +1230 -1230
  152. package/kit/framework/bin/lib/frontmatter.cjs +336 -336
  153. package/kit/framework/bin/lib/init.cjs +1442 -1442
  154. package/kit/framework/bin/lib/milestone.cjs +252 -252
  155. package/kit/framework/bin/lib/model-profiles.cjs +68 -68
  156. package/kit/framework/bin/lib/phase.cjs +888 -888
  157. package/kit/framework/bin/lib/profile-output.cjs +952 -952
  158. package/kit/framework/bin/lib/profile-pipeline.cjs +539 -539
  159. package/kit/framework/bin/lib/roadmap.cjs +329 -329
  160. package/kit/framework/bin/lib/security.cjs +382 -382
  161. package/kit/framework/bin/lib/state.cjs +1031 -1031
  162. package/kit/framework/bin/lib/template.cjs +222 -222
  163. package/kit/framework/bin/lib/uat.cjs +282 -282
  164. package/kit/framework/bin/lib/verify.cjs +888 -888
  165. package/kit/framework/bin/lib/workstream.cjs +491 -491
  166. package/kit/framework/bin/tools.cjs +918 -918
  167. package/kit/framework/commands/workstreams.md +63 -63
  168. package/kit/framework/references/checkpoints.md +778 -778
  169. package/kit/framework/references/continuation-format.md +249 -249
  170. package/kit/framework/references/decimal-phase-calculation.md +64 -64
  171. package/kit/framework/references/git-integration.md +295 -295
  172. package/kit/framework/references/git-planning-commit.md +38 -38
  173. package/kit/framework/references/model-profile-resolution.md +36 -36
  174. package/kit/framework/references/model-profiles.md +139 -139
  175. package/kit/framework/references/phase-argument-parsing.md +61 -61
  176. package/kit/framework/references/planning-config.md +202 -202
  177. package/kit/framework/references/questioning.md +162 -162
  178. package/kit/framework/references/tdd.md +263 -263
  179. package/kit/framework/references/ui-brand.md +160 -160
  180. package/kit/framework/references/user-profiling.md +657 -657
  181. package/kit/framework/references/verification-patterns.md +612 -612
  182. package/kit/framework/references/workstream-flag.md +58 -58
  183. package/kit/framework/templates/DEBUG.md +164 -164
  184. package/kit/framework/templates/UAT.md +265 -265
  185. package/kit/framework/templates/UI-SPEC.md +100 -100
  186. package/kit/framework/templates/VALIDATION.md +76 -76
  187. package/kit/framework/templates/claude-md.md +122 -122
  188. package/kit/framework/templates/codebase/architecture.md +185 -185
  189. package/kit/framework/templates/codebase/concerns.md +205 -205
  190. package/kit/framework/templates/codebase/conventions.md +204 -204
  191. package/kit/framework/templates/codebase/integrations.md +192 -192
  192. package/kit/framework/templates/codebase/stack.md +158 -158
  193. package/kit/framework/templates/codebase/structure.md +199 -199
  194. package/kit/framework/templates/codebase/testing.md +301 -301
  195. package/kit/framework/templates/config.json +44 -44
  196. package/kit/framework/templates/context.md +352 -352
  197. package/kit/framework/templates/continue-here.md +78 -78
  198. package/kit/framework/templates/copilot-instructions.md +7 -7
  199. package/kit/framework/templates/debug-subagent-prompt.md +91 -91
  200. package/kit/framework/templates/dev-preferences.md +20 -20
  201. package/kit/framework/templates/discovery.md +146 -146
  202. package/kit/framework/templates/discussion-log.md +63 -63
  203. package/kit/framework/templates/milestone-archive.md +123 -123
  204. package/kit/framework/templates/milestone.md +115 -115
  205. package/kit/framework/templates/phase-prompt.md +610 -610
  206. package/kit/framework/templates/planner-subagent-prompt.md +117 -117
  207. package/kit/framework/templates/project.md +186 -186
  208. package/kit/framework/templates/requirements.md +231 -231
  209. package/kit/framework/templates/research-project/ARCHITECTURE.md +204 -204
  210. package/kit/framework/templates/research-project/FEATURES.md +147 -147
  211. package/kit/framework/templates/research-project/PITFALLS.md +200 -200
  212. package/kit/framework/templates/research-project/STACK.md +120 -120
  213. package/kit/framework/templates/research-project/SUMMARY.md +170 -170
  214. package/kit/framework/templates/research.md +419 -419
  215. package/kit/framework/templates/retrospective.md +54 -54
  216. package/kit/framework/templates/roadmap.md +202 -202
  217. package/kit/framework/templates/state.md +176 -176
  218. package/kit/framework/templates/summary-complex.md +59 -59
  219. package/kit/framework/templates/summary-minimal.md +41 -41
  220. package/kit/framework/templates/summary-standard.md +48 -48
  221. package/kit/framework/templates/summary.md +209 -209
  222. package/kit/framework/templates/user-profile.md +146 -146
  223. package/kit/framework/templates/user-setup.md +256 -256
  224. package/kit/framework/templates/verification-report.md +258 -258
  225. package/kit/framework/workflows/add-phase.md +112 -112
  226. package/kit/framework/workflows/add-tests.md +351 -351
  227. package/kit/framework/workflows/add-todo.md +158 -158
  228. package/kit/framework/workflows/audit-milestone.md +340 -340
  229. package/kit/framework/workflows/audit-uat.md +109 -109
  230. package/kit/framework/workflows/autonomous.md +891 -891
  231. package/kit/framework/workflows/check-todos.md +177 -177
  232. package/kit/framework/workflows/cleanup.md +152 -152
  233. package/kit/framework/workflows/complete-milestone.md +696 -696
  234. package/kit/framework/workflows/diagnose-issues.md +231 -231
  235. package/kit/framework/workflows/discovery-phase.md +289 -289
  236. package/kit/framework/workflows/discuss-phase-assumptions.md +653 -653
  237. package/kit/framework/workflows/discuss-phase.md +784 -784
  238. package/kit/framework/workflows/do.md +104 -104
  239. package/kit/framework/workflows/execute-phase.md +838 -838
  240. package/kit/framework/workflows/execute-plan.md +510 -510
  241. package/kit/framework/workflows/fast.md +102 -102
  242. package/kit/framework/workflows/forensics.md +265 -265
  243. package/kit/framework/workflows/health.md +181 -181
  244. package/kit/framework/workflows/help.md +619 -619
  245. package/kit/framework/workflows/insert-phase.md +130 -130
  246. package/kit/framework/workflows/list-phase-assumptions.md +178 -178
  247. package/kit/framework/workflows/list-workspaces.md +56 -56
  248. package/kit/framework/workflows/manager.md +362 -362
  249. package/kit/framework/workflows/map-codebase.md +377 -377
  250. package/kit/framework/workflows/milestone-summary.md +223 -223
  251. package/kit/framework/workflows/new-milestone.md +486 -486
  252. package/kit/framework/workflows/new-project.md +1159 -1159
  253. package/kit/framework/workflows/new-workspace.md +237 -237
  254. package/kit/framework/workflows/next.md +97 -97
  255. package/kit/framework/workflows/node-repair.md +92 -92
  256. package/kit/framework/workflows/note.md +156 -156
  257. package/kit/framework/workflows/pause-work.md +176 -176
  258. package/kit/framework/workflows/plan-milestone-gaps.md +273 -273
  259. package/kit/framework/workflows/plan-phase.md +765 -765
  260. package/kit/framework/workflows/plant-seed.md +169 -169
  261. package/kit/framework/workflows/pr-branch.md +129 -129
  262. package/kit/framework/workflows/profile-user.md +450 -450
  263. package/kit/framework/workflows/progress.md +507 -507
  264. package/kit/framework/workflows/quick.md +757 -757
  265. package/kit/framework/workflows/remove-phase.md +155 -155
  266. package/kit/framework/workflows/remove-workspace.md +90 -90
  267. package/kit/framework/workflows/research-phase.md +82 -82
  268. package/kit/framework/workflows/resume-project.md +326 -326
  269. package/kit/framework/workflows/review.md +228 -228
  270. package/kit/framework/workflows/session-report.md +146 -146
  271. package/kit/framework/workflows/settings.md +283 -283
  272. package/kit/framework/workflows/ship.md +228 -228
  273. package/kit/framework/workflows/stats.md +60 -60
  274. package/kit/framework/workflows/transition.md +671 -671
  275. package/kit/framework/workflows/ui-phase.md +302 -302
  276. package/kit/framework/workflows/ui-review.md +165 -165
  277. package/kit/framework/workflows/update.md +323 -323
  278. package/kit/framework/workflows/validate-phase.md +174 -174
  279. package/kit/framework/workflows/verify-phase.md +252 -252
  280. package/kit/framework/workflows/verify-work.md +637 -637
  281. package/kit/hooks/check-update.js +118 -118
  282. package/kit/hooks/context-monitor.js +163 -163
  283. package/kit/hooks/kit-attribution-reminder.cjs +29 -50
  284. package/kit/hooks/kit-router.cjs +137 -0
  285. package/kit/hooks/prompt-guard.js +103 -103
  286. package/kit/hooks/statusline.js +125 -125
  287. package/kit/hooks/workflow-guard.js +101 -101
  288. package/kit/settings.json +45 -45
  289. package/kit/skills/ai-prompt-characterization/SKILL.md +335 -335
  290. package/kit/skills/armadilhas-sistemas-distribuidos/SKILL.md +447 -447
  291. package/kit/skills/audit-log-multi-tenant/SKILL.md +340 -340
  292. package/kit/skills/b2b-saas-architecture/SKILL.md +300 -300
  293. package/kit/skills/consistencia-leitura-replica/SKILL.md +385 -385
  294. package/kit/skills/crm-lead-pipeline-patterns/SKILL.md +343 -343
  295. package/kit/skills/escolha-modelo-consistencia/SKILL.md +494 -494
  296. package/kit/skills/evolucao-schema-compativel/SKILL.md +448 -448
  297. package/kit/skills/evolution-go-whatsapp-integration/SKILL.md +322 -322
  298. package/kit/skills/example-skill/SKILL.md +42 -42
  299. package/kit/skills/legacy-api-only-applications/SKILL.md +358 -358
  300. package/kit/skills/legacy-characterization-tests/SKILL.md +330 -330
  301. package/kit/skills/legacy-effect-analysis/SKILL.md +331 -331
  302. package/kit/skills/legacy-extract-class/SKILL.md +203 -203
  303. package/kit/skills/legacy-programming-by-difference/SKILL.md +252 -252
  304. package/kit/skills/legacy-seams-and-test-harness/SKILL.md +460 -460
  305. package/kit/skills/legacy-shotgun-surgery/SKILL.md +286 -286
  306. package/kit/skills/legacy-sprout-wrap-techniques/SKILL.md +434 -434
  307. package/kit/skills/legacy-storytelling-naked-crc/SKILL.md +270 -270
  308. package/kit/skills/lgpd-multi-tenant-compliance/SKILL.md +340 -340
  309. package/kit/skills/member-invite-flow/SKILL.md +305 -305
  310. package/kit/skills/member-management-react-shadcn/SKILL.md +328 -328
  311. package/kit/skills/multi-tenant-performance-scaling/SKILL.md +316 -316
  312. package/kit/skills/multi-tenant-rls-hierarchy/SKILL.md +342 -342
  313. package/kit/skills/org-onboarding-flow/SKILL.md +257 -257
  314. package/kit/skills/org-switcher-react-pattern/SKILL.md +349 -349
  315. package/kit/skills/permission-gate-react-pattern/SKILL.md +271 -271
  316. package/kit/skills/postgres-isolamento-concorrencia/SKILL.md +552 -552
  317. package/kit/skills/pre-refactor-characterization/SKILL.md +421 -421
  318. package/kit/skills/rbac-permissions-matrix-supabase/SKILL.md +338 -338
  319. package/kit/skills/streams-eventos-cdc/SKILL.md +711 -711
  320. package/kit/skills/supabase-branching-workflow/SKILL.md +544 -544
  321. package/kit/skills/supabase-ci-cd-github-actions/SKILL.md +880 -880
  322. package/kit/skills/supabase-column-level-security/SKILL.md +426 -426
  323. package/kit/skills/supabase-config-toml-remotes/SKILL.md +807 -807
  324. package/kit/skills/supabase-custom-claims-rbac/SKILL.md +472 -472
  325. package/kit/skills/supabase-edge-functions/SKILL.md +1 -1
  326. package/kit/skills/supabase-edge-functions-auth/SKILL.md +1 -1
  327. package/kit/skills/supabase-edge-functions-limits/SKILL.md +1 -1
  328. package/kit/skills/supabase-edge-functions-mcp-server/SKILL.md +1 -1
  329. package/kit/skills/supabase-edge-functions-testing/SKILL.md +1 -1
  330. package/kit/skills/supabase-edge-runtime-builtins/SKILL.md +1 -1
  331. package/kit/skills/supabase-migration-repair/SKILL.md +823 -823
  332. package/kit/skills/supabase-migrations/SKILL.md +297 -297
  333. package/kit/skills/supabase-pgtap-testing/SKILL.md +1053 -1053
  334. package/kit/skills/supabase-postgres-roles/SKILL.md +392 -392
  335. package/kit/skills/supabase-realtime/SKILL.md +460 -460
  336. package/kit/skills/supabase-rls-defense-in-depth/SKILL.md +418 -418
  337. package/kit/skills/supabase-rls-policies/SKILL.md +635 -635
  338. package/kit/skills/super-admin-platform-pattern/SKILL.md +326 -326
  339. package/kit/skills/tenant-quente-mitigacao/SKILL.md +605 -605
  340. package/kit/skills/whatsapp-conversation-state-machine/SKILL.md +287 -287
  341. package/package.json +1 -1
  342. package/src/core/kit.js +216 -216
  343. package/src/core/reflect.js +247 -247
  344. package/src/core/reverse-sync.js +372 -372
  345. package/src/core/sync.js +437 -418
  346. package/src/core/watch.js +121 -121
  347. package/src/mcp-server/index.js +794 -746
@@ -1,637 +1,637 @@
1
- <purpose>
2
- Validar funcionalidades desenvolvidas por meio de testes conversacionais com estado persistente. Cria UAT.md que rastreia o progresso dos testes, sobrevive ao /clear e alimenta lacunas no /planejar-fase --gaps.
3
-
4
- O usuário testa, o Claude registra. Um teste por vez. Respostas em texto simples.
5
- </purpose>
6
-
7
- <available_agent_types>
8
- Tipos de subagente framework válidos (use os nomes exatos — não use 'general-purpose' como fallback):
9
- - planner — Cria planos detalhados a partir do escopo da fase
10
- - plan-checker — Revisa a qualidade do plano antes da execução
11
- </available_agent_types>
12
-
13
- <philosophy>
14
- **Mostre o esperado, pergunte se a realidade corresponde.**
15
-
16
- O Claude apresenta o que DEVERIA acontecer. O usuário confirma ou descreve o que é diferente.
17
- - "sim" / "s" / "próximo" / vazio → passou
18
- - Qualquer outra coisa → registrado como problema, severidade inferida
19
-
20
- Sem botões Passou/Falhou. Sem perguntas sobre severidade. Apenas: "Aqui está o que deveria acontecer. Aconteceu?"
21
- </philosophy>
22
-
23
- <template>
24
- @./.claude/framework/templates/UAT.md
25
- </template>
26
-
27
- <process>
28
-
29
- <step name="initialize" priority="first">
30
- Se $ARGUMENTS contém um número de fase, carregue o contexto:
31
-
32
- ```bash
33
- INIT=$(node "./.claude/framework/bin/tools.cjs" init verify-work "${PHASE_ARG}")
34
- if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
35
- AGENT_SKILLS_PLANNER=$(node "./.claude/framework/bin/tools.cjs" agent-skills planner 2>/dev/null)
36
- AGENT_SKILLS_CHECKER=$(node "./.claude/framework/bin/tools.cjs" agent-skills checker 2>/dev/null)
37
- ```
38
-
39
- Analise o JSON para: `planner_model`, `checker_model`, `commit_docs`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `has_verification`, `uat_path`.
40
- </step>
41
-
42
- <step name="check_active_session">
43
- **Primeiro: Verificar sessões UAT ativas**
44
-
45
- ```bash
46
- (find .planning/phases -name "*-UAT.md" -type f 2>/dev/null || true) | head -5
47
- ```
48
-
49
- **Se sessões ativas existirem E nenhum $ARGUMENTS fornecido:**
50
-
51
- Leia o frontmatter de cada arquivo (status, fase) e a seção Teste Atual.
52
-
53
- Exiba inline:
54
-
55
- ```
56
- ## Sessões UAT Ativas
57
-
58
- | # | Fase | Status | Teste Atual | Progresso |
59
- |---|------|--------|-------------|-----------|
60
- | 1 | 04-comments | testing | 3. Responder Comentário | 2/6 |
61
- | 2 | 05-auth | testing | 1. Formulário de Login | 0/4 |
62
-
63
- Responda com um número para retomar, ou forneça um número de fase para iniciar nova.
64
- ```
65
-
66
- Aguarde a resposta do usuário.
67
-
68
- - Se o usuário responder com número (1, 2) → Carregue aquele arquivo, vá para `resume_from_file`
69
- - Se o usuário responder com número de fase → Trate como nova sessão, vá para `create_uat_file`
70
-
71
- **Se sessões ativas existirem E $ARGUMENTS fornecido:**
72
-
73
- Verifique se existe sessão para aquela fase. Se sim, ofereça retomar ou reiniciar.
74
- Se não, continue para `create_uat_file`.
75
-
76
- **Se nenhuma sessão ativa E nenhum $ARGUMENTS:**
77
-
78
- ```
79
- Nenhuma sessão UAT ativa.
80
-
81
- Forneça um número de fase para iniciar os testes (ex: /verificar-trabalho 4)
82
- ```
83
-
84
- **Se nenhuma sessão ativa E $ARGUMENTS fornecido:**
85
-
86
- Continue para `create_uat_file`.
87
- </step>
88
-
89
- <step name="find_summaries">
90
- **Encontrar o que testar:**
91
-
92
- Use `phase_dir` do init (ou execute o init se ainda não feito).
93
-
94
- ```bash
95
- ls "$phase_dir"/*-SUMMARY.md 2>/dev/null || true
96
- ```
97
-
98
- Leia cada SUMMARY.md para extrair entregas testáveis.
99
- </step>
100
-
101
- <step name="extract_tests">
102
- **Extrair entregas testáveis do SUMMARY.md:**
103
-
104
- Analise por:
105
- 1. **Realizações** - Funcionalidades/recursos adicionados
106
- 2. **Mudanças visíveis ao usuário** - UI, fluxos, interações
107
-
108
- Foque em resultados OBSERVÁVEIS PELO USUÁRIO, não em detalhes de implementação.
109
-
110
- Para cada entrega, crie um teste:
111
- - name: Nome breve do teste
112
- - expected: O que o usuário deveria ver/experimentar (específico, observável)
113
-
114
- Exemplos:
115
- - Realização: "Adicionado threading de comentários com aninhamento infinito"
116
- → Teste: "Responder a um Comentário"
117
- → Esperado: "Clicar em Responder abre compositor inline abaixo do comentário. Submeter mostra resposta aninhada abaixo do pai com recuo visual."
118
-
119
- Pule itens internos/não observáveis (refatorações, alterações de tipo, etc.).
120
-
121
- **Injeção de smoke test de cold-start:**
122
-
123
- Após extrair os testes dos SUMMARYs, escaneie os arquivos SUMMARY em busca de caminhos de arquivos modificados/criados. Se QUALQUER caminho corresponder a estes padrões:
124
-
125
- `server.ts`, `server.js`, `app.ts`, `app.js`, `index.ts`, `index.js`, `main.ts`, `main.js`, `database/*`, `db/*`, `seed/*`, `seeds/*`, `migrations/*`, `startup*`, `docker-compose*`, `Dockerfile*`
126
-
127
- Então **adicione ao início** da lista de testes:
128
-
129
- - name: "Smoke Test de Cold Start"
130
- - expected: "Encerre qualquer servidor/serviço em execução. Limpe o estado efêmero (DBs temporários, caches, lock files). Inicie a aplicação do zero. O servidor inicializa sem erros, qualquer seed/migração é concluída, e uma query primária (health check, carregamento da página inicial, ou chamada básica de API) retorna dados ao vivo."
131
-
132
- Isso captura bugs que só se manifestam em uma inicialização nova — condições de corrida em sequências de inicialização, falhas silenciosas de seed, configuração de ambiente ausente — que passam contra estado quente mas quebram em produção.
133
- </step>
134
-
135
- <step name="create_uat_file">
136
- **Criar arquivo UAT com todos os testes:**
137
-
138
- ```bash
139
- mkdir -p "$PHASE_DIR"
140
- ```
141
-
142
- Construa a lista de testes a partir das entregas extraídas.
143
-
144
- Crie o arquivo:
145
-
146
- ```markdown
147
- ---
148
- status: testing
149
- phase: XX-name
150
- source: [list of SUMMARY.md files]
151
- started: [ISO timestamp]
152
- updated: [ISO timestamp]
153
- ---
154
-
155
- ## Current Test
156
- <!-- OVERWRITE each test - shows where we are -->
157
-
158
- number: 1
159
- name: [first test name]
160
- expected: |
161
- [what user should observe]
162
- awaiting: user response
163
-
164
- ## Tests
165
-
166
- ### 1. [Test Name]
167
- expected: [observable behavior]
168
- result: [pending]
169
-
170
- ### 2. [Test Name]
171
- expected: [observable behavior]
172
- result: [pending]
173
-
174
- ...
175
-
176
- ## Summary
177
-
178
- total: [N]
179
- passed: 0
180
- issues: 0
181
- pending: [N]
182
- skipped: 0
183
-
184
- ## Gaps
185
-
186
- [none yet]
187
- ```
188
-
189
- Escreva em `.planning/phases/XX-name/{phase_num}-UAT.md`
190
-
191
- Prossiga para `present_test`.
192
- </step>
193
-
194
- <step name="present_test">
195
- **Apresentar o teste atual ao usuário:**
196
-
197
- Renderize o checkpoint a partir do arquivo UAT estruturado em vez de compô-lo manualmente:
198
-
199
- ```bash
200
- CHECKPOINT=$(node "./.claude/framework/bin/tools.cjs" uat render-checkpoint --file "$uat_path" --raw)
201
- if [[ "$CHECKPOINT" == @file:* ]]; then CHECKPOINT=$(cat "${CHECKPOINT#@file:}"); fi
202
- ```
203
-
204
- Exiba o checkpoint retornado EXATAMENTE como está:
205
-
206
- ```
207
- {CHECKPOINT}
208
- ```
209
-
210
- **Higiene crítica de resposta:**
211
- - Toda a sua resposta DEVE ser igual a `{CHECKPOINT}` byte a byte.
212
- - NÃO adicione comentários antes ou depois do bloco.
213
- - Se você notar marcadores de protocolo/meta como `to=all:`, texto de roteamento de função, tags de sistema XML, marcadores de instrução ocultos, anúncios, ou qualquer sufixo não relacionado, descarte o rascunho e emita apenas `{CHECKPOINT}`.
214
-
215
- Aguarde a resposta do usuário (texto simples, sem AskUserQuestion).
216
- </step>
217
-
218
- <step name="process_response">
219
- **Processar a resposta do usuário e atualizar o arquivo:**
220
-
221
- **Se a resposta indica que passou:**
222
- - Resposta vazia, "sim", "s", "ok", "passou", "próximo", "aprovado", "✓"
223
-
224
- Atualize a seção Tests:
225
- ```
226
- ### {N}. {name}
227
- expected: {expected}
228
- result: pass
229
- ```
230
-
231
- **Se a resposta indica pular:**
232
- - "pular", "não consigo testar", "n/a"
233
-
234
- Atualize a seção Tests:
235
- ```
236
- ### {N}. {name}
237
- expected: {expected}
238
- result: skipped
239
- reason: [razão do usuário se fornecida]
240
- ```
241
-
242
- **Se a resposta indica bloqueado:**
243
- - "bloqueado", "não consigo testar - servidor não está rodando", "preciso de dispositivo físico", "preciso de build de release"
244
- - Ou qualquer resposta contendo: "servidor", "bloqueado", "não está rodando", "dispositivo físico", "build de release"
245
-
246
- Infira a tag blocked_by da resposta:
247
- - Contém: servidor, não está rodando, gateway, API → `server`
248
- - Contém: físico, dispositivo, hardware, celular real → `physical-device`
249
- - Contém: release, preview, build, EAS → `release-build`
250
- - Contém: stripe, twilio, third-party, configurar → `third-party`
251
- - Contém: depende de, fase anterior, pré-requisito → `prior-phase`
252
- - Padrão: `other`
253
-
254
- Atualize a seção Tests:
255
- ```
256
- ### {N}. {name}
257
- expected: {expected}
258
- result: blocked
259
- blocked_by: {tag inferida}
260
- reason: "{resposta verbatim do usuário}"
261
- ```
262
-
263
- Nota: Testes bloqueados NÃO vão para a seção Gaps (não são problemas de código — são gates de pré-requisito).
264
-
265
- **Se a resposta for qualquer outra coisa:**
266
- - Trate como descrição de problema
267
-
268
- Infira a severidade da descrição:
269
- - Contém: crash, erro, exceção, falha, quebrado, inutilizável → bloqueador
270
- - Contém: não funciona, errado, ausente, não consigo → major
271
- - Contém: lento, estranho, fora, menor, pequeno → minor
272
- - Contém: cor, fonte, espaçamento, alinhamento, visual → cosmético
273
- - Padrão se não estiver claro: major
274
-
275
- Atualize a seção Tests:
276
- ```
277
- ### {N}. {name}
278
- expected: {expected}
279
- result: issue
280
- reported: "{resposta verbatim do usuário}"
281
- severity: {inferida}
282
- ```
283
-
284
- Adicione à seção Gaps (YAML estruturado para planejar-fase --gaps):
285
- ```yaml
286
- - truth: "{comportamento esperado do teste}"
287
- status: failed
288
- reason: "User reported: {resposta verbatim do usuário}"
289
- severity: {inferida}
290
- test: {N}
291
- artifacts: [] # Preenchido pelo diagnóstico
292
- missing: [] # Preenchido pelo diagnóstico
293
- ```
294
-
295
- **Após qualquer resposta:**
296
-
297
- Atualize as contagens do Summary.
298
- Atualize o timestamp frontmatter.updated.
299
-
300
- Se houver mais testes → Atualize Teste Atual, vá para `present_test`
301
- Se não houver mais testes → Vá para `complete_session`
302
- </step>
303
-
304
- <step name="resume_from_file">
305
- **Retomar testes a partir do arquivo UAT:**
306
-
307
- Leia o arquivo UAT completo.
308
-
309
- Encontre o primeiro teste com `result: [pending]`.
310
-
311
- Anuncie:
312
- ```
313
- Retomando: UAT da Fase {phase}
314
- Progresso: {passed + issues + skipped}/{total}
315
- Problemas encontrados até agora: {issues count}
316
-
317
- Continuando a partir do Teste {N}...
318
- ```
319
-
320
- Atualize a seção Teste Atual com o teste pendente.
321
- Prossiga para `present_test`.
322
- </step>
323
-
324
- <step name="complete_session">
325
- **Concluir testes e commitar:**
326
-
327
- **Determinar status final:**
328
-
329
- Conte os resultados:
330
- - `pending_count`: testes com `result: [pending]`
331
- - `blocked_count`: testes com `result: blocked`
332
- - `skipped_no_reason`: testes com `result: skipped` sem campo `reason`
333
-
334
- ```
335
- if pending_count > 0 OR blocked_count > 0 OR skipped_no_reason > 0:
336
- status: partial
337
- # Sessão encerrada mas nem todos os testes resolvidos
338
- else:
339
- status: complete
340
- # Todos os testes têm um resultado definitivo (passed, issue, ou skipped-with-reason)
341
- ```
342
-
343
- Atualize o frontmatter:
344
- - status: {status calculado}
345
- - updated: [agora]
346
-
347
- Limpe a seção Teste Atual:
348
- ```
349
- ## Current Test
350
-
351
- [testing complete]
352
- ```
353
-
354
- Commite o arquivo UAT:
355
- ```bash
356
- node "./.claude/framework/bin/tools.cjs" commit "test({phase_num}): complete UAT - {passed} passed, {issues} issues" --files ".planning/phases/XX-name/{phase_num}-UAT.md"
357
- ```
358
-
359
- Apresente o resumo:
360
- ```
361
- ## UAT Concluído: Fase {phase}
362
-
363
- | Resultado | Contagem |
364
- |-----------|----------|
365
- | Passou | {N} |
366
- | Problemas | {N} |
367
- | Pulado | {N} |
368
-
369
- [Se issues > 0:]
370
- ### Problemas Encontrados
371
-
372
- [Lista da seção Issues]
373
- ```
374
-
375
- **Se issues > 0:** Prossiga para `diagnose_issues`
376
-
377
- **Se issues == 0:**
378
- ```
379
- Todos os testes passaram. Pronto para continuar.
380
-
381
- - `/planejar-fase {próxima}` — Planejar próxima fase
382
- - `/executar-fase {próxima}` — Executar próxima fase
383
- - `/revisar-ui {fase}` — auditoria de qualidade visual (se arquivos frontend foram modificados)
384
- ```
385
- </step>
386
-
387
- <step name="diagnose_issues">
388
- **Diagnosticar causas raiz antes de planejar correções:**
389
-
390
- ```
391
- ---
392
-
393
- {N} problemas encontrados. Diagnosticando causas raiz...
394
-
395
- Spawnando agentes de debug paralelos para investigar cada problema.
396
- ```
397
-
398
- - Carregue o workflow diagnose-issues
399
- - Siga @./.claude/framework/workflows/diagnose-issues.md
400
- - Spawne agentes de debug paralelos para cada problema
401
- - Colete causas raiz
402
- - Atualize UAT.md com as causas raiz
403
- - Prossiga para `plan_gap_closure`
404
-
405
- O diagnóstico roda automaticamente — sem prompt ao usuário. Agentes paralelos investigam simultaneamente, então o overhead é mínimo e as correções são mais precisas.
406
- </step>
407
-
408
- <step name="plan_gap_closure">
409
- **Planejar automaticamente as correções a partir das lacunas diagnosticadas:**
410
-
411
- Exiba:
412
- ```
413
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
414
- framework ► PLANEJANDO CORREÇÕES
415
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
416
-
417
- ◆ Spawnando planejador para fechamento de lacunas...
418
- ```
419
-
420
- Spawne planner no modo --gaps:
421
-
422
- ```
423
- Task(
424
- prompt="""
425
- <planning_context>
426
-
427
- **Phase:** {phase_number}
428
- **Mode:** gap_closure
429
-
430
- <files_to_read>
431
- - {phase_dir}/{phase_num}-UAT.md (UAT with diagnoses)
432
- - .planning/STATE.md (Project State)
433
- - .planning/ROADMAP.md (Roadmap)
434
- </files_to_read>
435
-
436
- ${AGENT_SKILLS_PLANNER}
437
-
438
- </planning_context>
439
-
440
- <downstream_consumer>
441
- Output consumed by /execute-phase
442
- Plans must be executable prompts.
443
- </downstream_consumer>
444
- """,
445
- subagent_type="planner",
446
- model="{planner_model}",
447
- description="Plan gap fixes for Phase {phase}"
448
- )
449
- ```
450
-
451
- No retorno:
452
- - **PLANNING COMPLETE:** Prossiga para `verify_gap_plans`
453
- - **PLANNING INCONCLUSIVE:** Reporte e ofereça intervenção manual
454
- </step>
455
-
456
- <step name="verify_gap_plans">
457
- **Verificar planos de correção com o checker:**
458
-
459
- Exiba:
460
- ```
461
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
462
- framework ► VERIFICANDO PLANOS DE CORREÇÃO
463
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
464
-
465
- ◆ Spawnando verificador de planos...
466
- ```
467
-
468
- Inicialize: `iteration_count = 1`
469
-
470
- Spawne plan-checker:
471
-
472
- ```
473
- Task(
474
- prompt="""
475
- <verification_context>
476
-
477
- **Phase:** {phase_number}
478
- **Phase Goal:** Close diagnosed gaps from UAT
479
-
480
- <files_to_read>
481
- - {phase_dir}/*-PLAN.md (Plans to verify)
482
- </files_to_read>
483
-
484
- ${AGENT_SKILLS_CHECKER}
485
-
486
- </verification_context>
487
-
488
- <expected_output>
489
- Return one of:
490
- - ## VERIFICATION PASSED — all checks pass
491
- - ## ISSUES FOUND — structured issue list
492
- </expected_output>
493
- """,
494
- subagent_type="plan-checker",
495
- model="{checker_model}",
496
- description="Verify Phase {phase} fix plans"
497
- )
498
- ```
499
-
500
- No retorno:
501
- - **VERIFICATION PASSED:** Prossiga para `present_ready`
502
- - **ISSUES FOUND:** Prossiga para `revision_loop`
503
- </step>
504
-
505
- <step name="revision_loop">
506
- **Itere planejador ↔ checker até os planos passarem (máx. 3):**
507
-
508
- **Se iteration_count < 3:**
509
-
510
- Exiba: `Enviando de volta ao planejador para revisão... (iteração {N}/3)`
511
-
512
- Spawne planner com contexto de revisão:
513
-
514
- ```
515
- Task(
516
- prompt="""
517
- <revision_context>
518
-
519
- **Phase:** {phase_number}
520
- **Mode:** revision
521
-
522
- <files_to_read>
523
- - {phase_dir}/*-PLAN.md (Existing plans)
524
- </files_to_read>
525
-
526
- ${AGENT_SKILLS_PLANNER}
527
-
528
- **Checker issues:**
529
- {structured_issues_from_checker}
530
-
531
- </revision_context>
532
-
533
- <instructions>
534
- Read existing PLAN.md files. Make targeted updates to address checker issues.
535
- Do NOT replan from scratch unless issues are fundamental.
536
- </instructions>
537
- """,
538
- subagent_type="planner",
539
- model="{planner_model}",
540
- description="Revise Phase {phase} plans"
541
- )
542
- ```
543
-
544
- Após retorno do planejador → spawne o checker novamente (lógica do verify_gap_plans)
545
- Incremente iteration_count
546
-
547
- **Se iteration_count >= 3:**
548
-
549
- Exiba: `Máximo de iterações atingido. {N} problemas permanecem.`
550
-
551
- Ofereça opções:
552
- 1. Forçar prosseguimento (executar apesar dos problemas)
553
- 2. Fornecer orientação (usuário dá direção, tentar novamente)
554
- 3. Abandonar (sair, usuário executa /planejar-fase manualmente)
555
-
556
- Aguarde a resposta do usuário.
557
- </step>
558
-
559
- <step name="present_ready">
560
- **Apresentar conclusão e próximos passos:**
561
-
562
- ```
563
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
564
- framework ► CORREÇÕES PRONTAS ✓
565
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
566
-
567
- **Fase {X}: {Nome}** — {N} lacuna(s) diagnosticada(s), {M} plano(s) de correção criado(s)
568
-
569
- | Lacuna | Causa Raiz | Plano de Correção |
570
- |--------|------------|-------------------|
571
- | {verdade 1} | {causa_raiz} | {fase}-04 |
572
- | {verdade 2} | {causa_raiz} | {fase}-04 |
573
-
574
- Planos verificados e prontos para execução.
575
-
576
- ───────────────────────────────────────────────────────────────
577
-
578
- ## ▶ Próximo Passo
579
-
580
- **Executar correções** — executar planos de correção
581
-
582
- `/clear` e depois `/executar-fase {fase} --gaps-only`
583
-
584
- ───────────────────────────────────────────────────────────────
585
- ```
586
- </step>
587
-
588
- </process>
589
-
590
- <update_rules>
591
- **Escritas em lote para eficiência:**
592
-
593
- Mantenha os resultados em memória. Escreva no arquivo apenas quando:
594
- 1. **Problema encontrado** — Preserve o problema imediatamente
595
- 2. **Sessão completa** — Escrita final antes do commit
596
- 3. **Checkpoint** — A cada 5 testes passados (rede de segurança)
597
-
598
- | Seção | Regra | Quando Escrito |
599
- |-------|-------|----------------|
600
- | Frontmatter.status | SOBRESCREVER | Início, conclusão |
601
- | Frontmatter.updated | SOBRESCREVER | Em qualquer escrita de arquivo |
602
- | Teste Atual | SOBRESCREVER | Em qualquer escrita de arquivo |
603
- | Tests.{N}.result | SOBRESCREVER | Em qualquer escrita de arquivo |
604
- | Summary | SOBRESCREVER | Em qualquer escrita de arquivo |
605
- | Gaps | ADICIONAR | Quando problema encontrado |
606
-
607
- Em reset de contexto: Arquivo mostra o último checkpoint. Retome a partir daí.
608
- </update_rules>
609
-
610
- <severity_inference>
611
- **Infira a severidade da linguagem natural do usuário:**
612
-
613
- | O usuário diz | Inferir |
614
- |---------------|---------|
615
- | "crash", "erro", "exceção", "falha completamente" | bloqueador |
616
- | "não funciona", "nada acontece", "comportamento errado" | major |
617
- | "funciona mas...", "lento", "estranho", "problema menor" | minor |
618
- | "cor", "espaçamento", "alinhamento", "parece errado" | cosmético |
619
-
620
- Padrão para **major** se não estiver claro. O usuário pode corrigir se necessário.
621
-
622
- **Nunca pergunte "qual é a severidade disto?"** - apenas infira e continue.
623
- </severity_inference>
624
-
625
- <success_criteria>
626
- - [ ] Arquivo UAT criado com todos os testes do SUMMARY.md
627
- - [ ] Testes apresentados um por vez com comportamento esperado
628
- - [ ] Respostas do usuário processadas como passou/problema/pulado
629
- - [ ] Severidade inferida a partir da descrição (nunca perguntada)
630
- - [ ] Escritas em lote: no problema, a cada 5 testes passados, ou na conclusão
631
- - [ ] Commitado na conclusão
632
- - [ ] Se problemas: agentes de debug paralelos diagnosticam causas raiz
633
- - [ ] Se problemas: planner cria planos de correção (modo gap_closure)
634
- - [ ] Se problemas: plan-checker verifica os planos de correção
635
- - [ ] Se problemas: loop de revisão até os planos passarem (máx. 3 iterações)
636
- - [ ] Pronto para `/executar-fase --gaps-only` quando concluído
637
- </success_criteria>
1
+ <purpose>
2
+ Validar funcionalidades desenvolvidas por meio de testes conversacionais com estado persistente. Cria UAT.md que rastreia o progresso dos testes, sobrevive ao /clear e alimenta lacunas no /planejar-fase --gaps.
3
+
4
+ O usuário testa, o Claude registra. Um teste por vez. Respostas em texto simples.
5
+ </purpose>
6
+
7
+ <available_agent_types>
8
+ Tipos de subagente framework válidos (use os nomes exatos — não use 'general-purpose' como fallback):
9
+ - planner — Cria planos detalhados a partir do escopo da fase
10
+ - plan-checker — Revisa a qualidade do plano antes da execução
11
+ </available_agent_types>
12
+
13
+ <philosophy>
14
+ **Mostre o esperado, pergunte se a realidade corresponde.**
15
+
16
+ O Claude apresenta o que DEVERIA acontecer. O usuário confirma ou descreve o que é diferente.
17
+ - "sim" / "s" / "próximo" / vazio → passou
18
+ - Qualquer outra coisa → registrado como problema, severidade inferida
19
+
20
+ Sem botões Passou/Falhou. Sem perguntas sobre severidade. Apenas: "Aqui está o que deveria acontecer. Aconteceu?"
21
+ </philosophy>
22
+
23
+ <template>
24
+ @./.claude/framework/templates/UAT.md
25
+ </template>
26
+
27
+ <process>
28
+
29
+ <step name="initialize" priority="first">
30
+ Se $ARGUMENTS contém um número de fase, carregue o contexto:
31
+
32
+ ```bash
33
+ INIT=$(node "./.claude/framework/bin/tools.cjs" init verify-work "${PHASE_ARG}")
34
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
35
+ AGENT_SKILLS_PLANNER=$(node "./.claude/framework/bin/tools.cjs" agent-skills planner 2>/dev/null)
36
+ AGENT_SKILLS_CHECKER=$(node "./.claude/framework/bin/tools.cjs" agent-skills checker 2>/dev/null)
37
+ ```
38
+
39
+ Analise o JSON para: `planner_model`, `checker_model`, `commit_docs`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `has_verification`, `uat_path`.
40
+ </step>
41
+
42
+ <step name="check_active_session">
43
+ **Primeiro: Verificar sessões UAT ativas**
44
+
45
+ ```bash
46
+ (find .planning/phases -name "*-UAT.md" -type f 2>/dev/null || true) | head -5
47
+ ```
48
+
49
+ **Se sessões ativas existirem E nenhum $ARGUMENTS fornecido:**
50
+
51
+ Leia o frontmatter de cada arquivo (status, fase) e a seção Teste Atual.
52
+
53
+ Exiba inline:
54
+
55
+ ```
56
+ ## Sessões UAT Ativas
57
+
58
+ | # | Fase | Status | Teste Atual | Progresso |
59
+ |---|------|--------|-------------|-----------|
60
+ | 1 | 04-comments | testing | 3. Responder Comentário | 2/6 |
61
+ | 2 | 05-auth | testing | 1. Formulário de Login | 0/4 |
62
+
63
+ Responda com um número para retomar, ou forneça um número de fase para iniciar nova.
64
+ ```
65
+
66
+ Aguarde a resposta do usuário.
67
+
68
+ - Se o usuário responder com número (1, 2) → Carregue aquele arquivo, vá para `resume_from_file`
69
+ - Se o usuário responder com número de fase → Trate como nova sessão, vá para `create_uat_file`
70
+
71
+ **Se sessões ativas existirem E $ARGUMENTS fornecido:**
72
+
73
+ Verifique se existe sessão para aquela fase. Se sim, ofereça retomar ou reiniciar.
74
+ Se não, continue para `create_uat_file`.
75
+
76
+ **Se nenhuma sessão ativa E nenhum $ARGUMENTS:**
77
+
78
+ ```
79
+ Nenhuma sessão UAT ativa.
80
+
81
+ Forneça um número de fase para iniciar os testes (ex: /verificar-trabalho 4)
82
+ ```
83
+
84
+ **Se nenhuma sessão ativa E $ARGUMENTS fornecido:**
85
+
86
+ Continue para `create_uat_file`.
87
+ </step>
88
+
89
+ <step name="find_summaries">
90
+ **Encontrar o que testar:**
91
+
92
+ Use `phase_dir` do init (ou execute o init se ainda não feito).
93
+
94
+ ```bash
95
+ ls "$phase_dir"/*-SUMMARY.md 2>/dev/null || true
96
+ ```
97
+
98
+ Leia cada SUMMARY.md para extrair entregas testáveis.
99
+ </step>
100
+
101
+ <step name="extract_tests">
102
+ **Extrair entregas testáveis do SUMMARY.md:**
103
+
104
+ Analise por:
105
+ 1. **Realizações** - Funcionalidades/recursos adicionados
106
+ 2. **Mudanças visíveis ao usuário** - UI, fluxos, interações
107
+
108
+ Foque em resultados OBSERVÁVEIS PELO USUÁRIO, não em detalhes de implementação.
109
+
110
+ Para cada entrega, crie um teste:
111
+ - name: Nome breve do teste
112
+ - expected: O que o usuário deveria ver/experimentar (específico, observável)
113
+
114
+ Exemplos:
115
+ - Realização: "Adicionado threading de comentários com aninhamento infinito"
116
+ → Teste: "Responder a um Comentário"
117
+ → Esperado: "Clicar em Responder abre compositor inline abaixo do comentário. Submeter mostra resposta aninhada abaixo do pai com recuo visual."
118
+
119
+ Pule itens internos/não observáveis (refatorações, alterações de tipo, etc.).
120
+
121
+ **Injeção de smoke test de cold-start:**
122
+
123
+ Após extrair os testes dos SUMMARYs, escaneie os arquivos SUMMARY em busca de caminhos de arquivos modificados/criados. Se QUALQUER caminho corresponder a estes padrões:
124
+
125
+ `server.ts`, `server.js`, `app.ts`, `app.js`, `index.ts`, `index.js`, `main.ts`, `main.js`, `database/*`, `db/*`, `seed/*`, `seeds/*`, `migrations/*`, `startup*`, `docker-compose*`, `Dockerfile*`
126
+
127
+ Então **adicione ao início** da lista de testes:
128
+
129
+ - name: "Smoke Test de Cold Start"
130
+ - expected: "Encerre qualquer servidor/serviço em execução. Limpe o estado efêmero (DBs temporários, caches, lock files). Inicie a aplicação do zero. O servidor inicializa sem erros, qualquer seed/migração é concluída, e uma query primária (health check, carregamento da página inicial, ou chamada básica de API) retorna dados ao vivo."
131
+
132
+ Isso captura bugs que só se manifestam em uma inicialização nova — condições de corrida em sequências de inicialização, falhas silenciosas de seed, configuração de ambiente ausente — que passam contra estado quente mas quebram em produção.
133
+ </step>
134
+
135
+ <step name="create_uat_file">
136
+ **Criar arquivo UAT com todos os testes:**
137
+
138
+ ```bash
139
+ mkdir -p "$PHASE_DIR"
140
+ ```
141
+
142
+ Construa a lista de testes a partir das entregas extraídas.
143
+
144
+ Crie o arquivo:
145
+
146
+ ```markdown
147
+ ---
148
+ status: testing
149
+ phase: XX-name
150
+ source: [list of SUMMARY.md files]
151
+ started: [ISO timestamp]
152
+ updated: [ISO timestamp]
153
+ ---
154
+
155
+ ## Current Test
156
+ <!-- OVERWRITE each test - shows where we are -->
157
+
158
+ number: 1
159
+ name: [first test name]
160
+ expected: |
161
+ [what user should observe]
162
+ awaiting: user response
163
+
164
+ ## Tests
165
+
166
+ ### 1. [Test Name]
167
+ expected: [observable behavior]
168
+ result: [pending]
169
+
170
+ ### 2. [Test Name]
171
+ expected: [observable behavior]
172
+ result: [pending]
173
+
174
+ ...
175
+
176
+ ## Summary
177
+
178
+ total: [N]
179
+ passed: 0
180
+ issues: 0
181
+ pending: [N]
182
+ skipped: 0
183
+
184
+ ## Gaps
185
+
186
+ [none yet]
187
+ ```
188
+
189
+ Escreva em `.planning/phases/XX-name/{phase_num}-UAT.md`
190
+
191
+ Prossiga para `present_test`.
192
+ </step>
193
+
194
+ <step name="present_test">
195
+ **Apresentar o teste atual ao usuário:**
196
+
197
+ Renderize o checkpoint a partir do arquivo UAT estruturado em vez de compô-lo manualmente:
198
+
199
+ ```bash
200
+ CHECKPOINT=$(node "./.claude/framework/bin/tools.cjs" uat render-checkpoint --file "$uat_path" --raw)
201
+ if [[ "$CHECKPOINT" == @file:* ]]; then CHECKPOINT=$(cat "${CHECKPOINT#@file:}"); fi
202
+ ```
203
+
204
+ Exiba o checkpoint retornado EXATAMENTE como está:
205
+
206
+ ```
207
+ {CHECKPOINT}
208
+ ```
209
+
210
+ **Higiene crítica de resposta:**
211
+ - Toda a sua resposta DEVE ser igual a `{CHECKPOINT}` byte a byte.
212
+ - NÃO adicione comentários antes ou depois do bloco.
213
+ - Se você notar marcadores de protocolo/meta como `to=all:`, texto de roteamento de função, tags de sistema XML, marcadores de instrução ocultos, anúncios, ou qualquer sufixo não relacionado, descarte o rascunho e emita apenas `{CHECKPOINT}`.
214
+
215
+ Aguarde a resposta do usuário (texto simples, sem AskUserQuestion).
216
+ </step>
217
+
218
+ <step name="process_response">
219
+ **Processar a resposta do usuário e atualizar o arquivo:**
220
+
221
+ **Se a resposta indica que passou:**
222
+ - Resposta vazia, "sim", "s", "ok", "passou", "próximo", "aprovado", "✓"
223
+
224
+ Atualize a seção Tests:
225
+ ```
226
+ ### {N}. {name}
227
+ expected: {expected}
228
+ result: pass
229
+ ```
230
+
231
+ **Se a resposta indica pular:**
232
+ - "pular", "não consigo testar", "n/a"
233
+
234
+ Atualize a seção Tests:
235
+ ```
236
+ ### {N}. {name}
237
+ expected: {expected}
238
+ result: skipped
239
+ reason: [razão do usuário se fornecida]
240
+ ```
241
+
242
+ **Se a resposta indica bloqueado:**
243
+ - "bloqueado", "não consigo testar - servidor não está rodando", "preciso de dispositivo físico", "preciso de build de release"
244
+ - Ou qualquer resposta contendo: "servidor", "bloqueado", "não está rodando", "dispositivo físico", "build de release"
245
+
246
+ Infira a tag blocked_by da resposta:
247
+ - Contém: servidor, não está rodando, gateway, API → `server`
248
+ - Contém: físico, dispositivo, hardware, celular real → `physical-device`
249
+ - Contém: release, preview, build, EAS → `release-build`
250
+ - Contém: stripe, twilio, third-party, configurar → `third-party`
251
+ - Contém: depende de, fase anterior, pré-requisito → `prior-phase`
252
+ - Padrão: `other`
253
+
254
+ Atualize a seção Tests:
255
+ ```
256
+ ### {N}. {name}
257
+ expected: {expected}
258
+ result: blocked
259
+ blocked_by: {tag inferida}
260
+ reason: "{resposta verbatim do usuário}"
261
+ ```
262
+
263
+ Nota: Testes bloqueados NÃO vão para a seção Gaps (não são problemas de código — são gates de pré-requisito).
264
+
265
+ **Se a resposta for qualquer outra coisa:**
266
+ - Trate como descrição de problema
267
+
268
+ Infira a severidade da descrição:
269
+ - Contém: crash, erro, exceção, falha, quebrado, inutilizável → bloqueador
270
+ - Contém: não funciona, errado, ausente, não consigo → major
271
+ - Contém: lento, estranho, fora, menor, pequeno → minor
272
+ - Contém: cor, fonte, espaçamento, alinhamento, visual → cosmético
273
+ - Padrão se não estiver claro: major
274
+
275
+ Atualize a seção Tests:
276
+ ```
277
+ ### {N}. {name}
278
+ expected: {expected}
279
+ result: issue
280
+ reported: "{resposta verbatim do usuário}"
281
+ severity: {inferida}
282
+ ```
283
+
284
+ Adicione à seção Gaps (YAML estruturado para planejar-fase --gaps):
285
+ ```yaml
286
+ - truth: "{comportamento esperado do teste}"
287
+ status: failed
288
+ reason: "User reported: {resposta verbatim do usuário}"
289
+ severity: {inferida}
290
+ test: {N}
291
+ artifacts: [] # Preenchido pelo diagnóstico
292
+ missing: [] # Preenchido pelo diagnóstico
293
+ ```
294
+
295
+ **Após qualquer resposta:**
296
+
297
+ Atualize as contagens do Summary.
298
+ Atualize o timestamp frontmatter.updated.
299
+
300
+ Se houver mais testes → Atualize Teste Atual, vá para `present_test`
301
+ Se não houver mais testes → Vá para `complete_session`
302
+ </step>
303
+
304
+ <step name="resume_from_file">
305
+ **Retomar testes a partir do arquivo UAT:**
306
+
307
+ Leia o arquivo UAT completo.
308
+
309
+ Encontre o primeiro teste com `result: [pending]`.
310
+
311
+ Anuncie:
312
+ ```
313
+ Retomando: UAT da Fase {phase}
314
+ Progresso: {passed + issues + skipped}/{total}
315
+ Problemas encontrados até agora: {issues count}
316
+
317
+ Continuando a partir do Teste {N}...
318
+ ```
319
+
320
+ Atualize a seção Teste Atual com o teste pendente.
321
+ Prossiga para `present_test`.
322
+ </step>
323
+
324
+ <step name="complete_session">
325
+ **Concluir testes e commitar:**
326
+
327
+ **Determinar status final:**
328
+
329
+ Conte os resultados:
330
+ - `pending_count`: testes com `result: [pending]`
331
+ - `blocked_count`: testes com `result: blocked`
332
+ - `skipped_no_reason`: testes com `result: skipped` sem campo `reason`
333
+
334
+ ```
335
+ if pending_count > 0 OR blocked_count > 0 OR skipped_no_reason > 0:
336
+ status: partial
337
+ # Sessão encerrada mas nem todos os testes resolvidos
338
+ else:
339
+ status: complete
340
+ # Todos os testes têm um resultado definitivo (passed, issue, ou skipped-with-reason)
341
+ ```
342
+
343
+ Atualize o frontmatter:
344
+ - status: {status calculado}
345
+ - updated: [agora]
346
+
347
+ Limpe a seção Teste Atual:
348
+ ```
349
+ ## Current Test
350
+
351
+ [testing complete]
352
+ ```
353
+
354
+ Commite o arquivo UAT:
355
+ ```bash
356
+ node "./.claude/framework/bin/tools.cjs" commit "test({phase_num}): complete UAT - {passed} passed, {issues} issues" --files ".planning/phases/XX-name/{phase_num}-UAT.md"
357
+ ```
358
+
359
+ Apresente o resumo:
360
+ ```
361
+ ## UAT Concluído: Fase {phase}
362
+
363
+ | Resultado | Contagem |
364
+ |-----------|----------|
365
+ | Passou | {N} |
366
+ | Problemas | {N} |
367
+ | Pulado | {N} |
368
+
369
+ [Se issues > 0:]
370
+ ### Problemas Encontrados
371
+
372
+ [Lista da seção Issues]
373
+ ```
374
+
375
+ **Se issues > 0:** Prossiga para `diagnose_issues`
376
+
377
+ **Se issues == 0:**
378
+ ```
379
+ Todos os testes passaram. Pronto para continuar.
380
+
381
+ - `/planejar-fase {próxima}` — Planejar próxima fase
382
+ - `/executar-fase {próxima}` — Executar próxima fase
383
+ - `/revisar-ui {fase}` — auditoria de qualidade visual (se arquivos frontend foram modificados)
384
+ ```
385
+ </step>
386
+
387
+ <step name="diagnose_issues">
388
+ **Diagnosticar causas raiz antes de planejar correções:**
389
+
390
+ ```
391
+ ---
392
+
393
+ {N} problemas encontrados. Diagnosticando causas raiz...
394
+
395
+ Spawnando agentes de debug paralelos para investigar cada problema.
396
+ ```
397
+
398
+ - Carregue o workflow diagnose-issues
399
+ - Siga @./.claude/framework/workflows/diagnose-issues.md
400
+ - Spawne agentes de debug paralelos para cada problema
401
+ - Colete causas raiz
402
+ - Atualize UAT.md com as causas raiz
403
+ - Prossiga para `plan_gap_closure`
404
+
405
+ O diagnóstico roda automaticamente — sem prompt ao usuário. Agentes paralelos investigam simultaneamente, então o overhead é mínimo e as correções são mais precisas.
406
+ </step>
407
+
408
+ <step name="plan_gap_closure">
409
+ **Planejar automaticamente as correções a partir das lacunas diagnosticadas:**
410
+
411
+ Exiba:
412
+ ```
413
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
414
+ framework ► PLANEJANDO CORREÇÕES
415
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
416
+
417
+ ◆ Spawnando planejador para fechamento de lacunas...
418
+ ```
419
+
420
+ Spawne planner no modo --gaps:
421
+
422
+ ```
423
+ Task(
424
+ prompt="""
425
+ <planning_context>
426
+
427
+ **Phase:** {phase_number}
428
+ **Mode:** gap_closure
429
+
430
+ <files_to_read>
431
+ - {phase_dir}/{phase_num}-UAT.md (UAT with diagnoses)
432
+ - .planning/STATE.md (Project State)
433
+ - .planning/ROADMAP.md (Roadmap)
434
+ </files_to_read>
435
+
436
+ ${AGENT_SKILLS_PLANNER}
437
+
438
+ </planning_context>
439
+
440
+ <downstream_consumer>
441
+ Output consumed by /execute-phase
442
+ Plans must be executable prompts.
443
+ </downstream_consumer>
444
+ """,
445
+ subagent_type="planner",
446
+ model="{planner_model}",
447
+ description="Plan gap fixes for Phase {phase}"
448
+ )
449
+ ```
450
+
451
+ No retorno:
452
+ - **PLANNING COMPLETE:** Prossiga para `verify_gap_plans`
453
+ - **PLANNING INCONCLUSIVE:** Reporte e ofereça intervenção manual
454
+ </step>
455
+
456
+ <step name="verify_gap_plans">
457
+ **Verificar planos de correção com o checker:**
458
+
459
+ Exiba:
460
+ ```
461
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
462
+ framework ► VERIFICANDO PLANOS DE CORREÇÃO
463
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
464
+
465
+ ◆ Spawnando verificador de planos...
466
+ ```
467
+
468
+ Inicialize: `iteration_count = 1`
469
+
470
+ Spawne plan-checker:
471
+
472
+ ```
473
+ Task(
474
+ prompt="""
475
+ <verification_context>
476
+
477
+ **Phase:** {phase_number}
478
+ **Phase Goal:** Close diagnosed gaps from UAT
479
+
480
+ <files_to_read>
481
+ - {phase_dir}/*-PLAN.md (Plans to verify)
482
+ </files_to_read>
483
+
484
+ ${AGENT_SKILLS_CHECKER}
485
+
486
+ </verification_context>
487
+
488
+ <expected_output>
489
+ Return one of:
490
+ - ## VERIFICATION PASSED — all checks pass
491
+ - ## ISSUES FOUND — structured issue list
492
+ </expected_output>
493
+ """,
494
+ subagent_type="plan-checker",
495
+ model="{checker_model}",
496
+ description="Verify Phase {phase} fix plans"
497
+ )
498
+ ```
499
+
500
+ No retorno:
501
+ - **VERIFICATION PASSED:** Prossiga para `present_ready`
502
+ - **ISSUES FOUND:** Prossiga para `revision_loop`
503
+ </step>
504
+
505
+ <step name="revision_loop">
506
+ **Itere planejador ↔ checker até os planos passarem (máx. 3):**
507
+
508
+ **Se iteration_count < 3:**
509
+
510
+ Exiba: `Enviando de volta ao planejador para revisão... (iteração {N}/3)`
511
+
512
+ Spawne planner com contexto de revisão:
513
+
514
+ ```
515
+ Task(
516
+ prompt="""
517
+ <revision_context>
518
+
519
+ **Phase:** {phase_number}
520
+ **Mode:** revision
521
+
522
+ <files_to_read>
523
+ - {phase_dir}/*-PLAN.md (Existing plans)
524
+ </files_to_read>
525
+
526
+ ${AGENT_SKILLS_PLANNER}
527
+
528
+ **Checker issues:**
529
+ {structured_issues_from_checker}
530
+
531
+ </revision_context>
532
+
533
+ <instructions>
534
+ Read existing PLAN.md files. Make targeted updates to address checker issues.
535
+ Do NOT replan from scratch unless issues are fundamental.
536
+ </instructions>
537
+ """,
538
+ subagent_type="planner",
539
+ model="{planner_model}",
540
+ description="Revise Phase {phase} plans"
541
+ )
542
+ ```
543
+
544
+ Após retorno do planejador → spawne o checker novamente (lógica do verify_gap_plans)
545
+ Incremente iteration_count
546
+
547
+ **Se iteration_count >= 3:**
548
+
549
+ Exiba: `Máximo de iterações atingido. {N} problemas permanecem.`
550
+
551
+ Ofereça opções:
552
+ 1. Forçar prosseguimento (executar apesar dos problemas)
553
+ 2. Fornecer orientação (usuário dá direção, tentar novamente)
554
+ 3. Abandonar (sair, usuário executa /planejar-fase manualmente)
555
+
556
+ Aguarde a resposta do usuário.
557
+ </step>
558
+
559
+ <step name="present_ready">
560
+ **Apresentar conclusão e próximos passos:**
561
+
562
+ ```
563
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
564
+ framework ► CORREÇÕES PRONTAS ✓
565
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
566
+
567
+ **Fase {X}: {Nome}** — {N} lacuna(s) diagnosticada(s), {M} plano(s) de correção criado(s)
568
+
569
+ | Lacuna | Causa Raiz | Plano de Correção |
570
+ |--------|------------|-------------------|
571
+ | {verdade 1} | {causa_raiz} | {fase}-04 |
572
+ | {verdade 2} | {causa_raiz} | {fase}-04 |
573
+
574
+ Planos verificados e prontos para execução.
575
+
576
+ ───────────────────────────────────────────────────────────────
577
+
578
+ ## ▶ Próximo Passo
579
+
580
+ **Executar correções** — executar planos de correção
581
+
582
+ `/clear` e depois `/executar-fase {fase} --gaps-only`
583
+
584
+ ───────────────────────────────────────────────────────────────
585
+ ```
586
+ </step>
587
+
588
+ </process>
589
+
590
+ <update_rules>
591
+ **Escritas em lote para eficiência:**
592
+
593
+ Mantenha os resultados em memória. Escreva no arquivo apenas quando:
594
+ 1. **Problema encontrado** — Preserve o problema imediatamente
595
+ 2. **Sessão completa** — Escrita final antes do commit
596
+ 3. **Checkpoint** — A cada 5 testes passados (rede de segurança)
597
+
598
+ | Seção | Regra | Quando Escrito |
599
+ |-------|-------|----------------|
600
+ | Frontmatter.status | SOBRESCREVER | Início, conclusão |
601
+ | Frontmatter.updated | SOBRESCREVER | Em qualquer escrita de arquivo |
602
+ | Teste Atual | SOBRESCREVER | Em qualquer escrita de arquivo |
603
+ | Tests.{N}.result | SOBRESCREVER | Em qualquer escrita de arquivo |
604
+ | Summary | SOBRESCREVER | Em qualquer escrita de arquivo |
605
+ | Gaps | ADICIONAR | Quando problema encontrado |
606
+
607
+ Em reset de contexto: Arquivo mostra o último checkpoint. Retome a partir daí.
608
+ </update_rules>
609
+
610
+ <severity_inference>
611
+ **Infira a severidade da linguagem natural do usuário:**
612
+
613
+ | O usuário diz | Inferir |
614
+ |---------------|---------|
615
+ | "crash", "erro", "exceção", "falha completamente" | bloqueador |
616
+ | "não funciona", "nada acontece", "comportamento errado" | major |
617
+ | "funciona mas...", "lento", "estranho", "problema menor" | minor |
618
+ | "cor", "espaçamento", "alinhamento", "parece errado" | cosmético |
619
+
620
+ Padrão para **major** se não estiver claro. O usuário pode corrigir se necessário.
621
+
622
+ **Nunca pergunte "qual é a severidade disto?"** - apenas infira e continue.
623
+ </severity_inference>
624
+
625
+ <success_criteria>
626
+ - [ ] Arquivo UAT criado com todos os testes do SUMMARY.md
627
+ - [ ] Testes apresentados um por vez com comportamento esperado
628
+ - [ ] Respostas do usuário processadas como passou/problema/pulado
629
+ - [ ] Severidade inferida a partir da descrição (nunca perguntada)
630
+ - [ ] Escritas em lote: no problema, a cada 5 testes passados, ou na conclusão
631
+ - [ ] Commitado na conclusão
632
+ - [ ] Se problemas: agentes de debug paralelos diagnosticam causas raiz
633
+ - [ ] Se problemas: planner cria planos de correção (modo gap_closure)
634
+ - [ ] Se problemas: plan-checker verifica os planos de correção
635
+ - [ ] Se problemas: loop de revisão até os planos passarem (máx. 3 iterações)
636
+ - [ ] Pronto para `/executar-fase --gaps-only` quando concluído
637
+ </success_criteria>