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,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: shard-doc
|
|
3
|
+
agent: pm
|
|
4
|
+
title: Shardear um documento grande em partes consumíveis
|
|
5
|
+
inputs: [documento (PRD, arquitetura ou spec), destino do shard]
|
|
6
|
+
outputs: [pasta de shards por seção, index.md com links, documento-fonte preservado]
|
|
7
|
+
elicit: false
|
|
8
|
+
modes: [interactive, yolo]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Shardear um documento grande em partes consumíveis
|
|
12
|
+
|
|
13
|
+
**Objetivo:** quebrar um documento grande (PRD, arquitetura, spec) em arquivos menores por seção,
|
|
14
|
+
com um índice navegável — para que @sm, @dev e @qa consumam só o pedaço que precisam, sem carregar
|
|
15
|
+
o documento inteiro.
|
|
16
|
+
|
|
17
|
+
**Pré-condições:**
|
|
18
|
+
- O documento-fonte existe e está em Markdown com headings de nível 2 (`##`) bem definidos. Se não
|
|
19
|
+
tiver estrutura de seções clara, **pare** e reporte — shardear um documento sem fronteiras gera
|
|
20
|
+
pedaços sem sentido.
|
|
21
|
+
- O destino do shard é uma pasta sob `docs/` (ex.: `docs/prd/`, `docs/architecture/`). Se não foi
|
|
22
|
+
dado, derivo do tipo de documento; se ambíguo, elicito — não invento o destino.
|
|
23
|
+
|
|
24
|
+
## Passos
|
|
25
|
+
|
|
26
|
+
1. **Leia o documento-fonte completo** e mapeie as seções de nível 2 (`##`). Cada `##` vira um shard.
|
|
27
|
+
Subseções (`###`) ficam dentro do shard do seu pai — não viram arquivo próprio.
|
|
28
|
+
2. **Defina a pasta de destino** sob `docs/` (ex.: `docs/prd/`, `docs/architecture/`). Crie-a se não
|
|
29
|
+
existir. O documento-fonte original **permanece intacto** — shardear copia, não move nem apaga.
|
|
30
|
+
3. **Gere um arquivo por seção.** Para cada heading `##`:
|
|
31
|
+
a. crie `docs/{destino}/{slug-da-seção}.md` (slug em kebab-case derivado do título);
|
|
32
|
+
b. copie o conteúdo da seção (incluindo subseções `###`) sem alterar o texto — fidelidade ao
|
|
33
|
+
fonte é a regra (No invention, Art. IV: não reescrevo o requisito ao shardear);
|
|
34
|
+
c. promova o heading da seção a `#` (nível 1) no topo do shard, para o arquivo ler bem isolado.
|
|
35
|
+
4. **Crie o `index.md`** na pasta de destino: um sumário com link para cada shard, na ordem original
|
|
36
|
+
do documento, mais uma linha apontando para o documento-fonte. É o ponto de entrada da navegação.
|
|
37
|
+
5. **Verifique a fidelidade:** a soma do conteúdo dos shards cobre todas as seções do fonte, sem
|
|
38
|
+
perda e sem duplicação. Nenhum link do `index.md` aponta para arquivo inexistente.
|
|
39
|
+
6. **Reporte o resultado:** liste os shards gerados e o caminho do `index.md`. O documento-fonte segue
|
|
40
|
+
como a fonte da verdade; os shards são a projeção consumível.
|
|
41
|
+
7. **Não subo nada.** Se os shards precisam ir pro repositório remoto, eu delego ao @devops — `git
|
|
42
|
+
push` / PR são EXCLUSIVOS dele. Eu deixo os arquivos prontos no working tree.
|
|
43
|
+
|
|
44
|
+
## Critério de pronto (DoD)
|
|
45
|
+
|
|
46
|
+
- [ ] Um shard por seção de nível 2 do documento-fonte, em `docs/{destino}/`
|
|
47
|
+
- [ ] `index.md` criado com links na ordem original + link para o documento-fonte
|
|
48
|
+
- [ ] Conteúdo dos shards fiel ao fonte (sem perda, sem reescrita, sem duplicação)
|
|
49
|
+
- [ ] Documento-fonte preservado intacto
|
|
50
|
+
- [ ] Todos os links do `index.md` resolvem para arquivos existentes
|
|
51
|
+
- [ ] Nada de `git push` (delegado ao @devops)
|
|
52
|
+
|
|
53
|
+
## Falha / recuperação
|
|
54
|
+
|
|
55
|
+
- **Documento sem headings `##` claros** → HALT, reporto que o fonte não tem estrutura shardeável e
|
|
56
|
+
devolvo para o autor estruturar antes.
|
|
57
|
+
- **Destino ambíguo ou inexistente** → elicito a pasta de destino em vez de adivinhar.
|
|
58
|
+
- **Conteúdo se perderia ou duplicaria na divisão** (seções aninhadas mal formadas) → paro, reporto a
|
|
59
|
+
ambiguidade estrutural e não gero shards inconsistentes.
|
|
60
|
+
- **Os shards precisam ir ao remoto** → delego a subida ao @devops; não rodo `git push`.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: spec-assess-complexity
|
|
3
|
+
agent: architect
|
|
4
|
+
title: Avaliar complexidade de uma story nas 5 dimensões
|
|
5
|
+
inputs: [story]
|
|
6
|
+
outputs: [complexity.json, classe (SIMPLE/STANDARD/COMPLEX), estimativa de esforço]
|
|
7
|
+
elicit: false
|
|
8
|
+
modes: [interactive, yolo]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Avaliar complexidade de uma story nas 5 dimensões
|
|
12
|
+
|
|
13
|
+
**Objetivo:** classificar uma story em SIMPLE / STANDARD / COMPLEX pontuando 5 dimensões objetivas,
|
|
14
|
+
para que a profundidade do plano e do contexto seja ganha — não presumida.
|
|
15
|
+
|
|
16
|
+
**Pré-condições:**
|
|
17
|
+
- A story existe e tem ACs. Sem critérios de aceite não há o que dimensionar — **pare** e devolva ao @sm.
|
|
18
|
+
- A story rastreia a um FR/NFR/CON ou achado de pesquisa. Sem rastro, eu não pontuo o que não existe.
|
|
19
|
+
|
|
20
|
+
## Passos
|
|
21
|
+
|
|
22
|
+
1. **Leia a story COMPLETA** — ACs, notas técnicas, dependências declaradas. O escopo real está nos
|
|
23
|
+
critérios de aceite, não no título.
|
|
24
|
+
2. **Pontue cada dimensão de 1 (trivial) a 5 (crítico)**, registrando o porquê de cada nota — nota sem
|
|
25
|
+
justificativa rastreável não entra:
|
|
26
|
+
- **Escopo** — quantos arquivos/módulos a story toca.
|
|
27
|
+
- **Integração** — APIs externas, contratos entre serviços, pontos de costura cross-stack.
|
|
28
|
+
- **Infraestrutura** — mudanças de infra/deploy necessárias (fila, cache, schema, env).
|
|
29
|
+
- **Conhecimento** — familiaridade do time com a tecnologia/padrão envolvido.
|
|
30
|
+
- **Risco** — criticidade: o que quebra ao escalar, blast radius de uma falha (teste do 10×).
|
|
31
|
+
3. **Some as notas** e atribua a classe:
|
|
32
|
+
- `<= 8` → **SIMPLE** (plano enxuto, 3 fases)
|
|
33
|
+
- `9–15` → **STANDARD** (plano completo)
|
|
34
|
+
- `>= 16` → **COMPLEX** (plano completo + ciclo de revisão; considere `*research` antes)
|
|
35
|
+
4. **Estime o esforço** em faixa (horas/dias) coerente com a classe — faixa, não número mágico.
|
|
36
|
+
5. **Grave `complexity.json`** em `docs/specs/{storyId}/complexity.json` com: as 5 notas, a
|
|
37
|
+
justificativa de cada uma, o total, a classe e a estimativa.
|
|
38
|
+
6. **Roteie pela classe.** SIMPLE/STANDARD → sigo direto para `*create-plan`. COMPLEX → sinalizo que
|
|
39
|
+
pesquisa (`*research`) e/ou ciclo de revisão são recomendados antes de planejar.
|
|
40
|
+
|
|
41
|
+
## Critério de pronto (DoD)
|
|
42
|
+
|
|
43
|
+
- [ ] As 5 dimensões pontuadas (1–5), cada uma com justificativa rastreável à story
|
|
44
|
+
- [ ] Total somado e classe (SIMPLE/STANDARD/COMPLEX) atribuída
|
|
45
|
+
- [ ] Estimativa de esforço em faixa registrada
|
|
46
|
+
- [ ] `docs/specs/{storyId}/complexity.json` gravado e válido
|
|
47
|
+
- [ ] Roteamento pela classe explícito (planejar direto vs. pesquisar antes)
|
|
48
|
+
|
|
49
|
+
## Falha / recuperação
|
|
50
|
+
|
|
51
|
+
- **Story sem ACs ou sem rastro a FR/NFR/CON** → HALT, devolvo ao @sm/@po. Não invento o escopo que falta.
|
|
52
|
+
- **Dimensão impossível de pontuar por falta de informação** (ex.: integração externa não definida) →
|
|
53
|
+
registro a lacuna como bloqueio e devolvo, em vez de chutar uma nota.
|
|
54
|
+
- **A story esconde várias stories** (escopo estoura 5 em múltiplas dimensões) → recomendo ao @sm
|
|
55
|
+
quebrá-la antes de planejar; uma story que não dá para dimensionar não dá para implementar.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: spec-critique
|
|
3
|
+
agent: qa
|
|
4
|
+
title: Criticar a spec quanto a completude e clareza
|
|
5
|
+
inputs: [spec]
|
|
6
|
+
outputs: [critique.json com veredito e scores, lista de gaps rastreáveis]
|
|
7
|
+
elicit: false
|
|
8
|
+
modes: [interactive, yolo]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Criticar a spec quanto a completude e clareza
|
|
12
|
+
|
|
13
|
+
**Objetivo:** auditar uma spec antes da implementação — apontar o que está incompleto, ambíguo ou
|
|
14
|
+
inventado — e emitir um veredito rastreável (APPROVED / NEEDS_REVISION / BLOCKED) que decide se a spec
|
|
15
|
+
avança para o plano ou volta para revisão.
|
|
16
|
+
|
|
17
|
+
**Pré-condições:**
|
|
18
|
+
- A spec existe e referencia suas fontes (FR-*, NFR-*, CON-* ou achados de pesquisa). Sem fontes
|
|
19
|
+
rastreáveis, a crítica já começa em risco — toda afirmação precisa ancorar em algo.
|
|
20
|
+
- Tenho o contexto do objetivo que originou a spec (pedido/story). Se não tenho, elicito — eu critico
|
|
21
|
+
contra um contrato, não contra o ar.
|
|
22
|
+
|
|
23
|
+
## Passos
|
|
24
|
+
|
|
25
|
+
1. **Leio a spec inteira** e listo cada afirmação material. Defino o que "completo e claro" significa
|
|
26
|
+
para ESTE escopo antes de julgar.
|
|
27
|
+
2. **Gate constitucional — No Invention (Art. IV).** Verifico que TODA afirmação rastreia a um FR-*,
|
|
28
|
+
NFR-*, CON-* ou achado de pesquisa. Qualquer feature inventada (sem fonte) é gap CRÍTICO e por si
|
|
29
|
+
só leva a BLOCKED. Juiz não inventa requisito; também não deixa a spec inventar.
|
|
30
|
+
3. **Avalio as dimensões** (score 1-5 cada), profundidade proporcional ao risco:
|
|
31
|
+
- **Completude:** todos os ACs/cenários cobertos? casos de erro e borda previstos?
|
|
32
|
+
- **Clareza:** linguagem inequívoca? cada termo definido? nada de "etc." escondendo escopo?
|
|
33
|
+
- **Testabilidade:** cada requisito vira teste em Given-When-Then? há critério objetivo de pronto?
|
|
34
|
+
- **Rastreabilidade:** cada afirmação ancora numa fonte declarada?
|
|
35
|
+
- **Risco/NFR:** segurança, performance e confiabilidade endereçadas onde o caminho é crítico?
|
|
36
|
+
4. **Registro cada gap** com severidade (CRITICAL/HIGH/MEDIUM/LOW) e a fonte que prova o buraco —
|
|
37
|
+
nunca opinião estética avulsa. Advisory, não arbitrário: bloqueio só com motivo rastreável.
|
|
38
|
+
5. **Calculo o veredito** pela média dos scores:
|
|
39
|
+
- média **≥ 4.0** → **APPROVED** (segue para o plano).
|
|
40
|
+
- média **3.0–3.9** → **NEEDS_REVISION** (volto com a lista de correções obrigatórias).
|
|
41
|
+
- média **< 3.0** ou qualquer gap CRÍTICO de invenção → **BLOCKED** (escalo ao @architect).
|
|
42
|
+
6. **Emito `critique.json`** com veredito, scores por dimensão e a lista de gaps. Esse é o artefato
|
|
43
|
+
que o pipeline lê para decidir o próximo passo.
|
|
44
|
+
7. **Roteio.** APPROVED → @architect planeja. NEEDS_REVISION → @pm revisa a spec. BLOCKED → escalo ao
|
|
45
|
+
@architect. Eu critico; eu **não reescrevo** a spec — corrigir é de quem a escreveu.
|
|
46
|
+
|
|
47
|
+
## Critério de pronto (DoD)
|
|
48
|
+
|
|
49
|
+
- [ ] Toda afirmação da spec checada contra fonte (FR/NFR/CON/pesquisa) — gate No Invention aplicado
|
|
50
|
+
- [ ] As 5 dimensões pontuadas (1-5) com justificativa rastreável
|
|
51
|
+
- [ ] Cada gap registrado com severidade e fonte (zero achado por preferência estética)
|
|
52
|
+
- [ ] Veredito calculado pela regra (APPROVED / NEEDS_REVISION / BLOCKED) e coerente com os scores
|
|
53
|
+
- [ ] `critique.json` emitido e roteado ao destino correto
|
|
54
|
+
- [ ] Não reescrevi a spec nem inventei critério fora do contrato
|
|
55
|
+
|
|
56
|
+
## Falha / recuperação
|
|
57
|
+
|
|
58
|
+
- **Spec sem fontes rastreáveis** → não consigo aplicar o gate de invenção: marco BLOCKED e devolvo
|
|
59
|
+
ao @pm para amarrar as fontes antes de eu recriticar.
|
|
60
|
+
- **Veredito BLOCKED ou gap CRÍTICO** → escalo ao @architect imediatamente; não deixo a spec avançar
|
|
61
|
+
para implementação no escuro.
|
|
62
|
+
- **Falta o contexto do objetivo que originou a spec** → paro e elicito; não critico contra o ar.
|
|
63
|
+
- **Preciso subir o artefato (push/PR)** → delego ao @devops, sempre. Eu não faço `git push` nem abro
|
|
64
|
+
PR; git para mim é read-only.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: spec-gather-requirements
|
|
3
|
+
agent: pm
|
|
4
|
+
title: Elicitar e documentar requisitos (spec pipeline — fase 1)
|
|
5
|
+
inputs: [pedido informal do stakeholder]
|
|
6
|
+
outputs: ['docs/specs/{slug}/requirements.md com FR-*/NFR-*/CON-* rastreáveis']
|
|
7
|
+
elicit: true
|
|
8
|
+
modes: [interactive]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Elicitar e documentar requisitos (spec pipeline — fase 1)
|
|
12
|
+
|
|
13
|
+
**Objetivo:** transformar um pedido informal em requisitos estruturados e rastreáveis (FR-*, NFR-*,
|
|
14
|
+
CON-*) — a fundação da spec pipeline, antes de qualquer spec formal.
|
|
15
|
+
|
|
16
|
+
**Pré-condições:**
|
|
17
|
+
- Existe um pedido/intenção do stakeholder, ainda que informal. Sem isso, não há o que elicitar.
|
|
18
|
+
- O stakeholder está disponível para responder. A elicitação exige interação real — não se pula.
|
|
19
|
+
|
|
20
|
+
## Passos
|
|
21
|
+
|
|
22
|
+
1. **Leia o pedido informal e identifique as lacunas.** O que está implícito? O que falta para virar
|
|
23
|
+
requisito testável?
|
|
24
|
+
2. **[ELICITAÇÃO] Conduza a entrevista de requisitos.** Pergunte sobre: usuário e dor, comportamento
|
|
25
|
+
esperado, critérios de sucesso, restrições (técnicas, de negócio, de prazo) e o que está **fora** do
|
|
26
|
+
escopo. Pare e espere as respostas reais — não preencha lacuna com suposição.
|
|
27
|
+
3. **Estruture cada item com ID rastreável:** `FR-*` (requisitos funcionais), `NFR-*` (não-funcionais:
|
|
28
|
+
performance, segurança, acessibilidade), `CON-*` (restrições). Cada um com enunciado verificável e a
|
|
29
|
+
fonte (quem pediu / por quê).
|
|
30
|
+
4. **Marque ambiguidades e premissas em aberto** explicitamente — elas viram pergunta na próxima rodada,
|
|
31
|
+
não viram requisito inventado (No invention, Art. IV).
|
|
32
|
+
5. **Salve em `docs/specs/{slug}/requirements.md`.** Este artefato alimenta `spec-write-spec` (fase
|
|
33
|
+
seguinte) e a avaliação de complexidade do @architect.
|
|
34
|
+
|
|
35
|
+
## Critério de pronto (DoD)
|
|
36
|
+
|
|
37
|
+
- [ ] Todo requisito tem ID (`FR-*`/`NFR-*`/`CON-*`), enunciado verificável e fonte rastreável
|
|
38
|
+
- [ ] Escopo e não-escopo explícitos
|
|
39
|
+
- [ ] Ambiguidades/premissas registradas como abertas, não inventadas
|
|
40
|
+
- [ ] Elicitação real conduzida com o stakeholder (não presumida)
|
|
41
|
+
- [ ] Salvo em `docs/specs/{slug}/requirements.md`
|
|
42
|
+
|
|
43
|
+
## Falha / recuperação
|
|
44
|
+
|
|
45
|
+
- **Stakeholder indisponível para a elicitação** → seguro a task; requirements.md com lacunas inventadas
|
|
46
|
+
é pior que adiar. Registro o que falta e aguardo.
|
|
47
|
+
- **Pedido exige pesquisa de mercado/viabilidade** → delego ao @analyst antes de fechar os requisitos.
|
|
48
|
+
- **Requisito sem fonte clara** → não vira FR; vira pergunta aberta na lista de ambiguidades.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: spec-research-dependencies
|
|
3
|
+
agent: analyst
|
|
4
|
+
title: Pesquisar dependências e constraints técnicos de uma spec
|
|
5
|
+
inputs: [story ou spec]
|
|
6
|
+
outputs: ['docs/research/spec-deps-{slug}.md (dependências, constraints, riscos — cada um rastreável a FR/NFR/CON ou fonte)']
|
|
7
|
+
elicit: false
|
|
8
|
+
modes: [interactive, yolo]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Pesquisar dependências e constraints técnicos de uma spec
|
|
12
|
+
|
|
13
|
+
**Objetivo:** levantar as dependências, restrições e riscos técnicos de uma story/spec, com cada achado rastreando a um FR/NFR/CON da spec ou a uma fonte real — munição para o @architect e o @dev, sem inventar requisito (Constituição Art. IV).
|
|
14
|
+
|
|
15
|
+
**Pré-condições:**
|
|
16
|
+
- Existe uma story ou spec com requisitos identificáveis (FR-*, NFR-*, CON-*). Se não houver requisitos rastreáveis, **pare** e devolva ao @pm/@sm — não pesquiso dependências de um alvo inexistente.
|
|
17
|
+
- Esta é pesquisa, não decisão de arquitetura. A escolha de tecnologia é do @architect; eu levanto as constraints, ele decide.
|
|
18
|
+
|
|
19
|
+
## Passos
|
|
20
|
+
|
|
21
|
+
1. **Leio a spec/story completa** e extraio cada FR/NFR/CON. Listo-os — todo achado desta task vai amarrar a um deles.
|
|
22
|
+
2. **Mapeio as dependências** que cada requisito implica: bibliotecas, serviços externos, APIs, dados, infraestrutura, versões. Para cada uma, anoto o requisito de origem.
|
|
23
|
+
3. **DIVIRJO — levanto constraints e alternativas.** Para cada dependência: versões suportadas, limites conhecidos, custos, licenças, maturidade. Crédito a fonte (docs oficiais, changelogs, advisories) ou marco como hipótese.
|
|
24
|
+
4. **CONVIRJO — filtro e ranqueio riscos.** Mantenho o que tem fonte forte; classifico cada dependência por risco (bloqueante / atenção / ok) e por acoplamento.
|
|
25
|
+
5. **Registro os constraints técnicos rastreáveis.** Cada constraint amarra a um NFR/CON da spec ou a uma fonte verificável — nada de palpite apresentado como fato.
|
|
26
|
+
6. **Sintetizo em "portanto".** Lista numerada: dependências críticas, riscos abertos e perguntas de arquitetura — cada uma com a fonte e o requisito de origem.
|
|
27
|
+
7. **Salvo** em `docs/research/spec-deps-{slug}.md` com a matriz requisito → dependência → fonte → risco, e roteio: decisões de tecnologia → @architect; impacto em DB → @data-engineer.
|
|
28
|
+
|
|
29
|
+
## Critério de pronto (DoD)
|
|
30
|
+
|
|
31
|
+
- [ ] Todos os FR/NFR/CON da spec extraídos e listados
|
|
32
|
+
- [ ] Cada dependência amarra a um requisito de origem
|
|
33
|
+
- [ ] Cada constraint rastreia a um FR/NFR/CON ou a uma fonte verificável (sem invenção)
|
|
34
|
+
- [ ] Dependências ranqueadas por risco e acoplamento
|
|
35
|
+
- [ ] "Portanto" em lista numerada com perguntas de arquitetura roteadas ao @architect
|
|
36
|
+
- [ ] Documento salvo com a matriz requisito → dependência → fonte → risco
|
|
37
|
+
|
|
38
|
+
## Falha / recuperação
|
|
39
|
+
|
|
40
|
+
- **Um achado não amarra a nenhum FR/NFR/CON** → ou é escopo invisível (devolvo ao @pm para virar requisito), ou eu o corto — não inflo a spec inventando justificativa.
|
|
41
|
+
- **Fonte da dependência indisponível/desatualizada** → marco como hipótese e listo em "a validar"; não cravo versão/limite sem evidência.
|
|
42
|
+
- **A pesquisa exige uma decisão de tecnologia** → paro na constraint, formulo a pergunta e delego ao @architect; eu municio, ele escolhe.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: spec-write-spec
|
|
3
|
+
agent: pm
|
|
4
|
+
title: Escrever a spec formal (spec pipeline — fase 4)
|
|
5
|
+
inputs: ['docs/specs/{slug}/requirements.md', complexity.json e research.md (se existirem)]
|
|
6
|
+
outputs: ['docs/specs/{slug}/spec.md formal', cada afirmação rastreada a FR-*/NFR-*/CON-*/achado]
|
|
7
|
+
elicit: false
|
|
8
|
+
modes: [interactive, yolo]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Escrever a spec formal (spec pipeline — fase 4)
|
|
12
|
+
|
|
13
|
+
**Objetivo:** gerar a spec formal a partir dos requisitos elicitados — um documento onde **toda
|
|
14
|
+
afirmação rastreia** a um FR-*/NFR-*/CON-* ou achado de pesquisa, pronto para a crítica do @qa.
|
|
15
|
+
|
|
16
|
+
**Pré-condições:**
|
|
17
|
+
- `requirements.md` existe e está completo (saída de `spec-gather-requirements`). Se há requisito órfão
|
|
18
|
+
ou ambiguidade não resolvida, **pare** e volte à fase de gather.
|
|
19
|
+
- Se o @architect classificou a complexidade (`complexity.json`), respeito o conjunto de fases dele
|
|
20
|
+
(SIMPLE pula pesquisa). Se houver `research.md`, ele é fonte válida de rastro.
|
|
21
|
+
|
|
22
|
+
## Passos
|
|
23
|
+
|
|
24
|
+
1. **Carregue os requisitos** (`requirements.md`) e, se existirem, a avaliação de complexidade e a
|
|
25
|
+
pesquisa. Estes são as **únicas** fontes válidas de conteúdo da spec.
|
|
26
|
+
2. **Escreva a spec** a partir de `templates/spec-tmpl.md`: contexto/problema, comportamento esperado,
|
|
27
|
+
critérios de aceite, requisitos cobertos, não-escopo, riscos.
|
|
28
|
+
3. **Gate Constitucional (Art. IV — No Invention):** para CADA afirmação da spec, anote o rastro ao
|
|
29
|
+
`FR-*`/`NFR-*`/`CON-*` ou ao achado de pesquisa que a origina. **Afirmação sem rastro não entra** —
|
|
30
|
+
ou viro pergunta, ou removo. Nada de feature "porque seria legal".
|
|
31
|
+
4. **Verifique cobertura:** todo FR/NFR/CON do requirements.md está endereçado na spec (coberto ou
|
|
32
|
+
explicitamente diferido). Lacuna vira nota, não invenção.
|
|
33
|
+
5. **Salve em `docs/specs/{slug}/spec.md`** e roteie para a **crítica do @qa** (fase de critique). A
|
|
34
|
+
crítica e o plano de implementação **não são meus** — sigo o fluxo (@qa critica, @architect planeja).
|
|
35
|
+
|
|
36
|
+
## Critério de pronto (DoD)
|
|
37
|
+
|
|
38
|
+
- [ ] Toda afirmação da spec rastreia a um `FR-*`/`NFR-*`/`CON-*` ou achado (Gate Art. IV cumprido)
|
|
39
|
+
- [ ] Todo requisito do `requirements.md` está coberto ou explicitamente diferido
|
|
40
|
+
- [ ] Critérios de aceite verificáveis e não-escopo explícito
|
|
41
|
+
- [ ] Spec salva em `docs/specs/{slug}/spec.md` e roteada ao @qa para crítica
|
|
42
|
+
|
|
43
|
+
## Falha / recuperação
|
|
44
|
+
|
|
45
|
+
- **Quero afirmar algo sem rastro** → o Gate Art. IV bloqueia; removo a afirmação ou viro pergunta ao
|
|
46
|
+
stakeholder/@analyst.
|
|
47
|
+
- **requirements.md tem ambiguidade não resolvida** → volto à fase `spec-gather-requirements`; não
|
|
48
|
+
resolvo a ambiguidade inventando.
|
|
49
|
+
- **A crítica do @qa reprova (NEEDS_REVISION)** → reviso a spec conforme o feedback e devolvo; não pulo
|
|
50
|
+
a crítica nem decido a aprovação por conta própria.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: test-as-user
|
|
3
|
+
agent: data-engineer
|
|
4
|
+
title: Emular usuário para validar RLS
|
|
5
|
+
inputs: [user_id, table, story]
|
|
6
|
+
outputs: [resultado positivo/negativo, veredito de cobertura RLS]
|
|
7
|
+
elicit: false
|
|
8
|
+
modes: [interactive, yolo]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Emular usuário para validar RLS
|
|
12
|
+
|
|
13
|
+
**Objetivo:** comprovar que uma política RLS faz o que diz — assumindo a identidade de um usuário e
|
|
14
|
+
verificando que ele vê/altera só o que é dele (positivo) e é bloqueado no que não é (negativo).
|
|
15
|
+
|
|
16
|
+
**Pré-condições:**
|
|
17
|
+
- RLS está habilitada na tabela e há ao menos uma política instalada (via `db-policy-apply`). Sem
|
|
18
|
+
política, este teste não tem o que validar.
|
|
19
|
+
- Existem dados de teste de pelo menos dois donos distintos (o `user_id` alvo e um terceiro). Se não
|
|
20
|
+
houver, semeio com `*seed` antes — sem comparar donos não existe teste negativo.
|
|
21
|
+
|
|
22
|
+
## Passos
|
|
23
|
+
|
|
24
|
+
1. **Defina o cenário:** o `user_id` alvo, as linhas que ele DEVE ver e as linhas de um terceiro que
|
|
25
|
+
ele NÃO pode ver/alterar. O cenário rastreia à regra de acesso da story.
|
|
26
|
+
2. **Assuma a identidade** numa transação, sem service role (service role bypassa RLS e invalida o
|
|
27
|
+
teste): `BEGIN; SET LOCAL ROLE authenticated; SET LOCAL request.jwt.claim.sub = '{user_id}';`.
|
|
28
|
+
3. **Teste positivo (SELECT):** o usuário lê suas linhas. Conta esperada confere? Se não, política
|
|
29
|
+
restritiva demais.
|
|
30
|
+
4. **Teste positivo (escrita):** o usuário faz INSERT/UPDATE/DELETE no que é dele e a operação passa.
|
|
31
|
+
5. **Teste negativo (SELECT):** consulta as linhas do terceiro — resultado DEVE ser vazio.
|
|
32
|
+
6. **Teste negativo (escrita):** tenta UPDATE/DELETE na linha do terceiro — DEVE afetar 0 linhas ou
|
|
33
|
+
ser negado. Linha de outro dono alterada = vazamento.
|
|
34
|
+
7. **`ROLLBACK`** sempre ao final: este é um teste, não pode deixar rastro nem mutação no banco.
|
|
35
|
+
8. **Emita o veredito:** PASS (positivos passam, negativos bloqueiam) ou FAIL (com a brecha exata).
|
|
36
|
+
|
|
37
|
+
## Critério de pronto (DoD)
|
|
38
|
+
|
|
39
|
+
- [ ] Identidade assumida sem service role (RLS realmente em vigor no teste)
|
|
40
|
+
- [ ] Positivos passam: o dono lê e escreve o que é dele
|
|
41
|
+
- [ ] Negativos bloqueiam: terceiro não lê nem altera o que não é dele (0 linhas)
|
|
42
|
+
- [ ] Transação revertida ao final (sem efeito colateral no banco)
|
|
43
|
+
- [ ] Veredito registrado no rastro da story
|
|
44
|
+
|
|
45
|
+
## Falha / recuperação
|
|
46
|
+
|
|
47
|
+
- **Teste negativo falha (vazamento)** → FAIL; devolvo à `db-policy-apply` com o predicado a corrigir.
|
|
48
|
+
Não declaro a política pronta.
|
|
49
|
+
- **`auth.uid()`/claim NULL** → o ambiente não tem auth ou o claim não foi setado; corrijo o `SET
|
|
50
|
+
LOCAL` ou sinalizo a falta de auth e suspendo o teste.
|
|
51
|
+
- **Faltam dados de dois donos** → semeio com `*seed` e repito; comparar um dono só não comprova RLS.
|
|
52
|
+
- **Esqueci o `ROLLBACK` e mutei o banco** → restauro via `*rollback` do snapshot mais recente.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ux-create-wireframe
|
|
3
|
+
agent: ux-design-expert
|
|
4
|
+
title: Criar wireframes e fluxos de interação
|
|
5
|
+
inputs: [personas, mapa de necessidades, story/spec, fidelidade desejada]
|
|
6
|
+
outputs: [wireframes, fluxo de interação, mapeamento tela→AC]
|
|
7
|
+
elicit: false
|
|
8
|
+
modes: [interactive, yolo]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Criar wireframes e fluxos de interação
|
|
12
|
+
|
|
13
|
+
**Objetivo:** materializar a pesquisa em estrutura e fluxo de baixa fidelidade — barato de mudar,
|
|
14
|
+
fácil de testar — antes de qualquer polimento visual.
|
|
15
|
+
|
|
16
|
+
**Pré-condições:**
|
|
17
|
+
- Existe pesquisa de usuário (personas + necessidades) da task `ux-user-research`, OU as
|
|
18
|
+
necessidades estão explícitas na story. Se ninguém validou o usuário, **sinalize** que o wireframe
|
|
19
|
+
parte de hipótese.
|
|
20
|
+
- A story/spec define as telas/fluxos no escopo. Sem isso, **pare** — não invento telas.
|
|
21
|
+
|
|
22
|
+
## Passos
|
|
23
|
+
|
|
24
|
+
1. **Liste as telas e os estados** que a story exige (vazio, carregando, erro, sucesso, sem
|
|
25
|
+
permissão). Estado não é detalhe — é metade da experiência.
|
|
26
|
+
2. **Desenhe o fluxo de interação** ligando as telas: entrada, decisões do usuário, caminhos de erro
|
|
27
|
+
e de saída. Cada passo do fluxo resolve uma necessidade da persona.
|
|
28
|
+
3. **Esboce cada tela na fidelidade pedida** (baixa = blocos e hierarquia; média = layout e
|
|
29
|
+
conteúdo real). Foque em estrutura, hierarquia e affordance — não em cor nem polimento.
|
|
30
|
+
4. **Embuta a acessibilidade desde o esboço:** ordem de foco/tab, alvos de toque, hierarquia
|
|
31
|
+
semântica de cabeçalhos, alternativa textual para conteúdo visual. A11y não é camada posterior.
|
|
32
|
+
5. **Mapeie cada tela/fluxo ao AC** da story que ele atende. Tela que não rastreia a um AC sai do
|
|
33
|
+
wireframe — é escopo inventado.
|
|
34
|
+
6. **Registre os wireframes** em `docs/stories/{epic}/wireframes/` (ou link na seção de UX da story)
|
|
35
|
+
com legenda de estados e do fluxo.
|
|
36
|
+
7. **Roteie para validação:** wireframe pronto vai para revisão com o usuário/stakeholder e alimenta
|
|
37
|
+
a `create-front-end-spec`. Itero com o feedback antes de detalhar.
|
|
38
|
+
|
|
39
|
+
## Critério de pronto (DoD)
|
|
40
|
+
|
|
41
|
+
- [ ] Todas as telas e estados (vazio/carregando/erro/sucesso) esboçados
|
|
42
|
+
- [ ] Fluxo de interação completo, incluindo caminhos de erro
|
|
43
|
+
- [ ] Considerações de acessibilidade marcadas em cada tela (foco, semântica, alvos)
|
|
44
|
+
- [ ] Cada tela/fluxo mapeado a um AC da story
|
|
45
|
+
- [ ] Wireframes registrados e prontos para validação/iteração
|
|
46
|
+
|
|
47
|
+
## Falha / recuperação
|
|
48
|
+
|
|
49
|
+
- **Falta pesquisa de usuário** → produzo wireframe marcado como hipótese e priorizo validação antes
|
|
50
|
+
de avançar para a spec.
|
|
51
|
+
- **A story não cobre um fluxo necessário** (ex.: estado de erro não especificado) → paro, registro a
|
|
52
|
+
lacuna e devolvo ao @sm/@po; não invento o requisito.
|
|
53
|
+
- **Decisão de stack/framework de frontend aparece** (SPA vs SSR, biblioteca) → delego à Aria
|
|
54
|
+
(@architect); eu trago só a lente de UX.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ux-user-research
|
|
3
|
+
agent: ux-design-expert
|
|
4
|
+
title: Pesquisa de usuário e análise de necessidades
|
|
5
|
+
inputs: [story, contexto do produto, evidências de usuário disponíveis]
|
|
6
|
+
outputs: [personas, mapa de necessidades/dores, achados de pesquisa rastreáveis]
|
|
7
|
+
elicit: true
|
|
8
|
+
modes: [interactive]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Pesquisa de usuário e análise de necessidades
|
|
12
|
+
|
|
13
|
+
**Objetivo:** descobrir quem é o usuário real e qual é a dor concreta antes de desenhar um pixel,
|
|
14
|
+
produzindo personas e necessidades que toda decisão de design subsequente vai rastrear.
|
|
15
|
+
|
|
16
|
+
**Pré-condições:**
|
|
17
|
+
- Existe uma story/spec ou objetivo de produto que delimita o escopo. Sem isso, **pare** e elicite —
|
|
18
|
+
pesquisa sem alvo vira opinião com aparência de método.
|
|
19
|
+
- Há acesso a alguma evidência de usuário (entrevistas, analytics, suporte, tickets) OU o usuário
|
|
20
|
+
pode fornecê-la. Se não há nenhuma fonte real, sinalize que o resultado será **hipótese**, não
|
|
21
|
+
decisão validada.
|
|
22
|
+
|
|
23
|
+
## Passos
|
|
24
|
+
|
|
25
|
+
1. **Delimite a pergunta de pesquisa** a partir da story/spec: que usuário, que tarefa, que contexto
|
|
26
|
+
estou investigando? Escreva a pergunta antes de coletar dado.
|
|
27
|
+
2. **Inventarie as fontes de evidência disponíveis** — entrevistas, analytics, tickets de suporte,
|
|
28
|
+
reviews, sessões gravadas. Liste o que existe e o que falta.
|
|
29
|
+
3. **[ELICITAÇÃO] Confirme com o usuário as fontes e o público-alvo.** Apresente as fontes
|
|
30
|
+
encontradas e pergunte: este é o usuário certo? falta algum segmento? Não avance no escuro — esta
|
|
31
|
+
é a interação obrigatória.
|
|
32
|
+
4. **Extraia padrões das evidências.** Agrupe dores, objetivos e contextos recorrentes. Para cada
|
|
33
|
+
padrão, registre a fonte (de onde veio o dado) — sem fonte, marque explicitamente como hipótese.
|
|
34
|
+
5. **Construa as personas** a partir dos padrões: objetivos, dores, contexto de uso, restrições
|
|
35
|
+
(inclusive acessibilidade — quem navega por teclado, leitor de tela, conexão ruim).
|
|
36
|
+
6. **Monte o mapa de necessidades**, cada necessidade ligada a (a) uma persona e (b) um FR/NFR/CON
|
|
37
|
+
da story ou um achado de pesquisa. Necessidade órfã não entra.
|
|
38
|
+
7. **Registre os achados** em `docs/stories/{epic}/research/` (ou na seção de UX da story),
|
|
39
|
+
marcando claramente o que é evidência e o que é hipótese a validar.
|
|
40
|
+
|
|
41
|
+
## Critério de pronto (DoD)
|
|
42
|
+
|
|
43
|
+
- [ ] Pergunta de pesquisa explícita e ligada à story/spec
|
|
44
|
+
- [ ] Ponto de elicitação cumprido (público-alvo e fontes confirmados com o usuário)
|
|
45
|
+
- [ ] Personas com objetivos, dores, contexto e restrições de acessibilidade
|
|
46
|
+
- [ ] Toda necessidade rastreia a uma persona e a um FR/NFR/CON ou achado
|
|
47
|
+
- [ ] Evidência e hipótese claramente separadas — nada apresentado como validado sem fonte
|
|
48
|
+
|
|
49
|
+
## Falha / recuperação
|
|
50
|
+
|
|
51
|
+
- **Não há nenhuma evidência real de usuário** → não fabrique persona; declare o resultado como
|
|
52
|
+
hipótese e proponha o método mínimo de validação antes do design comprometer.
|
|
53
|
+
- **A pesquisa em profundidade excede a lente de UX** (mercado, segmentação, concorrência) → delego
|
|
54
|
+
ao @analyst e incorporo o retorno.
|
|
55
|
+
- **A story não delimita usuário nem tarefa** → paro e devolvo ao @sm/@po; não invento o público.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: validate-next-story
|
|
3
|
+
agent: po
|
|
4
|
+
title: Validar a prontidão de uma story (gate GO/NO-GO)
|
|
5
|
+
inputs: [story]
|
|
6
|
+
outputs: [veredito GO/NO-GO, lista de correções com dono, score do checklist]
|
|
7
|
+
elicit: false
|
|
8
|
+
modes: [interactive, yolo]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Validar a prontidão de uma story (gate GO/NO-GO)
|
|
12
|
+
|
|
13
|
+
**Objetivo:** decidir se uma story se sustenta sozinha — escopo claro, ACs testáveis,
|
|
14
|
+
dependências mapeadas, rastreabilidade ao PRD — emitindo um veredito GO/NO-GO antes que alguém
|
|
15
|
+
escreva uma linha de código.
|
|
16
|
+
|
|
17
|
+
**Pré-condições:**
|
|
18
|
+
- A story existe em `docs/stories/` e está em status `Draft` (foi criada pelo @sm). Se já estiver
|
|
19
|
+
validada ou em implementação, **pare** — não revalido o que já passou do portão.
|
|
20
|
+
- O PRD/epic que originou a story existe e está acessível. Sem a fonte, eu não tenho contra o que
|
|
21
|
+
validar; **pare** e peça a referência.
|
|
22
|
+
|
|
23
|
+
## Passos
|
|
24
|
+
|
|
25
|
+
1. **Leia a fonte antes da story.** Abra o PRD/epic de origem em `docs/` e identifique os FR/NFR/CON
|
|
26
|
+
que a story deveria cumprir. Validar sem referência é chutar — a fonte é o gabarito.
|
|
27
|
+
2. **Leia a story COMPLETA** — título, escopo, ACs, notas, seção de Testing, File List prevista.
|
|
28
|
+
3. **Rode o checklist de 10 pontos** (`po-master-checklist`), marcando cada item PASS/FAIL:
|
|
29
|
+
escopo claro · ACs testáveis · dependências mapeadas · sequência lógica · rastreabilidade ao
|
|
30
|
+
PRD · gate de qualidade planejado (revisão/QA) · estimativa coerente · sem ambiguidade · sem
|
|
31
|
+
invenção (Art. IV) · File List preparada.
|
|
32
|
+
4. **Teste cada AC como o @qa testaria.** Para cada critério pergunte: "que teste prova isto?". Se
|
|
33
|
+
você não consegue formular o teste, o AC FALHA — anote como correção obrigatória do @sm.
|
|
34
|
+
5. **Verifique a cadeia de dependências.** O que esta story precisa que já exista? O que ela
|
|
35
|
+
destrava? Está na ordem certa no backlog? Dependência faltante é NO-GO automático.
|
|
36
|
+
6. **Cheque rastreabilidade (Art. IV — No Invention).** Cada afirmação da story rastreia a um
|
|
37
|
+
FR/NFR/CON ou achado de pesquisa? Requisito inventado sem fonte = NO-GO até a origem aparecer.
|
|
38
|
+
7. **Emita o veredito.** GO se score ≥ 7/10 **e** nenhum item crítico falhou (AC não-testável,
|
|
39
|
+
dependência faltante, invenção). Senão NO-GO, com a lista exata de correções e o dono de cada uma.
|
|
40
|
+
8. **Roteie o próximo passo.** GO → segue para `@dev` implementar. NO-GO de story → volta ao `@sm`.
|
|
41
|
+
NO-GO de escopo → volta ao `@pm`. Conflito entre PRD/epic/story → escalo correção de curso ao
|
|
42
|
+
`@nexus-master`. **Eu não corrijo — devolvo com o mapa do conserto.**
|
|
43
|
+
|
|
44
|
+
## Critério de pronto (DoD)
|
|
45
|
+
|
|
46
|
+
- [ ] Fonte (PRD/epic) lida e os FR/NFR/CON relevantes identificados
|
|
47
|
+
- [ ] Checklist de 10 pontos rodado, cada item com PASS/FAIL e score calculado
|
|
48
|
+
- [ ] Cada AC testado mentalmente; os não-testáveis listados como correção obrigatória
|
|
49
|
+
- [ ] Cadeia de dependências verificada; faltantes sinalizadas
|
|
50
|
+
- [ ] Veredito GO/NO-GO emitido com justificativa
|
|
51
|
+
- [ ] NO-GO acompanhado da lista de correções com dono explícito por item
|
|
52
|
+
- [ ] Próximo passo roteado (@dev / @sm / @pm / @nexus-master)
|
|
53
|
+
|
|
54
|
+
## Falha / recuperação
|
|
55
|
+
|
|
56
|
+
- **Faltou o PRD/epic de origem** → não valido sem gabarito; sinalizo e peço a referência ao @pm.
|
|
57
|
+
- **Conflito de escopo entre PRD, epic e story** → não escolho um lado em silêncio; sinalizo o
|
|
58
|
+
conflito e escalo a correção de curso ao @nexus-master.
|
|
59
|
+
- **A story muda no meio da validação** (alguém editou) → reinicio do passo 2 sobre a versão atual.
|
|
60
|
+
- **Tentação de "passar e a gente vê depois"** → bloqueio cedo e em voz alta. Defeito barato é o
|
|
61
|
+
que se pega no portão; defeito caro é o que vaza dele. Pressa de sprint não compra exceção.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: validate-squad
|
|
3
|
+
agent: squad-creator
|
|
4
|
+
title: Validar a integridade de um squad
|
|
5
|
+
inputs: ['id do squad (squads/{id}/)']
|
|
6
|
+
outputs: [veredito PASS/FAIL com a lista de issues encontrados]
|
|
7
|
+
elicit: false
|
|
8
|
+
modes: [interactive, yolo]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Validar a integridade de um squad
|
|
12
|
+
|
|
13
|
+
**Objetivo:** emitir um veredito verificável (PASS/FAIL) sobre a integridade de um squad
|
|
14
|
+
materializado — manifest, DNA dos membros, tasks e delegações — com cada issue nomeado e citável
|
|
15
|
+
(arquivo:campo).
|
|
16
|
+
|
|
17
|
+
**Pré-condições:**
|
|
18
|
+
- `squads/{id}/` existe no disco. Diretório ausente → FAIL imediato com a causa ("squad não
|
|
19
|
+
materializado"), não silêncio.
|
|
20
|
+
|
|
21
|
+
## Passos
|
|
22
|
+
|
|
23
|
+
1. **Leia o manifest** (`squads/{id}/squad.yaml`) e verifique os campos obrigatórios: `id` (casa
|
|
24
|
+
com o nome do diretório), `name`, `mission`, `version`, `chief`, `origin`, `traceRef`, `guards`,
|
|
25
|
+
`authorities`. `traceRef` vazio ou não rastreável = issue (Art. IV).
|
|
26
|
+
2. **Valide o DNA de cada membro** (`squads/{id}/agents/*.md`) contra o contrato `Agent`
|
|
27
|
+
(frontmatter parseia; archetype/model dentro dos enums). Verifique o formato canônico do corpo
|
|
28
|
+
(Identidade/Princípios/Método/Comandos/Guardas/Voz presentes).
|
|
29
|
+
3. **Cheque a composição:** o `chief` do manifest existe em `agents/` e tem archetype
|
|
30
|
+
`Orchestrator`; o time tem entre chief+2 e chief+7 membros; ids únicos; nenhum membro duplica
|
|
31
|
+
um papel do time core (mesma lente/whenToUse de um agente de `agents/` do core = issue REUSE).
|
|
32
|
+
4. **Cheque declarado = real na camada procedural:** todo slug em `owns:` de cada membro tem
|
|
33
|
+
`squads/{id}/tasks/{slug}.md` OU é referência explícita a uma task core existente em `tasks/`.
|
|
34
|
+
Task copiada do core para dentro do squad (mesmo id de uma task core) = issue.
|
|
35
|
+
5. **Cheque as delegações:** todo `delegatesTo.agent` resolve para um membro do squad OU para um
|
|
36
|
+
agente do core. Verifique que nenhuma `authority` do manifest colide com operação exclusiva do
|
|
37
|
+
core (git push/PR/release/MCP → @devops).
|
|
38
|
+
6. **Cheque o knowledge:** toda ref em `knowledge:` dos membros existe em
|
|
39
|
+
`squads/{id}/knowledge/` ou em `knowledge/` do core.
|
|
40
|
+
7. **Emita o veredito:** PASS (zero issues) ou FAIL com a lista completa — cada issue com
|
|
41
|
+
arquivo:campo e o motivo. Veredito sem evidência citável não é veredito (Lei 2).
|
|
42
|
+
|
|
43
|
+
## Critério de pronto (DoD)
|
|
44
|
+
|
|
45
|
+
- [ ] Manifest, DNA, composição, tasks, delegações e knowledge verificados — nenhum check pulado
|
|
46
|
+
- [ ] Cada issue reportado com arquivo:campo e motivo (evidência citável)
|
|
47
|
+
- [ ] Veredito único e explícito: PASS ou FAIL — sem "quase passou"
|
|
48
|
+
|
|
49
|
+
## Falha / recuperação
|
|
50
|
+
|
|
51
|
+
- **O squad não existe no disco** → FAIL com causa "não materializado"; sugira `create-squad`.
|
|
52
|
+
- **Um arquivo não parseia** (YAML/frontmatter quebrado) → o arquivo é issue, a validação CONTINUA
|
|
53
|
+
nos demais — o relatório é completo, não interrompido no primeiro erro.
|
|
54
|
+
- **FAIL** → o conserto é do dono do blueprint: `extend-squad` corrige aditivamente; issue
|
|
55
|
+
estrutural (chief errado, duplicação do core) volta para `create-squad` re-emitir o blueprint.
|