nexus-core-v3 3.0.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 (232) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +134 -0
  3. package/agents/README.md +133 -0
  4. package/agents/_protocol.md +107 -0
  5. package/agents/analyst.md +138 -0
  6. package/agents/architect.md +146 -0
  7. package/agents/data-engineer.md +170 -0
  8. package/agents/dev.md +134 -0
  9. package/agents/devops.md +141 -0
  10. package/agents/nexus-master.md +147 -0
  11. package/agents/pm.md +133 -0
  12. package/agents/po.md +138 -0
  13. package/agents/qa.md +192 -0
  14. package/agents/sm.md +122 -0
  15. package/agents/squad-creator.md +121 -0
  16. package/agents/ux-design-expert.md +165 -0
  17. package/artifact-manifest.json +903 -0
  18. package/bin/nexus.mjs +37 -0
  19. package/checklists/README.md +49 -0
  20. package/checklists/architect-checklist.md +47 -0
  21. package/checklists/change-checklist.md +61 -0
  22. package/checklists/db-predeploy-checklist.md +57 -0
  23. package/checklists/design-quality-checklist.md +57 -0
  24. package/checklists/discovery-checklist.md +36 -0
  25. package/checklists/foundation-checklist.md +39 -0
  26. package/checklists/launch-checklist.md +39 -0
  27. package/checklists/pm-checklist.md +48 -0
  28. package/checklists/po-master-checklist.md +64 -0
  29. package/checklists/reality-check-checklist.md +49 -0
  30. package/checklists/story-dod-checklist.md +52 -0
  31. package/checklists/story-draft-checklist.md +36 -0
  32. package/dist/bin/dashboard.html +279 -0
  33. package/dist/bin/nexus.mjs +20008 -0
  34. package/dist/constitution.yaml +76 -0
  35. package/knowledge/README.md +57 -0
  36. package/knowledge/architecture/architectural-styles-map.md +182 -0
  37. package/knowledge/architecture/design-patterns-gof.md +192 -0
  38. package/knowledge/architecture/distributed-patterns-cheatsheet.md +201 -0
  39. package/knowledge/architecture/saas-subscription-blueprint.md +355 -0
  40. package/knowledge/architecture/system-design-tradeoffs.md +231 -0
  41. package/knowledge/architecture/t3-fullstack-typesafe-stack.md +273 -0
  42. package/knowledge/copy/landing-copy-that-converts.md +168 -0
  43. package/knowledge/data/postgres-indexing-and-tuning.md +263 -0
  44. package/knowledge/data/schema-modeling-decisions.md +273 -0
  45. package/knowledge/data/supabase-rls-patterns.md +316 -0
  46. package/knowledge/data/zero-downtime-migrations.md +308 -0
  47. package/knowledge/devops/cicd-pipeline-best-practices.md +318 -0
  48. package/knowledge/devops/production-dockerfile.md +283 -0
  49. package/knowledge/devops/twelve-factor-app.md +398 -0
  50. package/knowledge/engineering/clean-code-principles.md +429 -0
  51. package/knowledge/engineering/effective-code-review.md +204 -0
  52. package/knowledge/engineering/testing-strategy-beyond-unit.md +307 -0
  53. package/knowledge/governance/risk-matrix.md +56 -0
  54. package/knowledge/integration/mcp-server-selection-matrix.md +235 -0
  55. package/knowledge/marketing/copy-que-converte.md +43 -0
  56. package/knowledge/marketing/funil-e-jornada.md +36 -0
  57. package/knowledge/negocios/proposta-vencedora.md +38 -0
  58. package/knowledge/negocios/roi-e-unit-economics.md +46 -0
  59. package/knowledge/pipeline/1-descobrir.md +26 -0
  60. package/knowledge/pipeline/2-estrategizar.md +26 -0
  61. package/knowledge/pipeline/3-estruturar.md +27 -0
  62. package/knowledge/pipeline/4-construir.md +27 -0
  63. package/knowledge/pipeline/5-endurecer.md +28 -0
  64. package/knowledge/pipeline/6-lancar.md +27 -0
  65. package/knowledge/pipeline/7-operar.md +27 -0
  66. package/knowledge/security/lgpd-conformidade-basica.md +35 -0
  67. package/knowledge/security/owasp-secure-coding-gates.md +220 -0
  68. package/knowledge/security/owasp-top10-threat-assessment.md +287 -0
  69. package/knowledge/security/threat-modeling-stride.md +34 -0
  70. package/knowledge/web-craft/a11y-audit-checklist.md +251 -0
  71. package/knowledge/web-craft/accessible-component-patterns.md +383 -0
  72. package/knowledge/web-craft/anti-ai-look.md +114 -0
  73. package/knowledge/web-craft/design-system-from-code.md +195 -0
  74. package/knowledge/web-craft/intrinsic-css-layout.md +420 -0
  75. package/knowledge/web-craft/style-cloning.md +185 -0
  76. package/knowledge/web-craft/visual-polish-review.md +183 -0
  77. package/package.json +55 -0
  78. package/runbooks/campanha-de-conteudo.md +36 -0
  79. package/runbooks/feature-em-projeto-existente.md +37 -0
  80. package/runbooks/mvp-startup.md +38 -0
  81. package/runbooks/resposta-a-incidente.md +37 -0
  82. package/squads/exemplo-conteudo/agents/editor-chefe.md +48 -0
  83. package/squads/exemplo-conteudo/agents/pesquisador.md +44 -0
  84. package/squads/exemplo-conteudo/agents/redator.md +45 -0
  85. package/squads/exemplo-conteudo/knowledge/estilo-editorial.md +21 -0
  86. package/squads/exemplo-conteudo/squad.yaml +19 -0
  87. package/squads/exemplo-conteudo/tasks/pesquisar-fontes.md +26 -0
  88. package/squads/exemplo-conteudo/tasks/planejar-pauta.md +27 -0
  89. package/squads/exemplo-conteudo/tasks/redigir-artigo.md +26 -0
  90. package/squads/exemplo-conteudo/tasks/revisar-artigo.md +27 -0
  91. package/squads/marketing/agents/analista.md +56 -0
  92. package/squads/marketing/agents/chefe-marketing.md +65 -0
  93. package/squads/marketing/agents/conteudo.md +55 -0
  94. package/squads/marketing/agents/copy.md +55 -0
  95. package/squads/marketing/agents/growth.md +56 -0
  96. package/squads/marketing/agents/social.md +55 -0
  97. package/squads/marketing/squad.yaml +17 -0
  98. package/squads/marketing/tasks/aprovar-campanha.md +43 -0
  99. package/squads/negocios/agents/chefe-negocios.md +65 -0
  100. package/squads/negocios/agents/financas-roi.md +55 -0
  101. package/squads/negocios/agents/suporte.md +55 -0
  102. package/squads/negocios/agents/vendas-proposta.md +56 -0
  103. package/squads/negocios/squad.yaml +17 -0
  104. package/squads/negocios/tasks/aprovar-proposta.md +40 -0
  105. package/squads/security/agents/appsec-reviewer.md +59 -0
  106. package/squads/security/agents/chefe-seguranca.md +65 -0
  107. package/squads/security/agents/compliance-auditor.md +60 -0
  108. package/squads/security/agents/threat-modeler.md +60 -0
  109. package/squads/security/squad.yaml +20 -0
  110. package/squads/security/tasks/aprovar-gate-seguranca.md +42 -0
  111. package/squads/security/tasks/emitir-parecer-conformidade.md +42 -0
  112. package/tasks/README.md +72 -0
  113. package/tasks/accessibility-wcag-checklist.md +69 -0
  114. package/tasks/advanced-elicitation.md +42 -0
  115. package/tasks/analyze-performance.md +54 -0
  116. package/tasks/analyze-project-structure.md +59 -0
  117. package/tasks/apply-qa-fixes.md +57 -0
  118. package/tasks/architect-analyze-impact.md +62 -0
  119. package/tasks/archive-squad.md +52 -0
  120. package/tasks/audit-codebase.md +53 -0
  121. package/tasks/build-component.md +61 -0
  122. package/tasks/calculate-roi.md +63 -0
  123. package/tasks/ci-cd-configuration.md +51 -0
  124. package/tasks/collect-visual-evidence.md +62 -0
  125. package/tasks/compose-molecule.md +57 -0
  126. package/tasks/consolidate-patterns.md +54 -0
  127. package/tasks/create-brownfield-prd.md +54 -0
  128. package/tasks/create-competitor-analysis.md +42 -0
  129. package/tasks/create-deep-research-prompt.md +62 -0
  130. package/tasks/create-doc.md +62 -0
  131. package/tasks/create-epic.md +49 -0
  132. package/tasks/create-front-end-spec.md +56 -0
  133. package/tasks/create-migration-plan.md +57 -0
  134. package/tasks/create-next-story.md +66 -0
  135. package/tasks/create-prd.md +53 -0
  136. package/tasks/create-project-brief.md +47 -0
  137. package/tasks/create-rls-policies.md +59 -0
  138. package/tasks/create-schema.md +57 -0
  139. package/tasks/create-service.md +55 -0
  140. package/tasks/create-squad.md +100 -0
  141. package/tasks/create-suite.md +62 -0
  142. package/tasks/db-apply-migration.md +56 -0
  143. package/tasks/db-domain-modeling.md +57 -0
  144. package/tasks/db-dry-run.md +50 -0
  145. package/tasks/db-env-check.md +57 -0
  146. package/tasks/db-load-csv.md +54 -0
  147. package/tasks/db-policy-apply.md +58 -0
  148. package/tasks/db-rollback.md +51 -0
  149. package/tasks/db-run-sql.md +61 -0
  150. package/tasks/db-seed.md +52 -0
  151. package/tasks/db-smoke-test.md +51 -0
  152. package/tasks/db-snapshot.md +48 -0
  153. package/tasks/db-verify-order.md +49 -0
  154. package/tasks/deliberate.md +46 -0
  155. package/tasks/design-indexes.md +59 -0
  156. package/tasks/dev-develop-story.md +61 -0
  157. package/tasks/document-project.md +59 -0
  158. package/tasks/execute-checklist.md +57 -0
  159. package/tasks/execute-epic-plan.md +52 -0
  160. package/tasks/execute-subtask.md +51 -0
  161. package/tasks/extend-pattern.md +63 -0
  162. package/tasks/extend-squad.md +60 -0
  163. package/tasks/extract-patterns.md +64 -0
  164. package/tasks/extract-tokens.md +59 -0
  165. package/tasks/facilitate-brainstorming-session.md +42 -0
  166. package/tasks/generate-ai-frontend-prompt.md +57 -0
  167. package/tasks/generate-documentation.md +60 -0
  168. package/tasks/generate-migration-strategy.md +57 -0
  169. package/tasks/generate-shock-report.md +56 -0
  170. package/tasks/mcp-management.md +66 -0
  171. package/tasks/orchestrate.md +50 -0
  172. package/tasks/perform-market-research.md +42 -0
  173. package/tasks/plan-create-context.md +57 -0
  174. package/tasks/plan-create-implementation.md +58 -0
  175. package/tasks/po-close-story.md +60 -0
  176. package/tasks/po-manage-story-backlog.md +59 -0
  177. package/tasks/po-pull-story.md +60 -0
  178. package/tasks/po-sync-story.md +59 -0
  179. package/tasks/pr-automation.md +50 -0
  180. package/tasks/pre-push-quality-gate.md +54 -0
  181. package/tasks/push.md +53 -0
  182. package/tasks/qa-browser-console-check.md +52 -0
  183. package/tasks/qa-create-fix-request.md +58 -0
  184. package/tasks/qa-evidence-requirements.md +55 -0
  185. package/tasks/qa-false-positive-detection.md +55 -0
  186. package/tasks/qa-fix-issues.md +55 -0
  187. package/tasks/qa-gate.md +53 -0
  188. package/tasks/qa-migration-validation.md +58 -0
  189. package/tasks/qa-nfr-assess.md +45 -0
  190. package/tasks/qa-review-story.md +56 -0
  191. package/tasks/qa-risk-profile.md +45 -0
  192. package/tasks/qa-security-checklist.md +64 -0
  193. package/tasks/qa-test-design.md +47 -0
  194. package/tasks/qa-trace-requirements.md +48 -0
  195. package/tasks/release-management.md +53 -0
  196. package/tasks/repository-cleanup.md +61 -0
  197. package/tasks/route.md +44 -0
  198. package/tasks/run-tests.md +50 -0
  199. package/tasks/security-audit.md +54 -0
  200. package/tasks/setup-database.md +60 -0
  201. package/tasks/setup-design-system.md +60 -0
  202. package/tasks/shard-doc.md +60 -0
  203. package/tasks/spec-assess-complexity.md +55 -0
  204. package/tasks/spec-critique.md +64 -0
  205. package/tasks/spec-gather-requirements.md +48 -0
  206. package/tasks/spec-research-dependencies.md +42 -0
  207. package/tasks/spec-write-spec.md +50 -0
  208. package/tasks/test-as-user.md +52 -0
  209. package/tasks/ux-create-wireframe.md +54 -0
  210. package/tasks/ux-user-research.md +55 -0
  211. package/tasks/validate-next-story.md +61 -0
  212. package/tasks/validate-squad.md +55 -0
  213. package/tasks/verify-subtask.md +52 -0
  214. package/tasks/version-management.md +45 -0
  215. package/templates/README.md +47 -0
  216. package/templates/architecture-tmpl.md +115 -0
  217. package/templates/competitor-analysis-tmpl.md +87 -0
  218. package/templates/epic-tmpl.md +83 -0
  219. package/templates/front-end-spec-tmpl.md +110 -0
  220. package/templates/market-research-tmpl.md +98 -0
  221. package/templates/migration-plan-tmpl.md +92 -0
  222. package/templates/prd-tmpl.md +95 -0
  223. package/templates/project-brief-tmpl.md +100 -0
  224. package/templates/qa-verdict-tmpl.md +73 -0
  225. package/templates/rls-policies-tmpl.md +93 -0
  226. package/templates/schema-design-tmpl.md +107 -0
  227. package/templates/spec-tmpl.md +88 -0
  228. package/templates/squad/agent-dna-tmpl.md +72 -0
  229. package/templates/squad/chief-dna-tmpl.md +98 -0
  230. package/templates/squad/squad-task-tmpl.md +50 -0
  231. package/templates/squad/squad-yaml-tmpl.md +47 -0
  232. package/templates/story-tmpl.md +63 -0
