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