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,56 @@
1
+ ---
2
+ id: qa-review-story
3
+ agent: qa
4
+ title: Review completo de uma story com decisão de gate
5
+ inputs: [story]
6
+ outputs: [seção "QA Results" da story, decisão de gate, fix-request (se FAIL/CONCERNS)]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Review completo de uma story com decisão de gate
12
+
13
+ **Objetivo:** auditar uma story marcada `Ready for Review` em todos os eixos de risco e emitir uma
14
+ decisão de gate fundamentada — escrevendo SOMENTE a seção "QA Results" da story.
15
+
16
+ **Pré-condições:**
17
+ - A story existe e está em `Ready for Review`. Se estiver em `Draft`/`InProgress`, **pare** e
18
+ reporte — não reviso o que o @dev ainda não declarou pronto.
19
+ - A story tem ACs e seção de Testing. Sem o contrato, não há barra a julgar: devolvo ao @sm/@po.
20
+
21
+ ## Passos
22
+
23
+ 1. **Entendo o contrato.** Leio a story COMPLETA — ACs, escopo, Dev Notes, Testing, File List. Defino
24
+ o que "pronto" significa AQUI antes de julgar qualquer linha.
25
+ 2. **Perfilo o risco** (`qa-risk-profile`). Mapeio probabilidade × impacto por área para decidir onde
26
+ mergulho fundo e onde sou concisa. Profundidade segue o sinal de risco, não o humor.
27
+ 3. **Scan automatizado PRIMEIRO** (`*code-review`, CodeRabbit). Roda antes da análise manual,
28
+ self-healing de no máximo 2 iterações para CRITICAL/HIGH. Não começo o manual antes do scan fechar.
29
+ 4. **Caço o que falha em produção**, com profundidade proporcional ao risco: segurança
30
+ (`qa-security-checklist`), NFRs (`qa-nfr-assess`), migrations (`qa-migration-validation`), console
31
+ do browser (`qa-browser-console-check`).
32
+ 5. **Rastreio requisito → teste** (`qa-trace-requirements`). Toda AC ganha seu Given-When-Then. AC
33
+ órfã vira gap registrado, com severidade.
34
+ 6. **Verifico evidência e falso-positivo** (`qa-evidence-requirements`, `qa-false-positive-detection`).
35
+ "Corrigido" sem teste de regressão é hipótese, não fato.
36
+ 7. **Emito o gate** (`qa-gate`): PASS / CONCERNS / FAIL / WAIVED, com fundamentação rastreável a AC,
37
+ NFR ou CON. Escrevo a decisão na seção "QA Results" da story — nada mais.
38
+ 8. **Roteio a saída.** FAIL/CONCERNS → gero o fix-request (`qa-create-fix-request`) e devolvo ao @dev
39
+ com o defeito preciso. PASS e pronto pra subir → @devops. Nunca subo nada eu mesma.
40
+
41
+ ## Critério de pronto (DoD)
42
+
43
+ - [ ] Story lida por inteiro e contrato ("pronto") definido antes do julgamento
44
+ - [ ] Scan automatizado rodado e fechado antes da análise manual
45
+ - [ ] Todos os eixos de risco cobertos com profundidade proporcional ao risco
46
+ - [ ] Toda AC rastreada a teste; gaps registrados com severidade
47
+ - [ ] Decisão de gate emitida com fundamentação rastreável
48
+ - [ ] Apenas a seção "QA Results" foi escrita — nenhuma outra seção tocada
49
+ - [ ] Saída roteada: @dev (fix-request) ou @devops (subida)
50
+
51
+ ## Falha / recuperação
52
+
53
+ - **Scan automatizado mantém CRITICAL após 2 iterações** → registro e o gate não pode ser PASS.
54
+ - **Story sem ACs ou sem Testing** → HALT, devolvo ao @sm/@po; não invento o contrato.
55
+ - **Evidência ausente para um "funciona"** → CONCERNS no mínimo; não aprovo no escuro.
56
+ - **Achado exige correção de código** → gero fix-request e delego ao @dev; não conserto eu mesma.
@@ -0,0 +1,45 @@
1
+ ---
2
+ id: qa-risk-profile
3
+ agent: qa
4
+ title: Gerar a matriz de risco da story
5
+ inputs: [story]
6
+ outputs: [matriz de risco (probabilidade × impacto), áreas priorizadas para review]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Gerar a matriz de risco da story
12
+
13
+ **Objetivo:** mapear onde a story pode falhar em produção — por probabilidade × impacto — para que o
14
+ review mergulhe fundo onde o risco aponta e seja conciso onde não aponta.
15
+
16
+ **Pré-condições:**
17
+ - A story existe e tem ACs e escopo legíveis. Sem escopo, **pare**: não há área a perfilar.
18
+
19
+ ## Passos
20
+
21
+ 1. **Decomponho a story em áreas de mudança** (módulos, fluxos, dados, integrações). Cada área é uma
22
+ linha da matriz.
23
+ 2. **Pontuo probabilidade** de cada área (1=raro … 5=quase certo) com base em sinais concretos:
24
+ complexidade, novidade da tecnologia, acoplamento, histórico de bugs na área.
25
+ 3. **Pontuo impacto** de cada área (1=cosmético … 5=catastrófico): dado sensível, caminho crítico,
26
+ irreversibilidade, alcance de usuários afetados.
27
+ 4. **Calculo o score** (probabilidade × impacto) e classifico: ALTO (>=12), MÉDIO (6–11), BAIXO (<6).
28
+ 5. **Priorizo o escrutínio.** Áreas ALTO recebem review profundo (segurança, NFR, regressão); BAIXO
29
+ recebe checagem proporcional. Caminho crítico e dado sensível nunca caem para checagem trivial.
30
+ 6. **Registro a matriz** como insumo para `qa-review-story` e `qa-gate`. Cada score rastreia à AC/área
31
+ correspondente — sem inventar risco fora do escopo da story.
32
+
33
+ ## Critério de pronto (DoD)
34
+
35
+ - [ ] Toda área de mudança da story tem uma linha na matriz
36
+ - [ ] Probabilidade e impacto pontuados com sinal concreto, não palpite
37
+ - [ ] Score calculado e classificado (ALTO/MÉDIO/BAIXO)
38
+ - [ ] Áreas priorizadas para a profundidade do review
39
+ - [ ] Cada risco rastreia a uma AC/área da story
40
+
41
+ ## Falha / recuperação
42
+
43
+ - **Escopo da story ambíguo demais para perfilar** → registro a lacuna e devolvo ao @sm/@po.
44
+ - **Área de alto risco sem AC que a cubra** → registro como gap de cobertura para o gate, não invento
45
+ o requisito.
@@ -0,0 +1,64 @@
1
+ ---
2
+ id: qa-security-checklist
3
+ agent: qa
4
+ title: Scan de segurança de 8 pontos
5
+ inputs: [story, diff]
6
+ outputs: [achados de segurança rastreados, entrada na seção QA Results]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Scan de segurança de 8 pontos
12
+
13
+ **Objetivo:** varrer a mudança da story contra as 8 classes de vulnerabilidade mais comuns e
14
+ registrar cada achado com severidade rastreável a uma AC/NFR — antes que vire incidente em produção.
15
+
16
+ **Pré-condições:**
17
+ - A story existe e tem ACs. Se não houver contrato a rastrear, **pare** — eu não invento critério de
18
+ segurança fora da story/spec.
19
+ - O `diff` da mudança está disponível (commit local do @dev). Sem código para inspecionar, não há scan.
20
+ - O scan automatizado (`*code-review`) já rodou. Eu não refaço à mão o que a máquina pega de graça.
21
+
22
+ ## Passos
23
+
24
+ 1. **Defina o perímetro de risco.** Liste o que a story toca: entrada de usuário, autenticação,
25
+ dados sensíveis, chamadas externas. O eixo de maior risco recebe o mergulho mais profundo.
26
+ 2. **Percorra os 8 pontos**, marcando cada um PASS / CONCERNS / FAIL com evidência (linha/arquivo):
27
+ a. **Injeção** — SQL/NoSQL/command: toda query usa parâmetro/prepared statement? Nenhuma
28
+ concatenação de input cru.
29
+ b. **XSS** — todo dado renderizado é escapado/sanitizado? Nenhum `dangerouslySetInnerHTML` sem
30
+ sanitização.
31
+ c. **Secrets hardcoded** — nenhuma chave/token/senha no código ou em log. Tudo via env/cofre.
32
+ d. **AuthN/AuthZ** — o endpoint verifica identidade E permissão? Nenhuma rota sensível sem guarda.
33
+ e. **Validação de input** — todo input é validado em tipo/tamanho/range no servidor (não só no
34
+ cliente).
35
+ f. **Exposição de dado sensível** — nenhum PII/credencial em resposta, log ou mensagem de erro.
36
+ g. **Dependências** — nenhuma lib com CVE conhecida introduzida pela mudança.
37
+ h. **Configuração insegura** — CORS, headers, defaults permissivos, debug ligado em prod.
38
+ 3. **Rastreie cada achado** a uma AC ou NFR. Achado sem âncora no contrato vira nota, não bloqueio —
39
+ mas exposição de secret/PII é FAIL independentemente, por ser risco real.
40
+ 4. **Atribua severidade** por probabilidade × impacto: CRITICAL/HIGH bloqueiam; MEDIUM/LOW viram
41
+ CONCERNS documentado.
42
+ 5. **Escreva o resultado** SOMENTE na seção "QA Results" da story: pontos avaliados, achados, severidade
43
+ e evidência. Não toco em mais nada da story.
44
+ 6. **Roteie a saída.** Achado CRITICAL/HIGH → `*create-fix-request` para o @dev com o defeito preciso.
45
+ Limpo → alimenta o `*gate`.
46
+
47
+ ## Critério de pronto (DoD)
48
+
49
+ - [ ] Os 8 pontos avaliados, cada um com veredito e evidência
50
+ - [ ] Cada achado rastreia a uma AC/NFR ou é risco real autoevidente (secret/PII)
51
+ - [ ] Severidade atribuída por probabilidade × impacto
52
+ - [ ] Resultado escrito só na seção QA Results
53
+ - [ ] CRITICAL/HIGH roteado ao @dev via fix-request
54
+
55
+ ## Falha / recuperação
56
+
57
+ - **Diff indisponível ou parcial** → HALT, reporto que não posso assegurar segurança sem ver o código
58
+ completo. Não aprovo no escuro.
59
+ - **Achado CRITICAL (secret/injeção)** → FAIL imediato, fix-request ao @dev. Não dou PASS por pressão
60
+ de prazo.
61
+ - **A correção exige tocar infra/config externa** (CORS, secret store) → delego ao @devops; eu aponto,
62
+ ele opera o ambiente.
63
+ - **A mudança não tem teste de segurança para o caminho corrigido** → registro como gap no gate; risco
64
+ sem regressão é hipótese, não fato.
@@ -0,0 +1,47 @@
1
+ ---
2
+ id: qa-test-design
3
+ agent: qa
4
+ title: Desenhar os cenários de teste da story
5
+ inputs: [story]
6
+ outputs: [conjunto de cenários de teste em Given-When-Then, por nível e prioridade]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Desenhar os cenários de teste da story
12
+
13
+ **Objetivo:** produzir o conjunto de cenários que prova cada AC e cobre os caminhos de falha — em
14
+ Given-When-Then, priorizados por risco e distribuídos pelo nível certo (unit/integração/e2e).
15
+
16
+ **Pré-condições:**
17
+ - A story existe, com ACs e seção de Testing. Sem ACs, **pare**: não há o que provar.
18
+ - O risco já foi perfilado (`qa-risk-profile`), para priorizar onde a cobertura precisa ser densa.
19
+
20
+ ## Passos
21
+
22
+ 1. **Mapeio um cenário por AC**, no mínimo, em Given-When-Then. Caminho feliz é o piso, não o teto.
23
+ 2. **Adiciono cenários de borda e falha** onde o risco aponta: input inválido, limite, concorrência,
24
+ estado parcial, erro de dependência. Áreas ALTO recebem mais cenários; BAIXO recebe o proporcional.
25
+ 3. **Escolho o nível certo** para cada cenário (REUSE > ADAPT > CREATE de fixtures): unit para lógica
26
+ pura, integração para contratos entre módulos, e2e só onde o fluxo do usuário exige. Não testo no
27
+ nível caro o que o barato cobre.
28
+ 4. **Priorizo** cada cenário (P0 bloqueador, P1 importante, P2 desejável) pelo score de risco da área.
29
+ 5. **Verifico cobertura:** toda AC tem ao menos um cenário; nenhum cenário inventa requisito fora da
30
+ story. Lacunas viram gap registrado para o gate.
31
+ 6. **Entrego o desenho** como insumo para `create-suite` (implementação da suíte) e para
32
+ `qa-trace-requirements` (rastreabilidade).
33
+
34
+ ## Critério de pronto (DoD)
35
+
36
+ - [ ] Cada AC coberta por pelo menos um cenário em Given-When-Then
37
+ - [ ] Cenários de borda/falha presentes onde o risco aponta
38
+ - [ ] Cada cenário no nível certo (unit/integração/e2e), sem redundância cara
39
+ - [ ] Cenários priorizados (P0/P1/P2) pelo risco
40
+ - [ ] Nenhum cenário inventa requisito fora da story; gaps registrados
41
+
42
+ ## Falha / recuperação
43
+
44
+ - **AC ambígua/intestável** → registro a lacuna e devolvo ao @sm/@po; não desenho teste para um
45
+ requisito que não existe.
46
+ - **Cobertura impossível no nível disponível** → registro como CONCERNS e proponho o nível necessário
47
+ ao gate.
@@ -0,0 +1,48 @@
1
+ ---
2
+ id: qa-trace-requirements
3
+ agent: qa
4
+ title: Mapear cada AC para teste (rastreabilidade)
5
+ inputs: [story]
6
+ outputs: [matriz de rastreabilidade AC→teste, lista de gaps com severidade]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Mapear cada AC para teste (rastreabilidade)
12
+
13
+ **Objetivo:** provar que toda AC da story tem teste que a verifica em Given-When-Then — e nomear cada
14
+ buraco (AC sem teste) com severidade, em vez de fechar os olhos.
15
+
16
+ **Pré-condições:**
17
+ - A story existe, com ACs explícitas. Sem ACs, **pare**: não há requisito a rastrear.
18
+ - Existem testes (na File List / suíte) a mapear. Se não há suíte, o resultado é uma matriz cheia de
19
+ gaps — e isso já é o achado.
20
+
21
+ ## Passos
22
+
23
+ 1. **Listo cada AC** da story como linha da matriz de rastreabilidade.
24
+ 2. **Para cada AC, localizo o(s) teste(s)** que a verificam e descrevo o vínculo em Given-When-Then
25
+ (dado o estado, quando a ação, então o resultado esperado que prova a AC).
26
+ 3. **Marco a cobertura** por AC: COBERTA (teste verde rastreado), PARCIAL (só caminho feliz, falta
27
+ borda/falha), ÓRFÃ (nenhum teste).
28
+ 4. **Registro cada gap** (PARCIAL/ÓRFÃ) com severidade derivada do risco da AC: ÓRFÃ em área ALTO é
29
+ bloqueador; PARCIAL em área BAIXO é dívida.
30
+ 5. **Confirmo o inverso:** todo teste rastreia a alguma AC. Teste que não prova nada da story é ruído
31
+ — registro, mas não inflo a cobertura com ele.
32
+ 6. **Entrego a matriz** como insumo direto para `qa-gate` — a rastreabilidade é o que separa "achei
33
+ bonito" de "provei que atende".
34
+
35
+ ## Critério de pronto (DoD)
36
+
37
+ - [ ] Toda AC é uma linha da matriz com status de cobertura
38
+ - [ ] Cada vínculo AC→teste descrito em Given-When-Then
39
+ - [ ] Todo gap (PARCIAL/ÓRFÃ) registrado com severidade derivada do risco
40
+ - [ ] Inverso confirmado: testes sem AC identificados
41
+ - [ ] Matriz entregue como insumo para o gate
42
+
43
+ ## Falha / recuperação
44
+
45
+ - **AC intestável como escrita** → registro a lacuna e devolvo ao @sm/@po; não invento o teste de um
46
+ requisito ambíguo.
47
+ - **AC órfã em área de alto risco** → marco como bloqueador para o gate (não pode ser PASS) e roteio
48
+ fix-request ao @dev para criar o teste faltante.
@@ -0,0 +1,53 @@
1
+ ---
2
+ id: release-management
3
+ agent: devops
4
+ title: Criar release versionada
5
+ inputs: [versão alvo, diff desde a última tag]
6
+ outputs: [changelog, tag, GitHub release, caminho de rollback]
7
+ elicit: true
8
+ modes: [interactive]
9
+ ---
10
+
11
+ # Criar release versionada
12
+
13
+ **Objetivo:** publicar uma release versionada — changelog gerado, tag semântica e GitHub release —
14
+ após confirmação humana, com o caminho de reversão claro. Release é exclusiva do @devops.
15
+
16
+ **Pré-condições:**
17
+ - A branch base (`main`/`master`) está verde: gate de qualidade passou e está sincronizada com o
18
+ remoto. Se há trabalho não auditado, **pare** e rode o `pre-push-quality-gate`.
19
+ - A versão alvo respeita SemVer e foi confirmada via `*version-check` (ver `version-management`). Sem
20
+ bump confirmado, **pare**.
21
+
22
+ ## Passos
23
+
24
+ 1. **Detecte o contexto do repositório** — remoto, branch base e a última tag (`git describe --tags`).
25
+ Nunca assuma repo fixo.
26
+ 2. **Reúna o diff desde a última tag** (`git log {ultima-tag}..HEAD`) — a fonte do changelog. Tudo
27
+ rastreia a commits/stories reais; sem invenção de itens de release.
28
+ 3. **Gere o changelog** agrupando por tipo (feat, fix, breaking) a partir dos conventional commits.
29
+ 4. **Confirme o bump semântico.** MAJOR se há breaking change no diff; MINOR para feature compatível;
30
+ PATCH para fix. Se a versão alvo não bate com o diff, sinalize a divergência.
31
+ 5. **Revele a release proposta.** Mostre versão, changelog e a tag a criar.
32
+ 6. **[ELICITAÇÃO] Peça o "ok" explícito.** Release é irreversível na prática — exige confirmação humana.
33
+ 7. **Crie a tag** (`git tag -a v{versão}`) e a **GitHub release** (`gh release create`) com o changelog
34
+ como corpo. Empurre a tag para o remoto.
35
+ 8. **Reporte e deixe o rollback claro.** Devolvo a URL da release e o caminho de reversão (deletar tag
36
+ local/remota e a release pelo `gh` caso publicada por engano).
37
+
38
+ ## Critério de pronto (DoD)
39
+
40
+ - [ ] Última tag detectada e diff coletado dinamicamente
41
+ - [ ] Changelog gerado a partir dos commits reais (sem invenção)
42
+ - [ ] Bump semântico coerente com o diff e confirmado
43
+ - [ ] Confirmação humana obtida antes de tagear/publicar
44
+ - [ ] Tag criada, release publicada e URL reportada com caminho de rollback
45
+
46
+ ## Falha / recuperação
47
+
48
+ - **Bump diverge do diff** (ex.: PATCH com breaking change) → paro e re-confirmo a versão; SemVer é lei.
49
+ - **Branch base não está verde** → não faço release; volto ao gate.
50
+ - **Usuário não confirma** → não crio tag nem release.
51
+ - **Tag já existe** → não sobrescrevo; reporto o conflito e proponho a próxima versão.
52
+ - **Release publicada por engano** → executo o rollback documentado (deletar tag remota + release),
53
+ com novo "ok" do usuário.
@@ -0,0 +1,61 @@
1
+ ---
2
+ id: repository-cleanup
3
+ agent: devops
4
+ title: Limpar o repositório — branches e artefatos obsoletos
5
+ inputs: [repositório, objetivo de limpeza]
6
+ outputs: [branches removidas, artefatos removidos, relatório de limpeza]
7
+ elicit: true
8
+ modes: [interactive]
9
+ ---
10
+
11
+ # Limpar o repositório — branches e artefatos obsoletos
12
+
13
+ **Objetivo:** identificar branches já mergeadas, branches velhas e artefatos obsoletos, apresentá-los
14
+ ao usuário e remover apenas o que ele aprovar — mantendo o repositório limpo sem nunca apagar trabalho
15
+ vivo.
16
+
17
+ **Pré-condições:**
18
+ - O diretório é um repositório git com remoto detectável. Se for greenfield (sem git), **pare** e
19
+ recomende `*environment-bootstrap` antes de qualquer limpeza.
20
+ - A árvore de trabalho está limpa (sem mudanças não-commitadas que possam se perder). Se houver
21
+ pendências, **pare** e peça para o @dev commitar ou stashar antes.
22
+
23
+ ## Passos
24
+
25
+ 1. **Detecto o contexto do repositório.** Remoto, branch atual e branch protegida (`main`/`master`).
26
+ Nunca assumo um repo fixo — detecto dinamicamente.
27
+ 2. **Atualizo o estado remoto** com `git fetch --all --prune`, para que branches já deletadas no
28
+ remoto não apareçam como vivas localmente.
29
+ 3. **Classifico os candidatos** em três grupos, sem apagar nada ainda:
30
+ a. **branches locais já mergeadas** na protegida (`git branch --merged`), exceto a protegida e a atual;
31
+ b. **branches stale** (sem commits há um limite que confirmo com o usuário, ex.: 30 dias);
32
+ c. **artefatos obsoletos** (build, caches, logs) que rastreiam a uma story/objetivo de limpeza —
33
+ nunca arquivos de escopo desconhecido.
34
+ 4. **PONTO DE ELICITAÇÃO — apresento a lista e espero o "ok".** Mostro cada candidato com o motivo
35
+ (mergeada / stale / artefato) e o destino (local, remoto ou ambos). **Não removo nada sem a
36
+ aprovação explícita do usuário** — delete é destrutivo e pede confirmação humana.
37
+ 5. **Removo só o aprovado.** Branch local: `git branch -d` (nunca `-D` sem aprovação extra, pois `-d`
38
+ recusa branch não-mergeada como salvaguarda). Branch remota: `git push origin --delete {branch}` —
39
+ essa é operação de remoto, **exclusiva minha** (@devops). Artefatos: removo do disco e, se
40
+ versionados por engano, do índice.
41
+ 6. **NUNCA toco na protegida.** `main`/`master` jamais entra na lista de delete — nem local, nem remota.
42
+ 7. **Reporto e deixo o rollback claro.** Listo o que foi removido. Branch local recém-deletada é
43
+ recuperável pelo `reflog`; informo o SHA de cada branch removida para que o usuário possa
44
+ restaurá-la (`git branch {nome} {sha}`) se precisar.
45
+
46
+ ## Critério de pronto (DoD)
47
+
48
+ - [ ] `git fetch --prune` executado; estado remoto sincronizado
49
+ - [ ] Candidatos classificados (mergeadas / stale / artefatos) e apresentados ao usuário
50
+ - [ ] Apenas itens explicitamente aprovados foram removidos
51
+ - [ ] Branch protegida (`main`/`master`) intocada
52
+ - [ ] Relatório de limpeza entregue com os SHAs para rollback
53
+
54
+ ## Falha / recuperação
55
+
56
+ - **Usuário não aprova nenhum item** → encerro sem remover nada; limpeza é opcional, não obrigatória.
57
+ - **Branch parece mergeada mas o `-d` recusa** → respeito a salvaguarda, sinalizo ao usuário e só uso
58
+ `-D` com aprovação explícita extra — não forço delete de trabalho não-integrado.
59
+ - **Delete de branch remota falha** (permissão/branch protegida no GitHub) → reporto o erro, não
60
+ insisto, e deixo a branch como estava.
61
+ - **Item removido por engano** → recupero via `reflog`/SHA registrado no relatório antes de encerrar.
package/tasks/route.md ADDED
@@ -0,0 +1,44 @@
1
+ ---
2
+ id: route
3
+ agent: nexus-master
4
+ title: Rotear — despachar uma tarefa de dono único
5
+ inputs: [tarefa]
6
+ outputs: [tarefa despachada ao agente dono]
7
+ elicit: false
8
+ modes: [yolo]
9
+ ---
10
+
11
+ # Rotear — despachar uma tarefa de dono único
12
+
13
+ **Objetivo:** entregar uma tarefa de dono único ao agente certo, sem decompor nem deliberar — quando
14
+ o trabalho é claramente de uma lane só.
15
+
16
+ **Pré-condições:**
17
+ - A tarefa tem **um dono óbvio** (ex.: "valida essa story" → @po; "desenha o schema" →
18
+ @data-engineer). Se precisa de várias frentes, use `orchestrate`; se é decisão, use `deliberate`.
19
+
20
+ ## Passos
21
+
22
+ 1. **Identifico o dono** pela matriz de autoridade: implementação→@dev, teste/gate→@qa,
23
+ arquitetura→@architect, PRD/epic→@pm, criar story→@sm, validar story→@po, banco→@data-engineer,
24
+ UX→@ux-design-expert, pesquisa→@analyst, git push/PR/release/MCP→@devops (exclusivo).
25
+ 2. **Verifico a autoridade.** Operação exclusiva (subida, PR, MCP) **sempre** vai pro @devops — nem eu
26
+ nem ninguém fura isso.
27
+ 3. **Despacho com contexto mínimo suficiente:** o quê, o critério de pronto, e os links que o dono
28
+ precisa. Não despejo contexto irrelevante.
29
+ 4. **Acompanho o handoff.** Quando o dono entrega, roteio o próximo passo da cadeia (ex.: @sm cria →
30
+ @po valida → @dev implementa → @qa gate → @devops sobe).
31
+
32
+ ## Critério de pronto (DoD)
33
+
34
+ - [ ] Dono correto identificado pela matriz de autoridade
35
+ - [ ] Operação exclusiva roteada ao @devops (nunca contornada)
36
+ - [ ] Tarefa despachada com critério de pronto e contexto mínimo
37
+ - [ ] Próximo passo da cadeia roteado no handoff
38
+
39
+ ## Falha / recuperação
40
+
41
+ - **A tarefa não tem dono único** → não é roteamento; troco para `orchestrate` (várias frentes) ou
42
+ `deliberate` (decisão).
43
+ - **Dois agentes parecem donos** → eu medeio: defino a fronteira (ex.: @architect decide a tecnologia
44
+ de banco, @data-engineer implementa o schema) e roteio cada parte ao seu dono.
@@ -0,0 +1,50 @@
1
+ ---
2
+ id: run-tests
3
+ agent: dev
4
+ title: Rodar lint + toda a suíte de testes
5
+ inputs: [projeto/escopo opcional]
6
+ outputs: [resultado de lint, resultado da suíte, veredito verde/vermelho]
7
+ elicit: false
8
+ modes: [yolo, interactive]
9
+ ---
10
+
11
+ # Rodar lint + toda a suíte de testes
12
+
13
+ **Objetivo:** executar a validação completa do projeto — lint e a suíte inteira de testes — e emitir
14
+ um veredito honesto de verde/vermelho, sem pular nada "por eficiência".
15
+
16
+ **Pré-condições:**
17
+ - As dependências do projeto estão instaladas e os scripts de lint/teste estão definidos. Se um
18
+ script não existe, **pare** e reporto — não invento comando de teste.
19
+
20
+ ## Passos
21
+
22
+ 1. **Identifico os comandos do projeto** (lint, typecheck, testes) a partir da configuração do
23
+ projeto. Não presumo o runner: leio o que o projeto declara.
24
+ 2. **Rodo o lint.** Registro o resultado. Limpo → sigo. Com erros → registro cada erro (eles contam
25
+ no veredito final).
26
+ 3. **Rodo o typecheck** (se o projeto tem). 0 erros → sigo. Caso contrário, registro.
27
+ 4. **Rodo TODA a suíte de testes** — sem `--bail` preguiçoso, sem filtrar só a área que mexi. Regressão
28
+ se pega rodando o conjunto inteiro. Capturo aprovados, falhos e pulados.
29
+ 5. **Emito o veredito:**
30
+ - **Verde:** lint limpo, typecheck 0, suíte 100% passando (sem pulados silenciosos).
31
+ - **Vermelho:** qualquer lint/typecheck com erro ou qualquer teste falhando — listo exatamente o
32
+ que quebrou, com o arquivo e a mensagem.
33
+ 6. **Reporto o resultado** de forma rastreável. Se vermelho e estou num loop de implementação, volto
34
+ ao código; não marco nada `[x]` com a suíte vermelha.
35
+
36
+ ## Critério de pronto (DoD)
37
+
38
+ - [ ] Lint executado, resultado registrado
39
+ - [ ] Typecheck executado (quando existe), resultado registrado
40
+ - [ ] Suíte COMPLETA executada — não um subconjunto
41
+ - [ ] Veredito verde/vermelho emitido, com a lista exata do que quebrou (se vermelho)
42
+
43
+ ## Falha / recuperação
44
+
45
+ - **Um script de teste/lint não existe** → HALT e reporto; não improviso o comando.
46
+ - **A suíte trava/pendura** → reporto o teste que pendura; não dou por verde uma suíte que não
47
+ terminou.
48
+ - **Testes pulados silenciosamente** → trato como sinal amarelo: reporto os pulados; suíte com pulados
49
+ não declarados não é "verde de verdade".
50
+ - **Vermelho** → reporto o que quebrou e devolvo ao loop de implementação; não marco pronto.
@@ -0,0 +1,54 @@
1
+ ---
2
+ id: security-audit
3
+ agent: data-engineer
4
+ title: Auditoria de segurança e qualidade do banco
5
+ inputs: [scope, story]
6
+ outputs: [relatório de achados por severidade, lista de remediações]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Auditoria de segurança e qualidade do banco
12
+
13
+ **Objetivo:** auditar o banco no escopo pedido (`rls`, `schema` ou `full`) e emitir achados por
14
+ severidade — cobertura de RLS, integridade do schema e exposição de segredos — com remediação clara.
15
+
16
+ **Pré-condições:**
17
+ - O `scope` é `rls`, `schema` ou `full`. Se ambíguo, default para `full`.
18
+ - Acesso de leitura ao catálogo do banco (`pg_catalog`/`information_schema`). Esta é uma auditoria de
19
+ leitura — não altera nada.
20
+
21
+ ## Passos
22
+
23
+ 1. **Cobertura de RLS** (escopo `rls`/`full`): liste tabelas em schemas expostos sem `rowsecurity`
24
+ habilitado, e tabelas com RLS ligada mas sem política (negam tudo silenciosamente). Cada tabela
25
+ pública sem RLS é achado CRÍTICO.
26
+ 2. **Integridade do schema** (escopo `schema`/`full`): toda tabela tem PK? FKs declaradas têm índice
27
+ de suporte? Baseline presente (`id`/`created_at`/`updated_at`)? Colunas que deveriam ser `NOT NULL`
28
+ estão? CHECK constraints onde a regra de domínio exige?
29
+ 3. **Exposição de privilégio:** funções `SECURITY DEFINER` sem `search_path` fixo, GRANTs amplos a
30
+ `public`/`anon`, uso de service role onde RLS bastaria. Redijo qualquer segredo que apareça —
31
+ nunca ecoo token/senha completo.
32
+ 4. **Classifique cada achado** por severidade: CRÍTICO (tabela pública sem RLS, vazamento de
33
+ privilégio), ALTO (FK sem índice, baseline ausente em tabela quente), MÉDIO/BAIXO (convenção,
34
+ débito menor).
35
+ 5. **Proponha remediação por achado** rastreável: o quê, por quê, e o comando/migration sugerido —
36
+ sem aplicar nada nesta task (auditoria observa; correção é outra task).
37
+ 6. **Emita o relatório** ordenado por severidade, com contagem por nível e o veredito geral.
38
+
39
+ ## Critério de pronto (DoD)
40
+
41
+ - [ ] Cobertura de RLS verificada em todas as tabelas do escopo
42
+ - [ ] Integridade do schema checada (PK, FK+índice, baseline, NOT NULL, CHECK)
43
+ - [ ] Exposição de privilégio avaliada; segredos redigidos
44
+ - [ ] Cada achado tem severidade e remediação rastreável
45
+ - [ ] Relatório emitido; nada alterado no banco
46
+
47
+ ## Falha / recuperação
48
+
49
+ - **Achado CRÍTICO (tabela pública sem RLS / vazamento)** → marco como bloqueador e roteio a
50
+ remediação (`db-policy-apply` / migration) antes de qualquer subida.
51
+ - **Sem acesso ao catálogo** → **pare** e reporte a lacuna de permissão; auditoria parcial não vale
52
+ como veredito.
53
+ - **Remediação exige migration** → entrego o plano; a aplicação segue o fluxo snapshot → dry-run →
54
+ apply, e o push é do @devops.
@@ -0,0 +1,60 @@
1
+ ---
2
+ id: setup-database
3
+ agent: data-engineer
4
+ title: Configurar o projeto de banco de dados
5
+ inputs: [tipo de banco (supabase/postgresql/mysql…), variáveis de ambiente]
6
+ outputs: [estrutura do projeto de banco, .env validado, conexão verificada]
7
+ elicit: true
8
+ modes: [interactive]
9
+ ---
10
+
11
+ # Configurar o projeto de banco de dados
12
+
13
+ **Objetivo:** deixar o projeto de banco pronto para receber schema e migrations — estrutura de
14
+ diretórios, ambiente validado e conexão verificada — com segurança desde a configuração.
15
+
16
+ **Pré-condições:**
17
+ - O tipo de banco está definido ou será elicitado (PostgreSQL/Supabase por padrão). A escolha de
18
+ tecnologia, se ainda em aberto, é do @architect — eu configuro o que foi decidido.
19
+ - Há acesso às credenciais de conexão (ou ao cofre/`.env` onde elas vivem).
20
+
21
+ ## Passos
22
+
23
+ 1. **Confirme o tipo de banco e o ambiente alvo** (PONTO DE ELICITAÇÃO — exige confirmação do
24
+ usuário): qual engine? qual ambiente (local/staging/produção)? Eu não presumo produção nem
25
+ sobrescrevo ambiente sem o usuário dizer.
26
+ 2. **Crie a estrutura do projeto de banco** sob `docs/data-models/` (config) e `docs/data/` (docs):
27
+ diretórios para migrations, seeds, snapshots e políticas. Estrutura previsível é o que as tasks
28
+ `db-*` esperam.
29
+ 3. **Valide as variáveis de ambiente** (equivalente a `db-env-check`): host, porta, database, user,
30
+ credencial, modo SSL. Em produção, exijo Pooler com `sslmode=require`. Variável faltando = pare.
31
+ 4. **Verifique a conexão** com um teste leve (ping/`SELECT 1`). Sem conexão verificada, não declaro o
32
+ setup pronto.
33
+ 5. **Garanta o tratamento de segredo:** confirme que credenciais estão em `.env`/cofre e nunca em
34
+ código versionado; redijo qualquer segredo em logs. Service role, se presente, fica marcado como
35
+ sensível.
36
+ 6. **Crie um snapshot baseline inicial** (via `db-snapshot`) se já houver schema existente — ponto de
37
+ rollback antes de qualquer trabalho futuro.
38
+ 7. **Documente o setup** em `docs/data/setup.md`: tipo de banco, ambiente, estrutura criada e
39
+ pré-requisitos para as próximas tasks (`create-schema`, `create-migration-plan`).
40
+
41
+ ## Critério de pronto (DoD)
42
+
43
+ - [ ] Tipo de banco e ambiente confirmados pelo usuário no ponto de elicitação
44
+ - [ ] Estrutura de diretórios criada (migrations, seeds, snapshots, políticas)
45
+ - [ ] Variáveis de ambiente validadas; produção com Pooler + `sslmode=require`
46
+ - [ ] Conexão verificada (`SELECT 1` ou equivalente)
47
+ - [ ] Segredos fora do versionamento e redigidos em logs
48
+ - [ ] Snapshot baseline criado se havia schema preexistente
49
+ - [ ] `docs/data/setup.md` escrito
50
+
51
+ ## Falha / recuperação
52
+
53
+ - **Variável de ambiente ou credencial faltando** → paro e reporto exatamente qual; não invento valor
54
+ nem assumo default de produção.
55
+ - **Conexão falha** → não declaro pronto; reporto o erro (com segredo redigido) e escalo a infra ao
56
+ @devops se for caso de rede/provisionamento.
57
+ - **Provisionamento de infra/MCP/secrets remotos** → delego ao @devops; configuração de
58
+ infraestrutura e MCP é exclusiva dele, eu não toco.
59
+ - **Escolha de engine ainda em aberto** → escalo ao @architect antes de configurar; não decido
60
+ tecnologia de sistema.
@@ -0,0 +1,60 @@
1
+ ---
2
+ id: setup-design-system
3
+ agent: ux-design-expert
4
+ title: Inicializar a estrutura do design system
5
+ inputs: [design tokens, story/spec de design system]
6
+ outputs: [estrutura Atomic Design inicializada, docs/design-system/]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Inicializar a estrutura do design system
12
+
13
+ **Objetivo:** criar o esqueleto do design system seguindo Atomic Design (átomo → molécula →
14
+ organismo → template → página), já cabeado aos design tokens, para que cada componente novo nasça
15
+ consistente e sem valor hardcoded.
16
+
17
+ **Pré-condições:**
18
+ - Os design tokens já existem (`extract-tokens` rodou) em `docs/design-system/tokens/`. Sem
19
+ tokens, **pare**: estrutura sem fonte de verdade vira hardcode disfarçado.
20
+ - Existe story/spec que pede o design system. Sem rastro, elicito — não invento arquitetura.
21
+ - A decisão de stack de frontend (framework/bibliotecas) já é da Aria (@architect). Se ainda não
22
+ houver, **delego a decisão técnica** antes de cabear a estrutura a um framework.
23
+
24
+ ## Passos
25
+
26
+ 1. **Confirmo a stack** decidida pelo @architect (ex.: framework de componente, formato de estilo).
27
+ Eu não escolho stack sozinha — trago a lente de UX e uso a decisão dele.
28
+ 2. **Crio a árvore Atomic Design** em `docs/design-system/`:
29
+ - `tokens/` (já existente, da extração)
30
+ - `atoms/` (componentes atômicos)
31
+ - `molecules/` (composições de átomos)
32
+ - `organisms/` (composições de moléculas)
33
+ - `templates/` e `pages/` (estrutura de layout)
34
+ - `docs/` (pattern library gerada depois)
35
+ 3. **Cabeio os tokens** ao ponto de entrada do design system (import/registro dos tokens como fonte
36
+ de cor/espaçamento/tipografia), de forma que nenhum componente futuro precise de hex solto.
37
+ 4. **Defino as convenções mínimas**: padrão de nomenclatura, estrutura de cada componente
38
+ (componente + teste + tokens + a11y), e o índice de exportação. Documento isso num `README` da
39
+ pasta para quem construir depois seguir.
40
+ 5. **Crio o checklist de qualidade do componente** como referência (passa em WCAG AA, usa só tokens,
41
+ tem teste) apontando para `accessibility-wcag-checklist` — todo átomo nasce contra esse critério.
42
+ 6. **Registro os arquivos criados** na File List da story.
43
+ 7. **Roteio.** Estrutura pronta habilita `build-component` e `compose-molecule`. Integração na
44
+ aplicação além do design system é do @dev; subida é do @devops.
45
+
46
+ ## Critério de pronto (DoD)
47
+
48
+ - [ ] Árvore Atomic Design criada em `docs/design-system/` (atoms → pages + docs)
49
+ - [ ] Tokens cabeados como fonte única; nenhum ponto exige valor hardcoded
50
+ - [ ] Convenções de nomenclatura/estrutura e índice de exportação documentados no README
51
+ - [ ] Checklist de qualidade do componente referenciado (a11y + tokens + teste)
52
+ - [ ] Stack confirmada com o @architect (não decidida por mim); File List atualizada
53
+
54
+ ## Falha / recuperação
55
+
56
+ - **Tokens ausentes** → HALT; volto à `extract-tokens` antes de montar a estrutura.
57
+ - **Stack de frontend indefinida** → delego a decisão à Aria (@architect) e pauso o setup até ter a
58
+ resposta — não escolho framework sozinha.
59
+ - **Estrutura já existe parcialmente** → não sobrescrevo; reconcilio com o que há e registro o que
60
+ foi adicionado, sem destruir trabalho anterior.