atlas-workflow 0.8.2

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 (197) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +235 -0
  3. package/VERSION +1 -0
  4. package/build/cli/atlas-init.mjs +590 -0
  5. package/hosts/opencode/.opencode/agents/atlas-direct-execute.md +31 -0
  6. package/hosts/opencode/.opencode/agents/atlas-findings-repair.md +35 -0
  7. package/hosts/opencode/.opencode/agents/atlas-plan-execute.md +33 -0
  8. package/hosts/opencode/.opencode/agents/atlas-slice-review.md +27 -0
  9. package/hosts/opencode/.opencode/agents/atlas-task-validator.md +121 -0
  10. package/hosts/opencode/.opencode/atlas/VERSION +1 -0
  11. package/hosts/opencode/.opencode/atlas/orchestrator/README.md +261 -0
  12. package/hosts/opencode/.opencode/atlas/orchestrator/commands/workflow.md +37 -0
  13. package/hosts/opencode/.opencode/atlas/orchestrator/defaults/paths.md +21 -0
  14. package/hosts/opencode/.opencode/atlas/orchestrator/references/host-adapters.md +104 -0
  15. package/hosts/opencode/.opencode/atlas/orchestrator/references/qa_s13_matrix.md +141 -0
  16. package/hosts/opencode/.opencode/atlas/orchestrator/references/subagent_dispatch.md +42 -0
  17. package/hosts/opencode/.opencode/atlas/orchestrator/skills/atlas-workflow-orchestrator/SKILL.md +412 -0
  18. package/hosts/opencode/.opencode/atlas/packages/mcp-server/README.md +28 -0
  19. package/hosts/opencode/.opencode/atlas/packages/mcp-server/package.json +15 -0
  20. package/hosts/opencode/.opencode/atlas/packages/mcp-server/server.js +3076 -0
  21. package/hosts/opencode/.opencode/atlas/packages/templates/BACKLOG_MESTRE_TEMPLATE.md +844 -0
  22. package/hosts/opencode/.opencode/atlas/packages/templates/BOUNDARY_PRD_PLAN.md +93 -0
  23. package/hosts/opencode/.opencode/atlas/packages/templates/PERGUNTAS_EM_ABERTO_TEMPLATE.md +139 -0
  24. package/hosts/opencode/.opencode/atlas/packages/templates/PLAN_TEMPLATE.md +146 -0
  25. package/hosts/opencode/.opencode/atlas/packages/templates/PRD_TEMPLATE.md +149 -0
  26. package/hosts/opencode/.opencode/atlas/packages/templates/STATE_FILE_SCHEMA.md +32 -0
  27. package/hosts/opencode/.opencode/skills/atlas-backlog-generator/SKILL.md +88 -0
  28. package/hosts/opencode/.opencode/skills/atlas-backlog-generator/agents/openai.yaml +4 -0
  29. package/hosts/opencode/.opencode/skills/atlas-direct-execute/SKILL.md +186 -0
  30. package/hosts/opencode/.opencode/skills/atlas-direct-execute/agents/openai.yaml +7 -0
  31. package/hosts/opencode/.opencode/skills/atlas-findings-repair/SKILL.md +148 -0
  32. package/hosts/opencode/.opencode/skills/atlas-findings-repair/agents/openai.yaml +7 -0
  33. package/hosts/opencode/.opencode/skills/atlas-plan-execute/SKILL.md +129 -0
  34. package/hosts/opencode/.opencode/skills/atlas-plan-execute/agents/openai.yaml +7 -0
  35. package/hosts/opencode/.opencode/skills/atlas-plan-execute/references/plan-contract.md +88 -0
  36. package/hosts/opencode/.opencode/skills/atlas-plan-execute/references/quality-gates.md +60 -0
  37. package/hosts/opencode/.opencode/skills/atlas-plan-execute/scripts/check_budget_state.py +96 -0
  38. package/hosts/opencode/.opencode/skills/atlas-plan-execute/scripts/extract_plan_contract.py +191 -0
  39. package/hosts/opencode/.opencode/skills/atlas-plan-execute/scripts/validate_gate_result.py +56 -0
  40. package/hosts/opencode/.opencode/skills/atlas-plan-handoff/SKILL.md +181 -0
  41. package/hosts/opencode/.opencode/skills/atlas-plan-handoff/agents/openai.yaml +7 -0
  42. package/hosts/opencode/.opencode/skills/atlas-prd-interview/SKILL.md +77 -0
  43. package/hosts/opencode/.opencode/skills/atlas-prd-interview/agents/openai.yaml +7 -0
  44. package/hosts/opencode/.opencode/skills/atlas-slice-review/SKILL.md +121 -0
  45. package/hosts/opencode/.opencode/skills/atlas-slice-review/agents/openai.yaml +4 -0
  46. package/hosts/opencode/.opencode/skills/atlas-slice-review/references/review-contract.md +58 -0
  47. package/hosts/opencode/.opencode/skills/atlas-slice-review/references/scenario-lenses.md +49 -0
  48. package/hosts/opencode/.opencode/skills/atlas-slice-review/scripts/classify_findings.py +56 -0
  49. package/hosts/opencode/.opencode/skills/atlas-slice-review/scripts/extract_review_slice.py +158 -0
  50. package/hosts/opencode/.opencode/skills/atlas-sprint-prd-generator/SKILL.md +74 -0
  51. package/hosts/opencode/.opencode/skills/atlas-sprint-prd-generator/agents/openai.yaml +7 -0
  52. package/hosts/opencode/.opencode/skills/atlas-task-validator/SKILL.md +158 -0
  53. package/hosts/opencode/.opencode/skills/atlas-task-validator/agents/openai.yaml +7 -0
  54. package/hosts/opencode/.opencode/skills/atlas-workflow-orchestrator/SKILL.md +412 -0
  55. package/hosts/opencode/opencode.json +13 -0
  56. package/hosts/pi/.mcp.json +11 -0
  57. package/hosts/pi/.pi/agents/atlas-direct-execute.md +218 -0
  58. package/hosts/pi/.pi/agents/atlas-findings-repair.md +184 -0
  59. package/hosts/pi/.pi/agents/atlas-plan-execute.md +163 -0
  60. package/hosts/pi/.pi/agents/atlas-slice-review.md +149 -0
  61. package/hosts/pi/.pi/agents/atlas-task-validator.md +121 -0
  62. package/hosts/pi/atlas/VERSION +1 -0
  63. package/hosts/pi/atlas/orchestrator/README.md +261 -0
  64. package/hosts/pi/atlas/orchestrator/commands/workflow.md +37 -0
  65. package/hosts/pi/atlas/orchestrator/defaults/paths.md +21 -0
  66. package/hosts/pi/atlas/orchestrator/references/host-adapters.md +104 -0
  67. package/hosts/pi/atlas/orchestrator/references/qa_s13_matrix.md +141 -0
  68. package/hosts/pi/atlas/orchestrator/references/subagent_dispatch.md +42 -0
  69. package/hosts/pi/atlas/orchestrator/skills/atlas-workflow-orchestrator/SKILL.md +412 -0
  70. package/hosts/pi/atlas/packages/mcp-server/README.md +28 -0
  71. package/hosts/pi/atlas/packages/mcp-server/package.json +15 -0
  72. package/hosts/pi/atlas/packages/mcp-server/server.js +3076 -0
  73. package/hosts/pi/atlas/packages/templates/BACKLOG_MESTRE_TEMPLATE.md +844 -0
  74. package/hosts/pi/atlas/packages/templates/BOUNDARY_PRD_PLAN.md +93 -0
  75. package/hosts/pi/atlas/packages/templates/PERGUNTAS_EM_ABERTO_TEMPLATE.md +139 -0
  76. package/hosts/pi/atlas/packages/templates/PLAN_TEMPLATE.md +146 -0
  77. package/hosts/pi/atlas/packages/templates/PRD_TEMPLATE.md +149 -0
  78. package/hosts/pi/atlas/packages/templates/STATE_FILE_SCHEMA.md +32 -0
  79. package/hosts/pi/skills/atlas-backlog-generator/SKILL.md +88 -0
  80. package/hosts/pi/skills/atlas-backlog-generator/agents/openai.yaml +4 -0
  81. package/hosts/pi/skills/atlas-direct-execute/SKILL.md +186 -0
  82. package/hosts/pi/skills/atlas-direct-execute/agents/openai.yaml +7 -0
  83. package/hosts/pi/skills/atlas-findings-repair/SKILL.md +148 -0
  84. package/hosts/pi/skills/atlas-findings-repair/agents/openai.yaml +7 -0
  85. package/hosts/pi/skills/atlas-plan-execute/SKILL.md +129 -0
  86. package/hosts/pi/skills/atlas-plan-execute/agents/openai.yaml +7 -0
  87. package/hosts/pi/skills/atlas-plan-execute/references/plan-contract.md +88 -0
  88. package/hosts/pi/skills/atlas-plan-execute/references/quality-gates.md +60 -0
  89. package/hosts/pi/skills/atlas-plan-execute/scripts/check_budget_state.py +96 -0
  90. package/hosts/pi/skills/atlas-plan-execute/scripts/extract_plan_contract.py +191 -0
  91. package/hosts/pi/skills/atlas-plan-execute/scripts/validate_gate_result.py +56 -0
  92. package/hosts/pi/skills/atlas-plan-handoff/SKILL.md +181 -0
  93. package/hosts/pi/skills/atlas-plan-handoff/agents/openai.yaml +7 -0
  94. package/hosts/pi/skills/atlas-prd-interview/SKILL.md +77 -0
  95. package/hosts/pi/skills/atlas-prd-interview/agents/openai.yaml +7 -0
  96. package/hosts/pi/skills/atlas-slice-review/SKILL.md +121 -0
  97. package/hosts/pi/skills/atlas-slice-review/agents/openai.yaml +4 -0
  98. package/hosts/pi/skills/atlas-slice-review/references/review-contract.md +58 -0
  99. package/hosts/pi/skills/atlas-slice-review/references/scenario-lenses.md +49 -0
  100. package/hosts/pi/skills/atlas-slice-review/scripts/classify_findings.py +56 -0
  101. package/hosts/pi/skills/atlas-slice-review/scripts/extract_review_slice.py +158 -0
  102. package/hosts/pi/skills/atlas-sprint-prd-generator/SKILL.md +74 -0
  103. package/hosts/pi/skills/atlas-sprint-prd-generator/agents/openai.yaml +7 -0
  104. package/hosts/pi/skills/atlas-task-validator/SKILL.md +158 -0
  105. package/hosts/pi/skills/atlas-task-validator/agents/openai.yaml +7 -0
  106. package/hosts/pi/skills/atlas-workflow-orchestrator/SKILL.md +412 -0
  107. package/package.json +17 -0
  108. package/plugins/atlas-workflow-orchestrator/.codex/agents/atlas-direct-execute.toml +3 -0
  109. package/plugins/atlas-workflow-orchestrator/.codex/agents/atlas-findings-repair.toml +3 -0
  110. package/plugins/atlas-workflow-orchestrator/.codex/agents/atlas-plan-execute.toml +3 -0
  111. package/plugins/atlas-workflow-orchestrator/.codex/agents/atlas-slice-review.toml +3 -0
  112. package/plugins/atlas-workflow-orchestrator/.codex/agents/atlas-task-validator.toml +5 -0
  113. package/plugins/atlas-workflow-orchestrator/.codex-plugin/plugin.json +37 -0
  114. package/plugins/atlas-workflow-orchestrator/.mcp.json +12 -0
  115. package/plugins/atlas-workflow-orchestrator/VERSION +1 -0
  116. package/plugins/atlas-workflow-orchestrator/agents/atlas-direct-execute.md +31 -0
  117. package/plugins/atlas-workflow-orchestrator/agents/atlas-findings-repair.md +35 -0
  118. package/plugins/atlas-workflow-orchestrator/agents/atlas-plan-execute.md +33 -0
  119. package/plugins/atlas-workflow-orchestrator/agents/atlas-slice-review.md +27 -0
  120. package/plugins/atlas-workflow-orchestrator/agents/atlas-task-validator.md +123 -0
  121. package/plugins/atlas-workflow-orchestrator/orchestrator/README.md +261 -0
  122. package/plugins/atlas-workflow-orchestrator/orchestrator/commands/workflow.md +37 -0
  123. package/plugins/atlas-workflow-orchestrator/orchestrator/defaults/paths.md +21 -0
  124. package/plugins/atlas-workflow-orchestrator/orchestrator/references/host-adapters.md +104 -0
  125. package/plugins/atlas-workflow-orchestrator/orchestrator/references/qa_s13_matrix.md +141 -0
  126. package/plugins/atlas-workflow-orchestrator/orchestrator/references/subagent_dispatch.md +42 -0
  127. package/plugins/atlas-workflow-orchestrator/orchestrator/skills/atlas-workflow-orchestrator/SKILL.md +412 -0
  128. package/plugins/atlas-workflow-orchestrator/packages/mcp-server/README.md +28 -0
  129. package/plugins/atlas-workflow-orchestrator/packages/mcp-server/package.json +15 -0
  130. package/plugins/atlas-workflow-orchestrator/packages/mcp-server/server.js +3076 -0
  131. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-backlog-generator/SKILL.md +88 -0
  132. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-backlog-generator/agents/openai.yaml +4 -0
  133. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-direct-execute/SKILL.md +186 -0
  134. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-direct-execute/agents/openai.yaml +7 -0
  135. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-findings-repair/SKILL.md +148 -0
  136. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-findings-repair/agents/openai.yaml +7 -0
  137. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-plan-execute/SKILL.md +129 -0
  138. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-plan-execute/agents/openai.yaml +7 -0
  139. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-plan-execute/references/plan-contract.md +88 -0
  140. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-plan-execute/references/quality-gates.md +60 -0
  141. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-plan-execute/scripts/check_budget_state.py +96 -0
  142. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-plan-execute/scripts/extract_plan_contract.py +191 -0
  143. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-plan-execute/scripts/validate_gate_result.py +56 -0
  144. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-plan-handoff/SKILL.md +181 -0
  145. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-plan-handoff/agents/openai.yaml +7 -0
  146. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-prd-interview/SKILL.md +77 -0
  147. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-prd-interview/agents/openai.yaml +7 -0
  148. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-slice-review/SKILL.md +121 -0
  149. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-slice-review/agents/openai.yaml +4 -0
  150. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-slice-review/references/review-contract.md +58 -0
  151. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-slice-review/references/scenario-lenses.md +49 -0
  152. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-slice-review/scripts/classify_findings.py +56 -0
  153. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-slice-review/scripts/extract_review_slice.py +158 -0
  154. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-sprint-prd-generator/SKILL.md +74 -0
  155. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-sprint-prd-generator/agents/openai.yaml +7 -0
  156. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-task-validator/SKILL.md +158 -0
  157. package/plugins/atlas-workflow-orchestrator/packages/skills/atlas-task-validator/agents/openai.yaml +7 -0
  158. package/plugins/atlas-workflow-orchestrator/packages/templates/BACKLOG_MESTRE_TEMPLATE.md +844 -0
  159. package/plugins/atlas-workflow-orchestrator/packages/templates/BOUNDARY_PRD_PLAN.md +93 -0
  160. package/plugins/atlas-workflow-orchestrator/packages/templates/PERGUNTAS_EM_ABERTO_TEMPLATE.md +139 -0
  161. package/plugins/atlas-workflow-orchestrator/packages/templates/PLAN_TEMPLATE.md +146 -0
  162. package/plugins/atlas-workflow-orchestrator/packages/templates/PRD_TEMPLATE.md +149 -0
  163. package/plugins/atlas-workflow-orchestrator/packages/templates/STATE_FILE_SCHEMA.md +32 -0
  164. package/plugins/atlas-workflow-orchestrator/skills/atlas-backlog-generator/SKILL.md +88 -0
  165. package/plugins/atlas-workflow-orchestrator/skills/atlas-backlog-generator/agents/openai.yaml +4 -0
  166. package/plugins/atlas-workflow-orchestrator/skills/atlas-direct-execute/SKILL.md +186 -0
  167. package/plugins/atlas-workflow-orchestrator/skills/atlas-direct-execute/agents/openai.yaml +7 -0
  168. package/plugins/atlas-workflow-orchestrator/skills/atlas-findings-repair/SKILL.md +148 -0
  169. package/plugins/atlas-workflow-orchestrator/skills/atlas-findings-repair/agents/openai.yaml +7 -0
  170. package/plugins/atlas-workflow-orchestrator/skills/atlas-plan-execute/SKILL.md +129 -0
  171. package/plugins/atlas-workflow-orchestrator/skills/atlas-plan-execute/agents/openai.yaml +7 -0
  172. package/plugins/atlas-workflow-orchestrator/skills/atlas-plan-execute/references/plan-contract.md +88 -0
  173. package/plugins/atlas-workflow-orchestrator/skills/atlas-plan-execute/references/quality-gates.md +60 -0
  174. package/plugins/atlas-workflow-orchestrator/skills/atlas-plan-execute/scripts/check_budget_state.py +96 -0
  175. package/plugins/atlas-workflow-orchestrator/skills/atlas-plan-execute/scripts/extract_plan_contract.py +191 -0
  176. package/plugins/atlas-workflow-orchestrator/skills/atlas-plan-execute/scripts/validate_gate_result.py +56 -0
  177. package/plugins/atlas-workflow-orchestrator/skills/atlas-plan-handoff/SKILL.md +181 -0
  178. package/plugins/atlas-workflow-orchestrator/skills/atlas-plan-handoff/agents/openai.yaml +7 -0
  179. package/plugins/atlas-workflow-orchestrator/skills/atlas-prd-interview/SKILL.md +77 -0
  180. package/plugins/atlas-workflow-orchestrator/skills/atlas-prd-interview/agents/openai.yaml +7 -0
  181. package/plugins/atlas-workflow-orchestrator/skills/atlas-slice-review/SKILL.md +121 -0
  182. package/plugins/atlas-workflow-orchestrator/skills/atlas-slice-review/agents/openai.yaml +4 -0
  183. package/plugins/atlas-workflow-orchestrator/skills/atlas-slice-review/references/review-contract.md +58 -0
  184. package/plugins/atlas-workflow-orchestrator/skills/atlas-slice-review/references/scenario-lenses.md +49 -0
  185. package/plugins/atlas-workflow-orchestrator/skills/atlas-slice-review/scripts/classify_findings.py +56 -0
  186. package/plugins/atlas-workflow-orchestrator/skills/atlas-slice-review/scripts/extract_review_slice.py +158 -0
  187. package/plugins/atlas-workflow-orchestrator/skills/atlas-sprint-prd-generator/SKILL.md +74 -0
  188. package/plugins/atlas-workflow-orchestrator/skills/atlas-sprint-prd-generator/agents/openai.yaml +7 -0
  189. package/plugins/atlas-workflow-orchestrator/skills/atlas-task-validator/SKILL.md +158 -0
  190. package/plugins/atlas-workflow-orchestrator/skills/atlas-task-validator/agents/openai.yaml +7 -0
  191. package/plugins/atlas-workflow-orchestrator/skills/atlas-workflow-orchestrator/SKILL.md +412 -0
  192. package/plugins/atlas-workflow-orchestrator/templates/BACKLOG_MESTRE_TEMPLATE.md +844 -0
  193. package/plugins/atlas-workflow-orchestrator/templates/BOUNDARY_PRD_PLAN.md +93 -0
  194. package/plugins/atlas-workflow-orchestrator/templates/PERGUNTAS_EM_ABERTO_TEMPLATE.md +139 -0
  195. package/plugins/atlas-workflow-orchestrator/templates/PLAN_TEMPLATE.md +146 -0
  196. package/plugins/atlas-workflow-orchestrator/templates/PRD_TEMPLATE.md +149 -0
  197. package/plugins/atlas-workflow-orchestrator/templates/STATE_FILE_SCHEMA.md +32 -0
