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,72 @@
1
+ # NEXUS Tasks — a camada procedural
2
+
3
+ Se o DNA do agente (`agents/`) é **quem** o agente é, a task é **o que ele faz, passo a passo**. Uma
4
+ task é um workflow executável: um agente lê a task e a executa exatamente como escrita. Cada `owns:`
5
+ no DNA de um agente aponta para uma task aqui.
6
+
7
+ > **Uma task validada é lei.** Ela deve ser executada conforme configurada, com todas as suas
8
+ > pré-condições respeitadas, independente de quem a executa (agente, worker, clone ou humano). As
9
+ > tasks são o conhecimento procedural — o que faz o output sair bom **de forma repetível**.
10
+
11
+ ## Formato canônico
12
+
13
+ Frontmatter YAML (metadados estruturados) + corpo Markdown (os passos executáveis).
14
+
15
+ ```markdown
16
+ ---
17
+ id: dev-develop-story # kebab-case, único. Casa com o `owns:` do agente dono.
18
+ agent: dev # id do agente dono (governa a autoridade)
19
+ title: Implementar uma story
20
+ inputs: [story] # o que a task precisa para começar
21
+ outputs: [código, testes, File List atualizada] # o que ela produz
22
+ elicit: false # true = exige interação humana num ponto (não pode ser pulado)
23
+ modes: [interactive, yolo] # modos de execução suportados (default: [interactive])
24
+ ---
25
+
26
+ # {title}
27
+
28
+ **Objetivo:** uma frase — o resultado que esta task entrega.
29
+
30
+ **Pré-condições:** o que tem que ser verdade antes de começar (senão, pare e reporte).
31
+
32
+ ## Passos
33
+ 1. Passo concreto e verificável.
34
+ 2. ...
35
+
36
+ ## Critério de pronto (DoD)
37
+ - [ ] Condições objetivas que separam "feito" de "feito direito".
38
+
39
+ ## Falha / recuperação
40
+ - O que fazer quando um passo falha (rollback, escalar, HALT).
41
+ ```
42
+
43
+ ## Regras
44
+
45
+ - **elicit: true é sagrado.** Uma task com ponto de elicitação NÃO pode ser pulada "por eficiência" —
46
+ exige a interação real do usuário no formato especificado.
47
+ - **Autoridade vem do agente dono.** Uma task de `agent: dev` não faz `git push` (isso é do devops),
48
+ porque o Dex não tem essa autoridade. A task herda as guardas do DNA do dono.
49
+ - **Sem invenção (Constituição Art. IV).** Os passos produzem artefatos que rastreiam a um
50
+ objetivo/story/spec — não inventam escopo.
51
+ - **NEXUS-nativo.** Agentes são os do roster (`nexus-master`, `dev`, `qa`…); comandos são `nexus run`
52
+ / `nexus party`. Nada de frameworks externos.
53
+ - **Onde as coisas moram:**
54
+ - `docs/{tipo}/` — artefatos PRODUZIDOS (stories em `docs/stories/`, PRD em `docs/prd/`, arquitetura
55
+ em `docs/architecture/`, epics, qa, specs, research, design-system, data-models). É o trabalho.
56
+ - `.nexus/` — estado de RUNTIME do framework (handoffs, mapas de sync, cache, registry, logs). Não
57
+ é entregável; é a memória operacional.
58
+ - `templates/` e `checklists/` — esqueletos e critérios que as tasks consomem.
59
+
60
+ ## Tipos de task (por forma)
61
+
62
+ | Tipo | Forma | Exemplos |
63
+ |---|---|---|
64
+ | **Execução** | passos que produzem um artefato/código | `dev-develop-story`, `create-next-story`, `create-schema` |
65
+ | **Gate** | passos que avaliam e emitem um veredito | `qa-gate`, `validate-next-story`, `pre-push-quality-gate` |
66
+ | **Orquestração** | passos que decompõem e delegam (tocam o motor) | `orchestrate`, `deliberate`, `route` |
67
+ | **Checklist** | critérios a verificar item a item | `execute-checklist`, `accessibility-wcag-checklist` |
68
+
69
+ ## Templates e checklists
70
+
71
+ `templates/` guarda os esqueletos de documento (story, PRD, arquitetura) que as tasks preenchem.
72
+ `checklists/` guarda os critérios de validação (DoD, prontidão de story) que os gates rodam.
@@ -0,0 +1,69 @@
1
+ ---
2
+ id: accessibility-wcag-checklist
3
+ agent: ux-design-expert
4
+ title: Auditoria de acessibilidade WCAG (AA/AAA)
5
+ inputs: [componente-ou-tela, nivel-wcag]
6
+ outputs: [veredito PASS/FAIL, lista de violações, relatório de a11y]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Auditoria de acessibilidade WCAG (AA/AAA)
12
+
13
+ **Objetivo:** auditar um componente ou tela contra os critérios WCAG e emitir um veredito objetivo —
14
+ WCAG AA é o piso inegociável; AAA quando a story exigir. Reprovado bloqueia a entrega.
15
+
16
+ **Pré-condições:**
17
+ - O alvo (componente ou tela) está renderizável/inspecionável. Se não roda, **pare** — não audito o
18
+ que não consigo observar.
19
+ - O nível-alvo está definido (AA por padrão; AAA só se a story/spec pedir). Sem definição, assumo AA.
20
+
21
+ ## Passos — checklist (verifico item a item)
22
+
23
+ 1. **Contraste de cor**
24
+ - [ ] Texto normal ≥ 4.5:1 (AA) / ≥ 7:1 (AAA)
25
+ - [ ] Texto grande (≥ 18.66px bold ou 24px) ≥ 3:1 (AA) / ≥ 4.5:1 (AAA)
26
+ - [ ] Componentes de UI e estados (borda, foco, ícone informativo) ≥ 3:1
27
+ 2. **Navegação por teclado**
28
+ - [ ] Todo elemento interativo é alcançável por `Tab` na ordem lógica
29
+ - [ ] Nada vira "armadilha de teclado" (dá pra entrar e sair)
30
+ - [ ] Ações de mouse têm equivalente por teclado (`Enter`/`Space`/setas)
31
+ 3. **Foco visível**
32
+ - [ ] Indicador de foco visível e com contraste suficiente em cada elemento focável
33
+ - [ ] Ordem de foco segue a ordem visual/lógica
34
+ 4. **Semântica e estrutura**
35
+ - [ ] HTML semântico ou `role` correto (botão é botão, não `div` clicável)
36
+ - [ ] Hierarquia de headings coerente; landmarks onde fizer sentido
37
+ - [ ] Estados expostos via ARIA quando necessário (`aria-expanded`, `aria-checked`, `aria-invalid`)
38
+ 5. **Texto alternativo e rótulos**
39
+ - [ ] Imagens informativas têm `alt` descritivo; decorativas têm `alt=""`
40
+ - [ ] Todo campo de formulário tem `label` associado
41
+ - [ ] Ícone-só-clicável tem `aria-label`
42
+ 6. **Conteúdo e movimento**
43
+ - [ ] Informação não depende só de cor (estado/erro tem texto ou ícone também)
44
+ - [ ] Animação/auto-play respeita `prefers-reduced-motion`
45
+ - [ ] Mensagens de erro são programaticamente associadas e anunciadas
46
+ 7. **Emito o veredito** consolidando os itens:
47
+ - **PASS** — todos os itens do nível-alvo verdes.
48
+ - **FAIL** — qualquer item do nível-alvo reprovado, com a lista exata de violações e onde corrigir.
49
+ 8. **Registro o relatório de a11y** (itens, veredito, violações) e o anexo à story. Se FAIL, **bloqueio
50
+ a entrega** e devolvo a correção ao dono do componente (a mim no `*build`/`*extend`, ou ao @dev se
51
+ for integração na app).
52
+
53
+ ## Critério de pronto (DoD)
54
+
55
+ - [ ] Todos os 6 grupos do checklist avaliados item a item
56
+ - [ ] Veredito explícito: PASS ou FAIL
57
+ - [ ] Se FAIL, lista de violações com localização e correção sugerida
58
+ - [ ] Relatório de a11y anexado à story
59
+ - [ ] Entrega bloqueada enquanto houver violação de nível AA aberta
60
+
61
+ ## Falha / recuperação
62
+
63
+ - **Item reprova no nível AA** → veredito FAIL automático; a11y AA é piso, não negocio. Bloqueio a
64
+ entrega e devolvo para correção.
65
+ - **Não consigo medir um critério** (ex.: contraste de estado dinâmico) → registro como "não
66
+ verificável", trato como risco aberto e não declaro PASS no escuro.
67
+ - **Violação exige mudança de arquitetura/stack** (ex.: trocar lib inacessível) → reporto e escalo para
68
+ @architect; não decido stack sozinha.
69
+ - **Correção está fora do design system (integração na app)** → delego ao @dev; eu audito, ele integra.
@@ -0,0 +1,42 @@
1
+ ---
2
+ id: advanced-elicitation
3
+ agent: analyst
4
+ title: Elicitação avançada — apertar a pergunta
5
+ inputs: [objetivo / artefato ou afirmação a refinar]
6
+ outputs: [pergunta/escopo afiado, premissas explicitadas, decisão destravada]
7
+ elicit: true
8
+ modes: [interactive]
9
+ ---
10
+
11
+ # Elicitação avançada — apertar a pergunta
12
+
13
+ **Objetivo:** rodar uma sondagem estruturada que transforma um briefing vago numa pergunta nítida — descobrindo premissas, restrições e a decisão real por trás do pedido, perguntando "por quê" até o fundo.
14
+
15
+ **Pré-condições:**
16
+ - Há um pedido, artefato ou afirmação para refinar. Esta task é o instrumento que outras tasks chamam quando o objetivo está nebuloso demais para prosseguir.
17
+ - O usuário está disponível para responder — elicitação é interação real, não pode ser simulada.
18
+
19
+ ## Passos
20
+
21
+ 1. **Espelho o pedido.** Reformulo o que entendi em uma frase e peço confirmação. **(ponto de elicitação — exige resposta real do usuário)**
22
+ 2. **Ofereço um menu de técnicas** adequadas ao caso e aplico a escolhida (ex.: 5 Porquês, First Principles, Pre-mortem, Red Team, Socrático, Análise de Premissas). Anuncio qual estou usando.
23
+ 3. **Sondo camada por camada.** Pergunto "por quê" repetidamente até a causa-raiz/decisão real aparecer — a primeira resposta raramente é o fundo. Uma pergunta por vez, sem despejar tudo de uma vez.
24
+ 4. **Explicito as premissas.** Listo as suposições implícitas no pedido e marco quais são fatos verificáveis e quais são hipóteses a validar.
25
+ 5. **Mapeio restrições e critério de sucesso.** O que limita a solução (CON-*), e o que conta como "resolvido". Confirmo com o usuário.
26
+ 6. **Reescrevo a pergunta afiada.** Entrego a versão nítida do objetivo, com escopo, premissas e critério — pronta para alimentar a task que chamou esta (brainstorm, pesquisa, brief, etc.).
27
+ 7. **Devolvo o controle.** Roteio o objetivo refinado de volta à task/agente de origem.
28
+
29
+ ## Critério de pronto (DoD)
30
+
31
+ - [ ] Pedido reformulado e confirmado com o usuário (elicitação cumprida)
32
+ - [ ] Técnica nomeada aplicada e registrada
33
+ - [ ] Sondagem chegou à decisão/causa-raiz real (não parou na 1ª resposta)
34
+ - [ ] Premissas explicitadas e separadas em fatos vs. hipóteses
35
+ - [ ] Restrições e critério de sucesso mapeados
36
+ - [ ] Objetivo afiado entregue e roteado de volta à origem
37
+
38
+ ## Falha / recuperação
39
+
40
+ - **Usuário não responde / indisponível** → como elicit é sagrado, não posso simular as respostas; reporto que a task precisa da interação e pauso em vez de inventar o escopo.
41
+ - **Cada camada abre mais perguntas (sem convergência)** → marco um teto de profundidade, registro as questões em aberto e entrego a melhor versão possível do objetivo, sinalizando o que falta.
42
+ - **O pedido se revela fora do meu escopo** (decisão de produto/arquitetura) → afino a pergunta e delego ao dono (@pm, @architect, @sm) em vez de decidir por eles.
@@ -0,0 +1,54 @@
1
+ ---
2
+ id: analyze-performance
3
+ agent: data-engineer
4
+ title: Analisar performance do banco
5
+ inputs: [type, query, story]
6
+ outputs: [diagnóstico com explain plan/métricas, recomendações justificadas]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Analisar performance do banco
12
+
13
+ **Objetivo:** diagnosticar performance por evidência — explain plan e métricas reais — no tipo pedido
14
+ (`query`, `hotpaths` ou `interactive`), e recomendar mudanças justificadas, nunca por palpite.
15
+
16
+ **Pré-condições:**
17
+ - O `type` é `query` (uma query específica, exige `query`), `hotpaths` (queries mais custosas do
18
+ workload) ou `interactive` (exploração guiada).
19
+ - Para `query`, a query foi fornecida. Para `hotpaths`, há estatísticas disponíveis
20
+ (`pg_stat_statements` ou equivalente). Sem evidência, **pare** — não otimizo no escuro.
21
+
22
+ ## Passos
23
+
24
+ 1. **Capture a linha de base medida.** `query`: `EXPLAIN (ANALYZE, BUFFERS)` da query alvo. `hotpaths`:
25
+ liste do `pg_stat_statements` as queries por tempo total/médio e por chamadas. Medição antes de
26
+ qualquer hipótese.
27
+ 2. **Leia o plano:** seq scans em tabela grande, sorts/hashes em disco, estimativas de linhas longe do
28
+ real (estatísticas desatualizadas), loops aninhados caros, FK filtrada sem índice de suporte.
29
+ 3. **Forme a hipótese de causa** ligada à evidência do plano — não à intuição. Ex.: "seq scan de 2M
30
+ linhas no filtro `user_id` → falta índice".
31
+ 4. **Recomende a mudança mínima que o plano justifica:** índice (com a coluna/ordem exata), reescrita
32
+ da query, `ANALYZE` para atualizar estatísticas, ou desnormalização documentada. Um índice sem
33
+ query que o justifique é peso morto — não recomendo.
34
+ 5. **Estime o ganho e o custo:** o índice acelera leitura, mas pesa na escrita e em espaço. Registro o
35
+ trade-off para a decisão ser informada.
36
+ 6. **Emita o diagnóstico** com plano antes, causa, recomendação e ganho esperado. Aplicar índice =
37
+ migration (snapshot → dry-run → apply) — fora desta task de análise.
38
+
39
+ ## Critério de pronto (DoD)
40
+
41
+ - [ ] Linha de base medida (explain plan / métricas reais), não estimada
42
+ - [ ] Causa raiz ligada à evidência do plano
43
+ - [ ] Recomendação mínima e justificada, com trade-off escrita/espaço explícito
44
+ - [ ] Cada índice proposto serve a uma query real
45
+ - [ ] Diagnóstico emitido; nenhuma mudança aplicada nesta task
46
+
47
+ ## Falha / recuperação
48
+
49
+ - **Sem `pg_stat_statements` (hotpaths)** → sinalizo a dependência e ofereço habilitá-la (via @devops
50
+ se exigir config de infra) antes de prosseguir.
51
+ - **Plano não revela causa clara** → coleto mais evidência (estatísticas, distribuição de dados) antes
52
+ de recomendar; não chuto índice.
53
+ - **Recomendação vira migration** → entrego o plano; aplicação segue snapshot → dry-run → apply, e o
54
+ push é do @devops.
@@ -0,0 +1,59 @@
1
+ ---
2
+ id: analyze-project-structure
3
+ agent: architect
4
+ title: Analisar a estrutura do projeto para uma nova feature
5
+ inputs: [story]
6
+ outputs: [mapa de estrutura, pontos de integração, recomendação REUSE/ADAPT/CREATE]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Analisar a estrutura do projeto para uma nova feature
12
+
13
+ **Objetivo:** mapear onde uma feature da story vai morar dentro da estrutura existente — quais módulos
14
+ ela toca, o que reusa e onde encaixa — antes que uma linha seja escrita, para que o @dev implemente
15
+ sem reinventar o que já existe.
16
+
17
+ **Pré-condições:**
18
+ - Existe uma story (ou spec) que descreve a feature. Sem ela, **pare** e elicite o escopo — não
19
+ analiso estrutura para um alvo que não rastreia a um pedido.
20
+ - O repositório está acessível e legível. Se for um codebase desconhecido, prefiro rodar primeiro a
21
+ task `document-project` para ter o mapa antes de analisar o encaixe.
22
+
23
+ ## Passos
24
+
25
+ 1. **Leia a story COMPLETA** — ACs, notas, restrições. Extraio o que a feature precisa tocar:
26
+ camadas (frontend/backend/dados/infra), entidades de domínio e contratos de API.
27
+ 2. **Mapeie a árvore relevante** (`Glob`/`Read`) — não o repositório inteiro, só os diretórios que a
28
+ feature habita. Identifico a convenção de organização (por camada, por feature, por domínio) e a
29
+ sigo; não imponho uma estrutura nova sem justificativa.
30
+ 3. **Liste os pontos de integração.** Para cada camada que a feature toca, anoto o ponto exato de
31
+ encaixe: rota/handler, serviço, modelo de dados, componente. Cada ponto vira uma fronteira com um
32
+ dono (banco → @data-engineer; UI → @ux-design-expert; código → @dev).
33
+ 4. **Decida REUSE > ADAPT > CREATE** para cada peça. Procuro o utilitário/componente/serviço que já
34
+ resolve. Se existe, REUSE. Se quase resolve, ADAPT (sem quebrar quem consome). Só CREATE quando
35
+ nada serve — e registro o porquê. Over-engineering é dívida desde o dia um.
36
+ 5. **Rode o teste do 10× nos pontos de integração.** Para cada encaixe, pergunto o que quebra ao
37
+ escalar: N+1, hot path, acoplamento que vira gargalo. Anoto o failure mode, não só o caminho feliz.
38
+ 6. **Entregue o mapa de estrutura ao @dev** — árvore relevante, pontos de integração com donos,
39
+ recomendação REUSE/ADAPT/CREATE por peça, e os riscos de escala. Roteio o que for de outra camada
40
+ ao especialista dono.
41
+
42
+ ## Critério de pronto (DoD)
43
+
44
+ - [ ] Cada camada que a feature toca tem o ponto de integração exato identificado, com dono
45
+ - [ ] Cada peça tem decisão explícita REUSE/ADAPT/CREATE, com justificativa para CREATE
46
+ - [ ] Os pontos de integração têm o failure mode ao escalar anotado (teste do 10×)
47
+ - [ ] O mapa rastreia inteiramente à story — sem feature ou módulo inventado
48
+ - [ ] Frentes de outra camada (dados/UI/infra) foram roteadas ao especialista dono
49
+
50
+ ## Falha / recuperação
51
+
52
+ - **A story é vaga demais para localizar o encaixe** → paro, registro a lacuna e devolvo ao @sm/@po.
53
+ Não chuto a estrutura de uma feature que não entendo.
54
+ - **O codebase é desconhecido e sem documentação** → rodo `document-project` primeiro; analisar
55
+ encaixe sobre um mapa que não existe gera recomendação errada.
56
+ - **A análise revela que a feature exige mudança estrutural cross-stack** → escalo para a task
57
+ `architect-analyze-impact` antes de recomendar o encaixe.
58
+ - **A feature toca schema/DDL, UI ou infra** → defino a fronteira e o contrato, mas delego a
59
+ implementação da camada ao dono (@data-engineer, @ux-design-expert, @devops).
@@ -0,0 +1,57 @@
1
+ ---
2
+ id: apply-qa-fixes
3
+ agent: dev
4
+ title: Aplicar o feedback de QA na implementação
5
+ inputs: [story, gate de QA (qa.gate)]
6
+ outputs: [código corrigido, testes, File List atualizada, status: Ready for Review]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Aplicar o feedback de QA na implementação
12
+
13
+ **Objetivo:** absorver o veredito do @qa e corrigir os pontos levantados na minha implementação,
14
+ deixando a story verde de novo — sem reescrever o que já passou e sem tocar no que não é meu.
15
+
16
+ **Pré-condições:**
17
+ - Existe um gate de QA com veredito `CONCERNS` ou `FAIL` (ou notas de review) apontando issues
18
+ concretas na story. Se o veredito é `PASS` sem ressalvas, **pare** — não há o que corrigir.
19
+ - A story está em `InReview` (voltou do QA). Se está em outro status, confirmo a procedência antes
20
+ de mexer.
21
+
22
+ ## Passos
23
+
24
+ 1. **Leio o gate de QA** e extraio a lista de issues, cada uma com seu AC/severidade. Priorizo:
25
+ bloqueadores (`FAIL`) antes de ressalvas (`CONCERNS`).
26
+ 2. **Confirmo que cada issue é minha lane.** Issue de código/teste → corrijo. Issue que aponta AC
27
+ errado, escopo ou requisito ausente → **não conserto por conta própria**: devolvo ao @sm/@po,
28
+ porque AC e escopo não são meus.
29
+ 3. **Corrijo issue por issue, pelo menor caminho:**
30
+ a. aplico a correção mínima que resolve o ponto levantado;
31
+ b. escrevo/ajusto o teste que prova que a issue foi fechada;
32
+ c. rodo lint + os testes da área.
33
+ 4. **Atualizo a File List** com cada arquivo tocado na correção.
34
+ 5. **Rodo a regressão completa** (lint + typecheck + toda a suíte) — corrigir uma coisa não pode
35
+ quebrar outra. Vermelho não volta pro QA.
36
+ 6. **Atualizo Completion Notes e Change Log** descrevendo o que mudou em resposta a cada issue do
37
+ gate (rastreabilidade: issue → fix).
38
+ 7. **Seto Status = `Ready for Review`** e roteio de volta ao @qa. **Não** dou `git push` — a subida
39
+ é do @devops; faço commit local e delego.
40
+
41
+ ## Critério de pronto (DoD)
42
+
43
+ - [ ] Toda issue de `FAIL`/`CONCERNS` da minha lane foi corrigida, cada uma com teste verde
44
+ - [ ] Issues fora da minha lane (AC/escopo) foram devolvidas ao @sm/@po, não "consertadas"
45
+ - [ ] Regressão completa verde: lint limpo, typecheck 0, suíte completa passando
46
+ - [ ] File List, Completion Notes e Change Log atualizados (rastro issue → fix)
47
+ - [ ] Status = `Ready for Review`; commit local feito, sem `git push`
48
+
49
+ ## Falha / recuperação
50
+
51
+ - **Uma issue do gate é na verdade um problema de AC/escopo** → devolvo ao @sm/@po; não reescrevo a
52
+ story para "fechar" a issue.
53
+ - **A correção de uma issue quebra outra área (regressão)** → paro, registro no Debug Log e resolvo
54
+ antes de devolver ao QA. Não empurro regressão conhecida.
55
+ - **3 tentativas falhas na mesma issue** → HALT e reporto; não empilho gambiarra sobre gambiarra.
56
+ - **O veredito do QA está ambíguo (não dá pra saber o que corrigir)** → peço esclarecimento ao @qa
57
+ antes de adivinhar.
@@ -0,0 +1,62 @@
1
+ ---
2
+ id: architect-analyze-impact
3
+ agent: architect
4
+ title: Mapear o impacto cross-stack de uma mudança estrutural
5
+ inputs: [mudança proposta]
6
+ outputs: [mapa de impacto, módulos afetados, riscos de escala, recomendação]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Mapear o impacto cross-stack de uma mudança estrutural
12
+
13
+ **Objetivo:** traçar a onda de choque de uma mudança estrutural por todas as camadas — quem depende
14
+ do que muda, o que quebra ao escalar e qual o custo — para que a decisão seja tomada com o blast
15
+ radius inteiro à vista, não só o ponto da edição.
16
+
17
+ **Pré-condições:**
18
+ - A mudança proposta rastreia a uma story, spec ou restrição explícita. Sem isso, **pare** e elicite
19
+ — não analiso impacto de uma mudança que ninguém pediu.
20
+ - O codebase está acessível. Se for desconhecido, rodo `document-project` antes para ter o mapa de
21
+ dependências.
22
+
23
+ ## Passos
24
+
25
+ 1. **Defina a mudança com precisão.** O que exatamente muda: um contrato de API, um modelo de dados,
26
+ uma fronteira de serviço, uma dependência. Uma mudança mal delimitada produz um mapa de impacto
27
+ inútil.
28
+ 2. **Encontre todos os dependentes** (`Grep`/`Glob`, e code-intel se disponível). Quem importa,
29
+ chama ou consome o que muda. Sigo a cadeia até as folhas — um consumidor esquecido é um incidente
30
+ em produção.
31
+ 3. **Classifique o impacto por camada.** Para frontend, backend, dados e infra, anoto: muda /
32
+ precisa adaptar / fica intacto. Cada camada afetada tem um dono (banco → @data-engineer; UI →
33
+ @ux-design-expert; código → @dev; infra/CI → @devops).
34
+ 4. **Rode o teste do 10× na mudança.** O que quebra quando escalar com a mudança aplicada? Migração
35
+ de dados sob carga, breaking change de contrato, ponto único de falha novo. Anoto o failure mode,
36
+ não só o caminho feliz.
37
+ 5. **Estime o custo e o risco.** Esforço por camada, risco de breaking change, necessidade de
38
+ migração/feature-flag/rollback. Segurança e custo são camadas do design, não apêndices — entram
39
+ no mapa.
40
+ 6. **Emita a recomendação.** PROSSEGUIR (impacto contido, plano claro) / FRACIONAR (quebrar em passos
41
+ menores e seguros) / RECONSIDERAR (custo/risco maior que o ganho). Roteio cada frente afetada ao
42
+ dono e, se virar plano de execução, encaminho para `plan-create-implementation`.
43
+
44
+ ## Critério de pronto (DoD)
45
+
46
+ - [ ] Todos os dependentes do que muda foram rastreados até as folhas
47
+ - [ ] O impacto está classificado por camada (muda/adapta/intacto), cada um com dono
48
+ - [ ] O failure mode ao escalar foi declarado para a mudança (teste do 10×)
49
+ - [ ] Custo, risco e estratégia de migração/rollback estão no mapa
50
+ - [ ] Há uma recomendação explícita (PROSSEGUIR/FRACIONAR/RECONSIDERAR) que rastreia ao pedido
51
+
52
+ ## Falha / recuperação
53
+
54
+ - **A cadeia de dependentes é grande demais para mapear com confiança** → recomendo FRACIONAR a
55
+ mudança em passos menores e analiso cada um; não dou por seguro um blast radius que não consegui
56
+ fechar.
57
+ - **A mudança exige migração de dados ou schema** → defino o contrato e o risco, mas delego o DDL e o
58
+ plano de migração à @data-engineer.
59
+ - **A mudança toca CI/CD, release ou infra de deploy** → delego ao @devops; eu mapeio o impacto,
60
+ não executo a mudança de infra.
61
+ - **Descubro que a mudança não rastreia a nenhum requisito** → paro e devolvo: não há No Invention que
62
+ justifique uma mudança estrutural órfã.
@@ -0,0 +1,52 @@
1
+ ---
2
+ id: archive-squad
3
+ agent: squad-creator
4
+ title: Arquivar um squad que cumpriu a missão
5
+ inputs: ['id do squad', motivo do arquivamento]
6
+ outputs: ['squads/{id}/ movido para squads/_archive/{id}/ pelo motor', registro do desfecho no manifest]
7
+ elicit: true
8
+ modes: [interactive]
9
+ ---
10
+
11
+ # Arquivar um squad que cumpriu a missão
12
+
13
+ **Objetivo:** encerrar o ciclo de vida de um squad — missão cumprida (ou cancelada) — movendo-o
14
+ para o arquivo com o desfecho registrado, preservando o histórico. Arquivar é destrutivo para a
15
+ operação (o squad some do roster ativo); por isso exige confirmação explícita (Lei 1).
16
+
17
+ **Pré-condições:**
18
+ - `squads/{id}/` existe. Squad inexistente → reporte e HALT, nada a arquivar.
19
+ - O motivo do desfecho é conhecido: `completed` (missão cumprida) ou `cancelled` (missão
20
+ abandonada, com causa). Arquivar "para limpar" sem desfecho não é motivo.
21
+
22
+ ## Passos
23
+
24
+ 1. **Leia o squad real** (`squad.yaml`) e verifique o estado: a missão foi cumprida? Há trabalho em
25
+ voo (handoffs pendentes do squad em `.nexus/handoffs/`, frentes abertas)? Trabalho em voo é
26
+ listado ANTES da decisão — arquivar squad com frente aberta órfã trabalho em silêncio.
27
+ 2. **Apresente o resumo e PEÇA CONFIRMAÇÃO explícita** (ponto de elicitação — sagrado, por ser
28
+ ação destrutiva): id, missão, desfecho proposto (`completed`/`cancelled` + causa), trabalho em
29
+ voo encontrado. Sem o "sim" literal do usuário, HALT — não existe arquivamento em yolo.
30
+ 3. **Registre o desfecho no manifest:** `status: archived`, desfecho, data e motivo — o arquivo
31
+ conta a história completa para quem escavar depois.
32
+ 4. **Dispare o motor** (`nexus squad archive`): ele move `squads/{id}/` para
33
+ `squads/_archive/{id}/` — preservação, nunca `rm`. Eu não movo na mão nem deleto nada.
34
+ 5. **Prove:** confirme que `squads/{id}/` não está mais no roster ativo e que
35
+ `squads/_archive/{id}/` existe íntegro; reporte o resultado real.
36
+
37
+ ## Critério de pronto (DoD)
38
+
39
+ - [ ] Estado do squad lido do disco; trabalho em voo enumerado antes da decisão
40
+ - [ ] Confirmação explícita do usuário registrada (sem ela, nada aconteceu)
41
+ - [ ] Desfecho (`completed`/`cancelled` + causa + data) gravado no manifest
42
+ - [ ] Motor moveu para `squads/_archive/{id}/` — histórico preservado, zero deleção
43
+ - [ ] Verificação pós-arquivamento reportada com resultado real
44
+
45
+ ## Falha / recuperação
46
+
47
+ - **Usuário não confirma** → HALT limpo: nada foi movido, e o relatório diz isso.
48
+ - **Trabalho em voo encontrado** → ofereça as opções numeradas: (1) concluir/handoff das frentes
49
+ antes de arquivar; (2) arquivar assim mesmo com as frentes NOMEADAS no desfecho; (3) cancelar.
50
+ Nunca arquive silenciando frente aberta.
51
+ - **O motor falha ao mover** (permissão, conflito em `_archive/`) → reporte o erro exato e o estado
52
+ em que o squad ficou; não tente contornar movendo arquivos na mão.
@@ -0,0 +1,53 @@
1
+ ---
2
+ id: audit-codebase
3
+ agent: ux-design-expert
4
+ title: Auditar o codebase atrás de redundância de padrões de UI
5
+ inputs: [path do codebase/diretório de UI]
6
+ outputs: [inventário de padrões de UI, métricas de redundância, audit-report]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Auditar o codebase atrás de redundância de padrões de UI
12
+
13
+ **Objetivo:** medir o caos antes de consertá-lo — inventariar componentes/padrões de UI existentes e
14
+ quantificar a redundância com número real, para nunca consolidar no escuro.
15
+
16
+ **Pré-condições:**
17
+ - Foi informado um `path` válido para o codebase ou diretório de UI. Sem path, **pare** e elicite —
18
+ não audito o repositório inteiro por chute.
19
+ - É um cenário brownfield (já existe UI). Em greenfield não há o que auditar — siga para
20
+ `setup-design-system`.
21
+
22
+ ## Passos
23
+
24
+ 1. **Varra o path** atrás de artefatos de UI: componentes, estilos, tokens implícitos (cores, fontes,
25
+ espaçamentos hardcoded), classes utilitárias, padrões repetidos. Use `Grep`/`Glob` para localizar.
26
+ 2. **Inventarie cada padrão encontrado** com sua localização (arquivo:linha) e suas propriedades
27
+ visuais — ex.: cada variação de botão com sua cor, raio, padding, fonte.
28
+ 3. **Quantifique a redundância:** quantos botões distintos? quantas cores diferentes para a mesma
29
+ intenção? quantos espaçamentos? Conte — "tem demais" não move ninguém; "47 botões" move.
30
+ 4. **Detecte hardcoded vs tokenizado:** marque todo valor visual cravado direto no código (hex,
31
+ px solto) — é dívida de design esperando para divergir.
32
+ 5. **Agrupe por tipo de átomo** (botões, inputs, cards, tipografia, cores) para preparar o terreno da
33
+ consolidação. NÃO consolide aqui — esta task só mede.
34
+ 6. **Gere o audit-report** em `docs/stories/{epic}/audit/audit-report.md` (ou caminho equivalente do
35
+ projeto) com inventário, contagens e localizações — números rastreáveis a arquivos reais.
36
+ 7. **Roteie o resultado** para `consolidate-patterns` (clustering) e, depois, `generate-shock-report`
37
+ (visual + ROI). A auditoria é o insumo factual desses dois.
38
+
39
+ ## Critério de pronto (DoD)
40
+
41
+ - [ ] Path válido auditado; varredura cobriu componentes, estilos e valores hardcoded
42
+ - [ ] Inventário com localização (arquivo:linha) de cada padrão
43
+ - [ ] Métricas de redundância contadas (nº de variantes por tipo de átomo)
44
+ - [ ] Valores hardcoded identificados e marcados
45
+ - [ ] audit-report registrado, com números rastreáveis a arquivos reais
46
+
47
+ ## Falha / recuperação
48
+
49
+ - **Path inválido ou vazio** → HALT e elicito o caminho correto; não audito o que não foi pedido.
50
+ - **Codebase grande demais para uma passada** → fatio por diretório/tipo e audito em ondas, registrando
51
+ a cobertura de cada onda.
52
+ - **Não encontrei padrões de UI** (não é frontend) → reporto que não há o que auditar e encerro; não
53
+ fabrico redundância inexistente.
@@ -0,0 +1,61 @@
1
+ ---
2
+ id: build-component
3
+ agent: ux-design-expert
4
+ title: Construir um componente atômico de produção
5
+ inputs: [nome do componente, design tokens, story/spec]
6
+ outputs: [componente atômico + testes + a11y, 'docs/design-system/atoms/{componente}/']
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Construir um componente atômico de produção
12
+
13
+ **Objetivo:** entregar um átomo de produção — componente tipado, testado, construído só sobre design
14
+ tokens e com acessibilidade WCAG AA embutida — pronto para compor moléculas e ser integrado na app.
15
+
16
+ **Pré-condições:**
17
+ - O design system está inicializado (`setup-design-system`) e os tokens existem (`extract-tokens`).
18
+ Sem isso, **pare**: átomo sem tokens vira hardcode.
19
+ - O componente rastreia a uma story/spec ou a um cluster consolidado. Sem rastro, elicito — não
20
+ invento componente que ninguém pediu.
21
+
22
+ ## Passos
23
+
24
+ 1. **Procuro o átomo antes de criar** (REUSE > ADAPT > CREATE). Se já existe um átomo que resolve,
25
+ reaproveito; se quase resolve, é caso de `extend-pattern` (variante), não de criar do zero. Só
26
+ crio quando nada serve — e registro o porquê.
27
+ 2. **Defino a API do componente** a partir da story/spec: props, variantes, estados (default, hover,
28
+ focus, disabled, loading, erro) — todos rastreando a uma necessidade real, não a um achismo.
29
+ 3. **Construo só com tokens.** Cor, espaçamento, tipografia, raio e sombra vêm de
30
+ `docs/design-system/tokens/` — zero hex/px solto. Hardcode aqui é bug de design esperando para
31
+ divergir.
32
+ 4. **Embuto acessibilidade WCAG AA desde o nascimento:** semântica correta (role/elemento),
33
+ navegação por teclado, foco visível, contraste validado, alt/aria onde aplicável. Não é "a11y
34
+ depois"; sem ela o componente não está pronto.
35
+ 5. **Escrevo os testes** que provam: cada variante/estado renderiza, o teclado navega, o foco é
36
+ visível, e os estados de erro/disabled se comportam. Não declaro pronto sem teste verde.
37
+ 6. **Rodo `accessibility-wcag-checklist`** no componente. Reprovou em AA → não entrego; corrijo
38
+ antes. Acessibilidade reprovada bloqueia a entrega.
39
+ 7. **Rodo lint + typecheck + os testes** do componente. Vermelho não vira entregue.
40
+ 8. **Documento o uso** (props, variantes, exemplos) para a pattern library e salvo tudo em
41
+ `docs/design-system/atoms/{componente}/`. Atualizo a File List da story.
42
+ 9. **Roteio.** Átomo pronto → @dev integra na app, @qa valida no fluxo. Pronto pra subir → @devops.
43
+ Eu construo o componente; quem publica é o Gage — nunca eu.
44
+
45
+ ## Critério de pronto (DoD)
46
+
47
+ - [ ] Reuso checado antes de criar (REUSE > ADAPT > CREATE), com justificativa se criou do zero
48
+ - [ ] Componente tipado, com todas as variantes/estados que a story pede
49
+ - [ ] Zero valor hardcoded — tudo de design tokens
50
+ - [ ] WCAG AA embutida (semântica, teclado, foco, contraste) e validada pelo checklist
51
+ - [ ] Testes verdes; lint limpo; typecheck 0
52
+ - [ ] Documentação de uso escrita; File List atualizada; nada subido por mim
53
+
54
+ ## Falha / recuperação
55
+
56
+ - **Reprova WCAG AA** → HALT; não entrego. Corrijo a acessibilidade antes de qualquer coisa.
57
+ - **Teste não passa após 3 tentativas no mesmo ponto** → HALT, registro o bloqueio, não empurro
58
+ gambiarra.
59
+ - **A story não define a API o suficiente** → paro e devolvo ao @sm/@po; não invento props/variantes.
60
+ - **Precisaria de valor fora dos tokens** → não hardcodo; volto à `extract-tokens` para o token
61
+ faltante (ou sinalizo a lacuna), e só então construo.
@@ -0,0 +1,63 @@
1
+ ---
2
+ id: calculate-roi
3
+ agent: ux-design-expert
4
+ title: Calcular ROI e economia de custo da consolidação
5
+ inputs: [audit-report, consolidation-report]
6
+ outputs: [número de ROI, economia estimada, breakdown rastreável]
7
+ elicit: false
8
+ modes: [interactive, yolo]
9
+ ---
10
+
11
+ # Calcular ROI e economia de custo da consolidação
12
+
13
+ **Objetivo:** transformar o caos medido (redundância de padrões de UI) em um número defensável —
14
+ redução percentual, esforço economizado e custo evitado por ano — para justificar a consolidação com
15
+ dado, não opinião.
16
+
17
+ **Pré-condições:**
18
+ - Existe um relatório de auditoria (`*audit`) com a contagem real de padrões redundantes. Se não
19
+ existe, **pare** — sem inventário, qualquer ROI é chute.
20
+ - Existe (ou rodou) a consolidação (`*consolidate`) com o alvo de variantes finais. Sem o "depois",
21
+ não há delta para medir.
22
+
23
+ ## Passos
24
+
25
+ 1. **Puxo os números reais do `*audit`**: quantos padrões/variantes existem hoje (o "antes"). Não
26
+ estimo de cabeça — leio o inventário.
27
+ 2. **Puxo o alvo do `*consolidate`**: quantas variantes canônicas restam (o "depois"). O delta
28
+ antes→depois é a base de tudo.
29
+ 3. **Calculo a redução:**
30
+ - redução absoluta = (antes − depois)
31
+ - redução percentual = (antes − depois) / antes × 100
32
+ (ex.: 47 botões → 3 variantes = 44 eliminados, 93,6% de redução).
33
+ 4. **Estimo o esforço economizado.** Para cada padrão redundante eliminado, somo o custo recorrente que
34
+ ele gerava: manutenção, correção de bug duplicado, retrabalho de design, inconsistência. Uso premissas
35
+ explícitas de horas/padrão/ano — registro cada premissa para ser auditável.
36
+ 5. **Converto esforço em custo evitado/ano:** horas economizadas × custo-hora. Mantenho a premissa de
37
+ custo-hora explícita e separada (fácil de ajustar sem refazer a conta).
38
+ 6. **Calculo o ROI:** (custo evitado − custo da consolidação) / custo da consolidação. Incluo o custo de
39
+ fazer a consolidação (esforço de migração) para o número ser honesto, não inflado.
40
+ 7. **Monto o breakdown rastreável:** cada número aponta para a linha do `*audit`/`*consolidate` que o
41
+ originou, e cada premissa fica visível. Número sem rastro não convence ninguém.
42
+ 8. **Entrego o resultado** (anexo ao `*shock-report` quando houver) e roteio: a decisão de investir na
43
+ consolidação/migração com base no ROI é do @pm. Eu provo o valor; ele prioriza.
44
+
45
+ ## Critério de pronto (DoD)
46
+
47
+ - [ ] "Antes" e "depois" puxados de `*audit` / `*consolidate` — nada estimado de cabeça
48
+ - [ ] Redução absoluta e percentual calculadas e mostradas
49
+ - [ ] Esforço economizado com premissas explícitas (horas/padrão/ano)
50
+ - [ ] Custo evitado/ano com custo-hora explícito e separado
51
+ - [ ] ROI inclui o custo da própria consolidação (número honesto)
52
+ - [ ] Breakdown rastreável: cada número aponta para sua origem
53
+
54
+ ## Falha / recuperação
55
+
56
+ - **Falta o inventário do `*audit`** → HALT; não calculo ROI sem o "antes" real. Rodo/peço a auditoria
57
+ primeiro.
58
+ - **Premissa de custo-hora ou horas/padrão não tem base** → marco como premissa explícita e sinalizo a
59
+ incerteza; não escondo chute dentro do número.
60
+ - **O número ficaria inflado** (ignorando o custo de migrar) → corrijo incluindo o custo da consolidação;
61
+ prefiro um ROI menor e defensável a um grande e furado.
62
+ - **A decisão de priorizar a consolidação** → delego ao @pm; meu papel é provar o valor com número, não
63
+ decidir o backlog.