@@ -0,0 +1,51 @@
1
+ ---
2
+ id: ci-cd-configuration
3
+ agent: devops
4
+ title: Configurar workflows de CI/CD
5
+ inputs: [story/objetivo de infra, stack do projeto]
6
+ outputs: [workflows do GitHub Actions, confirmação de configuração]
7
+ elicit: true
8
+ modes: [interactive]
9
+ ---
10
+
11
+ # Configurar workflows de CI/CD
12
+
13
+ **Objetivo:** criar ou atualizar os workflows do GitHub Actions que rodam os gates do projeto (lint,
14
+ typecheck, test, build) em CI, espelhando o pre-push local. Gestão de CI/CD é exclusiva do @devops.
15
+
16
+ **Pré-condições:**
17
+ - O objetivo rastreia a uma story/spec de infraestrutura. Sem isso, **elicito** o escopo — não invento
18
+ pipeline.
19
+ - O repositório tem git e remoto GitHub. Se for greenfield, **pare** e recomende `*environment-bootstrap`.
20
+
21
+ ## Passos
22
+
23
+ 1. **Detecte o contexto do repositório** — remoto, branch base e a stack (gerenciador de pacotes,
24
+ scripts de `lint`/`test`/`build`). Nunca assuma repo fixo.
25
+ 2. **Mapeie os gates do projeto** que o CI deve espelhar: os mesmos comandos do `pre-push-quality-gate`
26
+ (lint, typecheck, test, build). O CI é a rede de segurança remota do gate local.
27
+ 3. **Gere/atualize o workflow** em `.github/workflows/` — triggers (push/PR para a branch base), matriz
28
+ de versões se aplicável, e os jobs dos gates. Reuse padrão existente antes de criar do zero.
29
+ 4. **Revele a proposta.** Mostre o YAML do workflow e os gatilhos ao usuário.
30
+ 5. **[ELICITAÇÃO] Peça o "ok" explícito** para gravar/atualizar o workflow. Configuração de pipeline
31
+ muda o comportamento da entrega — pede confirmação.
32
+ 6. **Grave o arquivo do workflow** localmente (`git add`/`git commit` com o id da story). A subida ao
33
+ remoto segue pelo fluxo normal (`*push`) — eu não empurro fora do gate.
34
+ 7. **Reporte.** Devolvo o caminho do workflow, os gates cobertos e o próximo passo (subir via `*push`
35
+ para o CI rodar).
36
+
37
+ ## Critério de pronto (DoD)
38
+
39
+ - [ ] Stack e gates do projeto mapeados dinamicamente
40
+ - [ ] Workflow cobre os mesmos gates do pre-push (lint, typecheck, test, build)
41
+ - [ ] Confirmação humana obtida antes de gravar/atualizar o workflow
42
+ - [ ] Workflow versionado por commit local (subida segue por `*push`)
43
+ - [ ] Caminho do workflow e gates cobertos reportados
44
+
45
+ ## Falha / recuperação
46
+
47
+ - **Escopo ausente** → elicito a story/objetivo de infra; não invento pipeline.
48
+ - **Stack sem scripts de gate** (sem `lint`/`test`/`build` definidos) → sinalizo a lacuna e devolvo ao
49
+ @dev para definir os scripts antes de cravar o CI sobre eles.
50
+ - **Greenfield sem remoto** → recomendo `*environment-bootstrap` antes de configurar Actions.
51
+ - **Usuário não confirma** → não gravo o workflow.
@@ -0,0 +1,62 @@
1
+ ---
2
+ id: collect-visual-evidence
3
+ agent: qa
4
+ title: Coletar evidência visual (EvidenceManifest)
5
+ inputs: [story, rotas, viewports]
6
+ outputs: [.nexus/evidence/<story>/evidence-manifest.json, capturas .png]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Coletar evidência visual (EvidenceManifest)
12
+
13
+ **Objetivo:** produzir prova VISUAL verificável de que a UI da story realmente renderiza e se comporta
14
+ como afirmado — capturas das rotas alteradas em cada viewport, com hash — reunidas num
15
+ `evidence-manifest.json` (contrato `EvidenceManifest`, ADR-E5). O motor valida o manifesto (arquivo
16
+ existe + hash bate); a Quinn julga o conteúdo. Sem app rodando, não há evidência: o veredito é
17
+ **BLOCKED honesto**, nunca um PASS no escuro.
18
+
19
+ **Pré-condições:**
20
+ - A story tem superfície visual (rotas/telas alteradas). Story puramente de backend/CLI não usa esta
21
+ task — a evidência dela é teste verde + log, não screenshot.
22
+ - Existe um comando para subir o app (dev server / preview) e as rotas a capturar estão definidas
23
+ (da story ou do frontend-spec). Sem rotas, não há o que capturar — pergunte, não invente.
24
+
25
+ ## Passos
26
+
27
+ 1. **Suba o app.** Inicie o servidor de preview e espere ficar pronto. **Se o app não sobe** (erro de
28
+ build, porta ocupada, crash no boot) → PARE: o veredito é **BLOCKED** com o log do erro. UI que não
29
+ inicia não tem evidência a coletar — e isso é um achado, não um contratempo.
30
+ 2. **Defina a matriz de captura.** Para cada rota alterada × cada viewport-alvo (ex.: `375×812` mobile,
31
+ `768×1024` tablet, `1440×900` desktop), uma captura. Estados que a AC menciona (vazio, carregando,
32
+ erro, hover, acordeão aberto) são capturas próprias — o "antes/depois" de uma interação são dois
33
+ arquivos, não um.
34
+ 3. **Capture com o browser real.** Navegue até a rota, ajuste o viewport, aguarde a rede/estado
35
+ estabilizar e tire o screenshot em disco sob `.nexus/evidence/<story>/`. Console com erro durante a
36
+ captura é achado — anexe junto (encadeia `*console-check`). Captura não é "abri e pareceu ok": é o
37
+ arquivo salvo.
38
+ 4. **Calcule o hash.** Para cada arquivo, compute o SHA-256 do conteúdo. O hash é o que torna a
39
+ evidência à prova de troca silenciosa: o motor recusa manifesto cujo hash não bate com o arquivo.
40
+ 5. **Escreva o manifesto.** Grave `.nexus/evidence/<story>/evidence-manifest.json` conforme o contrato
41
+ `EvidenceManifest`: `storyId` + `capturas[]`, cada uma com `rota`, `viewport`, `arquivo`,
42
+ `timestamp`, `sha256`. Manifesto sem nenhuma captura para uma story visual é FAIL, não vazio ok.
43
+ 6. **Devolva para o gate.** As capturas viram `evidenceRefs` no `<verdict>` da Quinn. É a Quinn que
44
+ julga se a evidência sustenta o "pronto" — esta task só a produz de forma honesta e verificável.
45
+
46
+ ## Critério de pronto (DoD)
47
+
48
+ - [ ] App subiu (ou BLOCKED registrado com o log real do erro de boot)
49
+ - [ ] Toda rota alterada × viewport-alvo capturada; estados de AC como capturas próprias
50
+ - [ ] Cada arquivo existe em `.nexus/evidence/<story>/` e tem SHA-256 calculado
51
+ - [ ] `evidence-manifest.json` válido contra o contrato `EvidenceManifest` (parseia, hashes batem)
52
+ - [ ] Erros de console durante a captura anexados como achado, não descartados
53
+
54
+ ## Falha / recuperação
55
+
56
+ - **App não sobe** → BLOCKED com o log; não há evidência a inventar. É a resposta correta do gate.
57
+ - **Rota alterada sem captura** → manifesto incompleto = FAIL; a cobertura declarada tem de bater com a
58
+ real (declarado=real vale para evidência também).
59
+ - **Hash não bate com o arquivo** → o motor recusa o manifesto (fail-closed); recapture, não edite o
60
+ JSON à mão.
61
+ - **Sem viewports/rotas definidos** → pergunte à story/frontend-spec; capturar "o que der" não é
62
+ evidência, é ruído.
@@ -0,0 +1,57 @@
1
+ ---
2
+ id: compose-molecule
3
+ agent: ux-design-expert
4
+ title: Compor uma molécula a partir de átomos existentes
5
+ inputs: [nome da molécula, átomos existentes, design tokens, story/spec]
6
+ outputs: [molécula + testes + a11y, 'docs/design-system/molecules/{molécula}/']
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Compor uma molécula a partir de átomos existentes
12
+
13
+ **Objetivo:** combinar átomos já construídos numa molécula de produção (ex.: campo de busca = input +
14
+ botão + label) — testada, sobre tokens, com a11y preservada no conjunto — sem reinventar átomo.
15
+
16
+ **Pré-condições:**
17
+ - Os átomos necessários já existem em `docs/design-system/atoms/` e estão prontos (testados,
18
+ WCAG AA). Se um átomo faltar, **pare**: composição não inventa átomo — isso é `build-component`.
19
+ - A molécula rastreia a uma story/spec ou a um padrão consolidado. Sem rastro, elicito — não invento
20
+ composição.
21
+
22
+ ## Passos
23
+
24
+ 1. **Identifico os átomos que compõem a molécula** a partir da story/spec e confirmo que cada um já
25
+ existe e está pronto. Falta de átomo → roteio para `build-component`, não improviso aqui.
26
+ 2. **Componho sobre os átomos**, sem fork: uso os átomos como estão, passando props; não duplico
27
+ nem reescrevo lógica que já vive no átomo. Reaproveitar é o ponto.
28
+ 3. **Defino a API da molécula** (props, estados do conjunto, eventos) rastreando a uma necessidade
29
+ real. Layout e espaçamento entre átomos vêm de tokens — zero valor hardcoded.
30
+ 4. **Garanto a acessibilidade do conjunto**, não só dos átomos: ordem de foco coerente, rótulos
31
+ associados (ex.: label ↔ input), agrupamento semântico, anúncio de estado/erro do grupo. WCAG AA
32
+ no conjunto é piso.
33
+ 5. **Escrevo os testes** que provam a composição: a molécula renderiza com os átomos certos, a
34
+ interação entre eles funciona (ex.: busca dispara), foco e estados do grupo se comportam.
35
+ 6. **Rodo `accessibility-wcag-checklist`** na molécula. Reprovou em AA → não entrego; corrijo antes.
36
+ 7. **Rodo lint + typecheck + os testes.** Vermelho não vira entregue.
37
+ 8. **Documento o uso** da molécula (átomos que a compõem, props, exemplos) para a pattern library e
38
+ salvo em `docs/design-system/molecules/{molécula}/`. Atualizo a File List da story.
39
+ 9. **Roteio.** Molécula pronta → @dev integra na app, @qa valida. Pronto pra subir → @devops — nunca
40
+ eu.
41
+
42
+ ## Critério de pronto (DoD)
43
+
44
+ - [ ] Composta só de átomos prontos existentes (sem reinventar átomo, sem fork)
45
+ - [ ] API definida e rastreada à story; layout/espaçamento via tokens (zero hardcode)
46
+ - [ ] A11y do conjunto garantida (ordem de foco, rótulos, agrupamento) e validada pelo checklist
47
+ - [ ] Testes da composição verdes; lint limpo; typecheck 0
48
+ - [ ] Documentação de uso escrita; File List atualizada; nada subido por mim
49
+
50
+ ## Falha / recuperação
51
+
52
+ - **Falta um átomo** → não improviso dentro da molécula; roteio para `build-component` e pauso a
53
+ composição até o átomo estar pronto.
54
+ - **Reprova WCAG AA no conjunto** → HALT; corrijo a acessibilidade do grupo antes de entregar.
55
+ - **Teste da composição não passa após 3 tentativas no mesmo ponto** → HALT, registro o bloqueio.
56
+ - **A story não define a composição o suficiente** → paro e devolvo ao @sm/@po; não invento a
57
+ molécula.
@@ -0,0 +1,54 @@
1
+ ---
2
+ id: consolidate-patterns
3
+ agent: ux-design-expert
4
+ title: Reduzir redundância por clustering inteligente
5
+ inputs: [audit-report, inventário de padrões de UI]
6
+ outputs: [padrões consolidados, mapa antigo→novo, métricas de redução]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Reduzir redundância por clustering inteligente
12
+
13
+ **Objetivo:** transformar o inventário caótico da auditoria num conjunto enxuto de padrões
14
+ canônicos, agrupando variantes similares por clustering e provando a redução com número.
15
+
16
+ **Pré-condições:**
17
+ - Existe um audit-report da task `audit-codebase` com inventário e métricas. Sem ele, **pare** —
18
+ consolidar sem medir antes é consolidar no escuro.
19
+ - O inventário traz a localização (arquivo:linha) de cada padrão, para o mapa antigo→novo rastrear ao
20
+ código real.
21
+
22
+ ## Passos
23
+
24
+ 1. **Carregue o inventário** do audit-report: todos os padrões com suas propriedades visuais (cor,
25
+ espaçamento, tipografia, raio, etc.).
26
+ 2. **Agrupe por similaridade (clustering).** Padrões com propriedades próximas caem no mesmo cluster
27
+ — ex.: 12 tons de azul que servem à mesma intenção viram um candidato a token único.
28
+ 3. **Eleja o padrão canônico de cada cluster:** o representante que melhor atende a necessidade,
29
+ respeitando contraste WCAG AA. O canônico nunca pode reprovar em acessibilidade.
30
+ 4. **Monte o mapa antigo→novo:** cada variante original aponta para o padrão canônico que a
31
+ substitui, com a localização (arquivo:linha) de origem. É o rastro da migração.
32
+ 5. **Calcule a redução:** nº de variantes antes → nº de canônicos depois, e o percentual (ex.: 47 → 3,
33
+ 93,6%). Número antes de opinião.
34
+ 6. **Sinalize divergências que precisam de decisão humana** (dois canônicos legítimos, conflito de
35
+ marca) em vez de fundir à força — registro a escolha pendente.
36
+ 7. **Registre os padrões consolidados** e o mapa em `docs/stories/{epic}/audit/consolidation.md`, e
37
+ roteie: alimenta `extract-tokens` (tokens dos canônicos) e `generate-shock-report` (visual + ROI).
38
+
39
+ ## Critério de pronto (DoD)
40
+
41
+ - [ ] Todos os padrões do inventário agrupados em clusters
42
+ - [ ] Um padrão canônico por cluster, cada um aprovado em contraste WCAG AA
43
+ - [ ] Mapa antigo→novo com localização (arquivo:linha) de cada variante
44
+ - [ ] Métrica de redução calculada (antes → depois → %)
45
+ - [ ] Divergências que exigem decisão humana sinalizadas, não fundidas à força
46
+ - [ ] Consolidação registrada e roteada a `extract-tokens` / `generate-shock-report`
47
+
48
+ ## Falha / recuperação
49
+
50
+ - **Não há audit-report** → volto para `audit-codebase`; não consolido sem o inventário medido.
51
+ - **Um cluster não tem canônico que passe em a11y** → não rebaixo o critério; escalo a necessidade de
52
+ um novo padrão acessível em vez de eleger um que reprova em contraste.
53
+ - **Conflito de marca/identidade entre canônicos** → registro como decisão pendente e busco validação
54
+ antes de fundir — não invento a regra de marca.
@@ -0,0 +1,54 @@
1
+ ---
2
+ id: create-brownfield-prd
3
+ agent: pm
4
+ title: Criar o PRD para projeto existente (brownfield)
5
+ inputs: [pedido de evolução, sistema existente/código rodando, docs de arquitetura (se houver)]
6
+ outputs: [docs/prd/prd.md ancorado no que já roda, com impacto e compatibilidade mapeados]
7
+ elicit: true
8
+ modes: [interactive]
9
+ ---
10
+
11
+ # Criar o PRD para projeto existente (brownfield)
12
+
13
+ **Objetivo:** escrever um PRD para evoluir um sistema que **já roda** — ancorado no comportamento atual,
14
+ com impacto e compatibilidade explícitos, sem quebrar o que os usuários já usam.
15
+
16
+ **Pré-condições:**
17
+ - O sistema existente é acessível (código, docs ou alguém que conheça). Se ninguém sabe como funciona
18
+ hoje, **pare** e delegue o levantamento ao @architect/@analyst antes de prometer mudança.
19
+ - O pedido de evolução tem um "por quê" rastreável a dor/oportunidade. Sem isso, **pare** e elicite.
20
+
21
+ ## Passos
22
+
23
+ 1. **Ancore no estado atual.** Mapeie o que o sistema já faz, quais fluxos os usuários dependem e onde a
24
+ mudança encosta. Se faltar entendimento do legado, delegue o assessment ao @architect (não invente
25
+ como funciona).
26
+ 2. **Cave o "por quê" da evolução** até a dor/oportunidade real e a métrica que ela move.
27
+ 3. **Recorte o MVP da mudança** (MoSCoW/RICE) — o menor incremento que prova a hipótese sem regredir o
28
+ que já funciona.
29
+ 4. **[ELICITAÇÃO] Valide impacto e compatibilidade com o stakeholder.** Apresente: o que muda, o que
30
+ **não pode quebrar** (compatibilidade retroativa, migração de dados, usuários ativos) e o recorte.
31
+ Pare e espere o GO real — risco em brownfield é alto demais pra presumir aceite.
32
+ 5. **Escreva o PRD** a partir de `templates/prd-tmpl.md`, com seções extras de brownfield: estado atual,
33
+ delta proposto, riscos de regressão, estratégia de migração/rollback. Cada FR/NFR com critério de
34
+ aceite verificável e rastro ao "por quê".
35
+ 6. **Marque os quality gates** onde a regressão é mais provável; preveja a validação do @qa.
36
+ 7. **Salve em `docs/prd/prd.md`** e roteie: schema/migração → @data-engineer; arquitetura do delta →
37
+ @architect; quebra em epics → `create-epic`; subir no remoto → @devops.
38
+
39
+ ## Critério de pronto (DoD)
40
+
41
+ - [ ] Estado atual mapeado e o delta proposto é explícito
42
+ - [ ] Riscos de regressão e estratégia de migração/rollback documentados
43
+ - [ ] Todo FR/NFR com critério de aceite verificável e métrica de sucesso
44
+ - [ ] Impacto e compatibilidade **confirmados pelo stakeholder** (elicitação cumprida)
45
+ - [ ] PRD salvo em `docs/prd/prd.md`; nada de `git push` (delegado ao @devops)
46
+
47
+ ## Falha / recuperação
48
+
49
+ - **Não entendo o sistema atual** → delego o levantamento ao @architect/@analyst; não escrevo PRD em
50
+ cima de suposição do legado.
51
+ - **Stakeholder não aceita o risco de regressão** → seguro o PRD, registro o trade-off e reformulo o
52
+ recorte para reduzir o impacto.
53
+ - **A mudança exige decisão de schema/arquitetura** → delego ao @data-engineer/@architect; trago o
54
+ "o quê"/"por quê", não o "como".
@@ -0,0 +1,42 @@
1
+ ---
2
+ id: create-competitor-analysis
3
+ agent: analyst
4
+ title: Mapear concorrentes e posicionamento
5
+ inputs: [objetivo / mercado ou categoria a analisar]
6
+ outputs: ['docs/research/competitor-analysis-{slug}.md (matriz de concorrentes + posicionamento + "portanto")']
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Mapear concorrentes e posicionamento
12
+
13
+ **Objetivo:** mapear o cenário competitivo — quem são os players, como se posicionam, onde estão suas forças e brechas — com cada afirmação rastreável a uma fonte e fechando em oportunidades acionáveis.
14
+
15
+ **Pré-condições:**
16
+ - O mercado/categoria a analisar está definido, ligado a uma decisão (diferenciação? entrada? precificação?). Se vago, **pare** e elícito o foco.
17
+ - Há acesso a fontes públicas dos concorrentes (sites, pricing, reviews, notícias). Sem fonte, a avaliação vira hipótese rotulada.
18
+
19
+ ## Passos
20
+
21
+ 1. **Defino o objetivo e o eixo de comparação.** Qual decisão isto destrava, e quais dimensões importam (preço, features, segmento, canal, posicionamento). Registro no topo.
22
+ 2. **DIVIRJO — levanto os players.** Identifico concorrentes diretos, indiretos e substitutos — mais amplo do que o óbvio. Crédito a fonte de cada um.
23
+ 3. **Coleto os dados por dimensão.** Para cada concorrente: proposta de valor, segmento-alvo, pricing, features-chave, forças e fraquezas — cada célula com sua fonte e data.
24
+ 4. **CONVIRJO numa matriz.** Monto a matriz comparativa (concorrentes × dimensões) e um mapa de posicionamento (ex.: 2 eixos relevantes). Descarto dado fraco ou não-verificável.
25
+ 5. **Identifico brechas e ameaças.** Onde ninguém atende bem? Onde estão os fossos defensáveis? Marco o que é evidência vs. minha leitura/hipótese.
26
+ 6. **Sintetizo em "portanto".** Lista numerada de oportunidades de diferenciação e riscos competitivos, cada uma com a fonte e a implicação para a decisão.
27
+ 7. **Salvo** em `docs/research/competitor-analysis-{slug}.md` com matriz, mapa de posicionamento e Fontes; roteio: estratégia → @pm, decisões técnicas/diferenciação → @architect.
28
+
29
+ ## Critério de pronto (DoD)
30
+
31
+ - [ ] Objetivo e dimensões de comparação declarados
32
+ - [ ] Concorrentes diretos, indiretos e substitutos levantados (divergência) antes da matriz
33
+ - [ ] Matriz comparativa e mapa de posicionamento construídos
34
+ - [ ] Cada célula rastreia a uma fonte datada OU está marcada como hipótese
35
+ - [ ] Brechas/oportunidades em lista numerada com "portanto" acionável
36
+ - [ ] Documento salvo com Fontes e roteado ao consumidor (@pm / @architect)
37
+
38
+ ## Falha / recuperação
39
+
40
+ - **Concorrente sem informação pública suficiente** → preencho o que há, marco lacunas como "não verificável" e não preencho por suposição.
41
+ - **Posicionamento ambíguo entre fontes** → registro a divergência em vez de cravar; explicito a incerteza no mapa.
42
+ - **A categoria é ampla/fragmentada demais** → paro, reporto, e proponho recortar por segmento com o usuário antes de mapear.
@@ -0,0 +1,62 @@
1
+ ---
2
+ id: create-deep-research-prompt
3
+ agent: architect
4
+ title: Gerar prompt de pesquisa profunda sobre tecnologia/padrão
5
+ inputs: [tópico de pesquisa, contexto do projeto]
6
+ outputs: [prompt de pesquisa estruturado]
7
+ elicit: true
8
+ modes: [interactive]
9
+ ---
10
+
11
+ # Gerar prompt de pesquisa profunda sobre tecnologia/padrão
12
+
13
+ **Objetivo:** transformar uma dúvida arquitetural (qual tecnologia, qual padrão, qual trade-off) num
14
+ prompt de pesquisa profunda bem delimitado — com perguntas, critérios de avaliação e restrições do
15
+ projeto — para que a pesquisa volte com decisão, não com um passeio genérico pela internet.
16
+
17
+ **Pré-condições:**
18
+ - Existe um tópico que rastreia a uma decisão de arquitetura real do projeto (uma escolha de stack,
19
+ um padrão, uma comparação). Sem isso, **pare** e elicite — não pesquiso curiosidade, pesquiso
20
+ decisão.
21
+ - Há contexto do projeto disponível (NFRs, restrições). Se faltar, elicito antes — pesquisa sem
22
+ restrição produz resposta que não cabe no projeto.
23
+
24
+ ## Passos
25
+
26
+ 1. **Delimite a decisão por trás do tópico.** Que escolha arquitetural essa pesquisa precisa
27
+ sustentar? "React vs Svelte" não é a pergunta; "qual framework de UI minimiza custo de
28
+ manutenção para um time de 3 com esta escala-alvo" é. **Elicito** essa precisão com o usuário.
29
+ 2. **Liste as restrições do projeto** que a pesquisa deve respeitar: NFRs (escala, latência,
30
+ disponibilidade), orçamento, stack atual, capacidade do time, prazo. A resposta tem que caber
31
+ nelas — tecnologia chata por padrão, empolgante só onde o problema exige.
32
+ 3. **Formule as perguntas de pesquisa**, da mais decisiva para a periférica. Cada pergunta deve
33
+ produzir um achado acionável: maturidade, custo de operação, curva de aprendizado, riscos de
34
+ escala, comunidade/suporte, fit com o stack atual.
35
+ 4. **Defina os critérios de avaliação** com que as opções serão comparadas — e o teste do 10× entre
36
+ eles: o que quebra com cada opção quando o sistema escalar. Sem critério explícito, a pesquisa
37
+ vira coleção de opiniões.
38
+ 5. **Monte o prompt estruturado**: contexto + restrições + perguntas + critérios + formato de saída
39
+ esperado (tabela comparativa, recomendação com rastro). Valido com o usuário antes de fechar —
40
+ esse é o ponto de elicitação sagrado.
41
+ 6. **Entregue o prompt ao executor de pesquisa** (@analyst, ou a ferramenta de pesquisa configurada
42
+ via `nexus run`). O achado volta como insumo rastreável para `create-doc` / `spec-assess-complexity`
43
+ — e cada decisão de arquitetura que ele sustentar passa a rastrear a esse achado (No Invention).
44
+
45
+ ## Critério de pronto (DoD)
46
+
47
+ - [ ] A decisão arquitetural por trás do tópico está delimitada e validada com o usuário
48
+ - [ ] As restrições do projeto (NFRs, orçamento, stack, time) estão explícitas no prompt
49
+ - [ ] As perguntas estão ordenadas por poder de decisão e cada uma pede um achado acionável
50
+ - [ ] Os critérios de avaliação e o teste do 10× entre opções estão definidos
51
+ - [ ] O formato de saída esperado está especificado; o prompt foi validado antes de entregar
52
+
53
+ ## Falha / recuperação
54
+
55
+ - **O tópico não rastreia a uma decisão real** → paro e elicito a decisão; não gero prompt para
56
+ pesquisa sem dono nem propósito.
57
+ - **Faltam restrições do projeto** → elicito antes de montar o prompt; uma pesquisa sem restrição
58
+ devolve uma recomendação que não cabe e gera retrabalho.
59
+ - **O ponto de elicitação seria pulado em modo não-interativo** → recuso: `elicit: true` exige a
60
+ validação real do usuário sobre as perguntas e critérios.
61
+ - **A pesquisa volta sem sustentar a decisão** → reformulo as perguntas e re-disparo; não fecho uma
62
+ decisão de arquitetura sobre um achado que não responde o que importava.
@@ -0,0 +1,62 @@
1
+ ---
2
+ id: create-doc
3
+ agent: architect
4
+ title: Conceber a arquitetura a partir de um template
5
+ inputs: [template, contexto do projeto]
6
+ outputs: [documento de arquitetura preenchido]
7
+ elicit: true
8
+ modes: [interactive]
9
+ ---
10
+
11
+ # Conceber a arquitetura a partir de um template
12
+
13
+ **Objetivo:** produzir um documento de arquitetura completo (fullstack / backend / frontend /
14
+ brownfield) preenchendo um template seção a seção — registrando a *decisão* e o *porquê* de cada
15
+ trade-off, não só o diagrama.
16
+
17
+ **Pré-condições:**
18
+ - Existe um template alvo em `templates/`. Se o template não for indicado, **pare** e pergunte qual —
19
+ não escolho a forma do documento por conta própria.
20
+ - Existe contexto rastreável: PRD, NFRs, restrições. Sem isso, elicito antes de desenhar — arquitetura
21
+ sem requisito é ficção.
22
+
23
+ ## Passos
24
+
25
+ 1. **Carregue o template** e leia sua estrutura inteira. Identifico quais seções exigem elicitação
26
+ (`elicit: true`) — esses pontos NÃO podem ser pulados "por eficiência".
27
+ 2. **Levante os NFRs explicitamente** antes de qualquer seção de design: escala-alvo, latência,
28
+ disponibilidade, segurança, orçamento, prazo. NFR não declarado é a causa nº 1 de arquitetura que
29
+ parece certa e quebra em produção.
30
+ 3. **Preencha seção a seção, em ordem.** Para cada seção do template:
31
+ a. redijo o conteúdo rastreando cada afirmação a um FR/NFR/CON ou achado de pesquisa (No Invention);
32
+ b. nas fronteiras estruturais, rodo o teste do 10× e registro o failure mode, não só o caminho feliz;
33
+ c. **num ponto de elicitação, paro e apresento as opções ao usuário** no formato do template,
34
+ validando a resposta antes de seguir. Esse ponto é sagrado.
35
+ 4. **Documente o porquê de cada trade-off**, não só a escolha. Tecnologia chata por padrão,
36
+ empolgante por exceção — e cada exceção justificada no doc. Decisão sem rastro vira mito de equipe
37
+ em seis meses.
38
+ 5. **Roteie cada camada ao dono.** Schema/DDL detalhado → @data-engineer (eu defino a tecnologia e o
39
+ contrato; ela implementa). Fluxos/UI → @ux-design-expert. Eu costuro o sistema; não invado a lane
40
+ do especialista.
41
+ 6. **Revise contra o checklist** (`execute-checklist` com o checklist de arquitetura) e salve o
42
+ documento no destino do projeto (`docs/architecture/`). Implementado depois → @qa; subida → @devops.
43
+
44
+ ## Critério de pronto (DoD)
45
+
46
+ - [ ] Todas as seções do template preenchidas, nenhum ponto de elicitação pulado
47
+ - [ ] NFRs declarados explicitamente e refletidos nas decisões de design
48
+ - [ ] Cada afirmação rastreia a um FR/NFR/CON ou achado de pesquisa (No Invention)
49
+ - [ ] Cada fronteira estrutural tem failure mode ao escalar declarado (teste do 10×)
50
+ - [ ] Cada trade-off tem o porquê registrado; camadas de especialista roteadas ao dono
51
+ - [ ] Documento validado contra o checklist e salvo em `docs/architecture/`
52
+
53
+ ## Falha / recuperação
54
+
55
+ - **Falta contexto para uma seção (NFR ausente, requisito ambíguo)** → paro nessa seção, elicito o
56
+ que falta e só então sigo. Não preencho com suposição.
57
+ - **Um ponto de elicitação seria pulado por modo não-interativo** → recuso: `elicit: true` exige
58
+ interação real; sem ela, o documento não fica pronto.
59
+ - **Uma seção exige decisão de schema/UI fora da minha lane** → defino o contrato e delego a
60
+ implementação da camada ao dono (@data-engineer / @ux-design-expert).
61
+ - **O checklist reprova o documento** → corrijo as seções apontadas antes de declarar pronto; não
62
+ salvo como final uma arquitetura que falhou no gate.
@@ -0,0 +1,49 @@
1
+ ---
2
+ id: create-epic
3
+ agent: pm
4
+ title: Estruturar o epic a partir do PRD
5
+ inputs: [docs/prd/prd.md]
6
+ outputs: ['docs/epics/{epicNum}.epic.md com fronteiras, dependências e quality gates']
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Estruturar o epic a partir do PRD
12
+
13
+ **Objetivo:** quebrar o PRD em epics com fronteiras limpas, dependências mapeadas e quality gates
14
+ previstos — e **delegar a criação das stories ao @sm** (Gate 1). Eu desenho o epic; eu não crio a story.
15
+
16
+ **Pré-condições:**
17
+ - O PRD existe em `docs/prd/` com FRs/NFRs e critérios de aceite. Se o PRD não está pronto, **pare** e
18
+ rode `create-prd` / `create-brownfield-prd` antes.
19
+ - Os FRs têm rastro ao "por quê". Se há feature órfã no PRD, **pare** e resolva na origem (No invention).
20
+
21
+ ## Passos
22
+
23
+ 1. **Agrupe os FRs em epics de fronteira limpa.** Cada epic entrega um incremento de valor coeso e
24
+ independente o quanto der. Nada de epic "guarda-chuva" sem foco.
25
+ 2. **Mapeie dependências entre epics** (o que precisa do quê primeiro) e ordene por valor x dependência —
26
+ o que destrava mais cedo, vai primeiro.
27
+ 3. **Escreva cada epic** a partir de `templates/epic-tmpl.md`: objetivo, FRs cobertos (com rastro ao
28
+ PRD), critério de aceite do epic, dependências e **quality gates previstos** (onde o @qa entra).
29
+ 4. **Preveja os agentes especializados de cada frente** (implementação → @dev, dados → @data-engineer,
30
+ UX → @ux-design-expert, subida → @devops). Qualidade entra no plano, não depois.
31
+ 5. **Salve em `docs/epics/{epicNum}.epic.md`** e registre a ordem de execução sugerida.
32
+ 6. **Delegue a criação das stories ao @sm (Gate 1).** Eu estruturo o epic e entrego ao River para o
33
+ `*draft`. **Não furo essa fronteira**, mesmo que "seja rápido". Validação das stories → @po.
34
+
35
+ ## Critério de pronto (DoD)
36
+
37
+ - [ ] Cada epic tem objetivo, FRs cobertos (com rastro ao PRD) e critério de aceite
38
+ - [ ] Dependências entre epics mapeadas e ordem de execução definida
39
+ - [ ] Quality gates e agentes especializados previstos por epic
40
+ - [ ] Epics salvos em `docs/epics/`; **stories delegadas ao @sm** (não criadas por mim)
41
+ - [ ] Nenhum FR órfão ou inventado — tudo rastreia ao PRD
42
+
43
+ ## Falha / recuperação
44
+
45
+ - **Um FR não cabe em nenhum epic limpo** → reviso o agrupamento; não crio epic guarda-chuva pra
46
+ esconder o problema.
47
+ - **Dependências formam ciclo** → reordeno ou recorto o escopo do epic até quebrar o ciclo.
48
+ - **PRD está ambíguo/incompleto** → volto ao `create-prd`; não invento o requisito que falta.
49
+ - **Pressão para eu mesma criar a story** → recuso e delego ao @sm; a fronteira do Gate 1 não negocia.
@@ -0,0 +1,56 @@
1
+ ---
2
+ id: create-front-end-spec
3
+ agent: ux-design-expert
4
+ title: Escrever a especificação de frontend detalhada
5
+ inputs: [personas, wireframes, story/spec, design tokens disponíveis]
6
+ outputs: [front-end-spec.md, mapeamento componente→AC]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Escrever a especificação de frontend detalhada
12
+
13
+ **Objetivo:** consolidar pesquisa, wireframes e tokens numa spec de frontend precisa e rastreável,
14
+ que diga ao @dev exatamente o que construir — comportamento, estados, a11y e tokens — sem ambiguidade
15
+ e sem escopo inventado.
16
+
17
+ **Pré-condições:**
18
+ - Existem wireframes (`ux-create-wireframe`) e, idealmente, pesquisa de usuário. Sem wireframe,
19
+ **pare** — a spec não nasce de nada.
20
+ - A story/spec define os ACs no escopo. Toda seção da front-end spec vai rastrear a um AC/FR/NFR.
21
+
22
+ ## Passos
23
+
24
+ 1. **Liste os componentes e telas** da spec a partir dos wireframes, classificando por nível Atomic
25
+ Design (átomo → molécula → organismo → template → página). Reuso vem antes de criação.
26
+ 2. **Para cada componente, especifique:** anatomia, variantes, estados (default, hover, foco,
27
+ desabilitado, carregando, erro), comportamento de interação e responsividade.
28
+ 3. **Amarre os design tokens:** cor, espaçamento, tipografia e raio referenciam tokens nomeados —
29
+ **zero valor hardcoded** na spec. Token ausente vira pendência para `extract-tokens`.
30
+ 4. **Especifique a acessibilidade por componente:** papel/semântica ARIA quando aplicável, ordem de
31
+ foco, contraste AA, alvo de toque, alternativa textual, comportamento com teclado e leitor de
32
+ tela. A11y é seção obrigatória, não apêndice.
33
+ 5. **Defina os critérios de UX testáveis** (ex.: "foco visível em todo controle", "estado de erro
34
+ anuncia mensagem ao leitor de tela") para o @qa conseguir verificar.
35
+ 6. **Mapeie cada seção da spec a um AC/FR/NFR** da story. Seção órfã sai — é invenção.
36
+ 7. **Registre a spec** em `docs/stories/{epic}/front-end-spec.md` e roteie: vai para o @dev
37
+ implementar e alimenta `generate-ai-frontend-prompt` / `build-component`.
38
+
39
+ ## Critério de pronto (DoD)
40
+
41
+ - [ ] Componentes classificados por nível Atomic Design, reuso priorizado
42
+ - [ ] Cada componente com anatomia, variantes, estados e comportamento
43
+ - [ ] Tokens nomeados em todo valor visual — nenhum hardcoded
44
+ - [ ] Seção de acessibilidade WCAG AA por componente
45
+ - [ ] Critérios de UX testáveis definidos para o @qa
46
+ - [ ] Cada seção rastreia a um AC/FR/NFR; spec registrada em `docs/stories/`
47
+
48
+ ## Falha / recuperação
49
+
50
+ - **Faltam wireframes** → volto para `ux-create-wireframe` antes de especificar.
51
+ - **Não há design tokens** → escrevo a spec referenciando tokens-alvo e registro a pendência de
52
+ `extract-tokens`/`setup-design-system`; não hardcodo para "destravar".
53
+ - **Decisão de stack/arquitetura de frontend surge** → delego à Aria (@architect); a spec descreve
54
+ o comportamento de UX, não escolhe a tecnologia.
55
+ - **A story não cobre um comportamento que a spec exigiria** → paro, registro a lacuna e devolvo ao
56
+ @sm/@po.
@@ -0,0 +1,57 @@
1
+ ---
2
+ id: create-migration-plan
3
+ agent: data-engineer
4
+ title: Planejar a migração com estratégia de rollback
5
+ inputs: [schema, políticas RLS, índices, estado atual do banco]
6
+ outputs: [plano de migração, scripts up/down, docs/data/migration-plan.md]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Planejar a migração com estratégia de rollback
12
+
13
+ **Objetivo:** transformar as mudanças de schema/RLS/índices em um plano de migração seguro e
14
+ reversível — nada chega ao banco sem snapshot antes e script de rollback pronto.
15
+
16
+ **Pré-condições:**
17
+ - O DDL alvo existe (schema, RLS e/ou índices já desenhados). Sem alvo, não há plano.
18
+ - O estado atual do banco é conhecido (ou snapshotável). Se não dá para inspecionar o estado vigente,
19
+ **pare** — migração sem baseline é salto no escuro.
20
+
21
+ ## Passos
22
+
23
+ 1. **Faça o diff** entre o estado atual e o DDL alvo: o que cria, altera, remove. Cada mudança no
24
+ plano rastreia a uma story/spec — sem invenção de coluna ou tabela.
25
+ 2. **Ordene as operações por dependência:** tipos/enums e tabelas referenciadas antes; FKs, índices e
26
+ políticas RLS depois. Essa ordem é o que `db-verify-order` vai validar.
27
+ 3. **Escreva o script `up` idempotente** (`IF NOT EXISTS`/`IF EXISTS`, `ADD COLUMN IF NOT EXISTS`):
28
+ rodar duas vezes tem que ser seguro. Migration que só roda uma vez vai trair num replay.
29
+ 4. **Escreva o script `down` (rollback) correspondente** para cada operação do `up`. Se eu não sei
30
+ como desfazer uma mudança, eu não a coloco no plano — reversibilidade é pré-condição.
31
+ 5. **Classifique operações destrutivas** (drop de coluna/tabela, mudança de tipo com perda): exigem
32
+ snapshot obrigatório e, idealmente, migração em duas fases (expand/contract) para não derrubar a
33
+ aplicação em execução.
34
+ 6. **Defina a sequência de execução segura:** `db-snapshot` (baseline) → `db-dry-run` →
35
+ `db-verify-order` → revisão de qualidade. CRÍTICO bloqueia a aplicação; ALTO exige mitigação ou
36
+ rollback testado.
37
+ 7. **Documente em `docs/data/migration-plan.md`:** diff, ordem, scripts up/down, operações
38
+ destrutivas e a sequência de execução. A aplicação em si é a task `db-apply-migration` — aqui só
39
+ planejo.
40
+
41
+ ## Critério de pronto (DoD)
42
+
43
+ - [ ] Diff completo entre estado atual e alvo, cada mudança rastreável
44
+ - [ ] Operações ordenadas por dependência
45
+ - [ ] Script `up` idempotente
46
+ - [ ] Script `down` (rollback) cobrindo cada operação do `up`
47
+ - [ ] Operações destrutivas marcadas com snapshot obrigatório e estratégia de fase
48
+ - [ ] Sequência segura (snapshot → dry-run → verify-order → revisão) definida
49
+ - [ ] `docs/data/migration-plan.md` escrito
50
+
51
+ ## Falha / recuperação
52
+
53
+ - **Uma operação não tem rollback claro** → não entra no plano até eu saber desfazê-la; reformulo a
54
+ abordagem (ex.: expand/contract) para torná-la reversível.
55
+ - **Estado atual do banco inacessível** → paro; não planejo migração sem baseline confiável.
56
+ - **A migração exige push/deploy** → o plano é meu, mas a subida é do @devops; eu delego a aplicação
57
+ em ambiente remoto ao @devops, sem nunca dar `git push` ou tocar em pipeline.