@brunosps00/dev-workflow 0.10.0 → 0.13.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/README.md +78 -6
- package/lib/constants.js +20 -20
- package/lib/init.js +44 -4
- package/lib/migrate-skills.js +129 -0
- package/lib/removed-bundled-skills.js +16 -0
- package/lib/uninstall.js +6 -2
- package/lib/utils.js +51 -4
- package/package.json +1 -1
- package/scaffold/en/agent-instructions.md +68 -0
- package/scaffold/en/commands/dw-analyze-project.md +61 -0
- package/scaffold/en/commands/dw-autopilot.md +1 -1
- package/scaffold/en/commands/dw-brainstorm.md +1 -1
- package/scaffold/en/commands/dw-bugfix.md +3 -3
- package/scaffold/en/commands/dw-code-review.md +28 -0
- package/scaffold/en/commands/dw-create-prd.md +16 -0
- package/scaffold/en/commands/dw-create-tasks.md +42 -0
- package/scaffold/en/commands/dw-create-techspec.md +18 -1
- package/scaffold/en/commands/dw-deps-audit.md +1 -1
- package/scaffold/en/commands/dw-fix-qa.md +1 -1
- package/scaffold/en/commands/dw-functional-doc.md +2 -2
- package/scaffold/en/commands/dw-help.md +1 -1
- package/scaffold/en/commands/dw-redesign-ui.md +7 -7
- package/scaffold/en/commands/dw-run-qa.md +4 -4
- package/scaffold/en/commands/dw-run-task.md +2 -2
- package/scaffold/en/templates/constitution-template.md +111 -0
- package/scaffold/pt-br/agent-instructions.md +68 -0
- package/scaffold/pt-br/commands/dw-analyze-project.md +61 -0
- package/scaffold/pt-br/commands/dw-autopilot.md +1 -1
- package/scaffold/pt-br/commands/dw-brainstorm.md +1 -1
- package/scaffold/pt-br/commands/dw-bugfix.md +3 -3
- package/scaffold/pt-br/commands/dw-code-review.md +28 -0
- package/scaffold/pt-br/commands/dw-create-prd.md +16 -0
- package/scaffold/pt-br/commands/dw-create-tasks.md +42 -0
- package/scaffold/pt-br/commands/dw-create-techspec.md +18 -1
- package/scaffold/pt-br/commands/dw-deps-audit.md +1 -1
- package/scaffold/pt-br/commands/dw-fix-qa.md +1 -1
- package/scaffold/pt-br/commands/dw-functional-doc.md +2 -2
- package/scaffold/pt-br/commands/dw-help.md +1 -1
- package/scaffold/pt-br/commands/dw-redesign-ui.md +7 -7
- package/scaffold/pt-br/commands/dw-run-qa.md +4 -4
- package/scaffold/pt-br/commands/dw-run-task.md +2 -2
- package/scaffold/pt-br/templates/constitution-template.md +111 -0
- package/scaffold/skills/dw-council/SKILL.md +1 -1
- package/scaffold/skills/dw-testing-discipline/SKILL.md +148 -0
- package/scaffold/skills/dw-testing-discipline/references/ai-agent-gates.md +170 -0
- package/scaffold/skills/dw-testing-discipline/references/anti-patterns.md +336 -0
- package/scaffold/skills/dw-testing-discipline/references/flaky-discipline.md +163 -0
- package/scaffold/skills/dw-testing-discipline/references/iron-laws.md +128 -0
- package/scaffold/skills/dw-testing-discipline/references/playwright-recipes.md +282 -0
- package/scaffold/skills/dw-testing-discipline/references/positive-patterns.md +241 -0
- package/scaffold/skills/{webapp-testing → dw-testing-discipline}/references/security-boundary.md +1 -1
- package/scaffold/skills/dw-ui-discipline/SKILL.md +128 -0
- package/scaffold/skills/dw-ui-discipline/references/accessibility-floor.md +225 -0
- package/scaffold/skills/dw-ui-discipline/references/anti-slop.md +162 -0
- package/scaffold/skills/dw-ui-discipline/references/curated-defaults.md +195 -0
- package/scaffold/skills/dw-ui-discipline/references/hard-gate.md +142 -0
- package/scaffold/skills/dw-ui-discipline/references/state-matrix.md +101 -0
- package/scaffold/templates-overrides-readme.md +75 -0
- package/scaffold/skills/ui-ux-pro-max/LICENSE +0 -21
- package/scaffold/skills/ui-ux-pro-max/SKILL.md +0 -659
- package/scaffold/skills/ui-ux-pro-max/data/_sync_all.py +0 -414
- package/scaffold/skills/ui-ux-pro-max/data/app-interface.csv +0 -31
- package/scaffold/skills/ui-ux-pro-max/data/charts.csv +0 -26
- package/scaffold/skills/ui-ux-pro-max/data/colors.csv +0 -162
- package/scaffold/skills/ui-ux-pro-max/data/design.csv +0 -1776
- package/scaffold/skills/ui-ux-pro-max/data/draft.csv +0 -1779
- package/scaffold/skills/ui-ux-pro-max/data/google-fonts.csv +0 -1924
- package/scaffold/skills/ui-ux-pro-max/data/icons.csv +0 -106
- package/scaffold/skills/ui-ux-pro-max/data/landing.csv +0 -35
- package/scaffold/skills/ui-ux-pro-max/data/products.csv +0 -162
- package/scaffold/skills/ui-ux-pro-max/data/react-performance.csv +0 -45
- package/scaffold/skills/ui-ux-pro-max/data/stacks/angular.csv +0 -51
- package/scaffold/skills/ui-ux-pro-max/data/stacks/astro.csv +0 -54
- package/scaffold/skills/ui-ux-pro-max/data/stacks/flutter.csv +0 -53
- package/scaffold/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +0 -56
- package/scaffold/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +0 -53
- package/scaffold/skills/ui-ux-pro-max/data/stacks/laravel.csv +0 -51
- package/scaffold/skills/ui-ux-pro-max/data/stacks/nextjs.csv +0 -53
- package/scaffold/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +0 -51
- package/scaffold/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +0 -59
- package/scaffold/skills/ui-ux-pro-max/data/stacks/react-native.csv +0 -52
- package/scaffold/skills/ui-ux-pro-max/data/stacks/react.csv +0 -54
- package/scaffold/skills/ui-ux-pro-max/data/stacks/shadcn.csv +0 -61
- package/scaffold/skills/ui-ux-pro-max/data/stacks/svelte.csv +0 -54
- package/scaffold/skills/ui-ux-pro-max/data/stacks/swiftui.csv +0 -51
- package/scaffold/skills/ui-ux-pro-max/data/stacks/threejs.csv +0 -54
- package/scaffold/skills/ui-ux-pro-max/data/stacks/vue.csv +0 -50
- package/scaffold/skills/ui-ux-pro-max/data/styles.csv +0 -85
- package/scaffold/skills/ui-ux-pro-max/data/typography.csv +0 -74
- package/scaffold/skills/ui-ux-pro-max/data/ui-reasoning.csv +0 -162
- package/scaffold/skills/ui-ux-pro-max/data/ux-guidelines.csv +0 -100
- package/scaffold/skills/ui-ux-pro-max/scripts/core.py +0 -262
- package/scaffold/skills/ui-ux-pro-max/scripts/design_system.py +0 -1148
- package/scaffold/skills/ui-ux-pro-max/scripts/search.py +0 -114
- package/scaffold/skills/ui-ux-pro-max/skills/brand/SKILL.md +0 -97
- package/scaffold/skills/ui-ux-pro-max/skills/design/SKILL.md +0 -302
- package/scaffold/skills/ui-ux-pro-max/skills/design-system/SKILL.md +0 -244
- package/scaffold/skills/ui-ux-pro-max/templates/base/quick-reference.md +0 -297
- package/scaffold/skills/ui-ux-pro-max/templates/base/skill-content.md +0 -358
- package/scaffold/skills/ui-ux-pro-max/templates/platforms/agent.json +0 -21
- package/scaffold/skills/ui-ux-pro-max/templates/platforms/augment.json +0 -18
- package/scaffold/skills/ui-ux-pro-max/templates/platforms/claude.json +0 -21
- package/scaffold/skills/ui-ux-pro-max/templates/platforms/codebuddy.json +0 -21
- package/scaffold/skills/ui-ux-pro-max/templates/platforms/codex.json +0 -21
- package/scaffold/skills/ui-ux-pro-max/templates/platforms/continue.json +0 -21
- package/scaffold/skills/ui-ux-pro-max/templates/platforms/copilot.json +0 -21
- package/scaffold/skills/ui-ux-pro-max/templates/platforms/cursor.json +0 -21
- package/scaffold/skills/ui-ux-pro-max/templates/platforms/droid.json +0 -21
- package/scaffold/skills/ui-ux-pro-max/templates/platforms/gemini.json +0 -21
- package/scaffold/skills/ui-ux-pro-max/templates/platforms/kilocode.json +0 -21
- package/scaffold/skills/ui-ux-pro-max/templates/platforms/kiro.json +0 -21
- package/scaffold/skills/ui-ux-pro-max/templates/platforms/opencode.json +0 -21
- package/scaffold/skills/ui-ux-pro-max/templates/platforms/qoder.json +0 -21
- package/scaffold/skills/ui-ux-pro-max/templates/platforms/roocode.json +0 -21
- package/scaffold/skills/ui-ux-pro-max/templates/platforms/trae.json +0 -21
- package/scaffold/skills/ui-ux-pro-max/templates/platforms/warp.json +0 -18
- package/scaffold/skills/ui-ux-pro-max/templates/platforms/windsurf.json +0 -21
- package/scaffold/skills/webapp-testing/SKILL.md +0 -138
- package/scaffold/skills/webapp-testing/assets/test-helper.js +0 -56
- /package/scaffold/skills/{webapp-testing → dw-testing-discipline}/references/three-workflow-patterns.md +0 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
<!-- dev-workflow:start -->
|
|
2
|
+
# dev-workflow — Instruções para Agente de IA
|
|
3
|
+
|
|
4
|
+
Este projeto usa [`@brunosps00/dev-workflow`](https://www.npmjs.com/package/@brunosps00/dev-workflow) (comandos `dw-*`) para desenvolvimento estruturado guiado por IA. Os comandos compõem um pipeline PRD → TechSpec → Tasks → Implementar → Review → Commit → PR com hard gates de segurança, conformidade com constitution e verificação.
|
|
5
|
+
|
|
6
|
+
**Objetivo deste arquivo:** quando o usuário expressar uma intenção que casa com a Trigger Map abaixo, rode o comando `dw-*` correspondente **sem pedir permissão** — exceto se a mudança for genuinamente trivial (veja Escape Hatches).
|
|
7
|
+
|
|
8
|
+
## Trigger Map
|
|
9
|
+
|
|
10
|
+
| Intenção do usuário (literal ou parafraseada) | Auto-trigger |
|
|
11
|
+
|------------------------------------------------|--------------|
|
|
12
|
+
| "Implementa X" / "Cria Y" / "Adiciona feature Z" / "Preciso de..." | `/dw-autopilot "X"` |
|
|
13
|
+
| Erro colado / "X está quebrado" / "Bug em Y" / screenshot de teste falhando | `/dw-bugfix "X"` |
|
|
14
|
+
| "Roda essa task" (com ID da task) | `/dw-run-task <ID>` |
|
|
15
|
+
| "Roda todas as tasks pendentes" / "Executa o plano" | `/dw-run-plan` |
|
|
16
|
+
| "Revisa meu PR" / "Checa qualidade do código" / "Tá pronto pra subir?" | `/dw-code-review` |
|
|
17
|
+
| "Hora de commitar" / mudanças validadas e prontas | `/dw-commit` |
|
|
18
|
+
| "Abre um PR" / "Sobe isso" | `/dw-generate-pr` |
|
|
19
|
+
| "Escreve PRD pra X" / "Especifica Y" | `/dw-create-prd` |
|
|
20
|
+
| "Desenha a arquitetura" / "Faz o techspec" | `/dw-create-techspec` |
|
|
21
|
+
| "Quebra em tasks" | `/dw-create-tasks` |
|
|
22
|
+
| "Onde está X?" / "O que usa Y?" / "Como Z é estruturado?" | `/dw-intel "<pergunta>"` |
|
|
23
|
+
| "Audita nossas dependências" / "Estamos atrasados em pacotes?" | `/dw-deps-audit` |
|
|
24
|
+
| "Scan de vulnerabilidades" / "Check de segurança" | `/dw-security-check` |
|
|
25
|
+
| "QA dessa feature" / "Roda o test plan" | `/dw-run-qa` |
|
|
26
|
+
| "Corrige os bugs do QA" | `/dw-fix-qa` |
|
|
27
|
+
|
|
28
|
+
**Prioridade:** na dúvida entre dois comandos, `/dw-autopilot` é o default mais seguro pra qualquer pedido de feature não-trivial — ele compõe os demais.
|
|
29
|
+
|
|
30
|
+
## Hard Gates (os comandos enforçam — não burle)
|
|
31
|
+
|
|
32
|
+
- **`.dw/constitution.md`**: princípios com `severity: high` ou `critical` bloqueiam PRs / techspecs sem um ADR justificando o desvio. Constitution ausente? Os comandos auto-instalam defaults em `severity: info` (não-bloqueante) e seguem — ausência nunca bloqueia.
|
|
33
|
+
- **`.dw/spec/<prd>/tasks-validation.md`**: auto-gerado no fim do `/dw-create-tasks`. Qualquer dimensão FAIL bloqueia approval do usuário até resolver ou override explícito.
|
|
34
|
+
- **Verification**: `/dw-generate-pr` exige `dw-verify` PASS fresco (testes + lint + build) depois do último edit.
|
|
35
|
+
- **Segurança**: projetos TS / Python / C# / Rust precisam passar `/dw-security-check` (Trivy + OWASP + lockfile audit) antes do PR abrir.
|
|
36
|
+
|
|
37
|
+
## Escape Hatches — NÃO auto-trigger
|
|
38
|
+
|
|
39
|
+
Quando qualquer destes se aplica, responda direto e **não** invoque comando `dw-*`:
|
|
40
|
+
|
|
41
|
+
- Correção de uma linha: typo, rename, sort de imports, ajuste de comentário.
|
|
42
|
+
- Exploração pura: "como isso funciona?", "me mostra X", "explica Y".
|
|
43
|
+
- Preferência estética: "prefiro esse estilo" — aplica, não roda pipeline.
|
|
44
|
+
- Usuário diz explicitamente "faz direto" / "pula autopilot" / "não precisa de PRD" — honre.
|
|
45
|
+
- A conversa já está dentro de um fluxo `dw-*` (você já está executando tasks; não inicie pipeline novo).
|
|
46
|
+
|
|
47
|
+
## Referência de Workflow
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
/dw-autopilot "wish" ────► Roda pipeline completo automaticamente
|
|
51
|
+
(3 gates: PRD approval, Tasks approval, PR confirmação)
|
|
52
|
+
|
|
53
|
+
--- OU passo a passo ---
|
|
54
|
+
|
|
55
|
+
/dw-brainstorm ─► /dw-create-prd ─► /dw-create-techspec ─► /dw-create-tasks
|
|
56
|
+
│
|
|
57
|
+
▼
|
|
58
|
+
/dw-commit + /dw-generate-pr ◄──── /dw-code-review ◄──── /dw-run-plan
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Lista completa e ajuda contextual: `/dw-help`.
|
|
62
|
+
|
|
63
|
+
## Editando esta seção
|
|
64
|
+
|
|
65
|
+
Este bloco vive entre os marcadores `<!-- dev-workflow:start -->` e `<!-- dev-workflow:end -->`. Qualquer coisa que você escrever **fora** dos marcadores em `CLAUDE.md` / `AGENTS.md` é preservada a cada `dev-workflow update`. Tudo **dentro** é regenerado do pacote — seus edits dentro do bloco serão sobrescritos.
|
|
66
|
+
|
|
67
|
+
Para customizar a trigger map permanentemente, copie o conteúdo pra fora dos marcadores (ou pra arquivo separado tipo `.dw/agent-instructions-custom.md`) e edite lá.
|
|
68
|
+
<!-- dev-workflow:end -->
|
|
@@ -645,6 +645,67 @@ packages/auth → packages/db
|
|
|
645
645
|
- Crie o diretório .dw/rules/ se não existir
|
|
646
646
|
</critical>
|
|
647
647
|
|
|
648
|
+
### Step 8: Constitution Generation (Opcional, mas Recomendado)
|
|
649
|
+
|
|
650
|
+
Após escrever `.dw/rules/`, oferecer gerar `.dw/constitution.md` — os princípios declarativos que o time quer ver enforçados em PRDs, TechSpecs e Code Reviews.
|
|
651
|
+
|
|
652
|
+
**Diferença vs `.dw/rules/`:**
|
|
653
|
+
- `.dw/rules/` é **analítico** — o que o código É (padrões observados, anti-patterns, convenções).
|
|
654
|
+
- `.dw/constitution.md` é **declarativo** — o que o código DEVE SER (regras às quais o time se compromete).
|
|
655
|
+
|
|
656
|
+
**Comportamento:**
|
|
657
|
+
|
|
658
|
+
Se `.dw/constitution.md` já existir, imprimir "Constituição já existe em `.dw/constitution.md` — pulando (edite manualmente se quiser atualizar)" e encerrar.
|
|
659
|
+
|
|
660
|
+
Caso contrário, apresentar 3 opções no chat (use a UI de pergunta preferida quando disponível; caso contrário texto puro):
|
|
661
|
+
|
|
662
|
+
```
|
|
663
|
+
Uma constitution ajudaria PRDs/TechSpecs/PRs a permanecerem alinhados aos padrões.
|
|
664
|
+
Três opções:
|
|
665
|
+
|
|
666
|
+
A) Sintetizar dos padrões observados (recomendado)
|
|
667
|
+
Leio `.dw/rules/` e proponho 5–8 princípios fundamentados no código real,
|
|
668
|
+
cada um com `Why:` ligado a evidência e `severity: info` (não bloqueia).
|
|
669
|
+
Você revisa e aprova antes de qualquer escrita.
|
|
670
|
+
|
|
671
|
+
B) Instalar template de defaults
|
|
672
|
+
Copia `templates/constitution-template.md` para `.dw/constitution.md` com
|
|
673
|
+
5 princípios canônicos (Qualidade, Testes, UX, Performance, Segurança)
|
|
674
|
+
pré-preenchidos em `severity: info`. Você customiza manualmente.
|
|
675
|
+
|
|
676
|
+
C) Pular
|
|
677
|
+
Sem constitution. Comandos downstream operam sem o gate.
|
|
678
|
+
Você pode rodar este step novamente re-executando `/dw-analyze-project`.
|
|
679
|
+
```
|
|
680
|
+
|
|
681
|
+
**Opção A — Sintetizar:**
|
|
682
|
+
|
|
683
|
+
1. Ler `.dw/rules/index.md` + cada `.dw/rules/{module}.md`.
|
|
684
|
+
2. Propor 5–8 princípios. Cada um deve:
|
|
685
|
+
- Ter ID único `P-NNN`.
|
|
686
|
+
- Mapear para uma observação em `.dw/rules/` (citar o arquivo + seção).
|
|
687
|
+
- Começar em `severity: info` (nunca propor `high`/`critical` automaticamente — isso é decisão do time).
|
|
688
|
+
- Seguir formato: `**P-NNN — <nome>** (severity: info): <regra>. **Why:** <fundamentar em evidência>. **Enforcement:** <como checar>.`
|
|
689
|
+
3. **Mostrar os princípios propostos no chat como lista markdown** (não escreva o arquivo ainda). Incluir a citação de evidência para cada um.
|
|
690
|
+
4. Perguntar: "Edita algum antes de eu gravar? Responda com os IDs para descartar/editar, ou 'aprovar' para escrever como está."
|
|
691
|
+
5. Após aprovação (com edits aplicados), gravar em `.dw/constitution.md` usando a mesma estrutura de `templates/constitution-template.md`.
|
|
692
|
+
6. Setar frontmatter `mode: custom` e `last_updated: <data ISO de hoje>`.
|
|
693
|
+
|
|
694
|
+
**Opção B — Defaults:**
|
|
695
|
+
|
|
696
|
+
1. Localizar `templates/constitution-template.md` (projeto-local em `.dw/templates/constitution-template.md`, com fallback para scaffold bundled).
|
|
697
|
+
2. Copiar para `.dw/constitution.md` literalmente. Setar frontmatter `mode: defaults`.
|
|
698
|
+
3. Imprimir: "Constituição defaults instalada em `.dw/constitution.md`. Todos os 10 princípios começam em `severity: info` — reportam mas não bloqueiam. Edite o arquivo para customizar, depois promova severities para `high`/`critical` quando confiar."
|
|
699
|
+
|
|
700
|
+
**Opção C — Pular:**
|
|
701
|
+
|
|
702
|
+
1. Nada a fazer.
|
|
703
|
+
2. Imprimir: "Pulado. PRD/TechSpec/CodeReview rodarão sem o constitution gate. Re-rode `/dw-analyze-project` mais tarde se quiser habilitar."
|
|
704
|
+
|
|
705
|
+
**Em qualquer opção:**
|
|
706
|
+
- Nunca escrever `.dw/constitution.md` sem aprovação explícita (opção A) ou escolha explícita (opções B/C).
|
|
707
|
+
- Constitution é commitada ao repositório como qualquer outro artefato do projeto — nunca gitignored.
|
|
708
|
+
|
|
648
709
|
## Checklist de Qualidade
|
|
649
710
|
|
|
650
711
|
- [ ] Estrutura do repositório escaneada
|
|
@@ -141,7 +141,7 @@ Apresente ao usuario:
|
|
|
141
141
|
### Etapa 7: Design Contract (Condicional)
|
|
142
142
|
|
|
143
143
|
Avalie se as tasks envolvem frontend:
|
|
144
|
-
- **SIM** (execute `/dw-redesign-ui`): se houver tasks com componentes visuais E a skill `ui-
|
|
144
|
+
- **SIM** (execute `/dw-redesign-ui`): se houver tasks com componentes visuais E a skill `dw-ui-discipline` estiver disponivel
|
|
145
145
|
- Gere o design contract em `.dw/spec/prd-[nome]/design-contract.md`
|
|
146
146
|
- Apresente um resumo do design contract ao usuario (paleta, tipografia, layout mobile/desktop) como checkpoint visual antes de prosseguir
|
|
147
147
|
- **NAO** (pule para etapa 8): tasks puramente backend/infra
|
|
@@ -41,7 +41,7 @@ digraph brainstorm_decision {
|
|
|
41
41
|
Quando disponíveis no projeto em `./.agents/skills/`, use para enriquecer a ideação:
|
|
42
42
|
|
|
43
43
|
- `dw-council` (opt-in via `--council`): stress-test multi-advisor das opções mais promissoras com steel-manning obrigatório e concession tracking. **NÃO invocar por padrão** — só quando a flag está presente ou quando surge consenso rápido demais (sinal de false consensus).
|
|
44
|
-
- `ui-
|
|
44
|
+
- `dw-ui-discipline`: use quando o brainstorm envolver frontend ou direção de UI — o hard-gate (scene sentence, surface job) é forcing function generativa durante ideação, não só check de review
|
|
45
45
|
- `vercel-react-best-practices`: use quando explorar arquitetura React/Next.js ou trade-offs de performance
|
|
46
46
|
- `security-review`: use quando o brainstorm tocar auth, manipulação de dados ou features sensíveis à segurança
|
|
47
47
|
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
- `dw-debug-protocol`: **SEMPRE** — conduz o bug pelo six-step triage (Reproduzir → Localizar → Reduzir → Fix Root Cause → Guardar → Verificar End-to-End). Stop-the-line discipline; root-cause sobre symptom; regression test commitado no mesmo commit atômico. Bugs não-reprodutíveis seguem o sub-protocolo instrument-first — sem fix por palpite a não ser com acknowledgement explícito.
|
|
19
19
|
- `dw-verify`: **SEMPRE** — em modo Direto, invocada antes do commit da correção. O VERIFICATION REPORT deve mostrar que o sintoma original do bug não se reproduz mais (não apenas que os testes passam).
|
|
20
20
|
- `vercel-react-best-practices`: use quando o bug afeta React/Next.js e há suspeita de problemas de render, hidratação, fetching, waterfall, bundle ou re-render
|
|
21
|
-
- `
|
|
21
|
+
- `dw-testing-discipline`: use quando a correção requer fluxo E2E/reteste reproduzível em web app — `references/playwright-recipes.md` pra recipes, Iron Laws + 7 AI Gates pra qualquer teste que o fix adicione, flaky-discipline se o bug aparece de forma intermitente.
|
|
22
22
|
- `security-review`: use quando a causa raiz toca auth, autorização, input externo, upload, secrets, SQL, XSS, SSRF ou outras superfícies sensíveis
|
|
23
23
|
|
|
24
24
|
## Variáveis de Entrada
|
|
@@ -153,7 +153,7 @@
|
|
|
153
153
|
- Mensagens de erro relacionadas
|
|
154
154
|
- Stack traces
|
|
155
155
|
- Arquivos modificados recentemente
|
|
156
|
-
- Se o bug for relacionado a UI ou depender de fluxo no navegador, complemente a coleta com `
|
|
156
|
+
- Se o bug for relacionado a UI ou depender de fluxo no navegador, complemente a coleta com `dw-testing-discipline` (playwright-recipes + three-workflow-patterns pra escolher o modo certo de verificação)
|
|
157
157
|
|
|
158
158
|
### 3. Perguntas de Clarificação (OBRIGATÓRIO - EXATAMENTE 3)
|
|
159
159
|
|
|
@@ -180,7 +180,7 @@
|
|
|
180
180
|
- **Causa Provável**: Baseado nas evidências
|
|
181
181
|
- **Arquivos Afetados**: Lista de arquivos a modificar
|
|
182
182
|
- **Impacto**: Outros componentes que podem ser afetados
|
|
183
|
-
- **Skills utilizadas**: registre explicitamente se a análise usou `vercel-react-best-practices`, `
|
|
183
|
+
- **Skills utilizadas**: registre explicitamente se a análise usou `vercel-react-best-practices`, `dw-testing-discipline` ou `security-review`
|
|
184
184
|
|
|
185
185
|
### 4.1 Checkpoint de Escopo (OBRIGATÓRIO)
|
|
186
186
|
|
|
@@ -159,6 +159,34 @@ Para cada projeto impactado, verificar rules específicas em `.dw/rules/`:
|
|
|
159
159
|
- [ ] Chamadas de API usam utilitários fetch do projeto
|
|
160
160
|
- [ ] UI segue o design system do projeto
|
|
161
161
|
|
|
162
|
+
### 4.1. Constitution Compliance (Obrigatório quando `.dw/constitution.md` existe)
|
|
163
|
+
|
|
164
|
+
<critical>**Auto-create se ausente**: se `.dw/constitution.md` NÃO existir, copie `templates/constitution-template.md` (project-local `.dw/templates/constitution-template.md` primeiro, com fallback para scaffold bundled) literalmente com frontmatter `mode: defaults`. Imprimir no chat: "Constituição defaults instalada em `.dw/constitution.md` (todos os princípios em `severity: info` — reportam mas não bloqueiam este review). Seguindo." Depois prossiga.</critical>
|
|
165
|
+
|
|
166
|
+
Para cada princípio em `.dw/constitution.md`, verificar o diff por violações:
|
|
167
|
+
|
|
168
|
+
1. **Parsear princípios**: ler cada entrada `**P-NNN — <nome>** (severity: <S>)`; capturar `P-NNN`, `severity` e descrição de `Enforcement`.
|
|
169
|
+
2. **Aplicar enforcement**: para cada princípio, rodar a checagem de enforcement contra o diff (grep, inspeção de arquivo ou pattern match conforme a linha Enforcement).
|
|
170
|
+
3. **Classificar violações**:
|
|
171
|
+
- Princípio `severity: info` → adicione linha à tabela "Issues Found" com severity `low`. **Não bloqueia** o verdict.
|
|
172
|
+
- Princípio `severity: high` → adicione linha com severity `critical`. **Bloqueia** o verdict como `REJECTED` EXCETO se um ADR no `adrs/` do mesmo PRD documenta o desvio (busque `Deviates: P-NNN` no corpo de qualquer ADR).
|
|
173
|
+
- Princípio `severity: critical` → adicione linha com severity `critical` E exigir que o ADR tenha campo `Approved by:` não-vazio. Campo ausente = ainda `REJECTED`.
|
|
174
|
+
4. **Sem skip silencioso**: se o diff for grande demais para analisar todos os princípios, reportar quais foram checados e quais foram pulados por escopo.
|
|
175
|
+
|
|
176
|
+
**Formato de saída no relatório:**
|
|
177
|
+
|
|
178
|
+
```markdown
|
|
179
|
+
## Constitution Compliance
|
|
180
|
+
|
|
181
|
+
| Princípio | Severity | Status | Evidência | ADR escape |
|
|
182
|
+
|-----------|----------|--------|-----------|------------|
|
|
183
|
+
| P-001 — Sem `any` casts | info | VIOLATED | src/foo.ts:42 | n/a |
|
|
184
|
+
| P-009 — Auth server-side | high | VIOLATED | src/api/order.ts:18 sem auth middleware | none → BLOQUEIA |
|
|
185
|
+
| P-010 — Secrets no repo | critical | PASS | — | — |
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Se houver violação `high`/`critical` sem ADR escape: adicionar à linha de verdict "REPROVADO — violação(ões) de constitution sem ADR (ver seção Constitution Compliance)".
|
|
189
|
+
|
|
162
190
|
### 5. Análise de Qualidade de Código (Obrigatório)
|
|
163
191
|
|
|
164
192
|
| Aspecto | Verificação |
|
|
@@ -50,6 +50,22 @@
|
|
|
50
50
|
- Use `.dw/rules/` como contexto, caindo para grep
|
|
51
51
|
- Sugira rodar `/dw-map-codebase` para enriquecer contexto downstream
|
|
52
52
|
|
|
53
|
+
## Constitution Gate
|
|
54
|
+
|
|
55
|
+
<critical>ANTES das clarification questions, cheque `.dw/constitution.md`:
|
|
56
|
+
|
|
57
|
+
**Se AUSENTE**: copie `templates/constitution-template.md` (project-local em `.dw/templates/constitution-template.md`, com fallback para scaffold bundled) literalmente para `.dw/constitution.md`. Setar frontmatter `mode: defaults` e `last_updated` para data ISO de hoje. Imprimir no chat:
|
|
58
|
+
|
|
59
|
+
> "Notei que `.dw/constitution.md` estava ausente. Instalei defaults em `.dw/constitution.md` (10 princípios canônicos, todos em `severity: info` — reportam mas não bloqueiam). Pode customizar a qualquer momento — ou re-rodar `/dw-analyze-project` para versão sob medida. Seguindo com o PRD."
|
|
60
|
+
|
|
61
|
+
Depois prossiga normalmente, tratando o arquivo recém-criado como a constitution.
|
|
62
|
+
|
|
63
|
+
**Se PRESENTE**: leia antes de redigir requisitos. Cada FR no PRD DEVE incluir linha "Constitution Alignment" mapeando para ≥1 princípio relevante (`Respects: P-001, P-009`) OU declarando explicitamente "no applicable principle" com motivo em uma linha. Sem alignment = FR está incompleto.
|
|
64
|
+
|
|
65
|
+
**Regras de severity** (aplicadas pelos comandos downstream, não enforçadas aqui):
|
|
66
|
+
- Violações `severity: info` → reportadas, nunca bloqueiam.
|
|
67
|
+
- Violações `severity: high` / `critical` → bloqueiam em `dw-create-techspec` e `dw-code-review` exceto se ADR justificar.</critical>
|
|
68
|
+
|
|
53
69
|
## Features Multi-Projeto
|
|
54
70
|
|
|
55
71
|
Muitas funcionalidades podem envolver mais de um projeto no workspace.
|
|
@@ -149,5 +149,47 @@
|
|
|
149
149
|
3. /dw-generate-pr [branch-alvo] quando todas tasks concluídas
|
|
150
150
|
```
|
|
151
151
|
|
|
152
|
+
## Final Consistency Check (Auto-invocado antes da aprovação do usuário)
|
|
153
|
+
|
|
154
|
+
<critical>ANTES de apresentar tasks ao usuário, rode um check de consistência em 5 dimensões. Isto é mandatório; não pule mesmo se confiante de que as tasks estão limpas.</critical>
|
|
155
|
+
|
|
156
|
+
Rode estes 5 checks contra o conjunto PRD + TechSpec + tasks gerado:
|
|
157
|
+
|
|
158
|
+
1. **Cobertura de RF** — cada RF numerada no PRD mapeia para ≥1 task. RFs órfãs (PRD tem; nenhuma task cobre) são FAIL.
|
|
159
|
+
2. **Grounding das tasks** — cada task gerada referencia ≥1 RF em seu corpo (`Cobre: RF-N.M`). Tasks sem referência a RF sinalizam scope creep.
|
|
160
|
+
3. **Cobertura de teste** — cada RF com comportamento user-facing (UI, endpoint de API, mutação de dado) tem ≥1 task que adiciona teste (subtask contendo "test", "spec", "e2e" ou equivalente).
|
|
161
|
+
4. **Grafo de dependências** — dependências entre tasks (X.0 → Y.0 declarado como "Depende de") formam DAG. Sem ciclos. Ordem topológica válida.
|
|
162
|
+
5. **Alinhamento com constitution** (só se `.dw/constitution.md` existir) — cada task lista `Constitution: respects P-NNN, P-MMM` OU `Constitution: deviates P-NNN — ADR planejado: <slug>` OU `Constitution: n/a — motivo: <one-liner>`. Linha ausente = FAIL.
|
|
163
|
+
|
|
164
|
+
Escreva findings em `.dw/spec/prd-[nome-funcionalidade]/tasks-validation.md` com esta estrutura exata:
|
|
165
|
+
|
|
166
|
+
```markdown
|
|
167
|
+
# Relatório de Validação de Tasks
|
|
168
|
+
|
|
169
|
+
Gerado por /dw-create-tasks em YYYY-MM-DD.
|
|
170
|
+
|
|
171
|
+
| Dimensão | Status | Findings |
|
|
172
|
+
|----------|--------|----------|
|
|
173
|
+
| 1. Cobertura de RF | PASS / FAIL | <lista de RFs órfãs ou "todas RFs cobertas"> |
|
|
174
|
+
| 2. Grounding de tasks | PASS / FAIL | <lista de tasks sem RF ou "todas tasks referenciam RFs"> |
|
|
175
|
+
| 3. Cobertura de teste | PASS / FAIL | <RFs sem testes ou "todas RFs user-facing cobertas"> |
|
|
176
|
+
| 4. Grafo de dependências | PASS / FAIL | <ciclos ou "DAG válido"> |
|
|
177
|
+
| 5. Alinhamento constitution | PASS / FAIL / N/A | <tasks não-alinhadas ou "todas alinhadas" ou "sem constitution"> |
|
|
178
|
+
|
|
179
|
+
## Findings Detalhados
|
|
180
|
+
|
|
181
|
+
<uma seção por dimensão FAIL com fixes concretos; vazio se tudo PASS>
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
**Comportamento do gate:**
|
|
185
|
+
|
|
186
|
+
- **Todas as 5 dimensões PASS (ou N/A)** → apresente tasks ao usuário normalmente e peça aprovação.
|
|
187
|
+
- **Qualquer dimensão FAIL** → PARE. Mostre a tabela no chat como markdown (NÃO esconda no arquivo de validação; o usuário precisa ver antes de aprovar). Depois pergunte ao usuário:
|
|
188
|
+
- "(a) Quer que eu conserte as tasks automaticamente?" → regenerar tasks afetadas, re-rodar o check.
|
|
189
|
+
- "(b) Vai editar tasks.md manualmente?" → aguardar usuário sinalizar conclusão, re-rodar o check.
|
|
190
|
+
- "(c) Override e seguir mesmo com FAIL?" → exigir mensagem de override explícita ("override: aceito o gap porque <motivo>"). Persistir o override em `tasks-validation.md` para auditabilidade.
|
|
191
|
+
|
|
192
|
+
O arquivo `tasks-validation.md` é commitado junto com `tasks.md`. Comandos downstream (`/dw-run-plan`, `/dw-code-review`, `/dw-review-implementation`) podem referenciá-lo.
|
|
193
|
+
|
|
152
194
|
Após completar a análise e gerar todos os arquivos necessários, apresente os resultados ao usuário e aguarde confirmação para prosseguir com a implementação.
|
|
153
195
|
</system_instructions>
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
- `dw-council` (opt-in via `--council`): debate multi-advisor da decisão arquitetural principal com steel-manning. **NÃO invocar por padrão**.
|
|
26
26
|
- `dw-source-grounding` (**SEMPRE**): cada decisão de framework/library segue Detect → Fetch → Implement → Cite. O techspec emite citações inline `[source: <url>, version: X.Y, retrieved: YYYY-MM-DD]` ao lado de cada decisão arquitetural.
|
|
27
27
|
- `vercel-react-best-practices`: use quando definir arquitetura frontend para projetos React/Next.js
|
|
28
|
-
- `ui-
|
|
28
|
+
- `dw-ui-discipline`: use quando o TechSpec inclui seções de UI — enforça o hard-gate de 4 checkpoints (brand authorities / surface job / state matrix / scene sentence), os 14 anti-slop patterns e o WCAG 2.2 AA floor ANTES das decisões de design.
|
|
29
29
|
- `security-review`: use quando a feature tocar auth, autorização ou manipulação de dados sensíveis
|
|
30
30
|
|
|
31
31
|
## Inteligência do Codebase
|
|
@@ -39,6 +39,23 @@
|
|
|
39
39
|
- Use `.dw/rules/` como contexto, caindo para grep
|
|
40
40
|
- Sugira rodar `/dw-map-codebase` para enriquecer contexto downstream
|
|
41
41
|
|
|
42
|
+
## Constitution Gate
|
|
43
|
+
|
|
44
|
+
<critical>ANTES de redigir decisões arquiteturais, cheque `.dw/constitution.md`:
|
|
45
|
+
|
|
46
|
+
**Se AUSENTE**: copie `templates/constitution-template.md` (project-local em `.dw/templates/constitution-template.md`, com fallback para scaffold bundled) literalmente para `.dw/constitution.md`. Setar frontmatter `mode: defaults`. Imprimir no chat: "Constituição defaults instalada em `.dw/constitution.md` (severity: info — não bloqueia este techspec). Seguindo." Depois prossiga.
|
|
47
|
+
|
|
48
|
+
**Se PRESENTE**: leia. Toda escolha de framework / library / arquitetura no techspec DEVE carregar uma de:
|
|
49
|
+
- `Respects: P-NNN` — a decisão honra ativamente o(s) princípio(s) nomeado(s).
|
|
50
|
+
- `Deviates: P-NNN — justification: <slug do ADR ou racional em uma linha>` — a decisão se afasta intencionalmente do princípio.
|
|
51
|
+
|
|
52
|
+
**Gate graduado por severity:**
|
|
53
|
+
- Desvio de princípio `severity: info` → apenas registra, nunca bloqueia.
|
|
54
|
+
- Desvio de princípio `severity: high` sem ADR linkado (`.dw/spec/<prd>/adrs/adr-NNN.md`) → BLOQUEIA o techspec. Instrua o usuário a revisar a decisão OU criar ADR via `/dw-adr` documentando o trade-off.
|
|
55
|
+
- Desvio de princípio `severity: critical` → BLOQUEIA o techspec com mesma exigência de ADR, adicionalmente exigindo acknowledgment de reviewer no campo `Approved by` do ADR.
|
|
56
|
+
|
|
57
|
+
Sem exceções para `high`/`critical` sem ADR. Se o usuário resistir, aponte para `/dw-adr` — esse é o escape hatch por design.</critical>
|
|
58
|
+
|
|
42
59
|
## Fluxograma de Decisão Multi-Projeto
|
|
43
60
|
|
|
44
61
|
```dot
|
|
@@ -31,7 +31,7 @@ Este comando e **distinto** do `/dw-security-check`:
|
|
|
31
31
|
| `security-review` (`references/supply-chain.md`) | **SEMPRE** ao classificar findings — da o framing OWASP A06 (Vulnerable & Outdated Components) para os trade-offs do brainstorm |
|
|
32
32
|
| `dw-source-grounding` | **SEMPRE** na fase de brainstorm — cada opcao de update por pacote (Conservadora/Balanceada/Ousada) cita o changelog/release notes oficial da versao alvo: `[source: <url>, version: X.Y, retrieved: YYYY-MM-DD]`. Previne "agent recomenda v5 porque parece moderno, mas v5 dropou Node 18". |
|
|
33
33
|
| `dw-council` | Opt-in automatico quando >=3 pacotes caem em tier COMPROMISED — stress-test multi-conselheiro sobre ordem e escopo de remediacao |
|
|
34
|
-
| `
|
|
34
|
+
| `dw-testing-discipline` | Opcional — quando a fase de testes escopados precisa de recipes Playwright pra projetos frontend. Iron Laws + anti-patterns valem pra qualquer teste adicionado durante o audit. |
|
|
35
35
|
|
|
36
36
|
## Variaveis de Entrada
|
|
37
37
|
|
|
@@ -20,7 +20,7 @@ Quando disponíveis no projeto em `./.agents/skills/`, use estas skills como sup
|
|
|
20
20
|
|
|
21
21
|
- `dw-debug-protocol`: **SEMPRE** — todo finding bug-shaped (cenário falhando, não feature ausente) passa pelo six-step triage. A evidência de reteste é o artefato da etapa 6 (verify); o regression test da etapa 5 é o que sustenta o status `Corrigido`.
|
|
22
22
|
- `dw-verify`: **SEMPRE** — invocada antes de marcar qualquer bug como `Corrigido` ou `Fechado` no `QA/bugs.md`. Sem VERIFICATION REPORT PASS (test + lint + build) + evidência de reteste (screenshot em modo UI OU linha JSONL em modo API), o status permanece `Reaberto` ou `Em análise`.
|
|
23
|
-
- `
|
|
23
|
+
- `dw-testing-discipline`: (modo UI) consulte `references/playwright-recipes.md` para estruturas de reteste, capturas, scripts. Aplique Iron Laws + flaky discipline ao retestar fixes — quarantine e SLOs da doutrina valem aqui.
|
|
24
24
|
- `vercel-react-best-practices`: (modo UI) use apenas se a correção afetar frontend React/Next.js e houver risco de regressão de renderização, hidratação, fetching ou performance
|
|
25
25
|
- `api-testing-recipes`: **(modo API — SEMPRE)** fonte da recipe usada no QA. Re-execute o arquivo `.http`/pytest/supertest/etc. original do RF do bug; anexe o resultado do reteste a um log JSONL fresco em `QA/logs/api/BUG-NN-retest.log`
|
|
26
26
|
|
|
@@ -55,10 +55,10 @@ Funciona melhor com projeto analisado por `/dw-analyze-project`
|
|
|
55
55
|
|
|
56
56
|
Quando disponíveis no projeto em `./.agents/skills/`, use estas skills como apoio operacional, sem substituir este comando como fonte de verdade:
|
|
57
57
|
|
|
58
|
-
- `
|
|
58
|
+
- `dw-testing-discipline`: apoio para estruturar fluxos E2E (`references/playwright-recipes.md`), padrões de coleta de evidência, e aplicar Iron Laws + hierarquia de seletores em qualquer teste referenciado pelo doc
|
|
59
59
|
- `remotion-best-practices`: apoio obrigatório quando houver vídeo humano final, legendas, composição, transições, FFmpeg ou Remotion
|
|
60
60
|
- `humanizer`: apoio obrigatório para revisar e naturalizar todas as legendas, captions `.srt`, textos descritivos e qualquer redação voltada a leitura humana antes da entrega final
|
|
61
|
-
- `ui-
|
|
61
|
+
- `dw-ui-discipline`: use ao documentar padrões visuais — state matrix e scene sentence viram parte da seção de overview de cada tela
|
|
62
62
|
|
|
63
63
|
## Ferramentas obrigatórias para browser
|
|
64
64
|
|
|
@@ -319,7 +319,7 @@ workspace/
|
|
|
319
319
|
- Sim, é recomendado para projetos novos. Ele gera as rules em `.dw/rules/` que todos os outros comandos utilizam.
|
|
320
320
|
|
|
321
321
|
**Q: O `/dw-redesign-ui` funciona com Angular?**
|
|
322
|
-
- Sim. O comando é framework-agnostic. Para React usa react-doctor e `vercel-react-best-practices`; para Angular usa `ng lint` e Angular DevTools.
|
|
322
|
+
- Sim. O comando é framework-agnostic. Para React usa react-doctor e `vercel-react-best-practices`; para Angular usa `ng lint` e Angular DevTools. Disciplina de UI (`dw-ui-discipline`) funciona com qualquer framework — enforça o hard-gate, anti-slop catalog e WCAG floor independente do stack.
|
|
323
323
|
|
|
324
324
|
**Q: Como obtenho inteligência do codebase e execução paralela?**
|
|
325
325
|
- Os dois são nativos do dev-workflow. Rode `/dw-map-codebase` para construir o índice queryable em `.dw/intel/`, depois `/dw-intel "<pergunta>"` para consultá-lo. Para execução paralela, `/dw-run-plan` invoca os agentes bundled de execução de fase (executor + plan-checker) diretamente para dispatcha tasks em waves com commits atômicos por task. Sem dependência externa.
|
|
@@ -40,9 +40,9 @@ digraph redesign_decision {
|
|
|
40
40
|
|
|
41
41
|
Quando disponíveis no projeto em `./.agents/skills/`, use para guiar o redesign:
|
|
42
42
|
|
|
43
|
-
- `ui-
|
|
43
|
+
- `dw-ui-discipline`: **OBRIGATÓRIO** — roda o hard-gate de 4 checkpoints (brand authorities OU curated defaults; surface job sentence; state matrix completa; scene sentence) ANTES de qualquer proposta. Os 14 anti-slop patterns são checados contra cada direção. O WCAG 2.2 AA floor é não-negociável no step de validate.
|
|
44
44
|
- `vercel-react-best-practices`: use quando o projeto for React/Next.js para padrões de performance e implementação
|
|
45
|
-
- `
|
|
45
|
+
- `dw-testing-discipline`: consulte `references/playwright-recipes.md` para captura de screenshots antes/depois e validação visual. Iron Laws + hierarquia de seletores valem pra qualquer teste gerado junto com o redesign.
|
|
46
46
|
- `security-review`: use se o redesign tocar flows de autenticação ou formulários sensíveis
|
|
47
47
|
|
|
48
48
|
## Ferramentas de Análise
|
|
@@ -56,12 +56,12 @@ Utilize ferramentas de diagnóstico conforme o framework do projeto:
|
|
|
56
56
|
## Comportamento Obrigatório
|
|
57
57
|
|
|
58
58
|
1. Identifique o alvo: página, componente ou rota que será redesenhada.
|
|
59
|
-
2. **AUDITAR**: leia a implementação atual, identifique stack CSS (Tailwind, CSS Modules, styled-components, etc.), capture screenshot
|
|
59
|
+
2. **AUDITAR**: leia a implementação atual, identifique stack CSS (Tailwind, CSS Modules, styled-components, etc.), capture screenshot usando `dw-testing-discipline`/playwright-recipes se disponível, rode react-doctor se projeto React.
|
|
60
60
|
3. Faça 3 a 5 perguntas sobre objetivos do redesign: direção de estilo, constraints de marca, inspirações, público-alvo, dispositivos prioritários.
|
|
61
|
-
4. **PROPOR**: apresente 2 a 3 direções de design
|
|
61
|
+
4. **PROPOR**: apresente 2 a 3 direções de design depois de passar pelo hard-gate de `dw-ui-discipline` (brand authorities ou curated defaults; surface job sentence; state matrix enumerada; scene sentence). Cada direção lista paleta de cores, par tipográfico, estilo de layout e racional. Self-check de cada direção contra os 14 anti-slop patterns. Para CADA direção, descreva explicitamente o layout mobile (<=768px) e o layout desktop (>=1024px), incluindo como os elementos se reorganizam, empilham ou escondem entre breakpoints.
|
|
62
62
|
5. Espere aprovação explícita do usuário antes de implementar.
|
|
63
63
|
6. **IMPLEMENTAR**: aplique o design escolhido com abordagem mobile-first — implemente primeiro o layout mobile e depois adicione media queries/breakpoints para tablet e desktop. Respeite a stack existente. Use `vercel-react-best-practices` para React/Next.js. Mantenha a metodologia CSS do projeto.
|
|
64
|
-
7. **VALIDAR**: capture estado depois em AMBAS as resoluções (mobile e desktop), compare antes/depois, verifique acessibilidade (WCAG 2.2
|
|
64
|
+
7. **VALIDAR**: capture estado depois em AMBAS as resoluções (mobile e desktop), compare antes/depois, verifique acessibilidade contra `dw-ui-discipline/references/accessibility-floor.md` (WCAG 2.2 AA — não-negociável: contraste, focus-visible, keyboard nav, ARIA, sem traps), rode react-doctor `--diff` se React. Use `dw-testing-discipline/references/playwright-recipes.md` para capturar screenshots em viewport 375px (mobile) e 1440px (desktop).
|
|
65
65
|
8. **PERSISTIR CONTRATO**: se o usuário aprovou uma direção, gere `design-contract.md` no diretório do PRD (`.dw/spec/prd-[nome]/design-contract.md`) com: direção aprovada, paleta de cores, par tipográfico, regras de layout, regras de acessibilidade e regras de componentes. Este contrato será lido por `dw-run-task` e `dw-run-plan` para garantir consistência visual.
|
|
66
66
|
|
|
67
67
|
## Inteligência do Codebase
|
|
@@ -82,8 +82,8 @@ Utilize ferramentas de diagnóstico conforme o framework do projeto:
|
|
|
82
82
|
|
|
83
83
|
### 2. Proposta de Design
|
|
84
84
|
- 2 a 3 direções com racional visual
|
|
85
|
-
- Paleta de cores (
|
|
86
|
-
- Par tipográfico (
|
|
85
|
+
- Paleta de cores (de brand authority OU `dw-ui-discipline/references/curated-defaults.md`)
|
|
86
|
+
- Par tipográfico (mesma fonte)
|
|
87
87
|
- Padrão de layout
|
|
88
88
|
- Nível de esforço por direção
|
|
89
89
|
|
|
@@ -20,9 +20,9 @@ Você é um assistente IA especializado em Quality Assurance. Sua tarefa é vali
|
|
|
20
20
|
|
|
21
21
|
Quando disponíveis no projeto em `./.agents/skills/`, use estas skills como apoio operacional sem substituir este comando:
|
|
22
22
|
|
|
23
|
-
- `
|
|
23
|
+
- `dw-testing-discipline`: (modo UI) **SEMPRE** — Iron Laws e 25 anti-patterns valem pra todo teste de QA autorado. `references/playwright-recipes.md` pra patterns táticos. `references/three-workflow-patterns.md` pra escolher o modo certo (UI / network / perf). `references/security-boundary.md` pra qualquer fluxo que cruza boundary de auth.
|
|
24
24
|
- `vercel-react-best-practices`: (modo UI) use apenas se o frontend sob teste for React/Next.js e houver indicação de regressão relacionada a renderização, fetching, hidratação ou performance percebida
|
|
25
|
-
- `ui-
|
|
25
|
+
- `dw-ui-discipline`: (modo UI) use ao validar consistência de design — o catálogo anti-slop e o floor de acessibilidade WCAG são checados como parte da evidência de QA
|
|
26
26
|
- `api-testing-recipes`: **(modo API — SEMPRE)** snippets validados para `.http`, pytest+httpx, supertest, WebApplicationFactory, reqwest. Compõe um arquivo de teste por RF em `QA/scripts/api/` e logs JSONL em `QA/logs/api/` segundo seus references
|
|
27
27
|
|
|
28
28
|
## Ferramentas de Análise
|
|
@@ -149,7 +149,7 @@ Se NENHUMA credencial for encontrada, PARE e pergunte ao usuário antes de conti
|
|
|
149
149
|
- Verificar se a aplicação está rodando em localhost
|
|
150
150
|
- Usar `browser_navigate` do Playwright MCP para acessar a aplicação
|
|
151
151
|
- Confirmar que a página carregou corretamente com `browser_snapshot`
|
|
152
|
-
- Se sessão persistente, import de auth, inspeção de rede além do MCP ou reprodução browser-first forem necessários, complementar com `
|
|
152
|
+
- Se sessão persistente, import de auth, inspeção de rede além do MCP ou reprodução browser-first forem necessários, complementar com `dw-testing-discipline/references/playwright-recipes.md`
|
|
153
153
|
|
|
154
154
|
### 3. Verificação de Páginas do Menu (Somente modo UI — Obrigatório, Executar ANTES dos testes de RF)
|
|
155
155
|
|
|
@@ -222,7 +222,7 @@ Para cada requisito funcional do PRD:
|
|
|
222
222
|
8. Marcar como PASSOU ou FALHOU
|
|
223
223
|
9. Salvar o script Playwright do fluxo em `{{PRD_PATH}}/QA/scripts/` com nome padronizado: `RF-XX-[slug].spec.ts` (ou `.js`)
|
|
224
224
|
10. Registrar no relatório quais credenciais (usuário/perfil) foram usadas em cada fluxo sensível a permissões
|
|
225
|
-
11. Quando o fluxo MCP ficar instável ou insuficiente para evidência operacional, complementar com `
|
|
225
|
+
11. Quando o fluxo MCP ficar instável ou insuficiente para evidência operacional, complementar com `dw-testing-discipline/references/playwright-recipes.md`, registrando isso explicitamente no relatório
|
|
226
226
|
|
|
227
227
|
<critical>Não basta validar apenas o caminho feliz. Cada requisito deve ser exercitado contra seus estados de borda e suas regressões mais prováveis</critical>
|
|
228
228
|
<critical>Se um requisito não puder ser completamente validado via E2E, o QA deve ser marcado como REJEITADO ou BLOQUEADO, nunca APROVADO</critical>
|
|
@@ -21,7 +21,7 @@ Quando disponíveis no projeto em `./.agents/skills/`, use estas skills como sup
|
|
|
21
21
|
| `dw-verify` | **SEMPRE** — invocada antes do commit para produzir Verification Report com evidence fresca |
|
|
22
22
|
| `dw-memory` | **SEMPRE** — lê memory da workflow no início e atualiza ao final da task (promotion test) |
|
|
23
23
|
| `vercel-react-best-practices` | Task envolve renderização React, hidratação, data fetching, bundle, cache ou performance |
|
|
24
|
-
| `
|
|
24
|
+
| `dw-testing-discipline` | Task precisa de testes (qualquer layer) — aplica Iron Laws, 7 AI Gates, catálogo de anti-patterns. Use `references/playwright-recipes.md` quando a task tem frontend interativo precisando de validação E2E. |
|
|
25
25
|
|
|
26
26
|
## Inteligência do Codebase
|
|
27
27
|
|
|
@@ -93,7 +93,7 @@ Após fornecer o resumo e abordagem, **comece imediatamente** a implementar a ta
|
|
|
93
93
|
- Seguir padrões estabelecidos do projeto
|
|
94
94
|
- Garantir que todos os requisitos sejam atendidos
|
|
95
95
|
- **Rodar testes**: use o comando de teste do projeto
|
|
96
|
-
- Se houver frontend interativo, valide também o comportamento real
|
|
96
|
+
- Se houver frontend interativo, valide também o comportamento real usando `dw-testing-discipline/references/playwright-recipes.md` quando isso reduzir o risco de regressão invisível nos testes unitários
|
|
97
97
|
|
|
98
98
|
**VOCÊ DEVE** iniciar a implementação logo após o processo acima.
|
|
99
99
|
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: "1.0"
|
|
3
|
+
generated_by: dev-workflow
|
|
4
|
+
last_updated: YYYY-MM-DD
|
|
5
|
+
mode: defaults | custom
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Constituição do Projeto
|
|
9
|
+
|
|
10
|
+
> Princípios declarativos que este time escolheu seguir. PRDs, TechSpecs e Code Reviews leem este arquivo como hard gate. Qualquer coisa que viole um princípio com `severity: critical` ou `high` é bloqueada — exceto quando justificada por um ADR explícito.
|
|
11
|
+
|
|
12
|
+
## Como este arquivo funciona
|
|
13
|
+
|
|
14
|
+
- **Cada princípio tem um ID (`P-NNN`), severity, regra, `Why` e `Enforcement`.**
|
|
15
|
+
- **Escala de severity:** `info` (apenas reporta, nunca bloqueia) → `high` (bloqueia PR sem ADR) → `critical` (bloqueia PR sem ADR + exige aprovação de reviewer).
|
|
16
|
+
- **Edite à vontade.** Este arquivo é seu para evoluir. Promova princípios de `info` para `high` quando confiar que o projeto cumpre.
|
|
17
|
+
- **Escape via ADR.** Um PR que viola princípio `high`/`critical` é desbloqueado quando um ADR na mesma feature documenta o desvio e o trade-off.
|
|
18
|
+
- **Versão analítica regenerável** a qualquer momento via `/dw-analyze-project` (oferece sintetizar princípios a partir dos padrões observados no código).
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Qualidade de Código
|
|
23
|
+
|
|
24
|
+
**P-001 — Sem `any` / `unknown` em TypeScript sem justificativa** (severity: info)
|
|
25
|
+
**Regra:** Código de produção não pode usar `as any`, `as unknown` ou `// @ts-ignore` sem comentário inline `// @ts-ignore — motivo: <X>` nomeando a restrição.
|
|
26
|
+
**Why:** Escapes silenciosos do tipo vazam bugs de runtime que o type system existia para pegar. Cada escape é um contrato que o type system para de garantir.
|
|
27
|
+
**Enforcement:** `dw-code-review` greppa o diff por `as any`/`@ts-ignore`/`@ts-expect-error` sem comentário-razão correspondente.
|
|
28
|
+
|
|
29
|
+
**P-002 — Funções devem ser testáveis isoladamente** (severity: info)
|
|
30
|
+
**Regra:** Função que toca rede, filesystem, banco de dados ou system clock deve receber a dependência como parâmetro (ou via factory) em vez de importar diretamente.
|
|
31
|
+
**Why:** Código que constrói suas próprias dependências não pode ser testado sem setup de integração. Testes ficam lentos, são pulados, e bugs vão pra produção.
|
|
32
|
+
**Enforcement:** `dw-code-review` flagueia funções importando `fs`, `axios`, `prisma`, `Date.now`, etc., diretamente em módulos de business logic.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Padrões de Teste
|
|
37
|
+
|
|
38
|
+
**P-003 — Todo bug fix carrega um regression test** (severity: info)
|
|
39
|
+
**Regra:** Commit com tipo `fix:` deve adicionar ou modificar pelo menos um teste que teria pego o bug antes do fix.
|
|
40
|
+
**Why:** Sem o teste, o bug volta na próxima vez que alguém refatora a área. O fix se deteriora.
|
|
41
|
+
**Enforcement:** `dw-code-review` verifica se commits `fix:` incluem diff em paths `**/*test*` ou `**/*spec*`.
|
|
42
|
+
|
|
43
|
+
**P-004 — Testes devem ser determinísticos** (severity: info)
|
|
44
|
+
**Regra:** Sem `sleep`-based waits, sem comparações de relógio real, sem chamadas a serviços live em unit tests. Mockar em boundaries.
|
|
45
|
+
**Why:** Testes flaky treinam o time a ignorar falhas. A próxima falha real passa despercebida.
|
|
46
|
+
**Enforcement:** `dw-code-review` greppa testes por `setTimeout`, chamadas reais de fetch/axios, e `Date.now()` sem `vi.useFakeTimers()`/`jest.useFakeTimers()`.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Consistência de UX
|
|
51
|
+
|
|
52
|
+
**P-005 — Strings user-facing vivem em fonte única** (severity: info)
|
|
53
|
+
**Regra:** Toda copy visível (labels, mensagens de erro, empty states) passa por um módulo centralizado de i18n / strings — não inline em componentes.
|
|
54
|
+
**Why:** Strings inline driftam no tom, quebram esforços de i18n e causam duplicatas da mesma mensagem em variações sutis.
|
|
55
|
+
**Enforcement:** `dw-code-review` flagueia text nodes JSX e mensagens de erro declarados dentro de componentes em vez de importados de `src/strings/`, `src/i18n/`, ou equivalente.
|
|
56
|
+
|
|
57
|
+
**P-006 — Estados de loading + empty + error são obrigatórios em qualquer UI que busca dados** (severity: info)
|
|
58
|
+
**Regra:** Componente ou página que faz fetch deve renderizar explicitamente loading, empty e error — não só o happy path.
|
|
59
|
+
**Why:** Experiências "só com spinner" e estados de erro silencioso são a #1 fonte de bugs reportados por usuários.
|
|
60
|
+
**Enforcement:** `dw-review-implementation` verifica componentes de data-fetching pelos três estados em JSX ou equivalente.
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Performance
|
|
65
|
+
|
|
66
|
+
**P-007 — Mudanças de performance carregam medição** (severity: info)
|
|
67
|
+
**Regra:** Qualquer commit que afirme melhorar performance deve incluir a métrica, a ferramenta e os números antes/depois no body do commit OU no techspec.
|
|
68
|
+
**Why:** Sem medição, "otimização" de performance é palpite — e geralmente errado (ver `dw-simplification` + `perf-discipline.md`).
|
|
69
|
+
**Enforcement:** `dw-code-review` verifica commits `perf:` por números antes/depois; flagueia se ausente.
|
|
70
|
+
|
|
71
|
+
**P-008 — Queries N+1 são flagueadas em code review** (severity: info)
|
|
72
|
+
**Regra:** Loops ou operações em lista que disparam chamadas DB/HTTP por item devem batchar (ex: `IN (...)`, `findMany`, DataLoader) ou ser explicitamente justificadas.
|
|
73
|
+
**Why:** Padrões N+1 escalam linearmente com tamanho dos dados e silenciosamente degradam até que a carga de produção revele.
|
|
74
|
+
**Enforcement:** `dw-code-review` e `dw-refactoring-analysis` detectam padrões await-em-loop contra módulos de repository / API client.
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Segurança
|
|
79
|
+
|
|
80
|
+
**P-009 — Authorization server-side em todo endpoint que altera estado** (severity: info)
|
|
81
|
+
**Regra:** Endpoint que cria, atualiza ou deleta dado deve verificar autorização do caller no servidor. Gating em UI (botões escondidos, formulários disabled) não é segurança.
|
|
82
|
+
**Why:** Browsers são untrusted (ver `dw-testing-discipline/references/security-boundary.md`). Gating em UI é conveniência; só checks server-side protegem dado.
|
|
83
|
+
**Enforcement:** `dw-code-review` e `dw-security-check` exigem check de auth explícito (decorator, middleware ou assertion in-handler) em rotas POST/PUT/PATCH/DELETE.
|
|
84
|
+
|
|
85
|
+
**P-010 — Secrets nunca entram no repositório** (severity: info)
|
|
86
|
+
**Regra:** Nenhuma API key, password, signing key, token ou endpoint de produção commitado em source. `.env.example` documenta forma apenas.
|
|
87
|
+
**Why:** Histórico de repositório é permanente. Um secret commitado uma vez está vazado mesmo que revertido no commit seguinte.
|
|
88
|
+
**Enforcement:** `dw-security-check` roda Trivy + secret scanners no diff.
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Princípios Customizados
|
|
93
|
+
|
|
94
|
+
> Adicione princípios específicos do seu time abaixo. Mesmo formato: `**P-NNN — <nome>** (severity: info|high|critical): <regra>. **Why:** <motivo>. **Enforcement:** <como>.`
|
|
95
|
+
|
|
96
|
+
<!-- Exemplo:
|
|
97
|
+
**P-100 — Todo cálculo financeiro usa Decimal, nunca Number** (severity: critical)
|
|
98
|
+
**Regra:** Valores monetários devem usar tipos `Decimal` / `BigDecimal` end-to-end. Sem `parseFloat`, sem aritmética com `Number`.
|
|
99
|
+
**Why:** Erros de arredondamento IEEE 754 acumulam centavos perdidos em milhões de transações; ambientes auditados exigem aritmética exata.
|
|
100
|
+
**Enforcement:** `dw-code-review` greppa por `Number(`/`parseFloat(` em qualquer arquivo sob `src/billing/`, `src/payments/`, `src/finance/`.
|
|
101
|
+
-->
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Como evoluir este arquivo
|
|
106
|
+
|
|
107
|
+
1. **Viva em `info` por pelo menos um release-ciclo.** Observe quão frequentemente cada princípio é violado organicamente; o dado te diz se vale promover.
|
|
108
|
+
2. **Promova para `high` quando violações forem raras e o time concordar.** PRs que violarem princípio `high` agora precisam de ADR.
|
|
109
|
+
3. **Promova para `critical` os princípios que protegem usuários / dados / compliance.** Trate-os como load-bearing; o escape via ADR exige aprovação de reviewer, não só opt-out do autor.
|
|
110
|
+
4. **Demote ou remova princípios que não ganharam seu peso.** Constitution é ferramenta, não museu.
|
|
111
|
+
5. **Re-rode `/dw-analyze-project`** quando o codebase mudar substancialmente (nova stack, refactor grande); ele pode propor updates fundamentados em observação fresca.
|
|
@@ -22,7 +22,7 @@ A real embedded subagent workflow — not inline roleplay. Each archetype is dis
|
|
|
22
22
|
|
|
23
23
|
- Low-stakes or obviously-reversible decisions (a council is expensive; reserve for meaningful debates)
|
|
24
24
|
- Decisions already covered by an existing ADR
|
|
25
|
-
- When a single specialized skill suffices (e.g., `security-review` for auth concerns, `ui-
|
|
25
|
+
- When a single specialized skill suffices (e.g., `security-review` for auth concerns, `dw-ui-discipline` for visual direction)
|
|
26
26
|
|
|
27
27
|
## Required Inputs
|
|
28
28
|
|