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