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,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: dev-develop-story
|
|
3
|
+
agent: dev
|
|
4
|
+
title: Implementar uma story
|
|
5
|
+
inputs: [story]
|
|
6
|
+
outputs: [código, testes, File List atualizada, status InProgress→Ready for Review]
|
|
7
|
+
elicit: false
|
|
8
|
+
modes: [interactive, yolo, preflight]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Implementar uma story
|
|
12
|
+
|
|
13
|
+
**Objetivo:** transformar uma story aprovada em código testado e rastreável, atualizando só as
|
|
14
|
+
seções do Dev Record — sem inventar escopo e sem tocar no que não é meu.
|
|
15
|
+
|
|
16
|
+
**Pré-condições:**
|
|
17
|
+
- A story existe e NÃO está em `Draft` (foi validada pelo @po). Se estiver em Draft, **pare** e
|
|
18
|
+
reporte: implementar uma story não-validada é retrabalho garantido.
|
|
19
|
+
- A story tem critérios de aceite (ACs) e a seção de Testing. Se faltar, **pare** e devolva ao @sm.
|
|
20
|
+
|
|
21
|
+
## Passos
|
|
22
|
+
|
|
23
|
+
1. **Leia a story COMPLETA antes de tocar em código** — ACs, notas de dev, seção de Testing. A story
|
|
24
|
+
tem tudo que você precisa; não carregue PRD/arquitetura a menos que a story mande explicitamente.
|
|
25
|
+
2. **Procure padrão existente antes de criar** (REUSE > ADAPT > CREATE). Se já existe um utilitário/
|
|
26
|
+
componente que resolve, use; se quase resolve, adapte sem quebrar quem consome; só crie do zero
|
|
27
|
+
quando nada serve — e registre o porquê.
|
|
28
|
+
3. **Implemente um AC por vez.** Para cada critério de aceite:
|
|
29
|
+
a. escreva o código mínimo que satisfaz o AC, seguindo os padrões do projeto;
|
|
30
|
+
b. escreva o teste que prova o AC (não marque o AC sem teste verde);
|
|
31
|
+
c. rode `lint` + `typecheck` + os testes da área;
|
|
32
|
+
d. **checkpoint de autocrítica** (a cada ~30 linhas): isto quebra algum consumidor? cobre o caso
|
|
33
|
+
de erro? é o caminho feliz só?
|
|
34
|
+
4. **Atualize a File List** da story a cada arquivo criado/modificado. É o rastro do que você mexeu.
|
|
35
|
+
5. **Rode a verificação completa** antes de declarar pronto: lint limpo, typecheck 0, toda a suíte
|
|
36
|
+
verde. Vermelho não vira "Ready for Review".
|
|
37
|
+
6. **Revisão de qualidade pré-commit** (`nexus run` review ou ferramenta configurada): rode na
|
|
38
|
+
mudança não-commitada. CRITICAL → corrijo agora (máx. 2 iterações). HIGH → corrijo se der na 2ª
|
|
39
|
+
iteração, senão registro como dívida. MEDIUM/LOW → registro, não bloqueio.
|
|
40
|
+
7. **Commit local** (`git add`/`git commit`, conventional commit com o id da story). **Nunca** `git
|
|
41
|
+
push` — isso é do @devops; eu deixo pronto e delego a subida.
|
|
42
|
+
8. **Marque a story** `Ready for Review` e preencha Completion Notes + Change Log. Roteio para o @qa.
|
|
43
|
+
|
|
44
|
+
## Critério de pronto (DoD)
|
|
45
|
+
|
|
46
|
+
- [ ] Todos os ACs implementados, cada um com teste verde
|
|
47
|
+
- [ ] lint limpo, typecheck 0, suíte completa verde
|
|
48
|
+
- [ ] File List, Completion Notes e Change Log atualizados
|
|
49
|
+
- [ ] Revisão pré-commit sem CRITICAL aberto
|
|
50
|
+
- [ ] Commit local feito; nada de `git push` (delegado ao @devops)
|
|
51
|
+
- [ ] Só toquei nas seções do Dev Record da story — não em ACs, escopo ou título
|
|
52
|
+
|
|
53
|
+
## Falha / recuperação
|
|
54
|
+
|
|
55
|
+
- **Teste não passa após 3 tentativas no mesmo ponto** → HALT, registro no Debug Log e reporto o
|
|
56
|
+
bloqueio em vez de empurrar com gambiarra.
|
|
57
|
+
- **CRITICAL da revisão persiste após 2 iterações** → HALT, não marco Ready for Review; reporto.
|
|
58
|
+
- **Descobri que a story está incompleta/ambígua no meio** → paro, registro a lacuna e devolvo ao
|
|
59
|
+
@sm/@po. Não invento o requisito que falta.
|
|
60
|
+
- **A mudança exige tocar fora do meu escopo** (schema, infra, UI) → delego ao dono (@data-engineer,
|
|
61
|
+
@devops, @ux-design-expert) em vez de invadir a lane.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: document-project
|
|
3
|
+
agent: architect
|
|
4
|
+
title: Gerar a documentação de arquitetura do projeto
|
|
5
|
+
inputs: [codebase]
|
|
6
|
+
outputs: [documentação de arquitetura, mapa de dependências, riscos estruturais]
|
|
7
|
+
elicit: false
|
|
8
|
+
modes: [interactive, yolo]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Gerar a documentação de arquitetura do projeto
|
|
12
|
+
|
|
13
|
+
**Objetivo:** produzir uma documentação de arquitetura fiel ao que o codebase **realmente é** — não
|
|
14
|
+
ao que deveria ser — para que qualquer agente ou humano entenda o sistema, suas fronteiras e onde ele
|
|
15
|
+
racha, sem ter que reler o repositório inteiro.
|
|
16
|
+
|
|
17
|
+
**Pré-condições:**
|
|
18
|
+
- O repositório está acessível e legível. Se estiver vazio ou inacessível, **pare** e reporte.
|
|
19
|
+
- Há um destino de documentação (`docs/architecture/`). Se já existir doc, eu atualizo o que mudou em
|
|
20
|
+
vez de reescrever do zero.
|
|
21
|
+
|
|
22
|
+
## Passos
|
|
23
|
+
|
|
24
|
+
1. **Reconheça o terreno.** Identifico stack, linguagens, gerenciador de pacotes, entrypoints e a
|
|
25
|
+
convenção de organização (por camada / feature / domínio). Documento o que existe, sem julgar.
|
|
26
|
+
2. **Mapeie as camadas e fronteiras.** Frontend, backend, dados, infra: o que cada camada faz, onde
|
|
27
|
+
ela termina e onde fala com a próxima. Cada fronteira de serviço e contrato de API vira uma seção.
|
|
28
|
+
3. **Levante o mapa de dependências** (`Grep`/`Glob`, code-intel se disponível). Módulos internos,
|
|
29
|
+
dependências externas e — crucial — qualquer ciclo de dependência. Anoto acoplamentos que viram
|
|
30
|
+
gargalo.
|
|
31
|
+
4. **Documente o fluxo de dados** das entradas às saídas: como um request atravessa as camadas, onde
|
|
32
|
+
os dados persistem, onde há cache/fila. Para a camada de dados, registro a tecnologia e o contrato;
|
|
33
|
+
o schema detalhado é território da @data-engineer.
|
|
34
|
+
5. **Anote os riscos estruturais (teste do 10×).** Para cada fronteira crítica, o que quebra ao
|
|
35
|
+
escalar: N+1, hot path, ponto único de falha, acoplamento perigoso. Registro o failure mode
|
|
36
|
+
observado — documentação honesta inclui as rachaduras.
|
|
37
|
+
6. **Escreva no template e salve.** Preencho a documentação a partir do template de arquitetura, salvo
|
|
38
|
+
em `docs/architecture/` e entrego como base para `analyze-project-structure`,
|
|
39
|
+
`architect-analyze-impact` ou um assessment brownfield. Subida do doc → @devops.
|
|
40
|
+
|
|
41
|
+
## Critério de pronto (DoD)
|
|
42
|
+
|
|
43
|
+
- [ ] Stack, entrypoints e convenção de organização documentados como realmente são
|
|
44
|
+
- [ ] Cada camada e fronteira de serviço descrita, com seus contratos de API
|
|
45
|
+
- [ ] Mapa de dependências completo, com ciclos identificados
|
|
46
|
+
- [ ] Fluxo de dados ponta a ponta documentado
|
|
47
|
+
- [ ] Riscos estruturais anotados com failure mode ao escalar (teste do 10×)
|
|
48
|
+
- [ ] Documentação salva em `docs/architecture/`, sem invenção (reflete o codebase, não o desejo)
|
|
49
|
+
|
|
50
|
+
## Falha / recuperação
|
|
51
|
+
|
|
52
|
+
- **O codebase é grande demais para documentar de uma vez** → priorizo as camadas e fronteiras
|
|
53
|
+
críticas primeiro, marco o resto como pendente explícito; não invento o que não inspecionei.
|
|
54
|
+
- **Não consigo determinar o comportamento real de um módulo** → registro a incerteza como tal, em
|
|
55
|
+
vez de afirmar uma arquitetura que estou supondo (No Invention vale para documentação também).
|
|
56
|
+
- **A camada de dados exige detalhamento de schema/DDL** → documento a tecnologia e o contrato e
|
|
57
|
+
delego o aprofundamento de schema à @data-engineer.
|
|
58
|
+
- **A documentação precisa ser commitada e subida** → faço o registro local; a subida ao remoto é
|
|
59
|
+
exclusiva do @devops.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: execute-checklist
|
|
3
|
+
agent: architect
|
|
4
|
+
title: Rodar um checklist de arquitetura
|
|
5
|
+
inputs: [checklist, artefato a validar]
|
|
6
|
+
outputs: [veredito por item, lista de correções, decisão GO/NO-GO]
|
|
7
|
+
elicit: false
|
|
8
|
+
modes: [interactive, yolo]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Rodar um checklist de arquitetura
|
|
12
|
+
|
|
13
|
+
**Objetivo:** validar um artefato de arquitetura (documento, plano, design) contra um checklist item
|
|
14
|
+
a item, emitindo um veredito objetivo por item e uma decisão final — para que "feito" e "feito
|
|
15
|
+
direito" não sejam a mesma palavra na base da fé.
|
|
16
|
+
|
|
17
|
+
**Pré-condições:**
|
|
18
|
+
- Existe um checklist alvo em `checklists/` e um artefato a validar. Se faltar qualquer um, **pare**
|
|
19
|
+
e reporte — não há gate sem critério e sem objeto.
|
|
20
|
+
- O artefato está num estado avaliável (não um rascunho pela metade). Se estiver, devolvo para
|
|
21
|
+
completar antes.
|
|
22
|
+
|
|
23
|
+
## Passos
|
|
24
|
+
|
|
25
|
+
1. **Carregue o checklist completo** e o artefato a validar. Leio todos os itens antes de começar
|
|
26
|
+
para entender o que cada um exige — um checklist mal lido aprova o que deveria barrar.
|
|
27
|
+
2. **Avalie item a item, em ordem.** Para cada item, confronto o artefato com o critério e emito um
|
|
28
|
+
veredito: **PASS** (atende), **FAIL** (não atende) ou **PARTIAL** (atende em parte). Registro a
|
|
29
|
+
evidência concreta — qual seção/decisão sustenta o veredito. Sem evidência, não é PASS.
|
|
30
|
+
3. **No modo interativo, pare em pontos de confirmação** quando o item exigir julgamento do usuário;
|
|
31
|
+
no modo yolo, avalio autonomamente e marco os itens que precisariam de confirmação humana.
|
|
32
|
+
4. **Para cada FAIL/PARTIAL, especifique a correção.** O que exatamente falta e onde — não "melhorar
|
|
33
|
+
a seção X", mas a lacuna concreta e acionável. Correção vaga não conserta nada.
|
|
34
|
+
5. **Compute a decisão final.** GO (todos os itens críticos PASS) ou NO-GO (há FAIL crítico) com a
|
|
35
|
+
lista de correções obrigatórias. A severidade de cada item vem do próprio checklist.
|
|
36
|
+
6. **Roteie o resultado.** GO → o artefato segue (implementação → @dev, schema → @data-engineer,
|
|
37
|
+
subida → @devops). NO-GO → devolvo ao autor do artefato com a lista de correções; não passo
|
|
38
|
+
adiante o que não passou.
|
|
39
|
+
|
|
40
|
+
## Critério de pronto (DoD)
|
|
41
|
+
|
|
42
|
+
- [ ] Todos os itens do checklist avaliados, cada um com veredito (PASS/FAIL/PARTIAL) e evidência
|
|
43
|
+
- [ ] Cada FAIL/PARTIAL tem a correção concreta e acionável especificada
|
|
44
|
+
- [ ] Pontos de confirmação interativa respeitados (não pulados "por eficiência")
|
|
45
|
+
- [ ] Decisão final GO/NO-GO computada pela severidade dos itens do checklist
|
|
46
|
+
- [ ] Resultado roteado: GO segue ao próximo dono; NO-GO volta ao autor com correções
|
|
47
|
+
|
|
48
|
+
## Falha / recuperação
|
|
49
|
+
|
|
50
|
+
- **Um item do checklist é ambíguo demais para avaliar** → registro como inconclusivo, não como PASS;
|
|
51
|
+
escalo a interpretação em vez de inventar o critério.
|
|
52
|
+
- **O artefato está incompleto demais para validar** → paro o gate e devolvo para completar; não
|
|
53
|
+
avalio um rascunho pela metade como se fosse final.
|
|
54
|
+
- **Há FAIL crítico** → emito NO-GO e devolvo; não há override informal de um item crítico — quem
|
|
55
|
+
decide waiver é a autoridade do processo, não eu sozinha no meio da validação.
|
|
56
|
+
- **O checklist alvo não existe ou está corrompido** → reporto e não improviso critérios; uma
|
|
57
|
+
validação sem checklist válido é teatro, não gate.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: execute-epic-plan
|
|
3
|
+
agent: pm
|
|
4
|
+
title: Executar o epic em waves paralelas
|
|
5
|
+
inputs: ['docs/epics/{epicNum}.epic.md', stories criadas pelo @sm]
|
|
6
|
+
outputs: [árvore de execução por waves, stories implementadas e roteadas ao gate]
|
|
7
|
+
elicit: false
|
|
8
|
+
modes: [yolo]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Executar o epic em waves paralelas
|
|
12
|
+
|
|
13
|
+
**Objetivo:** orquestrar a execução de um epic estruturado em ondas paralelas — disparando o motor
|
|
14
|
+
(`nexus run`), respeitando dependências e budget, e roteando cada entrega ao quality gate.
|
|
15
|
+
|
|
16
|
+
**Pré-condições:**
|
|
17
|
+
- O epic existe em `docs/epics/` com fronteiras, dependências e quality gates (saída de `create-epic`).
|
|
18
|
+
Se o epic não está estruturado, **pare** e rode `create-epic` antes.
|
|
19
|
+
- As stories do epic foram criadas pelo @sm e validadas pelo @po. Story em `Draft` não entra em
|
|
20
|
+
execução — eu não crio nem valido story (Gate 1); se faltam, delego ao @sm/@po.
|
|
21
|
+
|
|
22
|
+
## Passos
|
|
23
|
+
|
|
24
|
+
1. **Leia o epic completo** e monte o grafo de dependências entre as stories. Identifique o que é
|
|
25
|
+
paralelizável (baixo acoplamento) e o que precisa ser sequenciado.
|
|
26
|
+
2. **Agrupe as stories em waves.** Cada wave: um conjunto de stories independentes que correm em
|
|
27
|
+
paralelo. Stories acopladas vão em waves seguintes, respeitando as deps.
|
|
28
|
+
3. **Dispare o motor por wave** (`nexus run "{objetivo da wave}"`): o coordenador decompõe e o
|
|
29
|
+
orquestrador spawna os sub-agentes (cada story → @dev/@data-engineer/@ux conforme a frente).
|
|
30
|
+
4. **Respeite os freios.** `maxFanout`, `maxDepth`, `maxTotalRuns` e budget têm teto. Se uma wave estoura
|
|
31
|
+
a decomposição, **recuso a wave inteira** e reformulo em frentes maiores/menos acopladas — sem
|
|
32
|
+
sub-agentes órfãos.
|
|
33
|
+
5. **Costure as entregas da wave.** Recolha o resultado de cada story, verifique contra o critério de
|
|
34
|
+
aceite do epic, e só então libere a próxima wave (as que dependiam dela).
|
|
35
|
+
6. **Roteie cada entrega ao gate.** Implementado → @qa (quality gate previsto no epic). Aprovado e pronto
|
|
36
|
+
pra subir → **@devops** (`git push`/PR/release são exclusivos dele — eu delego, sempre).
|
|
37
|
+
|
|
38
|
+
## Critério de pronto (DoD)
|
|
39
|
+
|
|
40
|
+
- [ ] Stories agrupadas em waves respeitando o grafo de dependências
|
|
41
|
+
- [ ] Cada wave disparada via `nexus run`, dentro dos freios (sem órfãos, sem estouro de budget)
|
|
42
|
+
- [ ] Entregas costuradas e verificadas contra o critério de aceite do epic
|
|
43
|
+
- [ ] Cada entrega roteada ao @qa; subida delegada ao @devops
|
|
44
|
+
- [ ] Eu não criei nem validei story (Gate 1 respeitado)
|
|
45
|
+
|
|
46
|
+
## Falha / recuperação
|
|
47
|
+
|
|
48
|
+
- **Uma story da wave falha** → o motor bloqueia os dependentes; reporto a frente travada e decido
|
|
49
|
+
re-delegar ou escalar, sem dar a wave por entregue.
|
|
50
|
+
- **A wave estoura os freios/budget** → recuso e reformulo em frentes maiores/menos acopladas.
|
|
51
|
+
- **Faltam stories validadas** → delego criação ao @sm e validação ao @po; não furo o Gate 1.
|
|
52
|
+
- **Pediram que eu suba o código** → recuso e delego ao @devops; `git push`/PR/release não são meus.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: execute-subtask
|
|
3
|
+
agent: dev
|
|
4
|
+
title: Executar uma subtask do implementation.yaml
|
|
5
|
+
inputs: [subtask-id, implementation.yaml]
|
|
6
|
+
outputs: [código da subtask, File List atualizada, status da subtask: done]
|
|
7
|
+
elicit: false
|
|
8
|
+
modes: [yolo, interactive]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Executar uma subtask do implementation.yaml
|
|
12
|
+
|
|
13
|
+
**Objetivo:** implementar uma única subtask atômica do plano de execução pelo menor caminho,
|
|
14
|
+
deixando-a pronta para verificação — sem tocar em nada além do que a subtask delimita.
|
|
15
|
+
|
|
16
|
+
**Pré-condições:**
|
|
17
|
+
- Existe um `implementation.yaml` (plano de execução) com a subtask referenciada pelo `subtask-id`.
|
|
18
|
+
Se o id não existe no plano, **pare** e reporte — não invento subtask.
|
|
19
|
+
- As dependências (`depends_on`) da subtask já estão `done`. Se uma dependência está aberta, **pare**:
|
|
20
|
+
executar fora de ordem gera retrabalho.
|
|
21
|
+
|
|
22
|
+
## Passos
|
|
23
|
+
|
|
24
|
+
1. **Carrego a subtask** do `implementation.yaml`: seu objetivo, os arquivos que ela toca
|
|
25
|
+
(`files`), o critério de aceite local e a verificação configurada (`verify`). Leio só essa
|
|
26
|
+
subtask e o contexto que ela mesma referencia — não o plano inteiro.
|
|
27
|
+
2. **Confirmo o escopo.** A subtask define quais arquivos posso tocar. Se o trabalho exige mexer
|
|
28
|
+
fora dessa lista, **paro** e reporto a fronteira estourada — não invado escopo de outra subtask.
|
|
29
|
+
3. **Procuro padrão existente antes de criar** (REUSE > ADAPT > CREATE). Reuso utilitário/componente
|
|
30
|
+
que já resolve; adapto se quase resolve; só crio do zero quando nada serve.
|
|
31
|
+
4. **Implemento pelo menor caminho** que satisfaz o critério local da subtask, seguindo os padrões
|
|
32
|
+
do projeto. Sem super-construção: resolvo o que a subtask pede, nada além.
|
|
33
|
+
5. **Atualizo a File List** com cada arquivo criado/modificado/deletado nesta subtask.
|
|
34
|
+
6. **Marco a subtask como `done`** no `implementation.yaml` (campo de status) e a roteio para a
|
|
35
|
+
verificação (`verify-subtask`). Não declaro pronto sem passar pela verificação.
|
|
36
|
+
|
|
37
|
+
## Critério de pronto (DoD)
|
|
38
|
+
|
|
39
|
+
- [ ] A subtask foi implementada dentro da sua lista de arquivos (`files`) — sem extravasar escopo
|
|
40
|
+
- [ ] Reúso foi avaliado antes de criar estrutura nova
|
|
41
|
+
- [ ] File List atualizada com tudo que foi tocado
|
|
42
|
+
- [ ] Subtask marcada `done` no `implementation.yaml` e roteada para `verify-subtask`
|
|
43
|
+
|
|
44
|
+
## Falha / recuperação
|
|
45
|
+
|
|
46
|
+
- **A subtask exige tocar arquivos fora da sua lista** → HALT e reporto; o escopo da subtask precisa
|
|
47
|
+
ser corrigido no plano, não burlado.
|
|
48
|
+
- **Uma dependência (`depends_on`) não está pronta** → paro e reporto a ordem quebrada.
|
|
49
|
+
- **3 tentativas falhas no mesmo ponto** → HALT, registro o bloqueio e reporto; não empilho hipótese.
|
|
50
|
+
- **A subtask está ambígua mesmo com o contexto do plano** → devolvo ao @architect (dono do
|
|
51
|
+
`implementation.yaml`) para esclarecer — não invento o requisito que falta.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: extend-pattern
|
|
3
|
+
agent: ux-design-expert
|
|
4
|
+
title: Adicionar variante a um componente existente
|
|
5
|
+
inputs: [componente-base, variante-pedida, story]
|
|
6
|
+
outputs: [variante implementada, testes, tokens, doc atualizada, File List atualizada]
|
|
7
|
+
elicit: false
|
|
8
|
+
modes: [interactive, yolo]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Adicionar variante a um componente existente
|
|
12
|
+
|
|
13
|
+
**Objetivo:** estender um componente atômico já existente com uma nova variante (tamanho, estado,
|
|
14
|
+
intent) sem fork e sem quebrar quem já consome — variante nasce com a11y e tokens embutidos.
|
|
15
|
+
|
|
16
|
+
**Pré-condições:**
|
|
17
|
+
- O componente-base existe no design system e está em produção. Se não existe, **pare** — isto é um
|
|
18
|
+
`*build`, não um `*extend`.
|
|
19
|
+
- A variante pedida rastreia a uma story/spec/FR-NFR ou achado de pesquisa. Sem rastro, **pare** e
|
|
20
|
+
sinalizo: não invento variante por gosto.
|
|
21
|
+
- Os design tokens já cobrem (ou comportam) os valores da nova variante. Se faltar token, rodo
|
|
22
|
+
`*tokenize` antes — nada de hex solto.
|
|
23
|
+
|
|
24
|
+
## Passos
|
|
25
|
+
|
|
26
|
+
1. **Leio o componente-base inteiro** — props, variantes existentes, contrato público, testes. Mapeio
|
|
27
|
+
quem consome (busca de usos) para saber o que NÃO posso quebrar.
|
|
28
|
+
2. **Confirmo a rastreabilidade da variante** à story/spec. Identifico o eixo da variante (ex.: novo
|
|
29
|
+
`intent="danger"`, novo `size="xs"`) e checo que não duplica uma variante já existente.
|
|
30
|
+
3. **Estendo via prop/variante, nunca por fork.** Adiciono o valor ao tipo/enum da prop, sem mudar a
|
|
31
|
+
assinatura existente. Defaults e variantes atuais permanecem idênticos (mudança aditiva, não breaking).
|
|
32
|
+
4. **Puxo todos os valores de design token.** Cor, espaçamento, tipografia e raio da nova variante vêm
|
|
33
|
+
dos tokens consolidados — zero hardcoded.
|
|
34
|
+
5. **Escrevo o teste da variante** (render + estados) e **rodo a auditoria de a11y** (`*a11y-check`):
|
|
35
|
+
contraste, foco visível, navegação por teclado e semântica da nova variante.
|
|
36
|
+
6. **Rodo a suíte completa** do componente para provar que nenhum consumidor quebrou (regressão das
|
|
37
|
+
variantes antigas + a nova verde).
|
|
38
|
+
7. **Atualizo a documentação** da pattern library (`*document`) com a nova variante: exemplo, quando
|
|
39
|
+
usar, quando não usar.
|
|
40
|
+
8. **Atualizo a File List** da story e faço **commit local** (conventional commit com o id da story).
|
|
41
|
+
**Nunca** `git push` — entrego pronto e delego a subida ao @devops.
|
|
42
|
+
|
|
43
|
+
## Critério de pronto (DoD)
|
|
44
|
+
|
|
45
|
+
- [ ] Variante rastreia a uma story/spec/FR-NFR — sem invenção
|
|
46
|
+
- [ ] Mudança é aditiva: nenhuma variante/consumidor existente quebrou (regressão verde)
|
|
47
|
+
- [ ] Zero valor hardcoded — tudo via design token
|
|
48
|
+
- [ ] a11y WCAG AA aprovada para a nova variante (contraste, foco, teclado, semântica)
|
|
49
|
+
- [ ] Teste da variante verde + suíte completa verde
|
|
50
|
+
- [ ] Doc da pattern library atualizada (uso / não-uso)
|
|
51
|
+
- [ ] File List atualizada e commit local feito (sem `git push`)
|
|
52
|
+
|
|
53
|
+
## Falha / recuperação
|
|
54
|
+
|
|
55
|
+
- **A variante quebraria um consumidor existente** → não é `*extend`, é refatoração de contrato. HALT,
|
|
56
|
+
escalo para @architect/@dev decidir a migração antes de prosseguir.
|
|
57
|
+
- **a11y reprova na nova variante** → bloqueio a entrega, não marco pronto. Acessibilidade é piso, não
|
|
58
|
+
melhoria futura.
|
|
59
|
+
- **Falta token para a variante** → paro, rodo `*tokenize` para criar o token, e só então estendo —
|
|
60
|
+
nunca hardcode como atalho.
|
|
61
|
+
- **A variante não rastreia a nenhuma story/spec** → paro e sinalizo como hipótese; busco a evidência
|
|
62
|
+
antes de implementar.
|
|
63
|
+
- **A mudança exige integrar na app além do design system** → delego ao @dev em vez de invadir a lane.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: extend-squad
|
|
3
|
+
agent: squad-creator
|
|
4
|
+
title: Estender um squad existente sem quebrar o que já roda
|
|
5
|
+
inputs: ['id do squad', 'necessidade nova (membro, task ou knowledge)']
|
|
6
|
+
outputs: ['blueprint incremental <squad>{json}</squad> validado', 'squads/{id}/ estendido pelo motor']
|
|
7
|
+
elicit: true
|
|
8
|
+
modes: [interactive, yolo]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Estender um squad existente sem quebrar o que já roda
|
|
12
|
+
|
|
13
|
+
**Objetivo:** adicionar membros, tasks ou knowledge a um squad já materializado — mudança ADITIVA,
|
|
14
|
+
validada pelo motor, que preserva os membros e contratos existentes.
|
|
15
|
+
|
|
16
|
+
**Pré-condições:**
|
|
17
|
+
- `squads/{id}/` existe e passa em `validate-squad`. Estender squad quebrado é empilhar dívida:
|
|
18
|
+
primeiro o FAIL é sanado, depois se estende.
|
|
19
|
+
- A necessidade nova rastreia à missão do squad (ou a uma extensão explícita dela, com novo
|
|
20
|
+
`traceRef`). Sem rastro, não entra.
|
|
21
|
+
|
|
22
|
+
## Passos
|
|
23
|
+
|
|
24
|
+
1. **Leia o squad REAL** (`squad.yaml` + `agents/` + `tasks/` do squad) antes de propor qualquer
|
|
25
|
+
adição (Lei 2). Rode `validate-squad {id}` — FAIL bloqueia a extensão até ser sanado.
|
|
26
|
+
2. **Elicite a necessidade** (ponto de elicitação em modo interativo): que gap apareceu? É lente
|
|
27
|
+
nova (membro), procedimento novo (task) ou craft novo (knowledge)? Em yolo, derive dos inputs e
|
|
28
|
+
declare as suposições.
|
|
29
|
+
3. **Cheque REUSE antes de CREATE — duas vezes:** o gap é coberto (a) por um membro atual do squad?
|
|
30
|
+
(b) pelo time core? Se sim em qualquer um, a extensão é **delegação/referência**, não membro
|
|
31
|
+
novo. Só o gap real vira adição.
|
|
32
|
+
4. **Verifique os limites da composição:** a adição mantém o time em chief+2..chief+7, lentes
|
|
33
|
+
distintas, chief único e `Orchestrator`, zero colisão de autoridade com o core. Estourou a
|
|
34
|
+
faixa → renegocie (fatiar a missão) em vez de inchar o time.
|
|
35
|
+
5. **Preencha os templates** (`agent-dna-tmpl` / `squad-task-tmpl`) para as adições e **emita UM
|
|
36
|
+
bloco `<squad>{json}</squad>` incremental**: mesmo shape do `create-squad`, com o `manifest`
|
|
37
|
+
atualizado (version bump) e SOMENTE os agents/tasks/knowledge novos ou alterados. Membro
|
|
38
|
+
existente não é reescrito de carona (Lei 5 — diff mínimo).
|
|
39
|
+
6. **Dispare o motor** (`nexus squad extend`): ele valida o blueprint incremental contra o squad
|
|
40
|
+
existente e materializa. Conflito (id duplicado, autoridade colidente) → o motor recusa; corrija
|
|
41
|
+
e re-emita.
|
|
42
|
+
7. **Prove:** rode `validate-squad {id}` no squad estendido e reporte o resultado real.
|
|
43
|
+
|
|
44
|
+
## Critério de pronto (DoD)
|
|
45
|
+
|
|
46
|
+
- [ ] Squad de partida validado (PASS) antes da extensão
|
|
47
|
+
- [ ] Necessidade rastreada à missão (ou extensão dela com `traceRef` novo)
|
|
48
|
+
- [ ] REUSE checado contra o squad E contra o core antes de criar qualquer coisa
|
|
49
|
+
- [ ] Blueprint incremental emitido num único bloco `<squad>{json}</squad>`, com version bump e sem reescrever membros intactos
|
|
50
|
+
- [ ] Motor validou e materializou; conflito zero
|
|
51
|
+
- [ ] `validate-squad` pós-extensão PASS, reportado
|
|
52
|
+
|
|
53
|
+
## Falha / recuperação
|
|
54
|
+
|
|
55
|
+
- **O squad de partida está FAIL** → HALT da extensão; reporte os issues e conserte-os primeiro
|
|
56
|
+
(issue aditivo → esta task; estrutural → `create-squad` re-emite).
|
|
57
|
+
- **A adição colide com membro/task existente** → o motor recusa; renomeie ou funda com o
|
|
58
|
+
existente — nunca sobrescreva por cima.
|
|
59
|
+
- **A necessidade não rastreia à missão** → não é extensão, é squad novo ou escopo do core:
|
|
60
|
+
devolva a decisão ao usuário com as duas opções.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: extract-patterns
|
|
3
|
+
agent: analyst
|
|
4
|
+
title: Extrair e documentar padrões de código do codebase
|
|
5
|
+
inputs: [codebase, objetivo (story/spec/área-alvo)]
|
|
6
|
+
outputs: [catálogo de padrões rastreáveis (docs/research/patterns.md)]
|
|
7
|
+
elicit: false
|
|
8
|
+
modes: [interactive, yolo]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Extrair e documentar padrões de código do codebase
|
|
12
|
+
|
|
13
|
+
**Objetivo:** mapear os padrões recorrentes de um codebase existente (convenções, estruturas,
|
|
14
|
+
abordagens de erro, camadas) e documentá-los como catálogo acionável — cada padrão rastreando a
|
|
15
|
+
ocorrências reais no código, nunca a um palpite.
|
|
16
|
+
|
|
17
|
+
**Pré-condições:**
|
|
18
|
+
- Há um codebase acessível e um objetivo que define o recorte: a área/story/spec para a qual os
|
|
19
|
+
padrões importam. Sem recorte, eu **paro e elícito** (`*elicit`) — varrer o repositório inteiro
|
|
20
|
+
sem pergunta é tempo queimado.
|
|
21
|
+
- Existe um destino de saída em `docs/research/`. Se não existir, eu crio o diretório antes de
|
|
22
|
+
escrever.
|
|
23
|
+
|
|
24
|
+
## Passos
|
|
25
|
+
|
|
26
|
+
1. **Aperto o recorte até doer.** Qual decisão estes padrões precisam destravar? (ex.: o @dev vai
|
|
27
|
+
implementar uma story e precisa seguir a convenção da casa; o @architect vai decidir reuso). Se o
|
|
28
|
+
recorte não estiver claro, paro e elícito — não invento o escopo.
|
|
29
|
+
2. **Divirjo: coleto largo.** Uso `Grep`/`Glob` para varrer a área-alvo e levanto candidatos a padrão
|
|
30
|
+
sem julgar ainda — nomenclatura, estrutura de pastas, tratamento de erro, camadas (controller/
|
|
31
|
+
service/repo), imports, formato de teste, validação, logging. Nesta fase só coleto e mapeio onde
|
|
32
|
+
cada candidato aparece.
|
|
33
|
+
3. **Convirjo: filtro por evidência.** Um padrão só entra no catálogo se aparece em **2+ ocorrências
|
|
34
|
+
reais** no código. Ocorrência única é exceção, não padrão — registro como nota, não como regra.
|
|
35
|
+
Cada padrão sobrevivente carrega os arquivos:linha onde foi observado.
|
|
36
|
+
4. **Classifico cada padrão** em: convenção forte (consistente em toda a área), convenção parcial
|
|
37
|
+
(coexiste com variações — sinalizo o conflito) ou anti-padrão recorrente (aparece, mas viola boa
|
|
38
|
+
prática — marco explicitamente). Não maquio inconsistência como consistência.
|
|
39
|
+
5. **Sintetizo o "portanto".** Para cada padrão documento: nome, descrição, exemplo mínimo do próprio
|
|
40
|
+
código, ocorrências rastreáveis e a ação acionável — "ao implementar nesta área, siga X / evite Y".
|
|
41
|
+
6. **Escrevo o catálogo** em `docs/research/patterns.md` com fonte ao lado de cada item. O que é
|
|
42
|
+
suposição minha (sem ocorrência verificável) vai marcado como hipótese, nunca como fato.
|
|
43
|
+
7. **Faço o handoff limpo.** Roteio o catálogo a quem consome: implementação → @dev (para seguir a
|
|
44
|
+
convenção da casa), decisão de reuso/arquitetura → @architect. Eu municio; eles decidem.
|
|
45
|
+
|
|
46
|
+
## Critério de pronto (DoD)
|
|
47
|
+
|
|
48
|
+
- [ ] O recorte (área/story/spec) está explícito no topo do catálogo
|
|
49
|
+
- [ ] Todo padrão documentado tem 2+ ocorrências reais rastreadas (arquivo:linha)
|
|
50
|
+
- [ ] Cada padrão tem exemplo do próprio código + ação acionável ("portanto")
|
|
51
|
+
- [ ] Conflitos e anti-padrões estão sinalizados, não maquiados
|
|
52
|
+
- [ ] Suposições sem fonte estão marcadas como hipótese, não como fato
|
|
53
|
+
- [ ] Catálogo salvo em `docs/research/patterns.md` e roteado ao consumidor (@dev/@architect)
|
|
54
|
+
|
|
55
|
+
## Falha / recuperação
|
|
56
|
+
|
|
57
|
+
- **O recorte não está claro / objetivo ausente** → paro e elícito (`*elicit`); não varro o repo
|
|
58
|
+
inteiro nem invento o escopo.
|
|
59
|
+
- **Nenhum padrão atinge 2+ ocorrências** → reporto que a área não tem convenção estabelecida (achado
|
|
60
|
+
válido por si) em vez de promover ruído a regra.
|
|
61
|
+
- **Padrões conflitam entre si** → documento ambos os lados com suas ocorrências e sinalizo o conflito
|
|
62
|
+
ao consumidor; não escolho o "certo" — isso é decisão do @architect.
|
|
63
|
+
- **A extração exige rodar/mover código ou subir algo** → não é meu papel; delego ao @dev (mudança) ou
|
|
64
|
+
ao @devops (subida/MCP). Eu observo e documento, não administro.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: extract-tokens
|
|
3
|
+
agent: ux-design-expert
|
|
4
|
+
title: Extrair design tokens dos padrões consolidados
|
|
5
|
+
inputs: [padrões consolidados, story/spec de design system]
|
|
6
|
+
outputs: [design tokens (cor, espaçamento, tipografia, raio, sombra), docs/design-system/tokens/]
|
|
7
|
+
elicit: false
|
|
8
|
+
modes: [interactive, yolo]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Extrair design tokens dos padrões consolidados
|
|
12
|
+
|
|
13
|
+
**Objetivo:** transformar os padrões visuais consolidados num conjunto de design tokens nomeados e
|
|
14
|
+
versionados — a fonte única de verdade para cor, espaçamento, tipografia, raio e sombra. Daqui pra
|
|
15
|
+
frente, nada é hardcoded.
|
|
16
|
+
|
|
17
|
+
**Pré-condições:**
|
|
18
|
+
- A consolidação (`consolidate-patterns`) já reduziu a redundância e existe o conjunto de variantes
|
|
19
|
+
vencedoras. Sem isso, **pare**: tokenizar o caos só normaliza o caos.
|
|
20
|
+
- Há uma story/spec pedindo o design system (ou a migração que o exige). Sem rastro, elicito — não
|
|
21
|
+
invento paleta nem escala.
|
|
22
|
+
|
|
23
|
+
## Passos
|
|
24
|
+
|
|
25
|
+
1. **Leio os padrões consolidados** e extraio os valores brutos recorrentes: cores usadas,
|
|
26
|
+
espaçamentos, tamanhos/pesos de fonte, raios de borda, sombras.
|
|
27
|
+
2. **Agrupo cada dimensão numa escala semântica**, não numa lista de hex solto:
|
|
28
|
+
- **cor:** primária/secundária/neutra + estados (success/warning/danger/info), com nomes de
|
|
29
|
+
intenção (ex.: `color.action.primary`), não de aparência (`color.blue-500` só como referência).
|
|
30
|
+
- **espaçamento:** escala consistente (ex.: 4/8/12/16/24/32) com nomes (`space.xs…space.2xl`).
|
|
31
|
+
- **tipografia:** família, escala de tamanho, pesos e line-heights nomeados.
|
|
32
|
+
- **raio e sombra:** níveis nomeados (`radius.sm/md/lg`, `shadow.1/2/3`).
|
|
33
|
+
3. **Valido contraste WCAG AA** em cada par texto/fundo dos tokens de cor — contraste reprovado não
|
|
34
|
+
vira token: ajusto o valor ou marco o par como proibido. Acessibilidade é piso, não enfeite.
|
|
35
|
+
4. **Escrevo os tokens** em formato consumível (ex.: JSON/CSS custom properties) em
|
|
36
|
+
`docs/design-system/tokens/`, organizados por dimensão, com versão e referência aos padrões de
|
|
37
|
+
origem (rastro — cada token sabe de onde veio).
|
|
38
|
+
5. **Registro divergências resolvidas:** quando dois valores quase iguais viraram um só token,
|
|
39
|
+
anoto o mapeamento (valor antigo → token) para a migração depois consumir.
|
|
40
|
+
6. **Atualizo a File List** da story com os arquivos de token criados.
|
|
41
|
+
7. **Roteio.** Tokens prontos alimentam `setup-design-system` e `build-component`. Decisão de stack
|
|
42
|
+
de tokens (ex.: ferramenta de build/transform) é da Aria (@architect) — eu trago a lente de UX e
|
|
43
|
+
delego. Subida é do @devops.
|
|
44
|
+
|
|
45
|
+
## Critério de pronto (DoD)
|
|
46
|
+
|
|
47
|
+
- [ ] Cada dimensão (cor, espaçamento, tipografia, raio, sombra) tem escala semântica nomeada
|
|
48
|
+
- [ ] Todo par texto/fundo de cor passou em contraste WCAG AA (ou está marcado como proibido)
|
|
49
|
+
- [ ] Tokens escritos em `docs/design-system/tokens/`, versionados e com rastro à origem
|
|
50
|
+
- [ ] Mapeamento valor antigo → token registrado para a migração
|
|
51
|
+
- [ ] Zero valor hardcoded sobrando como decisão final; File List atualizada
|
|
52
|
+
|
|
53
|
+
## Falha / recuperação
|
|
54
|
+
|
|
55
|
+
- **Padrões não consolidados** → HALT; volto à `consolidate-patterns`, não tokenizo redundância.
|
|
56
|
+
- **Cor reprova contraste e não há ajuste óbvio** → não publico o token; sinalizo o conflito e busco
|
|
57
|
+
o valor acessível antes de fechar a paleta.
|
|
58
|
+
- **A escala fica ambígua (muitos valores próximos sem critério)** → elicito a decisão de design em
|
|
59
|
+
vez de inventar a regra de arredondamento.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: facilitate-brainstorming-session
|
|
3
|
+
agent: analyst
|
|
4
|
+
title: Facilitar uma sessão de brainstorming
|
|
5
|
+
inputs: [tópico]
|
|
6
|
+
outputs: ['docs/research/brainstorm-{slug}.md (ideias divergidas, convergidas e priorizadas)']
|
|
7
|
+
elicit: true
|
|
8
|
+
modes: [interactive]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Facilitar uma sessão de brainstorming
|
|
12
|
+
|
|
13
|
+
**Objetivo:** conduzir uma ideação estruturada que primeiro abre o leque (divergir) e depois corta com critério (convergir), entregando um conjunto priorizado e acionável de ideias rastreáveis ao tópico.
|
|
14
|
+
|
|
15
|
+
**Pré-condições:**
|
|
16
|
+
- Existe um tópico/objetivo de ideação definido. Se for vago ("preciso de ideias"), **pare** e elícito (`*elicit`) o foco real — brainstorm sem alvo é ruído.
|
|
17
|
+
- A decisão que esta sessão precisa destravar está clara. Se não, aperto o objetivo antes de gerar uma ideia sequer.
|
|
18
|
+
|
|
19
|
+
## Passos
|
|
20
|
+
|
|
21
|
+
1. **Enquadro o tópico com o usuário.** Confirmo a pergunta central e o que conta como "boa ideia" aqui (critério de sucesso). Registro isso no topo do documento. **(ponto de elicitação — exige a resposta real do usuário, não pode ser pulado)**
|
|
22
|
+
2. **Escolho técnicas nomeadas** adequadas ao tópico (ex.: SCAMPER, What-If, First Principles, Crazy 8s, Mind Mapping, Reverse Brainstorming). Anuncio qual técnica estou aplicando — método sobre achismo.
|
|
23
|
+
3. **DIVIRJO primeiro.** Gero amplitude deliberada de ideias — mais do que parece confortável. Nesta fase **não julgo**: só coleto e mapeio. Convido o usuário a contribuir a cada rodada de técnica.
|
|
24
|
+
4. **Marco a transição.** Anuncio explicitamente "fechando o leque, começando a tesoura" — nunca convirjo antes de ter divergido de verdade.
|
|
25
|
+
5. **CONVIRJO com critério.** Agrupo ideias por tema, removo duplicatas e filtro pelo critério de sucesso definido no passo 1. Cada ideia que sobrevive carrega o porquê.
|
|
26
|
+
6. **Priorizo.** Classifico as ideias sobreviventes (ex.: impacto × esforço, ou "agora / próximo / depois"). Entrego como lista numerada para escolha.
|
|
27
|
+
7. **Sintetizo em "portanto".** Para as ideias top, escrevo o próximo passo acionável e o dono sugerido (PRD → @pm, arquitetura → @architect, story → @sm).
|
|
28
|
+
8. **Salvo o documento** em `docs/research/brainstorm-{slug}.md` com: tópico, técnicas usadas, ideias divergidas, agrupamento, priorização e os "portanto".
|
|
29
|
+
|
|
30
|
+
## Critério de pronto (DoD)
|
|
31
|
+
|
|
32
|
+
- [ ] Tópico e critério de sucesso confirmados com o usuário (elicitação cumprida)
|
|
33
|
+
- [ ] Pelo menos uma técnica nomeada aplicada e registrada
|
|
34
|
+
- [ ] Fase de divergência ocorreu antes da convergência (rastro no documento)
|
|
35
|
+
- [ ] Ideias priorizadas em lista numerada, cada top item com "portanto" acionável e dono sugerido
|
|
36
|
+
- [ ] Documento salvo em `docs/research/brainstorm-{slug}.md`
|
|
37
|
+
|
|
38
|
+
## Falha / recuperação
|
|
39
|
+
|
|
40
|
+
- **Usuário não consegue definir o critério de sucesso** → paro na elicitação e ofereço 2-3 enquadramentos para escolha; não improviso o alvo.
|
|
41
|
+
- **A sessão converge cedo demais** (usuário quer fechar na 1ª ideia) → registro a ideia, mas insisto em ao menos uma rodada de divergência antes de priorizar.
|
|
42
|
+
- **Nenhuma ideia sobrevive ao filtro** → reporto que o critério pode estar estreito demais; reabro a divergência com técnica diferente em vez de forçar um resultado fraco.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: generate-ai-frontend-prompt
|
|
3
|
+
agent: ux-design-expert
|
|
4
|
+
title: Gerar prompt para ferramentas de UI por IA
|
|
5
|
+
inputs: [wireframes, front-end spec, design tokens disponíveis]
|
|
6
|
+
outputs: [prompt estruturado para v0/Lovable/similar]
|
|
7
|
+
elicit: false
|
|
8
|
+
modes: [interactive, yolo]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Gerar prompt para ferramentas de UI por IA
|
|
12
|
+
|
|
13
|
+
**Objetivo:** traduzir wireframes e spec de frontend num prompt estruturado e rastreável que uma
|
|
14
|
+
ferramenta de geração de UI por IA (v0, Lovable, etc.) consiga executar fielmente — sem inventar
|
|
15
|
+
requisito fora da spec.
|
|
16
|
+
|
|
17
|
+
**Pré-condições:**
|
|
18
|
+
- Existem wireframes (`ux-create-wireframe`) e/ou uma front-end spec que descrevem as telas e o
|
|
19
|
+
comportamento. Sem fonte, **pare** — o prompt não pode inventar a UI.
|
|
20
|
+
- Os design tokens (cor, espaçamento, tipografia, raio) estão disponíveis ou referenciáveis. Sem
|
|
21
|
+
tokens, sinalizo que o output virá com valores genéricos a corrigir depois.
|
|
22
|
+
|
|
23
|
+
## Passos
|
|
24
|
+
|
|
25
|
+
1. **Reúna os insumos:** wireframes, spec de frontend, design tokens e os ACs da story. O prompt só
|
|
26
|
+
pode afirmar o que esses insumos sustentam.
|
|
27
|
+
2. **Estruture o prompt em blocos claros:** (a) contexto e objetivo da tela; (b) layout e hierarquia;
|
|
28
|
+
(c) componentes e estados (vazio/carregando/erro/sucesso); (d) tokens a usar (não hex solto);
|
|
29
|
+
(e) requisitos de acessibilidade (foco visível, semântica, contraste WCAG AA); (f) stack/framework
|
|
30
|
+
alvo da ferramenta.
|
|
31
|
+
3. **Ancore cada requisito do prompt** a um wireframe, item da spec ou AC. Frase do prompt que não
|
|
32
|
+
rastreia a um insumo é invenção — corto.
|
|
33
|
+
4. **Inclua as restrições de acessibilidade como obrigatórias**, não como "se possível": contraste
|
|
34
|
+
AA, navegação por teclado, alt text, ordem de foco. O output gerado nasce com a11y ou volta.
|
|
35
|
+
5. **Adicione as guardas de tokens:** instruo a ferramenta a consumir os design tokens nomeados em
|
|
36
|
+
vez de valores hardcoded, para o resultado já nascer consistente com o design system.
|
|
37
|
+
6. **Registre o prompt** em `docs/stories/{epic}/ai-prompts/` (ou na seção de UX da story) com a
|
|
38
|
+
indicação da ferramenta-alvo e dos insumos que o originaram.
|
|
39
|
+
7. **Marque o output como rascunho a auditar:** o que a IA gerar passa pela minha auditoria de a11y e
|
|
40
|
+
de tokens antes de virar componente de produção — não entra direto.
|
|
41
|
+
|
|
42
|
+
## Critério de pronto (DoD)
|
|
43
|
+
|
|
44
|
+
- [ ] Prompt estruturado em blocos (contexto, layout, componentes/estados, tokens, a11y, stack)
|
|
45
|
+
- [ ] Cada requisito do prompt rastreia a um wireframe, spec ou AC
|
|
46
|
+
- [ ] Acessibilidade WCAG AA escrita como obrigatória no prompt
|
|
47
|
+
- [ ] Guarda de tokens presente (sem hardcoded no output esperado)
|
|
48
|
+
- [ ] Prompt registrado com ferramenta-alvo e insumos de origem
|
|
49
|
+
|
|
50
|
+
## Falha / recuperação
|
|
51
|
+
|
|
52
|
+
- **Faltam wireframes ou spec** → não escrevo prompt no escuro; volto para `ux-create-wireframe` ou
|
|
53
|
+
`create-front-end-spec` primeiro.
|
|
54
|
+
- **Não há design tokens** → gero o prompt com aviso explícito de que o output exigirá tokenização
|
|
55
|
+
posterior (`extract-tokens`) antes de produção.
|
|
56
|
+
- **O output da IA viola a11y ou usa hardcoded** → reprovo na auditoria e refino o prompt; não
|
|
57
|
+
promovo a componente de produção.
|