@@ -0,0 +1,77 @@
1
+ ---
2
+ name: atlas-prd-interview
3
+ description: Skill `atlas-prd-interview`. Use quando o usuário quer validar, interrogar ou amadurecer um PRD antes do planejamento ou implementação. Esta skill lê o PRD, cruza-o com código e contratos, detecta ambiguidades/discrepâncias, faz perguntas de múltipla escolha e para quando não restam gaps bloqueadores.
4
+ ---
5
+
6
+ # PRD Interview (Atlas)
7
+
8
+ Valide maturidade de PRD por entrevista guiada antes do planejamento ou implementação técnica. Não gere o PRD do zero. Não avance para o planejamento enquanto houver bloqueadores ativos (`❌`).
9
+
10
+ ## Resolução Canônica de Templates
11
+
12
+ * Fonte única: `packages/templates/` empacotado no plugin Atlas Workflow.
13
+ * Antes da entrevista, resolver `PRD_TEMPLATE.md` a partir da raiz do plugin/bundle.
14
+ * Template local do repo consumidor nunca sobrepõe o template empacotado.
15
+ * Se `packages/templates/PRD_TEMPLATE.md` não existir, abortar com erro claro: `Template canônico ausente: PRD_TEMPLATE.md`.
16
+ * Não usar fallback silencioso para cópias antigas, vault local ou templates globais.
17
+
18
+ ---
19
+
20
+ ## Escopo da Skill
21
+
22
+ Ataque principalmente as seguintes seções do template de PRD:
23
+ * **§3 Decisões de produto (fechadas)**
24
+ * **§4 Fluxos e cenários UX**
25
+ * **§5 Contrato funcional e invariantes** (regras de negócio + contrato de dados)
26
+ * **§6 Critérios de aceite (negócio)**
27
+
28
+ ---
29
+
30
+ ## Workflow Obrigatório
31
+
32
+ 1. **Leitura e Inspecção:** Leia o PRD e cruze com o código do repositório para verificar discrepâncias físicas reais (se componentes, rotas e APIs descritos batem com a codebase).
33
+ 2. **Mapeamento de Gaps:** Classifique cada lacuna como:
34
+ * `✅` **Completo:** Decisão suficiente e verificável.
35
+ * `⚠️` **Pendente:** Falta detalhe de negócio que pode ser resolvido depois (não-bloqueante).
36
+ * `❌` **Bloqueador:** Ambiguidade, conflito com o código ou falta de fluxo de UX crítico que impede o planejamento de engenharia.
37
+
38
+ **Mapeamento por Seções (Novo Template):**
39
+ * **§3 Decisões de produto (fechadas):** `❌` se faltar decisão que altere fluxo principal, mappers, roteamento ou comportamento crítico.
40
+ * **§4 Fluxos e cenários UX:** `❌` se impactar o fluxo principal e faltarem os caminhos de loading, erro, vazio ou permissões.
41
+ * **§5 Contrato funcional e invariantes:** `❌` se campos críticos não possuírem regras de formato (ex: decimais) ou se a regra de negócio for ambígua/impossível de verificar na codebase.
42
+ * **§6 Critérios de aceite (negócio):** `❌` se o critério for subjetivo, não observável ou não testável.
43
+
44
+ 3. **Perguntas por Rodada (AskUserQuestion):** Formule rodadas de no máximo 4 perguntas concisas via ferramenta nativa `AskUserQuestion`, com exatamente 3 opções e indicando a recomendada. **Pare o turno e aguarde a resposta.**
45
+ 4. **Veredito Final:** Só emita o veredito de `Pronto para planejamento` quando zerar todos os `❌`.
46
+
47
+ ---
48
+
49
+ ## Índice Provisório (fim de cada rodada)
50
+
51
+ ```text
52
+ §3 Decisões: ✅/⚠️/❌
53
+ §4 Experiência: ✅/⚠️/❌
54
+ §5 Contrato+inv: ✅/⚠️/❌
55
+ §6 Aceite: ✅/⚠️/❌
56
+ ```
57
+
58
+ ---
59
+
60
+ ## Uso standalone vs protocolo interno no workflow (PRD D10/D11)
61
+
62
+ Esta skill é de **autoria documental** (maturar um PRD). A fronteira de determinismo do Atlas é a **mutação de código** (PRD D10): como esta skill não muta código, **autoria é livre, execução é gateada**.
63
+
64
+ ### (a) Uso standalone permitido
65
+
66
+ Você pode invocar `atlas-prd-interview` diretamente, fora do pipeline, para amadurecer um PRD. Não há restrição: autoria documental não muta o produto. O artefato resultante (`PRD_*.md`) é livre para existir e ser editado.
67
+
68
+ ### (b) O artefato NÃO é confiável só por existir
69
+
70
+ Um PRD amadurecido standalone **não vale como gate aprovado** pelo simples fato de existir. Ao entrar em execução (modos `full`/`direct`/`execute`), ele é **re-gateado obrigatoriamente** por `atlas_verify_artifact` + `atlas_verify_template_conformance` (TC). PRD velho, manual ou inválido **trava na entrada da execução**, não na autoria. Esta skill não emite veredito de execução nem declara o PRD "pronto para implementar de forma determinística".
71
+
72
+ ### (c) Standalone vs protocolo interno no workflow
73
+
74
+ - **Standalone:** o usuário conduz a skill diretamente; o produto é o PRD maturado, sujeito a re-validação posterior.
75
+ - **No workflow:** quem conduz a fase de PRD é o **orquestrador principal** (agente principal), que decide quando entrevistar (scan de ambiguidade / `--interview`) e roda os gates MCP do pipeline. A skill é a mesma; o que muda é quem orquestra e os gates que cercam a fase.
76
+
77
+ > **Invariante:** autoria é livre, execução é gateada. Um PRD só vira confiável para execução após `atlas_verify_artifact` + TC na entrada (PRD D11).
@@ -0,0 +1,7 @@
1
+ interface:
2
+ display_name: "Atlas PRD Interview"
3
+ short_description: "Entrevista e saneia ambiguidades de PRD"
4
+ default_prompt: "Use $atlas-prd-interview para validar este PRD, cruzar com o código e fechar ambiguidades críticas em rodadas curtas de múltipla escolha."
5
+
6
+ policy:
7
+ allow_implicit_invocation: true
@@ -0,0 +1,121 @@
1
+ ---
2
+ name: atlas-slice-review
3
+ description: Skill `atlas-slice-review`. Revisa uma slice implementada após `atlas-plan-execute`, usando o plano (`atlas-plan-handoff`), invariantes e código tocado como contrato. Revisão fria focada na slice — regressões ocultas, gaps de lógica, cenários em falta, riscos de segurança, violações arquiteturais e testes em falta.
4
+ ---
5
+
6
+ # Atlas Slice Review
7
+
8
+ Use this skill only when `--review` is present after `atlas-plan-execute` or any equivalent implementation pass has finished a specific plan slice.
9
+
10
+ Review only the slice that was executed. Do not widen into a generic repo audit unless the user explicitly asks for that.
11
+
12
+ ## Invocation gate
13
+
14
+ `--review` is the only automatic dispatch condition. Do not auto-trigger from heuristics, diff size, risk level, or validator observations. If `--review` is absent, report that external review was skipped by contract.
15
+
16
+ ## Uso standalone — rótulo de garantia reduzida obrigatório (PRD D10/D11)
17
+
18
+ Esta skill é **análise de leitura**: revisa código, **não muta código**. Pela fronteira de determinismo do Atlas (mutação de código, PRD D10), leitura standalone é **permitida**, mas carrega **risco epistêmico** — a análise não passou pela defesa fria do pipeline (`atlas-task-validator`, que é pipeline-only, só `state_path`). Esse risco é mitigado por **rótulo**, não por gate.
19
+
20
+ **Regra dura:** quando `atlas-slice-review` roda **fora do pipeline** (sem o `atlas-task-validator` ter fechado a slice via state file), a saída **SEMPRE** sai rotulada como garantia reduzida. É **proibido** simular `validator_status: passed` ou qualquer veredito de validação aprovado — a review é leitura, não validação fria.
21
+
22
+ ### Formato exato do rótulo (obrigatório no topo da saída standalone)
23
+
24
+ ```text
25
+ guarantee_level: reduced_standalone
26
+ validator_status: not_run (sem validator-closed)
27
+ scope: standalone
28
+ ```
29
+
30
+ - `guarantee_level: reduced_standalone` — enum fixo (PRD D12); nunca `full_pipeline` em uso standalone.
31
+ - `validator_status: not_run (sem validator-closed)` — declara explicitamente que a defesa fria não rodou. **Proibido** escrever `passed`/`pass`.
32
+ - `scope: standalone` — marca que a review não está ancorada num state file de pipeline.
33
+
34
+ Quando a review roda **dentro do pipeline** (despachada pelo orquestrador após o validator frio fechar a slice), o nível de garantia da slice vem do pipeline (`full_pipeline`) e este rótulo de redução **não** se aplica — mas a própria review continua sendo leitura e nunca emite veredito de validador.
35
+
36
+ > **Invariante:** uma análise de leitura standalone nunca se declara fechada por validação; sai rotulada `reduced_standalone` e jamais simula `validator_status: passed` (PRD D10/D11, fecha Q-08).
37
+
38
+ ## State persistence
39
+
40
+ Use `atlas_run_state` as the primary source for run state, dispatch status, and validator status. Do not read or write run ledger files directly. If MCP state is unavailable, block the review rather than accepting a local file fallback.
41
+
42
+ ---
43
+
44
+ ## Review Contract
45
+
46
+ Base the review on three inputs:
47
+ 1. **The plan artifact** produced by `atlas-plan-handoff` (Section 2 - Invariantes, Section 6 - Contratos, Section 8 - Validação).
48
+ 2. **The executed task ids** or slice boundaries.
49
+ 3. **The real code** touched by the implementation.
50
+
51
+ ---
52
+
53
+ ## Required Workflow
54
+
55
+ ### 1. Build the slice boundary first
56
+ Before reviewing code, identify:
57
+ * diff physical boundary (`git diff --name-only main...HEAD`).
58
+ * Section 2 - Invariants of Execution (contract).
59
+ * Section 6 - Technical Contracts (signatures and shapes).
60
+ * Section 8 - Validation and Checklist (QA criteria).
61
+ * touch files expected vs actual.
62
+ * resolved conflicts and permission matrices that apply.
63
+
64
+ If the diff and the plan disagree materially, call that out as a structural finding or blocker. Do not silently review an invented scope.
65
+
66
+ ### 2. Review in code-review mode, not implementation mode
67
+ This skill is not for fixing code first. It is for finding problems first.
68
+ Look for:
69
+ * behavioral regressions introduced by the slice.
70
+ * hidden logic gaps or missing business scenarios.
71
+ * state-transition bugs and view/store mismatches.
72
+ * security or privacy issues.
73
+ * contract drift from the plan.
74
+ * validation and tests gaps.
75
+
76
+ ### 3. Use the plan to hunt missing scenarios
77
+ For each executed task, compare: stated objective, expected change, invariants preserved, and done criteria with real code.
78
+ Ask what the implementation forgot:
79
+ * **State & orquestration:** transition states reativity (loading, success, empty, error), rapid triggers concurency, setup/cleanup symmetry, async stale.
80
+ * **Business rules:** negative paths, closed decisions, fallsback that weaken invariants.
81
+ * **View & rendering:** inputs empty, null, partial, out of order, UI permission conditional.
82
+ * **Contracts:** shape drift, enums, mappers, RLS server-side, i18n parity.
83
+
84
+ ### 4. Distinguish current-diff findings from pre-existing issues
85
+ Prefer findings attributable to the executed slice. Mark pre-existing issues as observations or separate notes to keep signals clean and actionable.
86
+
87
+ ### 5. Output Expectations
88
+
89
+ Return exactly this structure:
90
+
91
+ ```markdown
92
+ ## Findings
93
+
94
+ ### P0 - <short title>
95
+ - **Slice/Task:** T0N
96
+ - **Por que importa:** [impacto real]
97
+ - **Arquivo:** `relative/path.ext:line`
98
+ - **Modo de falha:** [o que quebra e como]
99
+ - **Evidência:** [o que suporta o finding]
100
+
101
+ ### P1 - <short title>
102
+ [same shape]
103
+
104
+ ### P2 - <short title>
105
+ [same shape]
106
+
107
+ ### P3 - <short title>
108
+ [same shape]
109
+
110
+ ---
111
+
112
+ ## Perguntas Abertas ou Suposições
113
+ [questões que precisam de confirmação antes de agir nos findings]
114
+
115
+ ---
116
+
117
+ ## Resumo da Slice
118
+ [breve — o que foi bem implementado, o que precisa atenção, se a slice pode ser considerada fechada]
119
+ ```
120
+
121
+ Do not add extra sections or narrative conclusions.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Atlas Slice Review"
3
+ short_description: "Slice-focused post-plan review gate (atlas-slice-review)"
4
+ default_prompt: "Use $atlas-slice-review to review the executed plan slice for hidden regressions, logic gaps, missing scenarios, security risks, and test omissions."
@@ -0,0 +1,58 @@
1
+ # Review Contract
2
+
3
+ This skill assumes the implementation was guided by a plan with task-level structure close to `atlas-plan-handoff`.
4
+
5
+ ## Minimum expected inputs
6
+
7
+ - the plan artifact
8
+ - the executed task ids or a clearly described slice
9
+ - the real changed files or diff
10
+
11
+ The plan should also expose execution metadata:
12
+
13
+ - `Plan prefix: atlas`
14
+ - `Execution mode: sequencial (T01→TN)` or `orchestrated-per-slice`
15
+
16
+ ## Minimum expected task fields
17
+
18
+ For each reviewed task, try to recover:
19
+
20
+ - `Objective`
21
+ - `Likely files/modules`
22
+ - `Expected change`
23
+ - `Invariants preserved`
24
+ - `Do not change`
25
+ - `Do not do`
26
+ - `Risks / pitfalls`
27
+ - `Done criteria`
28
+ - `Task-local validation`
29
+ - `Quality gates (recommended)`
30
+ - `Stop and ask if`
31
+
32
+ Recover these plan-level constraints when present:
33
+
34
+ - resolved source conflicts and chosen authority
35
+ - permission or responsibility matrices
36
+ - generated-file, localization, import, route, RPC, or schema constraints
37
+ - explicit final validation gates
38
+
39
+ ## Review scope discipline
40
+
41
+ The review scope is the intersection of:
42
+
43
+ - what the plan asked for
44
+ - what the executor claims to have completed
45
+ - what the diff actually changed
46
+
47
+ If these three disagree, that disagreement is part of the review result.
48
+
49
+ If the implementation chose a path that the plan explicitly rejected, treat it as a contract violation even if the UI appears to work.
50
+
51
+ ## Typical review outcomes
52
+
53
+ - the slice matches the plan and no material findings are present
54
+ - the slice works but missed scenarios, validations, or tests
55
+ - the slice violates a plan invariant or broadens scope incorrectly
56
+ - the slice ignores a resolved source conflict or permission matrix
57
+ - the slice introduced a regression outside the intended task boundary
58
+ - the slice appears correct but validation evidence is too weak to trust closure
@@ -0,0 +1,49 @@
1
+ # Scenario Lenses
2
+
3
+ Use these lenses to find hidden bugs in the executed slice. Apply only the relevant ones.
4
+
5
+ ## State and orchestration
6
+
7
+ - Can the state machine enter a half-updated state?
8
+ - Are loading, success, empty, and error states all representable?
9
+ - What happens on repeated triggers or rapid taps?
10
+ - Is cleanup symmetrical with setup?
11
+ - Can stale async results overwrite newer state?
12
+
13
+ ## Business rules
14
+
15
+ - Which negative path did the plan imply but the code does not implement?
16
+ - Are closed decisions from the plan really enforced?
17
+ - Did the implementation honor the plan's resolved source-of-truth decisions?
18
+ - If roles differ by resource, can any actor mutate a resource the matrix forbids?
19
+ - Is there any fallback that weakens a business invariant?
20
+ - Does the implementation silently infer data that the plan said must be explicit?
21
+
22
+ ## View and rendering
23
+
24
+ - Can the UI render a shape the store never guarantees?
25
+ - Can the store produce a shape the UI does not handle?
26
+ - Are empty, null, partial, and reordered inputs rendered safely?
27
+ - Is user feedback tied to the real pipeline or only to a local shortcut?
28
+
29
+ ## Contracts and integration
30
+
31
+ - Did any field, enum, or payload meaning drift from the plan?
32
+ - Are all relevant consumers updated after a shape change?
33
+ - Does the code assume a backend guarantee that is not actually enforced?
34
+ - Is retry or re-entry behavior still coherent after this slice?
35
+ - Did generated files, localization keys, imports, routes, RPC signatures, or schemas match the verified repo convention?
36
+
37
+ ## Security and safety
38
+
39
+ - Did the slice weaken permission, ownership, or visibility checks?
40
+ - Can an untrusted input reach a sensitive path without validation?
41
+ - Was any auth, session, or cleanup invariant softened?
42
+ - Did logging or observability leak sensitive information?
43
+
44
+ ## Validation and tests
45
+
46
+ - Do the tests cover only the happy path?
47
+ - Which regression would still pass the current tests?
48
+ - Was a required manual check skipped or replaced by weaker evidence?
49
+ - Did the executor claim closure despite an environment-limited validation gap?
@@ -0,0 +1,56 @@
1
+ #!/usr/bin/env python3
2
+ """Normalize raw findings into a severity-oriented review structure."""
3
+
4
+ from __future__ import annotations
5
+
6
+ import argparse
7
+ import json
8
+ import pathlib
9
+ import sys
10
+ from typing import Any
11
+
12
+ SEVERITY_ORDER = {"P0": 0, "P1": 1, "P2": 2, "P3": 3}
13
+
14
+
15
+ def load_findings(path: pathlib.Path) -> list[dict[str, Any]]:
16
+ payload = json.loads(path.read_text(encoding="utf-8"))
17
+ if not isinstance(payload, list):
18
+ raise ValueError("Findings input must be a JSON array")
19
+ return payload
20
+
21
+
22
+ def normalize_finding(finding: dict[str, Any]) -> dict[str, Any]:
23
+ severity = finding.get("severity", "P2")
24
+ if severity not in SEVERITY_ORDER:
25
+ severity = "P2"
26
+ return {
27
+ "severity": severity,
28
+ "task_id": finding.get("task_id", ""),
29
+ "title": finding.get("title", ""),
30
+ "file": finding.get("file", ""),
31
+ "line": finding.get("line"),
32
+ "summary": finding.get("summary", ""),
33
+ "evidence": finding.get("evidence", ""),
34
+ "diff_attributed": bool(finding.get("diff_attributed", True)),
35
+ }
36
+
37
+
38
+ def main() -> int:
39
+ parser = argparse.ArgumentParser(description=__doc__)
40
+ parser.add_argument("findings_json", help="Path to a JSON array of findings")
41
+ args = parser.parse_args()
42
+
43
+ try:
44
+ normalized = [normalize_finding(item) for item in load_findings(pathlib.Path(args.findings_json))]
45
+ except (FileNotFoundError, ValueError, json.JSONDecodeError) as exc:
46
+ sys.stderr.write(f"{exc}\n")
47
+ return 1
48
+
49
+ normalized.sort(key=lambda item: (SEVERITY_ORDER[item["severity"]], item["task_id"], item["file"], item["line"] or 0))
50
+ json.dump(normalized, sys.stdout, indent=2)
51
+ sys.stdout.write("\n")
52
+ return 0
53
+
54
+
55
+ if __name__ == "__main__":
56
+ raise SystemExit(main())
@@ -0,0 +1,158 @@
1
+ #!/usr/bin/env python3
2
+ """Extract the review slice from a atlas-plan-handoff-style markdown artifact."""
3
+
4
+ from __future__ import annotations
5
+
6
+ import argparse
7
+ import json
8
+ import pathlib
9
+ import re
10
+ import sys
11
+ from typing import Any
12
+
13
+ TASK_HEADING_RE = re.compile(r"^####\s+(T\d{2})\.\s+(.*)$")
14
+ FIELD_RE = re.compile(r"^- ([^:]+):\s*(.*)$")
15
+ HEADING_RE = re.compile(r"^(#{1,4})\s+(.*\S)\s*$")
16
+
17
+
18
+ def normalize_heading(text: str) -> str:
19
+ text = re.sub(r"^\d+\.\s*", "", text.strip())
20
+ return re.sub(r"[^a-z0-9]+", "_", text.lower()).strip("_")
21
+
22
+
23
+ def normalize_field(text: str) -> str:
24
+ text = text.strip().strip("*").strip()
25
+ text = re.sub(r"^\d+\.\s*", "", text)
26
+ return re.sub(r"[^a-z0-9]+", "_", text.lower()).strip("_")
27
+
28
+
29
+ def parse_sections(text: str) -> dict[str, list[str]]:
30
+ sections: dict[str, list[str]] = {}
31
+ current_key: str | None = None
32
+ for raw_line in text.splitlines():
33
+ line = raw_line.rstrip()
34
+ heading_match = HEADING_RE.match(line)
35
+ if heading_match:
36
+ current_key = normalize_heading(heading_match.group(2).strip())
37
+ sections.setdefault(current_key, [])
38
+ continue
39
+ if current_key is not None and line.strip():
40
+ sections[current_key].append(line)
41
+ return sections
42
+
43
+
44
+ def first_section(sections: dict[str, list[str]], keys: list[str]) -> list[str]:
45
+ for key in keys:
46
+ if key in sections:
47
+ return sections[key]
48
+ return []
49
+
50
+
51
+ def parse_tasks(text: str) -> list[dict[str, Any]]:
52
+ tasks: list[dict[str, Any]] = []
53
+ current: dict[str, Any] | None = None
54
+ current_field: str | None = None
55
+ for raw_line in text.splitlines():
56
+ line = raw_line.rstrip()
57
+ task_match = TASK_HEADING_RE.match(line)
58
+ if task_match:
59
+ current = {
60
+ "id": task_match.group(1),
61
+ "title": task_match.group(2).strip(),
62
+ "fields": {},
63
+ }
64
+ tasks.append(current)
65
+ current_field = None
66
+ continue
67
+ if current is None:
68
+ continue
69
+ field_match = FIELD_RE.match(line)
70
+ if field_match:
71
+ key = normalize_field(field_match.group(1))
72
+ current["fields"][key] = field_match.group(2).strip().strip("*").strip()
73
+ current_field = key
74
+ continue
75
+ if current_field and line.strip():
76
+ previous = current["fields"].get(current_field, "")
77
+ current["fields"][current_field] = f"{previous}\n{line.strip()}".strip()
78
+ return tasks
79
+
80
+
81
+ def expected_files_for(task: dict[str, Any]) -> str:
82
+ fields = task["fields"]
83
+ for key in ("likely_files/modules", "files", "arquivos_verificados", "arquivos", "m_dulos"):
84
+ value = fields.get(key)
85
+ if value:
86
+ return value
87
+ return ""
88
+
89
+
90
+ def main() -> int:
91
+ parser = argparse.ArgumentParser(description=__doc__)
92
+ parser.add_argument("plan", help="Path to the plan markdown file")
93
+ parser.add_argument("--task-id", action="append", dest="task_ids", default=[], help="Task id to extract, repeatable")
94
+ parser.add_argument("--changed-file", action="append", dest="changed_files", default=[], help="Changed file path, repeatable")
95
+ args = parser.parse_args()
96
+
97
+ text = pathlib.Path(args.plan).read_text(encoding="utf-8")
98
+ sections = parse_sections(text)
99
+ tasks = parse_tasks(text)
100
+ selected = [task for task in tasks if not args.task_ids or task["id"] in args.task_ids]
101
+
102
+ payload = {
103
+ "task_ids": args.task_ids,
104
+ "selected_tasks": selected,
105
+ "changed_files": args.changed_files,
106
+ "expected_files": [expected_files_for(task) for task in selected],
107
+ "execution_metadata": {
108
+ "plan_prefix": "",
109
+ "execution_mode": "",
110
+ },
111
+ "plan_constraints": {
112
+ "rules_and_decisions": first_section(
113
+ sections,
114
+ [
115
+ "project_rules_constraints_and_decisions_already_made",
116
+ "regras_e_restri_es_do_projeto",
117
+ "regras_decis_es",
118
+ "decis_es_fechadas",
119
+ ],
120
+ ),
121
+ "contracts_invariants_quality": first_section(
122
+ sections,
123
+ ["contracts_invariants_and_quality_guarantees", "contratos_e_invariantes"],
124
+ ),
125
+ "risk_and_regression": first_section(
126
+ sections,
127
+ ["risk_and_regression_matrix", "regression_risks", "matriz_de_risco_e_regress_o", "riscos"],
128
+ ),
129
+ "validation": first_section(sections, ["validation", "valida_o", "valida_o_final"]),
130
+ },
131
+ "review_focus": [
132
+ "logic gaps",
133
+ "hidden scenarios",
134
+ "regressions",
135
+ "security risks",
136
+ "missing tests",
137
+ "plan contract drift",
138
+ "source conflict drift",
139
+ "permission matrix drift",
140
+ ],
141
+ }
142
+ metadata_section = first_section(
143
+ sections,
144
+ ["execution_metadata", "metadados_de_execu_o", "metadados_execu_o"],
145
+ )
146
+ for line in metadata_section:
147
+ lowered = line.lower()
148
+ if "plan prefix" in lowered:
149
+ payload["execution_metadata"]["plan_prefix"] = line.split(":", 1)[-1].strip().strip("`")
150
+ elif "execution mode" in lowered:
151
+ payload["execution_metadata"]["execution_mode"] = line.split(":", 1)[-1].strip().strip("`")
152
+ json.dump(payload, sys.stdout, indent=2)
153
+ sys.stdout.write("\n")
154
+ return 0
155
+
156
+
157
+ if __name__ == "__main__":
158
+ raise SystemExit(main())
@@ -0,0 +1,74 @@
1
+ ---
2
+ name: atlas-sprint-prd-generator
3
+ description: Skill `atlas-sprint-prd-generator`. Use quando o usuário pedir para criar, gerar, montar ou atualizar um PRD de Sprint a partir de um sprint ID como S01/S02, usando o template de PRD e o backlog/roadmap real do repositório como fonte de escopo, dependências e fase-fonte.
4
+ ---
5
+
6
+ # Atlas Sprint PRD Generator
7
+
8
+ Gere PRDs de Sprint em PT-BR ancorados no backlog/roadmap real, no template canônico empacotado e no código real do repositório atual. Não invente contrato.
9
+
10
+ Todo PRD gerado por esta skill deve declarar explicitamente a cadeia de execução Atlas (`atlas-*`) para consumo posterior por `atlas-plan-handoff` e `atlas-plan-execute`.
11
+
12
+ ---
13
+
14
+ ## Entrada Esperada
15
+
16
+ * Sprint ID: `S<NN>` (`S01`, `S02`, etc.).
17
+ * Opcional: app/projeto alvo quando houver mais de uma fonte de backlog/roadmap.
18
+ * Opcional: path de saída.
19
+
20
+ *Se faltar o Sprint ID, peça antes de gerar.*
21
+
22
+ ---
23
+
24
+ ## Workflow Obrigatório
25
+
26
+ 1. **Localizar Insumos:** Descubra a raiz do repo com `git rev-parse --show-toplevel`. Localize o template canônico em `<raiz-do-plugin>/packages/templates/PRD_TEMPLATE.md`. Localize backlog/roadmap no repo ativo (`**/BACKLOG_MESTRE*.md`).
27
+ 2. **Extração da Sprint:** Leia a fonte de backlog/roadmap. Localize a sprint, extraindo fase-fonte, objetivo, dependências e filename do PRD.
28
+ 3. **Inspecionar Código:** Busque no codebase por classes, tabelas, RPCs, mappers e rotas existentes que influenciam a feature.
29
+ 4. **Redação do PRD:** Siga estritamente o layout enxuto e focado do `PRD_TEMPLATE.md` (teto orientativo de ~180-220 linhas), separando dores e regras de negócio de implementações de código.
30
+
31
+ ### Resolução Canônica de Templates
32
+
33
+ * Fonte única: `packages/templates/` empacotado no plugin Atlas Workflow.
34
+ * Resolver `PRD_TEMPLATE.md` a partir da raiz do plugin/bundle, antes de olhar qualquer arquivo do repo consumidor.
35
+ * Template local do repo consumidor nunca sobrepõe o template empacotado.
36
+ * Se `packages/templates/PRD_TEMPLATE.md` não existir, abortar com erro claro: `Template canônico ausente: PRD_TEMPLATE.md`.
37
+ * Não usar fallback silencioso para cópias antigas, vault local ou templates globais.
38
+
39
+ ---
40
+
41
+ ## Metadados Atlas Obrigatórios
42
+
43
+ Todo PRD criado ou atualizado por esta skill deve incluir, perto do topo e sem substituir o template, o seguinte bloco de metadados:
44
+
45
+ ```md
46
+ ## Metadados de execução
47
+ - Plan prefix: `atlas`
48
+ - Target planner: `atlas-plan-handoff`
49
+ - Target executor: `atlas-plan-execute`
50
+ - Internal validator: `atlas-task-validator`
51
+ - External review: `atlas-slice-review` (optional)
52
+ ```
53
+
54
+ ---
55
+
56
+ ## Regras de Conteúdo
57
+
58
+ * **Status final:** `Aprovado para implementação`. Setar **automaticamente** ao finalizar a geração — é o status que o gate TC do orquestrador exige (`required_status=Aprovado para implementação`) para o PRD avançar no pipeline. Não deixar `Draft` (trava o gate e força correção manual). O sinal de determinismo que sustenta o avanço é o `atlas_scan_prd` (varredura de ambiguidade) + entrevista quando houver padrões bloqueantes — não o campo Status, que é marcador documental.
59
+ * **Data:** ISO `YYYY-MM-DD` (hoje).
60
+ * **Escopo:** Lista fechada de capacidades funcionais.
61
+ * **UX:** Cobrir caminhos de `loading`, `empty`, `error`, `success` e `permission` sob a perspectiva do usuário.
62
+ * **Critérios de Aceite:** Binários e observáveis, divididos conforme `PRD_TEMPLATE.md` em: **Produto**, **UX**, **Dados** e **Regressão de produto**.
63
+ * **Proibições Estritas:**
64
+ * Não inventar schemas, RPCs, endpoints ou tabelas.
65
+ * Não misturar plano de implementação, classes Dart, imports, clean architecture ou comandos de terminal com o PRD. Seguir estritamente o `BOUNDARY_PRD_PLAN.md`.
66
+
67
+ ---
68
+
69
+ ## Validação Mínima
70
+
71
+ Antes de salvar:
72
+ * Confirme que todas as seções do template estão presentes.
73
+ * Garanta que o bloco de `Metadados de execução` existe e está preenchido com `atlas`.
74
+ * Certifique-se de que não há nomes de classes de código ou arquivos Dart dentro do PRD.
@@ -0,0 +1,7 @@
1
+ interface:
2
+ display_name: "Atlas Sprint PRD Generator"
3
+ short_description: "Gera PRDs de Sprint com prefixo atlas-*"
4
+ default_prompt: "Use $atlas-sprint-prd-generator para criar o PRD da sprint S01 com metadados de execução atlas-* a partir do backlog mestre e do PRD template reais."
5
+
6
+ policy:
7
+ allow_implicit_invocation: true