@brunosps00/dev-workflow 0.15.0 → 1.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/README.md +97 -119
- package/lib/constants.js +16 -36
- package/lib/migrate-skills.js +11 -4
- package/lib/removed-commands.js +30 -0
- package/package.json +1 -1
- package/scaffold/en/agent-instructions.md +27 -16
- package/scaffold/en/commands/dw-adr.md +2 -2
- package/scaffold/en/commands/dw-analyze-project.md +7 -7
- package/scaffold/en/commands/dw-autopilot.md +20 -20
- package/scaffold/en/commands/dw-brainstorm.md +160 -9
- package/scaffold/en/commands/dw-bugfix.md +5 -5
- package/scaffold/en/commands/dw-commit.md +1 -1
- package/scaffold/en/commands/dw-dockerize.md +9 -9
- package/scaffold/en/commands/dw-find-skills.md +4 -4
- package/scaffold/en/commands/dw-functional-doc.md +1 -1
- package/scaffold/en/commands/dw-generate-pr.md +4 -4
- package/scaffold/en/commands/dw-help.md +95 -351
- package/scaffold/en/commands/dw-intel.md +76 -12
- package/scaffold/en/commands/dw-new-project.md +9 -9
- package/scaffold/en/commands/dw-plan.md +175 -0
- package/scaffold/en/commands/dw-qa.md +166 -0
- package/scaffold/en/commands/dw-redesign-ui.md +6 -6
- package/scaffold/en/commands/dw-review.md +198 -0
- package/scaffold/en/commands/dw-run.md +176 -0
- package/scaffold/en/commands/dw-secure-audit.md +222 -0
- package/scaffold/en/commands/dw-update.md +1 -1
- package/scaffold/en/references/playwright-patterns.md +1 -1
- package/scaffold/en/references/refactoring-catalog.md +1 -1
- package/scaffold/en/templates/brainstorm-matrix.md +1 -1
- package/scaffold/en/templates/idea-onepager.md +3 -3
- package/scaffold/en/templates/project-onepager.md +5 -5
- package/scaffold/pt-br/agent-instructions.md +27 -16
- package/scaffold/pt-br/commands/dw-adr.md +2 -2
- package/scaffold/pt-br/commands/dw-analyze-project.md +7 -7
- package/scaffold/pt-br/commands/dw-autopilot.md +20 -20
- package/scaffold/pt-br/commands/dw-brainstorm.md +160 -9
- package/scaffold/pt-br/commands/dw-bugfix.md +8 -8
- package/scaffold/pt-br/commands/dw-commit.md +1 -1
- package/scaffold/pt-br/commands/dw-dockerize.md +9 -9
- package/scaffold/pt-br/commands/dw-find-skills.md +4 -4
- package/scaffold/pt-br/commands/dw-functional-doc.md +1 -1
- package/scaffold/pt-br/commands/dw-generate-pr.md +4 -4
- package/scaffold/pt-br/commands/dw-help.md +97 -300
- package/scaffold/pt-br/commands/dw-intel.md +77 -13
- package/scaffold/pt-br/commands/dw-new-project.md +9 -9
- package/scaffold/pt-br/commands/dw-plan.md +175 -0
- package/scaffold/pt-br/commands/dw-qa.md +166 -0
- package/scaffold/pt-br/commands/dw-redesign-ui.md +6 -6
- package/scaffold/pt-br/commands/dw-review.md +198 -0
- package/scaffold/pt-br/commands/dw-run.md +176 -0
- package/scaffold/pt-br/commands/dw-secure-audit.md +222 -0
- package/scaffold/pt-br/commands/dw-update.md +1 -1
- package/scaffold/pt-br/references/playwright-patterns.md +1 -1
- package/scaffold/pt-br/references/refactoring-catalog.md +1 -1
- package/scaffold/pt-br/templates/brainstorm-matrix.md +1 -1
- package/scaffold/pt-br/templates/idea-onepager.md +3 -3
- package/scaffold/pt-br/templates/project-onepager.md +5 -5
- package/scaffold/pt-br/templates/tasks-template.md +1 -1
- package/scaffold/skills/api-testing-recipes/SKILL.md +6 -6
- package/scaffold/skills/api-testing-recipes/references/auth-patterns.md +1 -1
- package/scaffold/skills/api-testing-recipes/references/matrix-conventions.md +1 -1
- package/scaffold/skills/api-testing-recipes/references/openapi-driven.md +3 -3
- package/scaffold/skills/docker-compose-recipes/SKILL.md +1 -1
- package/scaffold/skills/dw-codebase-intel/SKILL.md +9 -9
- package/scaffold/skills/dw-codebase-intel/agents/intel-updater.md +4 -4
- package/scaffold/skills/dw-codebase-intel/references/api-design-discipline.md +1 -1
- package/scaffold/skills/dw-codebase-intel/references/incremental-update.md +5 -5
- package/scaffold/skills/dw-codebase-intel/references/intel-format.md +1 -1
- package/scaffold/skills/dw-codebase-intel/references/query-patterns.md +3 -3
- package/scaffold/skills/dw-council/SKILL.md +2 -2
- package/scaffold/skills/dw-debug-protocol/SKILL.md +5 -3
- package/scaffold/skills/dw-execute-phase/SKILL.md +16 -16
- package/scaffold/skills/dw-execute-phase/agents/executor.md +5 -5
- package/scaffold/skills/dw-execute-phase/agents/plan-checker.md +4 -4
- package/scaffold/skills/dw-execute-phase/references/atomic-commits.md +1 -1
- package/scaffold/skills/dw-execute-phase/references/plan-verification.md +2 -2
- package/scaffold/skills/dw-execute-phase/references/wave-coordination.md +1 -1
- package/scaffold/skills/dw-git-discipline/SKILL.md +5 -2
- package/scaffold/skills/dw-incident-response/SKILL.md +5 -1
- package/scaffold/skills/dw-llm-eval/SKILL.md +10 -8
- package/scaffold/skills/dw-memory/SKILL.md +2 -2
- package/scaffold/skills/dw-review-rigor/SKILL.md +5 -5
- package/scaffold/skills/dw-simplification/SKILL.md +4 -4
- package/scaffold/skills/dw-source-grounding/SKILL.md +1 -1
- package/scaffold/skills/dw-testing-discipline/SKILL.md +8 -6
- package/scaffold/skills/dw-testing-discipline/references/agent-guardrails.md +3 -3
- package/scaffold/skills/dw-testing-discipline/references/anti-patterns.md +2 -2
- package/scaffold/skills/dw-testing-discipline/references/core-rules.md +1 -1
- package/scaffold/skills/dw-testing-discipline/references/flaky-discipline.md +3 -3
- package/scaffold/skills/dw-testing-discipline/references/patterns.md +1 -1
- package/scaffold/skills/dw-testing-discipline/references/playwright-recipes.md +1 -1
- package/scaffold/skills/dw-ui-discipline/SKILL.md +8 -6
- package/scaffold/skills/dw-ui-discipline/references/accessibility-floor.md +2 -2
- package/scaffold/skills/dw-ui-discipline/references/hard-gate.md +1 -1
- package/scaffold/skills/dw-ui-discipline/references/state-matrix.md +1 -1
- package/scaffold/skills/dw-ui-discipline/references/visual-slop.md +2 -2
- package/scaffold/skills/dw-verify/SKILL.md +4 -4
- package/scaffold/skills/humanizer/SKILL.md +1 -7
- package/scaffold/skills/remotion-best-practices/SKILL.md +3 -1
- package/scaffold/skills/security-review/SKILL.md +1 -1
- package/scaffold/skills/security-review/languages/csharp.md +1 -1
- package/scaffold/skills/security-review/languages/rust.md +1 -1
- package/scaffold/skills/security-review/languages/typescript.md +1 -1
- package/scaffold/skills/vercel-react-best-practices/SKILL.md +3 -1
- package/scaffold/templates-overrides-readme.md +3 -3
- package/scaffold/en/commands/dw-code-review.md +0 -386
- package/scaffold/en/commands/dw-create-prd.md +0 -148
- package/scaffold/en/commands/dw-create-tasks.md +0 -201
- package/scaffold/en/commands/dw-create-techspec.md +0 -210
- package/scaffold/en/commands/dw-deep-research.md +0 -418
- package/scaffold/en/commands/dw-deps-audit.md +0 -327
- package/scaffold/en/commands/dw-fix-qa.md +0 -152
- package/scaffold/en/commands/dw-map-codebase.md +0 -125
- package/scaffold/en/commands/dw-refactoring-analysis.md +0 -340
- package/scaffold/en/commands/dw-revert-task.md +0 -114
- package/scaffold/en/commands/dw-review-implementation.md +0 -349
- package/scaffold/en/commands/dw-run-plan.md +0 -300
- package/scaffold/en/commands/dw-run-qa.md +0 -497
- package/scaffold/en/commands/dw-run-task.md +0 -209
- package/scaffold/en/commands/dw-security-check.md +0 -271
- package/scaffold/pt-br/commands/dw-code-review.md +0 -366
- package/scaffold/pt-br/commands/dw-create-prd.md +0 -148
- package/scaffold/pt-br/commands/dw-create-tasks.md +0 -201
- package/scaffold/pt-br/commands/dw-create-techspec.md +0 -208
- package/scaffold/pt-br/commands/dw-deep-research.md +0 -172
- package/scaffold/pt-br/commands/dw-deps-audit.md +0 -327
- package/scaffold/pt-br/commands/dw-fix-qa.md +0 -152
- package/scaffold/pt-br/commands/dw-map-codebase.md +0 -125
- package/scaffold/pt-br/commands/dw-refactoring-analysis.md +0 -340
- package/scaffold/pt-br/commands/dw-revert-task.md +0 -114
- package/scaffold/pt-br/commands/dw-review-implementation.md +0 -337
- package/scaffold/pt-br/commands/dw-run-plan.md +0 -296
- package/scaffold/pt-br/commands/dw-run-qa.md +0 -495
- package/scaffold/pt-br/commands/dw-run-task.md +0 -208
- package/scaffold/pt-br/commands/dw-security-check.md +0 -271
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
<system_instructions>
|
|
2
|
+
Você é o orquestrador de execução de tasks. Dois modos: executar UMA task específica, ou executar TODAS as tasks pendentes em ordem de dependência. Ambos aplicam as mesmas garantias por task (commit atômico, testes obrigatórios, verify antes de commit, deviation handling).
|
|
3
|
+
|
|
4
|
+
## Quando Usar
|
|
5
|
+
- Use `run` depois que `/dw-plan` produziu `tasks.md` + per-task files e as tasks foram aprovadas.
|
|
6
|
+
- Use para executar uma task específica durante desenvolvimento incremental.
|
|
7
|
+
- NÃO use pra bug fixes — `/dw-bugfix` resolve.
|
|
8
|
+
- NÃO use sem breakdown de tasks aprovado — arquivos de task DEVEM existir.
|
|
9
|
+
|
|
10
|
+
## Posição no Pipeline
|
|
11
|
+
**Antecessor:** `/dw-plan` (com tasks aprovadas) | **Sucessor:** `/dw-review` então `/dw-commit` + `/dw-generate-pr`
|
|
12
|
+
|
|
13
|
+
## Modos
|
|
14
|
+
|
|
15
|
+
| Invocação | Comportamento |
|
|
16
|
+
|-----------|---------------|
|
|
17
|
+
| `/dw-run` | **Padrão.** Executa TODAS as tasks pendentes de `tasks.md` em ordem de dependência. Dispatch paralelo em waves para tasks independentes. Commit atômico por task. Após concluir tudo, roda Level 2 review (PRD compliance). |
|
|
18
|
+
| `/dw-run <task-id>` | Executa UMA task específica por ID (ex: `1.0`, `2.3`). Inclui validação Level 1. Commit atômico em sucesso. |
|
|
19
|
+
| `/dw-run --resume` | Resume um plan multi-task interrompido de onde parou. Lê `.dw/spec/<prd>/active-session.md` se presente; senão continua da primeira pending. |
|
|
20
|
+
|
|
21
|
+
## Entradas
|
|
22
|
+
|
|
23
|
+
| Variável | Descrição | Exemplo |
|
|
24
|
+
|----------|-----------|---------|
|
|
25
|
+
| `{{TASK_ID}}` | ID específico de task (opcional — default todas pending) | `1.0`, `2.3`, `5.1` |
|
|
26
|
+
| `{{PRD_PATH}}` | Caminho do dir PRD com tasks (opcional — auto-detect da branch ativa) | `.dw/spec/prd-invoice-export` |
|
|
27
|
+
|
|
28
|
+
## Skills Complementares
|
|
29
|
+
|
|
30
|
+
Quando disponíveis em `./.agents/skills/`, estas skills são invocadas por task:
|
|
31
|
+
|
|
32
|
+
- `dw-verify`: **SEMPRE** — antes do commit de cada task, produz Verification Report (test + lint + build GREEN). Sem PASS, sem commit. Iron Law de verificação.
|
|
33
|
+
- `dw-memory`: **SEMPRE** — lê workflow memory no início; atualiza no fim com promotion test (lições que valem pra próxima task são promovidas pra MEMORY.md compartilhada).
|
|
34
|
+
- `dw-execute-phase`: fornece agentes `plan-checker` (verificação goal-backward em 6 dimensões antes do código ser tocado) e `executor` (commit atômico + deviation handling).
|
|
35
|
+
- `dw-testing-discipline`: aplica placement doctrine, 6 agent guardrails e 25 anti-patterns ao adicionar testes.
|
|
36
|
+
- `dw-ui-discipline`: quando task toca UI, as 4 grounding questions precisam ser respondidas antes de qualquer decisão visual.
|
|
37
|
+
- `dw-llm-eval`: quando task toca código de feature AI, regras de reference dataset + oracle ladder se aplicam.
|
|
38
|
+
- `vercel-react-best-practices`: quando task toca performance React/Next.js.
|
|
39
|
+
|
|
40
|
+
## Constitution Gate
|
|
41
|
+
|
|
42
|
+
<critical>ANTES de executar qualquer task, cheque `.dw/constitution.md`. Se AUSENTE, auto-instale defaults via pattern v0.11. Se PRESENTE, a linha `Constitution Alignment` da task (setada em `/dw-plan` Stage 3) é consultada conforme a task executa — código deve respeitar os princípios declarados.</critical>
|
|
43
|
+
|
|
44
|
+
## Inteligência do Codebase
|
|
45
|
+
|
|
46
|
+
<critical>Se `.dw/intel/` existir, consulte via `/dw-intel` antes de implementar pra alinhar com padrões existentes.</critical>
|
|
47
|
+
- Per-task: `/dw-intel "padrões para <tópico da task>"` para surfacar convenções relevantes.
|
|
48
|
+
|
|
49
|
+
## Modo 1: UMA task (`run <task-id>`)
|
|
50
|
+
|
|
51
|
+
### Pré-requisitos
|
|
52
|
+
- `tasks.md` + per-task files existem em `.dw/spec/<prd>/`.
|
|
53
|
+
- Dependências da task-alvo estão completadas (cheque seção "Depende de" do `task.md`).
|
|
54
|
+
|
|
55
|
+
### Comportamento
|
|
56
|
+
|
|
57
|
+
1. **Ler o task file:** `.dw/spec/<prd>/<task-id>_task.md`. Entender inputs, FRs cobertos, critérios de aceitação, subtasks.
|
|
58
|
+
2. **Plano de implementação:**
|
|
59
|
+
- Liste arquivos a criar/modificar.
|
|
60
|
+
- Identifique testes a adicionar por subtask.
|
|
61
|
+
- Confirme dependências (se faltando, PARE e surface).
|
|
62
|
+
3. **Implementar:**
|
|
63
|
+
- Siga padrões do projeto de `.dw/rules/` e `.dw/intel/`.
|
|
64
|
+
- Aplique skills complementares (UI gate, test discipline, etc.).
|
|
65
|
+
- Testes unitários obrigatórios para backend/services conforme testspec.
|
|
66
|
+
- Match no framework de testes especificado em `.dw/rules/`.
|
|
67
|
+
4. **Validar (Level 1):**
|
|
68
|
+
- Rodar comando de teste do projeto.
|
|
69
|
+
- Checar critérios de aceitação do task file.
|
|
70
|
+
- Rodar `dw-verify` para produzir Verification Report (test + lint + build GREEN).
|
|
71
|
+
- Para frontend interativo, também validar comportamento real via recipes Playwright do `dw-testing-discipline` se risco de regressão for relevante.
|
|
72
|
+
5. **Commit:**
|
|
73
|
+
- Mensagem atômica: `feat(<scope>): <título da task> (#<task-id>)`.
|
|
74
|
+
- Referencie FRs cobertos.
|
|
75
|
+
- Uma task = um commit (exceto se task tem subtask milestones explícitos que ganham commits separados).
|
|
76
|
+
6. **Atualizar tasks.md:** marcar task como `Done` com SHA do commit.
|
|
77
|
+
7. **Reportar:** o que foi feito, testes adicionados, o que foi validado.
|
|
78
|
+
|
|
79
|
+
### CONDIÇÕES DE PARADA
|
|
80
|
+
- Dependências não satisfeitas → perguntar ao usuário como prosseguir.
|
|
81
|
+
- Verification Report FAIL → não commitar; reportar o que está quebrado.
|
|
82
|
+
- Scope creep detectado mid-implementação → PARE e peça pra usuário escopar.
|
|
83
|
+
|
|
84
|
+
## Modo 2: TODAS as tasks pending (default `run`)
|
|
85
|
+
|
|
86
|
+
### Pré-requisitos
|
|
87
|
+
- `tasks.md` + per-task files existem com dependências declaradas.
|
|
88
|
+
- `tasks-validation.md` mostra PASS (ou override explícito).
|
|
89
|
+
- Branch criada: `feat/prd-<feature-slug>`.
|
|
90
|
+
|
|
91
|
+
### Comportamento
|
|
92
|
+
|
|
93
|
+
1. **Plan check (via agente `dw-execute-phase/plan-checker`):**
|
|
94
|
+
- Verificação goal-backward em 6 dimensões: essas tasks vão de fato entregar o que o PRD promete?
|
|
95
|
+
- Se FAIL em qualquer dimensão, PARE e reporte ao usuário antes de qualquer código ser tocado.
|
|
96
|
+
2. **Construir grafo de dependência:**
|
|
97
|
+
- Sort topológico das tasks.
|
|
98
|
+
- Identificar tasks independentes que podem rodar em waves paralelas.
|
|
99
|
+
3. **Dispatch paralelo em waves (via agente `dw-execute-phase/executor`):**
|
|
100
|
+
- Cada wave contém tasks sem dependência inter.
|
|
101
|
+
- Executar waves serialmente; dentro de uma wave, tasks paralelas.
|
|
102
|
+
- Per-task: mesmo fluxo Level 1 do Modo 1 (implementar → validar → commit atômico).
|
|
103
|
+
4. **Deviation handling:**
|
|
104
|
+
- Se task encontra scope creep, PARE essa task, surface ao usuário.
|
|
105
|
+
- Se task falha verificação, a wave para. Nenhuma wave subsequente roda até resolver.
|
|
106
|
+
5. **Checkpoint entre waves:**
|
|
107
|
+
- Imprime resumo da wave: tasks completas, commits, deviations.
|
|
108
|
+
- Continua automaticamente exceto se `--checkpoint` foi passado (aí aguarda OK).
|
|
109
|
+
6. **Level 2 review final:**
|
|
110
|
+
- Após todas as tasks completarem, invoca automaticamente `/dw-review` (comando merged — roda PRD compliance check + code quality review).
|
|
111
|
+
- Apresenta relatório consolidado.
|
|
112
|
+
- Cycle de correções interativo: review surface gaps → usuário decide fix, adiar, ou aceitar.
|
|
113
|
+
|
|
114
|
+
### Output
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
.dw/spec/<prd>/
|
|
118
|
+
├── active-session.md # escrito no checkpoint; consumido por --resume
|
|
119
|
+
├── run-log.md # log per-wave com SHAs de commit
|
|
120
|
+
└── review-consolidated.md # review final L2+L3 (de /dw-review)
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Modo 3: Resume (`run --resume`)
|
|
124
|
+
|
|
125
|
+
### Pré-requisitos
|
|
126
|
+
- `run` anterior (Modo 2) foi interrompido.
|
|
127
|
+
- `active-session.md` existe no `.dw/spec/<prd>/` da PRD atual.
|
|
128
|
+
|
|
129
|
+
### Comportamento
|
|
130
|
+
|
|
131
|
+
1. Ler `active-session.md` pra determinar onde a sessão parou.
|
|
132
|
+
2. Surface ao usuário: "Resumindo da wave N, task X.0. Já completadas: <lista>. Continuar?"
|
|
133
|
+
3. Em confirmação, resume da próxima task pendente com mesmo comportamento Modo 2.
|
|
134
|
+
|
|
135
|
+
Se `active-session.md` não existe mas tasks não-completadas existem, trate como Modo 2 fresh start.
|
|
136
|
+
|
|
137
|
+
## Em todos os modos: deviation handling
|
|
138
|
+
|
|
139
|
+
Quando implementação não pode prosseguir como planejado:
|
|
140
|
+
|
|
141
|
+
| Deviation | Ação |
|
|
142
|
+
|-----------|------|
|
|
143
|
+
| Task requer nova dependência não no TechSpec | PARE. Sugerir `/dw-plan techspec --update` pra revisar. |
|
|
144
|
+
| Critério de aceitação ambíguo | PARE. Perguntar ao usuário. |
|
|
145
|
+
| Decisão de test framework faltando | PARE. Usar `dw-testing-discipline` placement doctrine pra propor; pedir sign-off. |
|
|
146
|
+
| Padrão de `.dw/rules/` não encaixa | PARE. Surface o atrito; proponha deviation justificada por ADR ou update das rules. |
|
|
147
|
+
| Complexidade oculta emerge (task estimada 2h, parece 8h) | PARE. Surface; ou split task via `/dw-plan tasks --update` ou aceite delay com nota. |
|
|
148
|
+
|
|
149
|
+
## Reporting
|
|
150
|
+
|
|
151
|
+
Após qualquer run (Modo 1, 2 ou 3 completar), imprima:
|
|
152
|
+
|
|
153
|
+
- Tasks completas com SHAs de commit.
|
|
154
|
+
- Contagem de arquivos tocados.
|
|
155
|
+
- Testes adicionados (unit + E2E se aplicável).
|
|
156
|
+
- Veredicto Verification Report por task.
|
|
157
|
+
- Para Modo 2: status do review consolidado final.
|
|
158
|
+
- Para Modo 2: deviations encontrados e como resolvidos.
|
|
159
|
+
|
|
160
|
+
## Anti-patterns
|
|
161
|
+
|
|
162
|
+
- Pular `dw-verify` pra "economizar tempo antes do commit" — produz commits que não buildam.
|
|
163
|
+
- Rodar tasks sem dependência satisfeita — produz commits que não funcionam isolados.
|
|
164
|
+
- Deixar wave paralelo rodar sem watch por deviations — scope creep silencioso compõe.
|
|
165
|
+
- Commitar múltiplas tasks num único commit — quebra bisect, quebra granularidade de revert.
|
|
166
|
+
- Pular review Level 2 final no Modo 2 — entrega features que não batem com PRD.
|
|
167
|
+
|
|
168
|
+
## Diretrizes finais
|
|
169
|
+
|
|
170
|
+
- Commits atômicos são não-negociáveis. Uma task = um commit (ou um subtask-bundle se explícito).
|
|
171
|
+
- Testes são obrigatórios per estratégia do TechSpec.
|
|
172
|
+
- Veredicto PASS do Verification Report é o gate, não o objetivo — nunca enfraquecer asserts pra passar.
|
|
173
|
+
- Deviation surfacing é feature, não bug. Pare e pergunte. Usuário prefere interrupção a implementação errada.
|
|
174
|
+
- Pra plans multi-dia, `--resume` é seu amigo. Não restart do zero.
|
|
175
|
+
|
|
176
|
+
</system_instructions>
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
<system_instructions>
|
|
2
|
+
Você é o orquestrador de security audit. Roda OWASP static review + supply-chain CVE/secret/IaC scanning + outdated check + supply-chain compromise detection em uma passada. Hard-gates comandos downstream quando há findings CRITICAL ou HIGH.
|
|
3
|
+
|
|
4
|
+
Auto-invocado por `/dw-review` e `/dw-generate-pr` em projetos TS/Python/C#/Rust. Invocação standalone disponível pra audit manual.
|
|
5
|
+
|
|
6
|
+
## Quando Usar
|
|
7
|
+
- Auto-invocado: `/dw-review` e `/dw-generate-pr` em linguagens suportadas.
|
|
8
|
+
- Manual: quando suspeita supply-chain compromise, quer security pass mid-dev, ou após dependency updates.
|
|
9
|
+
- NÃO use mid-task implementation (use `/dw-run` que tem checks mais leves).
|
|
10
|
+
- NÃO use como substituto pra review humano em código auth/payment de alto risco (use skill `security-review` JUNTO com este).
|
|
11
|
+
|
|
12
|
+
## Posição no Pipeline
|
|
13
|
+
**Antecessor:** qualquer momento; auto-invocado por `/dw-review`, `/dw-generate-pr` | **Sucessor:** `/dw-bugfix` pra atacar findings, ou `/dw-commit` se APROVADO
|
|
14
|
+
|
|
15
|
+
## Modos
|
|
16
|
+
|
|
17
|
+
| Invocação | O que roda |
|
|
18
|
+
|-----------|------------|
|
|
19
|
+
| `/dw-secure-audit` | **Padrão.** Audit completo: OWASP static + Trivy SCA/secret/IaC + native lockfile audit + supply-chain check + outdated check. |
|
|
20
|
+
| `/dw-secure-audit --scan-only` | Modo CI — roda scanners, exit não-zero se CRITICAL ou HIGH. Sem planejamento de remediação. |
|
|
21
|
+
| `/dw-secure-audit --plan` | Default scan, mais plano de remediação per-package (opções Conservative / Balanced / Bold). Sem file writes; só o plano. |
|
|
22
|
+
| `/dw-secure-audit --execute` | Plan mais aplica updates: testes scoped por pacote, um retry com `/dw-qa --fix` em falha, commits atômicos, `/dw-qa` como gate final. Reverte e marca BLOQUEADO se recovery falhar. |
|
|
23
|
+
|
|
24
|
+
## Linguagens Suportadas
|
|
25
|
+
|
|
26
|
+
| Linguagem | Lockfile Audit | OWASP | Trivy SCA/Secrets/IaC | Compromise Check |
|
|
27
|
+
|-----------|---------------|-------|----------------------|------------------|
|
|
28
|
+
| TypeScript / JavaScript | `npm audit` / `pnpm audit` | Sim | Sim | Sim (OSV + GH Advisories) |
|
|
29
|
+
| Python | `pip-audit` | Sim | Sim | Sim |
|
|
30
|
+
| C# / .NET | `dotnet list package --vulnerable` | Sim | Sim | Sim |
|
|
31
|
+
| Rust | `cargo audit` | Sim | Sim | Sim |
|
|
32
|
+
| Outras (Go, Java, etc.) | manual | Sim (best-effort) | Sim (Trivy) | Sim (OSV) |
|
|
33
|
+
|
|
34
|
+
## Dependências Necessárias
|
|
35
|
+
|
|
36
|
+
- **Trivy** — deve estar instalado (via `npx @brunosps00/dev-workflow install-deps`).
|
|
37
|
+
- **Context7 MCP** — pra best practices específicas de versão.
|
|
38
|
+
|
|
39
|
+
## Três Camadas de Detecção
|
|
40
|
+
|
|
41
|
+
### Camada 1: OWASP Static Review (via skill `security-review`)
|
|
42
|
+
|
|
43
|
+
Análise estática language-aware contra OWASP Top 10:
|
|
44
|
+
- A01 Broken access control
|
|
45
|
+
- A02 Cryptographic failures
|
|
46
|
+
- A03 Injection (SQL, NoSQL, OS command, etc.)
|
|
47
|
+
- A04 Insecure design
|
|
48
|
+
- A05 Security misconfiguration
|
|
49
|
+
- A06 Vulnerable / outdated components (overlap com Camada 2)
|
|
50
|
+
- A07 Identification + authentication failures
|
|
51
|
+
- A08 Software / data integrity failures
|
|
52
|
+
- A09 Security logging + monitoring failures
|
|
53
|
+
- A10 Server-side request forgery (SSRF)
|
|
54
|
+
|
|
55
|
+
Output: `.dw/secure-audit/owasp-findings.md` por categoria ordenado por severity.
|
|
56
|
+
|
|
57
|
+
### Camada 2: Trivy + native lockfile audit
|
|
58
|
+
|
|
59
|
+
Roda em paralelo:
|
|
60
|
+
- `trivy fs <project>` — scans SCA (CVEs conhecidas), secret leaks, IaC issues.
|
|
61
|
+
- `trivy config <project>` — scans Terraform / Dockerfile / K8s configs.
|
|
62
|
+
- Native auditor por linguagem (npm audit / pip-audit / dotnet list / cargo audit) — CVEs lockfile-level.
|
|
63
|
+
|
|
64
|
+
Output: `.dw/secure-audit/trivy-findings.md` + `.dw/secure-audit/lockfile-findings.md`.
|
|
65
|
+
|
|
66
|
+
### Camada 3: Supply-chain compromise check
|
|
67
|
+
|
|
68
|
+
Cruza dependency tree contra:
|
|
69
|
+
- **OSV.dev** — banco open-source de vulnerabilidades.
|
|
70
|
+
- **GitHub Advisories** — advisories publicadas npm/PyPI/etc.
|
|
71
|
+
- **Lista histórica hardcoded de pacotes maliciosos** — `event-stream`, `ua-parser-js`, `node-ipc`, etc. (pacotes compromised conhecidos por nome+versão range).
|
|
72
|
+
|
|
73
|
+
Output: `.dw/secure-audit/compromise-findings.md` por pacote afetado: COMPROMISED / suspicious / clean.
|
|
74
|
+
|
|
75
|
+
### Plus: outdated check
|
|
76
|
+
|
|
77
|
+
`npm outdated` / `pip list --outdated` / `dotnet list outdated` / `cargo outdated` pra identificar pacotes atrás em minor ou major.
|
|
78
|
+
|
|
79
|
+
Output: `.dw/secure-audit/outdated.md` com tiers (OUTDATED-MAJOR / OUTDATED-MINOR).
|
|
80
|
+
|
|
81
|
+
## Classificação
|
|
82
|
+
|
|
83
|
+
Todos os findings são classificados num desses tiers em `.dw/secure-audit/audit-summary.md`:
|
|
84
|
+
|
|
85
|
+
| Tier | Critério | Bloqueia | Ação Sugerida |
|
|
86
|
+
|------|----------|----------|---------------|
|
|
87
|
+
| **COMPROMISED** | Pacote conhecido como malicioso nessa faixa de versão | SIM | Remover imediato / pin pra versão segura |
|
|
88
|
+
| **CRITICAL** | CVE CVSS ≥9.0 OU exploit ativo OU auth bypass | SIM | Update ou substituir em 24h |
|
|
89
|
+
| **HIGH** | CVE CVSS 7.0–8.9 OU exploitável no contexto atual | SIM | Update ou substituir em 1 semana |
|
|
90
|
+
| **OUTDATED-MAJOR** | ≥1 major version atrás (ex: React 17 → 19) | NÃO | Planejar migração próximo trimestre |
|
|
91
|
+
| **OUTDATED-MINOR** | Minor/patch atrás | NÃO | Update rotineiro |
|
|
92
|
+
| **CLEAN** | Sem findings | NÃO | — |
|
|
93
|
+
|
|
94
|
+
## Hard Gates
|
|
95
|
+
|
|
96
|
+
Verdict é um de:
|
|
97
|
+
- **APROVADO** — sem CRITICAL, HIGH ou COMPROMISED. Arquivo verdict `.dw/secure-audit/audit-summary.md` status: APROVADO.
|
|
98
|
+
- **REPROVADO** — ≥1 CRITICAL, HIGH ou COMPROMISED sem ADR explícito ou remediação em andamento. Status: REPROVADO.
|
|
99
|
+
|
|
100
|
+
**`/dw-review` e `/dw-generate-pr` enforçam:** se linguagem do projeto é suportada E `.dw/secure-audit/audit-summary.md` mais recente está faltando OU REPROVADO, esses comandos retornam REPROVADO. Sem exceção. Sem flag bypass.
|
|
101
|
+
|
|
102
|
+
## Modo 1: Default (`/dw-secure-audit`)
|
|
103
|
+
|
|
104
|
+
1. **Detectar stack**: checar package.json / requirements.txt / *.csproj / Cargo.toml.
|
|
105
|
+
2. **Rodar todas as três camadas em paralelo** (onde possível):
|
|
106
|
+
- OWASP static (via skill `security-review`).
|
|
107
|
+
- Trivy + lockfile audit.
|
|
108
|
+
- Supply-chain compromise check.
|
|
109
|
+
3. **Rodar outdated check.**
|
|
110
|
+
4. **Agregar findings** por tier.
|
|
111
|
+
5. **Escrever summary** em `.dw/secure-audit/audit-summary.md`:
|
|
112
|
+
|
|
113
|
+
```markdown
|
|
114
|
+
# Security Audit — YYYY-MM-DD
|
|
115
|
+
|
|
116
|
+
## Veredicto: APROVADO / REPROVADO
|
|
117
|
+
|
|
118
|
+
## Resumo por Tier
|
|
119
|
+
| Tier | Contagem | Detalhe |
|
|
120
|
+
|------|----------|---------|
|
|
121
|
+
| COMPROMISED | N | <lista> |
|
|
122
|
+
| CRITICAL | N | <lista> |
|
|
123
|
+
| HIGH | N | <lista> |
|
|
124
|
+
| OUTDATED-MAJOR | N | <lista> |
|
|
125
|
+
| OUTDATED-MINOR | N | <lista> |
|
|
126
|
+
|
|
127
|
+
## Relatórios das camadas
|
|
128
|
+
- OWASP: `owasp-findings.md`
|
|
129
|
+
- Trivy: `trivy-findings.md`
|
|
130
|
+
- Lockfile: `lockfile-findings.md`
|
|
131
|
+
- Compromise: `compromise-findings.md`
|
|
132
|
+
- Outdated: `outdated.md`
|
|
133
|
+
|
|
134
|
+
## Próximos Passos
|
|
135
|
+
- Se APROVADO: comandos downstream desbloqueados.
|
|
136
|
+
- Se REPROVADO: rodar `/dw-secure-audit --plan` pra rascunhar remediação, OU `/dw-bugfix` per critical finding.
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Modo 2: Plan (`/dw-secure-audit --plan`)
|
|
140
|
+
|
|
141
|
+
Após default scan, rascunhar plano per-package em `.dw/secure-audit/remediation-plan.md`:
|
|
142
|
+
|
|
143
|
+
Pra cada finding com severity ≥HIGH (ou qualquer COMPROMISED):
|
|
144
|
+
1. Identificar arquivos afetados (imports do pacote em source).
|
|
145
|
+
2. Identificar testes que cobrem esses arquivos (scope da remediação).
|
|
146
|
+
3. Propor três opções:
|
|
147
|
+
- **Conservadora** — pin pra versão patched no mesmo major.
|
|
148
|
+
- **Balanceada** — update pra latest minor ou major.
|
|
149
|
+
- **Ousada** — substituir o pacote OU refatorar.
|
|
150
|
+
4. Trade-off analysis per opção (esforço, risco, blast radius).
|
|
151
|
+
|
|
152
|
+
Plan NÃO executa. Usuário revisa e escolhe opção per package, depois invoca `--execute`.
|
|
153
|
+
|
|
154
|
+
## Modo 3: Execute (`/dw-secure-audit --execute`)
|
|
155
|
+
|
|
156
|
+
Pra cada remediação aprovada:
|
|
157
|
+
1. Aplicar update (`npm install <pkg>@<ver>` ou equivalente).
|
|
158
|
+
2. Rodar testes scoped (testes em arquivos que importam o pacote).
|
|
159
|
+
3. Se testes falham → rodar `/dw-qa --fix` uma vez pra tentar recovery automático.
|
|
160
|
+
4. Se recovery sucesso → commit atômico `chore(security): update <pkg> to <ver> for <CVE>`.
|
|
161
|
+
5. Se recovery falha → REVERTER update, marcar BLOQUEADO em `remediation-plan.md`, surface ao usuário.
|
|
162
|
+
6. Após todas as remediações aprovadas: rodar `/dw-qa` como gate final. Se limpo, rodar `/dw-secure-audit` de novo pra verificar todos os findings resolvidos.
|
|
163
|
+
|
|
164
|
+
## Modo 4: CI (`/dw-secure-audit --scan-only`)
|
|
165
|
+
|
|
166
|
+
Output mínimo:
|
|
167
|
+
- Roda todas as três camadas.
|
|
168
|
+
- Escreve findings em disco.
|
|
169
|
+
- Exit code 0 se APROVADO, 1 se REPROVADO.
|
|
170
|
+
- Sem planejamento.
|
|
171
|
+
|
|
172
|
+
Pra gates pre-merge em CI.
|
|
173
|
+
|
|
174
|
+
## Skills Complementares
|
|
175
|
+
|
|
176
|
+
- `security-review`: **SEMPRE** — skill OWASP static review embarca no scan.
|
|
177
|
+
- `dw-source-grounding`: **SEMPRE** em modo `--plan` / `--execute` — recomendações de versão citam changelog/release notes oficial com `[source: <url>, version: X.Y, retrieved: YYYY-MM-DD]`.
|
|
178
|
+
- `dw-council`: auto opt-in quando ≥3 pacotes caem em COMPROMISED — stress-test multi-advisor sobre ordem e escopo da remediação.
|
|
179
|
+
- `dw-testing-discipline`: quando testes scoped falham em `--execute`, doutrina de testes aplica (sem flaky retry; investigar).
|
|
180
|
+
- `dw-debug-protocol`: quando finding critical é bug real no nosso código (não só outdated dep), six-step triage aplica.
|
|
181
|
+
|
|
182
|
+
## Constitution Gate
|
|
183
|
+
|
|
184
|
+
<critical>
|
|
185
|
+
- CRITICAL ou COMPROMISED finding sem ADR justificando aceitação explícita → verdict não pode ser APROVADO.
|
|
186
|
+
- Violações de princípios de constitution security-related (P-009 server-side auth, P-010 secrets-in-repo) escalonam findings — violação de princípio `severity: info` surface aqui vira HIGH.
|
|
187
|
+
</critical>
|
|
188
|
+
|
|
189
|
+
## Anti-patterns
|
|
190
|
+
|
|
191
|
+
- Rodar `--scan-only` em CI mas ninguém revisar relatório — REJECTs automatizados acumulam, time aprende a ignorar.
|
|
192
|
+
- Pular `--execute` e aplicar updates manualmente sem testes scoped — quebra coisas não relacionadas.
|
|
193
|
+
- Marcar findings como "false positive" sem ADR — padrão erode com tempo.
|
|
194
|
+
- Atualizar finding CRITICAL pra versão BLEEDING edge em vez de patched-and-stable — introduz bugs novos.
|
|
195
|
+
- Rodar scans só em PR time — supply-chain attacks acontecem overnight; considerar runs diários scheduled.
|
|
196
|
+
|
|
197
|
+
## Diretório de Output
|
|
198
|
+
|
|
199
|
+
```
|
|
200
|
+
.dw/secure-audit/
|
|
201
|
+
├── audit-summary.md # verdict + resumo de tiers
|
|
202
|
+
├── owasp-findings.md # Camada 1
|
|
203
|
+
├── trivy-findings.md # Camada 2 (SCA + secrets + IaC)
|
|
204
|
+
├── lockfile-findings.md # Camada 2 (native auditor)
|
|
205
|
+
├── compromise-findings.md # Camada 3
|
|
206
|
+
├── outdated.md # outdated check
|
|
207
|
+
├── remediation-plan.md # output de --plan
|
|
208
|
+
└── execution-log.md # log de --execute
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
Todos os arquivos commitados. Histórico de audit é parte do repo.
|
|
212
|
+
|
|
213
|
+
## Por que esta skill existe
|
|
214
|
+
|
|
215
|
+
Anteriormente dois comandos: `/dw-secure-audit` (single-shot gate) e `/dw-secure-audit --plan` (planner + remediator). O split era histórico — ambos compartilham mesmos scanners e findings overlapping. Consolidar reduz:
|
|
216
|
+
- Confusão ("qual rodar?").
|
|
217
|
+
- Scans duplicados (rodar ambos fazia 2× o trabalho do Trivy).
|
|
218
|
+
- Fragmentação de reports (dois dirs separados).
|
|
219
|
+
|
|
220
|
+
Novo comando tem ambos comportamentos como modos de flag. Default = era v0.6 `security-check` (gate). `--plan` e `--execute` cobrem era v0.7 `deps-audit` (planner + remediator).
|
|
221
|
+
|
|
222
|
+
</system_instructions>
|
|
@@ -79,7 +79,7 @@ npx -y @brunosps00/dev-workflow@latest update --lang=$DETECTED_LANG
|
|
|
79
79
|
O comando `update` sobrescreve arquivos gerenciados e PRESERVA:
|
|
80
80
|
- `.dw/rules/` (rules do usuário)
|
|
81
81
|
- `.dw/spec/` (PRDs e tasks em andamento)
|
|
82
|
-
- `.dw/intel/` (índice de codebase do `/dw-
|
|
82
|
+
- `.dw/intel/` (índice de codebase do `/dw-intel --build`)
|
|
83
83
|
|
|
84
84
|
O comando `update` também roda o passo de migração GSD automaticamente — se o projeto tem `.planning/` legado (de uso prévio do GSD), o conteúdo é migrado para `.dw/intel/`, `.dw/spec/active-session.md`, `.dw/spec/quick/`, etc., e `.planning/` é renomeado para `.planning.gsd-archive-<DATA>/` para inspeção. Os arquivos `.claude/commands/gsd/`, `.claude/agents/gsd-*.md`, `.claude/hooks/gsd-*.js` e `.claude/gsd-file-manifest.json` são removidos durante a migração.
|
|
85
85
|
|
|
@@ -22,7 +22,7 @@ Foque no problema, não na solução. Evite entrar em "como implementar".]
|
|
|
22
22
|
Fontes:
|
|
23
23
|
- PRDs em `.dw/spec/prd-*/prd.md` (features já entregues ou em desenvolvimento)
|
|
24
24
|
- `.dw/rules/index.md` (overview do produto)
|
|
25
|
-
- `.dw/intel/` (indice queryable — construido por `/dw-
|
|
25
|
+
- `.dw/intel/` (indice queryable — construido por `/dw-intel --build`, consultado via `/dw-intel`)
|
|
26
26
|
|
|
27
27
|
Formato:]
|
|
28
28
|
|
|
@@ -85,6 +85,6 @@ Idealmente 2-4 stories. Se são mais de 5, provavelmente não é MVP.]
|
|
|
85
85
|
|
|
86
86
|
Escolha UM:
|
|
87
87
|
|
|
88
|
-
- **`/dw-
|
|
89
|
-
- **`/dw-run
|
|
88
|
+
- **`/dw-plan prd`** com este one-pager como input — quando a direção está clara mas precisamos detalhar user stories, acceptance criteria e passar ao techspec
|
|
89
|
+
- **`/dw-run`** — quando é um IMPROVES tão pequeno que cabe em task única (até 3 arquivos, sem novo endpoint/tela) — escreva um PRD curto antes
|
|
90
90
|
- **Parar aqui** — se alguma "Open Question" é bloqueante, parar e resolver com stakeholder antes de avançar
|
|
@@ -94,12 +94,12 @@ services: []
|
|
|
94
94
|
|
|
95
95
|
## Escopo MVP
|
|
96
96
|
|
|
97
|
-
[A primeira feature menor que voce vai entregar. Pensada como user stories — vai dirigir a primeira rodada de /dw-
|
|
97
|
+
[A primeira feature menor que voce vai entregar. Pensada como user stories — vai dirigir a primeira rodada de /dw-plan prd.]
|
|
98
98
|
|
|
99
99
|
- Como [persona], eu posso [acao] para que [beneficio]
|
|
100
100
|
- Como [persona], eu posso [acao] para que [beneficio]
|
|
101
101
|
|
|
102
|
-
Se voce ainda nao tem a primeira feature em mente, tudo bem — deixa placeholder e roda o /dw-
|
|
102
|
+
Se voce ainda nao tem a primeira feature em mente, tudo bem — deixa placeholder e roda o /dw-plan prd quando tiver.
|
|
103
103
|
|
|
104
104
|
## Nao Estou Fazendo (explicito)
|
|
105
105
|
|
|
@@ -115,7 +115,7 @@ Se voce ainda nao tem a primeira feature em mente, tudo bem — deixa placeholde
|
|
|
115
115
|
|
|
116
116
|
## Perguntas em Aberto
|
|
117
117
|
|
|
118
|
-
[O que este one-pager nao consegue responder sozinho. Resolva antes do /dw-
|
|
118
|
+
[O que este one-pager nao consegue responder sozinho. Resolva antes do /dw-plan prd ou escale para um stakeholder.]
|
|
119
119
|
|
|
120
120
|
- [pergunta 1]
|
|
121
121
|
- [pergunta 2]
|
|
@@ -124,6 +124,6 @@ Se voce ainda nao tem a primeira feature em mente, tudo bem — deixa placeholde
|
|
|
124
124
|
|
|
125
125
|
Escolha UM:
|
|
126
126
|
|
|
127
|
-
- **`/dw-
|
|
127
|
+
- **`/dw-plan prd`** — quando voce tem a primeira feature em mente e quer rascunhar o PRD em cima deste stack
|
|
128
128
|
- **`/dw-analyze-project`** — apos primeiro commit substancial, para enriquecer `.dw/rules/` com convencoes por modulo
|
|
129
|
-
- **`/dw-
|
|
129
|
+
- **`/dw-secure-audit --plan --scan-only`** — para confirmar que nenhuma dep vulneravel veio dos templates `create-*`
|
|
@@ -34,7 +34,7 @@ feat/prd-[nome-funcionalidade]
|
|
|
34
34
|
## Workflow
|
|
35
35
|
|
|
36
36
|
Cada task segue o fluxo:
|
|
37
|
-
1. `/dw-run
|
|
37
|
+
1. `/dw-run [N]_task.md` - Implementa a task
|
|
38
38
|
2. Testes unitários incluídos na implementação
|
|
39
39
|
3. Commit ao final da task (sem push)
|
|
40
40
|
4. Próxima task ou `/dw-generate-pr [branch-alvo]` quando todas concluídas
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: api-testing-recipes
|
|
3
|
-
description:
|
|
3
|
+
description: Use for API testing recipes (.http, pytest+httpx, supertest, WebApplicationFactory, reqwest). Invoked by /dw-qa in API mode and when authoring API tests. Default format is .http for IDE portability.
|
|
4
4
|
allowed-tools:
|
|
5
5
|
- Read
|
|
6
6
|
- Write
|
|
@@ -10,7 +10,7 @@ allowed-tools:
|
|
|
10
10
|
|
|
11
11
|
# api-testing-recipes
|
|
12
12
|
|
|
13
|
-
Curated library of **API-testing snippets** that `/dw-
|
|
13
|
+
Curated library of **API-testing snippets** that `/dw-qa` and `/dw-qa --fix` use when a project is API-only (no Playwright). Each recipe is a ready-to-customize block per stack; the default is `.http` (REST Client) for maximum portability across IDEs.
|
|
14
14
|
|
|
15
15
|
## Why a skill (not inline)
|
|
16
16
|
|
|
@@ -22,14 +22,14 @@ Curated library of **API-testing snippets** that `/dw-run-qa` and `/dw-fix-qa` u
|
|
|
22
22
|
|
|
23
23
|
Read this skill when:
|
|
24
24
|
|
|
25
|
-
- `/dw-
|
|
26
|
-
- `/dw-fix
|
|
25
|
+
- `/dw-qa` detected API mode (no UI deps in the manifest) or was invoked with `--api`.
|
|
26
|
+
- `/dw-qa --fix` is retesting a bug whose `evidence_type` is `api-log`.
|
|
27
27
|
- Generating a baseline test suite from an OpenAPI spec.
|
|
28
28
|
- Authoring contract checks against a backend.
|
|
29
29
|
|
|
30
30
|
Do NOT use when:
|
|
31
31
|
|
|
32
|
-
- The project has a UI and `/dw-
|
|
32
|
+
- The project has a UI and `/dw-qa` is in UI mode → use Playwright MCP instead.
|
|
33
33
|
- The user wants browser-level acceptance (forms, navigation, accessibility) — that's Playwright territory.
|
|
34
34
|
|
|
35
35
|
## Available Recipes
|
|
@@ -49,7 +49,7 @@ Picking order:
|
|
|
49
49
|
|
|
50
50
|
## How to Compose
|
|
51
51
|
|
|
52
|
-
The composing command (`/dw-
|
|
52
|
+
The composing command (`/dw-qa` API mode) follows this loop:
|
|
53
53
|
|
|
54
54
|
1. **Pick the recipe** based on the rules above.
|
|
55
55
|
2. **Read the recipe file** (`recipes/<name>.md`) for the variable conventions, test-matrix shape, and an example block.
|
|
@@ -135,4 +135,4 @@ Add one env var per role; the recipe reads them as needed. Tests that don't need
|
|
|
135
135
|
|
|
136
136
|
## What `dw-run-qa` does
|
|
137
137
|
|
|
138
|
-
In API mode, `/dw-
|
|
138
|
+
In API mode, `/dw-qa` reads `QA/test-credentials.md` (or `.env`) for the env var names, picks the recipe, and substitutes variables at test-generation time. The script files reference `@variable` references only — never raw tokens.
|
|
@@ -65,4 +65,4 @@ That's 9 test cases for one RF — the floor for a real API surface, not the cei
|
|
|
65
65
|
|
|
66
66
|
## How `dw-run-qa` uses this
|
|
67
67
|
|
|
68
|
-
When in API mode, `/dw-
|
|
68
|
+
When in API mode, `/dw-qa` walks each `RF-XX` in the PRD, runs through this matrix, and emits PASS/FAIL per RF — not per test case. A single FAIL in any tier marks the RF as FAIL and lands a `BUG-NN` entry pointing to the failing log line.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# OpenAPI-driven mode — generating tests from a spec
|
|
2
2
|
|
|
3
|
-
When the project exposes an OpenAPI spec (static `openapi.yaml`/`openapi.json`, or dynamic `/openapi.json` for FastAPI), `/dw-
|
|
3
|
+
When the project exposes an OpenAPI spec (static `openapi.yaml`/`openapi.json`, or dynamic `/openapi.json` for FastAPI), `/dw-qa` can derive a baseline test suite directly from it. This catches contract drift between code and spec for free.
|
|
4
4
|
|
|
5
5
|
## When to use this mode
|
|
6
6
|
|
|
@@ -20,13 +20,13 @@ The generated tests live alongside hand-written ones in `{{PRD_PATH}}/QA/scripts
|
|
|
20
20
|
|
|
21
21
|
## How to run it
|
|
22
22
|
|
|
23
|
-
`/dw-
|
|
23
|
+
`/dw-qa --from-openapi <spec-path-or-url>` — explicit. The `<spec-path-or-url>` can be:
|
|
24
24
|
|
|
25
25
|
- `./openapi.yaml`
|
|
26
26
|
- `http://localhost:3000/openapi.json` (FastAPI default)
|
|
27
27
|
- `http://localhost:3000/swagger/v1/swagger.json` (ASP.NET Core default)
|
|
28
28
|
|
|
29
|
-
Without the flag, `/dw-
|
|
29
|
+
Without the flag, `/dw-qa` auto-detects:
|
|
30
30
|
|
|
31
31
|
- File at repo root: `openapi.yaml`, `openapi.json`, `swagger.yaml`, `swagger.json`.
|
|
32
32
|
- Project running locally: `GET /openapi.json`, `GET /swagger/v1/swagger.json`, `GET /api-docs`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: docker-compose-recipes
|
|
3
|
-
description:
|
|
3
|
+
description: Use for docker-compose service blocks (postgres, redis, mailhog, minio, meilisearch, jaeger, traefik). Invoked by /dw-new-project, /dw-dockerize, or when composing dev/prod compose files.
|
|
4
4
|
allowed-tools:
|
|
5
5
|
- Read
|
|
6
6
|
- Write
|