@brunosps00/dev-workflow 0.9.0 → 0.10.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.
Files changed (72) hide show
  1. package/README.md +18 -19
  2. package/lib/constants.js +2 -10
  3. package/lib/migrate-gsd.js +1 -1
  4. package/package.json +1 -1
  5. package/scaffold/en/commands/dw-autopilot.md +6 -6
  6. package/scaffold/en/commands/dw-brainstorm.md +1 -1
  7. package/scaffold/en/commands/dw-bugfix.md +1 -0
  8. package/scaffold/en/commands/dw-code-review.md +1 -0
  9. package/scaffold/en/commands/dw-commit.md +6 -0
  10. package/scaffold/en/commands/dw-create-techspec.md +2 -0
  11. package/scaffold/en/commands/dw-deep-research.md +6 -0
  12. package/scaffold/en/commands/dw-deps-audit.md +1 -0
  13. package/scaffold/en/commands/dw-find-skills.md +4 -4
  14. package/scaffold/en/commands/dw-fix-qa.md +1 -0
  15. package/scaffold/en/commands/dw-generate-pr.md +1 -0
  16. package/scaffold/en/commands/dw-help.md +9 -29
  17. package/scaffold/en/commands/dw-intel.md +1 -1
  18. package/scaffold/en/commands/dw-refactoring-analysis.md +2 -1
  19. package/scaffold/en/commands/dw-review-implementation.md +28 -2
  20. package/scaffold/en/commands/dw-run-plan.md +2 -2
  21. package/scaffold/en/templates/idea-onepager.md +1 -1
  22. package/scaffold/pt-br/commands/dw-autopilot.md +6 -6
  23. package/scaffold/pt-br/commands/dw-brainstorm.md +1 -1
  24. package/scaffold/pt-br/commands/dw-bugfix.md +1 -0
  25. package/scaffold/pt-br/commands/dw-code-review.md +1 -0
  26. package/scaffold/pt-br/commands/dw-commit.md +6 -0
  27. package/scaffold/pt-br/commands/dw-create-techspec.md +2 -0
  28. package/scaffold/pt-br/commands/dw-deep-research.md +6 -0
  29. package/scaffold/pt-br/commands/dw-deps-audit.md +1 -0
  30. package/scaffold/pt-br/commands/dw-find-skills.md +4 -4
  31. package/scaffold/pt-br/commands/dw-fix-qa.md +1 -0
  32. package/scaffold/pt-br/commands/dw-generate-pr.md +1 -0
  33. package/scaffold/pt-br/commands/dw-help.md +9 -29
  34. package/scaffold/pt-br/commands/dw-intel.md +1 -1
  35. package/scaffold/pt-br/commands/dw-refactoring-analysis.md +2 -1
  36. package/scaffold/pt-br/commands/dw-review-implementation.md +21 -2
  37. package/scaffold/pt-br/commands/dw-run-plan.md +2 -2
  38. package/scaffold/pt-br/templates/idea-onepager.md +1 -1
  39. package/scaffold/skills/dw-codebase-intel/SKILL.md +1 -0
  40. package/scaffold/skills/dw-codebase-intel/references/api-design-discipline.md +138 -0
  41. package/scaffold/skills/dw-debug-protocol/SKILL.md +106 -0
  42. package/scaffold/skills/dw-debug-protocol/references/error-categorization.md +127 -0
  43. package/scaffold/skills/dw-debug-protocol/references/non-reproducible-strategy.md +108 -0
  44. package/scaffold/skills/dw-debug-protocol/references/six-step-triage.md +139 -0
  45. package/scaffold/skills/dw-debug-protocol/references/stop-the-line.md +52 -0
  46. package/scaffold/skills/dw-git-discipline/SKILL.md +120 -0
  47. package/scaffold/skills/dw-git-discipline/references/atomic-commits-discipline.md +158 -0
  48. package/scaffold/skills/dw-git-discipline/references/branch-hygiene.md +150 -0
  49. package/scaffold/skills/dw-git-discipline/references/trunk-based-pattern.md +82 -0
  50. package/scaffold/skills/dw-memory/SKILL.md +1 -2
  51. package/scaffold/skills/dw-simplification/SKILL.md +142 -0
  52. package/scaffold/skills/dw-simplification/references/behavior-preserving.md +148 -0
  53. package/scaffold/skills/dw-simplification/references/chestertons-fence.md +152 -0
  54. package/scaffold/skills/dw-simplification/references/complexity-metrics.md +147 -0
  55. package/scaffold/skills/dw-source-grounding/SKILL.md +128 -0
  56. package/scaffold/skills/dw-source-grounding/references/citation-protocol.md +108 -0
  57. package/scaffold/skills/dw-source-grounding/references/freshness-check.md +108 -0
  58. package/scaffold/skills/dw-source-grounding/references/source-priority.md +146 -0
  59. package/scaffold/skills/dw-verify/SKILL.md +0 -1
  60. package/scaffold/skills/vercel-react-best-practices/SKILL.md +4 -0
  61. package/scaffold/skills/vercel-react-best-practices/references/perf-discipline.md +122 -0
  62. package/scaffold/skills/webapp-testing/SKILL.md +5 -0
  63. package/scaffold/skills/webapp-testing/references/security-boundary.md +115 -0
  64. package/scaffold/skills/webapp-testing/references/three-workflow-patterns.md +144 -0
  65. package/scaffold/en/commands/dw-execute-phase.md +0 -149
  66. package/scaffold/en/commands/dw-plan-checker.md +0 -144
  67. package/scaffold/en/commands/dw-quick.md +0 -103
  68. package/scaffold/en/commands/dw-resume.md +0 -84
  69. package/scaffold/pt-br/commands/dw-execute-phase.md +0 -149
  70. package/scaffold/pt-br/commands/dw-plan-checker.md +0 -144
  71. package/scaffold/pt-br/commands/dw-quick.md +0 -103
  72. package/scaffold/pt-br/commands/dw-resume.md +0 -84
@@ -26,7 +26,7 @@ Uma etapa que invoca um comando `/dw-xxx` SO e considerada completa quando os ar
26
26
  ## Quando Usar
27
27
  - Use quando quiser ir de uma ideia ate um PR com minima intervencao manual
28
28
  - Use para features completas que passam por todo o pipeline (pesquisa, planejamento, execucao, qualidade)
29
- - NAO use para mudancas pontuais (use `/dw-quick`)
29
+ - NAO use para tasks pequenas e bem-escopadas — use `/dw-run-task` direto com um PRD curto
30
30
  - NAO use para corrigir bugs (use `/dw-bugfix`)
31
31
  - NAO use quando quiser controle manual entre cada fase (use os comandos individuais)
32
32
 
@@ -56,7 +56,7 @@ O autopilot para APENAS nestes 3 momentos:
56
56
 
57
57
  ## Retomada de Sessao
58
58
 
59
- Se este comando for invocado para retomar um autopilot interrompido (via `/dw-resume`):
59
+ Se este comando for re-invocado no mesmo PRD apos interrupcao:
60
60
 
61
61
  <critical>Leia o arquivo `autopilot-state.json` no diretorio do PRD. Pule TODAS as etapas listadas em `completed_steps`. Retome a execucao a partir de `current_step`. Gates ja passados (listados em `gates_passed`) NAO devem ser reapresentados.</critical>
62
62
 
@@ -149,7 +149,7 @@ Avalie se as tasks envolvem frontend:
149
149
  ### Etapa 8: Execucao
150
150
 
151
151
  Execute `/dw-run-plan` com o path do PRD.
152
- - Siga TODAS as instrucoes do comando, incluindo o gate nativo do plan-checker (PASS obrigatorio) e execucao paralela em waves via `/dw-execute-phase`
152
+ - Siga TODAS as instrucoes do comando, incluindo o gate nativo do plan-checker (PASS obrigatorio) e execucao paralela em waves via os agentes da skill bundled `dw-execute-phase`
153
153
  - Cada task segue `/dw-run-task` com validacao Level 1
154
154
 
155
155
  ### Etapa 9: Review de Implementacao (Loop)
@@ -250,11 +250,11 @@ Pergunte ao usuario: **"Commits realizados. Deseja gerar o Pull Request?"**
250
250
 
251
251
  ## Engine Nativo
252
252
 
253
- O autopilot depende de infraestrutura dev-workflow-native para inteligencia de codebase (`/dw-map-codebase` + `/dw-intel`), verificacao de plano (`/dw-plan-checker`), e execucao paralela (`/dw-execute-phase`). Os quatro vem bundled e nao precisam de dependencias externas. Veja as skills bundled `dw-codebase-intel` e `dw-execute-phase` em `.agents/skills/` para detalhes.
253
+ O autopilot depende de infraestrutura dev-workflow-native para inteligencia de codebase (`/dw-map-codebase` + `/dw-intel`) e dos agentes bundled de execucao de fase (plan-checker + executor em `.agents/skills/dw-execute-phase/agents/`). Tudo bundled, sem dependencias externas. Veja as skills bundled `dw-codebase-intel` e `dw-execute-phase` em `.agents/skills/` para detalhes.
254
254
 
255
255
  ## Persistencia de Estado
256
256
 
257
- <critical>O autopilot DEVE salvar seu estado apos cada etapa completada para permitir retomada via `/dw-resume` em caso de interrupcao.</critical>
257
+ <critical>O autopilot DEVE salvar seu estado apos cada etapa completada para permitir re-invocacao no mesmo PRD em caso de interrupcao.</critical>
258
258
 
259
259
  Salve o arquivo `.dw/spec/prd-[nome]/autopilot-state.json` com o seguinte formato:
260
260
 
@@ -286,7 +286,7 @@ Salve o arquivo `.dw/spec/prd-[nome]/autopilot-state.json` com o seguinte format
286
286
 
287
287
  - Atualize `current_step`, `completed_steps` e `step_artifacts` ANTES de iniciar a proxima etapa
288
288
  - Uma etapa SO vai para `completed_steps` apos verificar que seus artefatos existem no disco
289
- - Se a sessao cair, o `/dw-resume` lera este arquivo e continuara da etapa correta e revalidara os artefatos antes de confiar em `completed_steps`
289
+ - Se a sessao cair, re-invoque `/dw-autopilot` no mesmo PRD; o comando le `autopilot-state.json` e continua da etapa correta, revalidando artefatos antes de confiar em `completed_steps`
290
290
  - Ao finalizar o pipeline (apos commit ou PR), remova o arquivo ou marque `"status": "completed"`
291
291
 
292
292
  <critical>Apos CADA etapa completada, exiba o bloco de progresso atualizado ao usuario. Isso e OBRIGATORIO — o usuario DEVE ver o que foi feito e o que vem a seguir. Se uma etapa foi pulada, o motivo DEVE aparecer no bloco de progresso.</critical>
@@ -109,7 +109,7 @@ Use este comando quando o usuario quiser:
109
109
  - lista curta e executavel
110
110
  - se apropriado, sugira qual comando usar em seguida:
111
111
  - `/dw-create-prd` (principal sucessor; aceita one-pager como input reduzindo perguntas de clarificação)
112
- - `/dw-quick` (se é IMPROVES pequeno que cabe em task única, ≤3 arquivos)
112
+ - `/dw-run-task` (se é IMPROVES pequeno que cabe em task única com um PRD curto)
113
113
  - `/dw-create-techspec`
114
114
  - `/dw-create-tasks`
115
115
  - `/dw-bugfix`
@@ -15,6 +15,7 @@
15
15
 
16
16
  Quando disponíveis no projeto em `./.agents/skills/`, use estas skills como suporte contextual sem substituir este comando:
17
17
 
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.
18
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).
19
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
20
21
  - `webapp-testing`: use quando a correção requer fluxo E2E/reteste reproduzível em uma web app
@@ -24,6 +24,7 @@ Quando disponíveis no projeto em `./.agents/skills/`, use estas skills como apo
24
24
  - `dw-review-rigor`: **SEMPRE** — aplica de-duplication (mesmo pattern em N arquivos = 1 finding), severity ordering (critical → high → medium → low), verify-before-flag, skip-what-linter-catches, e signal-over-volume. A tabela "Problemas Encontrados" do relatório segue essa disciplina.
25
25
  - `dw-verify`: **SEMPRE** — invocada antes de emitir verdict `APROVADO` ou `APROVADO COM RESSALVAS`. Sem VERIFICATION REPORT PASS (test + lint + build), o verdict não pode sair como APROVADO.
26
26
  - `/dw-security-check`: **SEMPRE para projetos TS/Python/C#/Rust** — invocado como step 6.7 (Camada de Segurança) antes de emitir verdict. Se o projeto usa linguagem suportada e `security-check.md` não existe OU tem status REJECTED, o verdict é **REPROVADO** — sem exceção.
27
+ - `dw-simplification`: use quando o diff toca código denso ou tortuoso — aplica Chesterton's Fence (entender POR QUÊ antes de propor remoção), protocolo de refactor preservando comportamento (test gate antes/depois) e métricas de complexidade (ciclomática, cognitiva, depth, fan-out) para que findings de "simplifique isso" sejam concretos, não opinativos.
27
28
  - `security-review`: use quando auth, autorização, input externo, upload, SQL, integração externa, secrets, SSRF, XSS ou superfícies sensíveis estiverem presentes
28
29
  - `vercel-react-best-practices`: use quando o diff tocar React/Next.js para revisar padrões de renderização, fetching, bundle, hidratação e performance
29
30
 
@@ -9,6 +9,12 @@
9
9
  ## Posição no Pipeline
10
10
  **Antecessor:** `/dw-run-task` ou `/dw-bugfix` | **Sucessor:** `/dw-generate-pr`
11
11
 
12
+ ## Skills Complementares
13
+
14
+ Quando disponíveis no projeto em `./.agents/skills/`, use estas skills como suporte operacional sem substituir este comando:
15
+
16
+ - `dw-git-discipline`: **SEMPRE** — aplica atomic commits (uma intenção lógica por commit; refactor separado de feature), formato Conventional Commits, lint+tests+build verdes ANTES do commit e proíbe pular hooks (`--no-verify`) ou amend de commits já empurrados. Em mudanças mistas, separa via `git add -p`.
17
+
12
18
  ## Variáveis de Entrada
13
19
 
14
20
  | Variável | Descrição | Exemplo |
@@ -23,6 +23,7 @@
23
23
  Quando disponíveis no projeto em `./.agents/skills/`, use como apoio:
24
24
 
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
+ - `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.
26
27
  - `vercel-react-best-practices`: use quando definir arquitetura frontend para projetos React/Next.js
27
28
  - `ui-ux-pro-max`: use quando definir decisões de design system, paletas de cores, tipografia e estilo UI no TechSpec
28
29
  - `security-review`: use quando a feature tocar auth, autorização ou manipulação de dados sensíveis
@@ -32,6 +33,7 @@
32
33
  <critical>Se `.dw/intel/` existir, a consulta via `/dw-intel` é OBRIGATÓRIA antes de redigir o techspec. NÃO pule este passo.</critical>
33
34
  - Execute internamente: `/dw-intel "padrões arquiteturais e decisões técnicas do projeto"`
34
35
  - Alinhe propostas com padrões existentes; sinalize desvios explicitamente
36
+ - Quando o techspec define endpoints de API, consulte TAMBÉM `dw-codebase-intel/references/api-design-discipline.md` (Hyrum's Law, contract-first, error semantics, boundary validation, versionamento) — o novo endpoint deve seguir convenções já presentes em `apis.json`, e não impor "best practices" externas que conflitem com os padrões existentes.
35
37
 
36
38
  Se `.dw/intel/` NÃO existir:
37
39
  - Use `.dw/rules/` como contexto, caindo para grep
@@ -5,6 +5,12 @@ Você é um assistente de pesquisa avançada capaz de conduzir investigações p
5
5
  <critical>NUNCA fabrique citações - se não encontrar fonte, diga explicitamente</critical>
6
6
  <critical>A bibliografia DEVE conter TODAS as citações usadas no corpo do relatório, sem abreviações ou ranges</critical>
7
7
 
8
+ ## Skills Complementares
9
+
10
+ | Skill | Gatilho |
11
+ |-------|---------|
12
+ | `dw-source-grounding` | **SEMPRE** — aplica o protocolo Detect → Fetch → Implement → Cite com hierarquia estrita de fontes (docs oficiais versionadas > changelogs > web standards > compat tables; Stack Overflow / blogs / training data são só descoberta). Cada finding termina com `[source: <url>, version: X.Y, retrieved: YYYY-MM-DD]`; a bibliografia e construida a partir dessas citacoes. |
13
+
8
14
  ## Quando Usar
9
15
  - Use para análise abrangente multi-fonte, comparações de tecnologia ou revisões do estado da arte que exigem evidências citadas
10
16
  - NÃO use para buscas simples, debugging ou perguntas que podem ser respondidas com 1-2 buscas
@@ -29,6 +29,7 @@ Este comando e **distinto** do `/dw-security-check`:
29
29
  | `dw-verify` | **SEMPRE** — toda fase emite VERIFICATION REPORT (comandos rodados, exit codes, artefatos) antes da proxima fase comecar |
30
30
  | `dw-review-rigor` | **SEMPRE** — aplica deduplicacao (mesmo advisory em N pacotes = 1 finding com lista afetada), severity ordering, e signal-over-volume na lista OUTDATED-MINOR |
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
+ | `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". |
32
33
  | `dw-council` | Opt-in automatico quando >=3 pacotes caem em tier COMPROMISED — stress-test multi-conselheiro sobre ordem e escopo de remediacao |
33
34
  | `webapp-testing` | Opcional — quando o projeto e frontend e a fase de testes escopados precisa de selecao Playwright-aware |
34
35
 
@@ -15,7 +15,7 @@ Voce e um assistente de descoberta de skills neste workspace. Sua funcao e ajuda
15
15
 
16
16
  ## Posicao no Pipeline
17
17
 
18
- **Predecessor:** qualquer pergunta exploratoria | **Sucessor:** nenhum (fluxo independente). Se nao achar skill, caia para `/dw-brainstorm` (explorar ideias) ou `/dw-quick` (mudanca pequena one-off) quando aplicavel.
18
+ **Predecessor:** qualquer pergunta exploratoria | **Sucessor:** nenhum (fluxo independente). Se nao achar skill, caia para `/dw-brainstorm` (explorar ideias) ou `/dw-run-task` (mudanca pequena one-off) quando aplicavel.
19
19
 
20
20
  ## Skills Complementares
21
21
 
@@ -81,7 +81,7 @@ Catalogo: https://skills.sh/
81
81
  - Reconheca que nao houve match, sem inventar
82
82
  - Ofereca ajudar direto com capacidades gerais
83
83
  - Sugira `/dw-brainstorm` se o usuario quer explorar antes de construir
84
- - Sugira `/dw-quick` se cabe em uma mudanca pequena (<= 3 arquivos, sem PRD)
84
+ - Sugira `/dw-run-task` se cabe em uma mudanca pequena (<= 3 arquivos, sem PRD)
85
85
  - Mencione `npx skills init <nome>` como caminho para criar a skill que falta
86
86
 
87
87
  ## Categorias Comuns
@@ -128,7 +128,7 @@ Pesquisei skills sobre "<query>" e nao achei match forte
128
128
 
129
129
  Posso ajudar direto. Ou:
130
130
  /dw-brainstorm "<sua ideia>" — explorar abordagens antes
131
- /dw-quick "<mudanca pequena>" — se cabe em uma task curta
131
+ /dw-run-task "<mudanca pequena>" — se cabe em uma task curta (escreva PRD curto antes)
132
132
  npx skills init <nome> — criar voce mesmo se vale a pena reutilizar
133
133
  ```
134
134
 
@@ -150,7 +150,7 @@ Posso ajudar direto. Ou:
150
150
  `dw-find-skills` porta a skill `find-skills` (do bundle superpowers do Claude, `~/.agents/skills/find-skills/SKILL.md`) para um comando do workflow `dw-*` — assim toda plataforma suportada (Claude Code, Codex, Copilot, OpenCode) ganha a mesma porta de descoberta. Adaptacoes para o dev-workflow:
151
151
 
152
152
  - Integracao com o pipeline: `/dw-help <keyword>` roteia para ca quando bate em `skill`/`find skill`/`install skill`/`extend agent`.
153
- - Fallback para `/dw-brainstorm` ou `/dw-quick` quando nao acha skill — mantem o usuario dentro do workflow ao inves de despeja-lo de maos vazias.
153
+ - Fallback para `/dw-brainstorm` ou `/dw-run-task` quando nao acha skill — mantem o usuario dentro do workflow ao inves de despeja-lo de maos vazias.
154
154
  - Pergunta explicita de escopo (`-g` vs local) antes de instalar, em vez de assumir global.
155
155
 
156
156
  Credito: skill `find-skills` do ecossistema superpowers do Claude e o projeto `npx skills` / [skills.sh](https://skills.sh/).
@@ -18,6 +18,7 @@ Você é um assistente IA especializado em correção de bugs pós-QA com retest
18
18
 
19
19
  Quando disponíveis no projeto em `./.agents/skills/`, use estas skills como suporte operacional sem substituir este comando:
20
20
 
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`.
21
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`.
22
23
  - `webapp-testing`: (modo UI) suporte para estruturar retestes, capturas e scripts quando complementar ao Playwright MCP
23
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
@@ -14,6 +14,7 @@
14
14
  | Skill | Gatilho |
15
15
  |-------|---------|
16
16
  | `dw-verify` | **SEMPRE** — invocada antes do `git push`. Sem VERIFICATION REPORT PASS na sessão após a última edição de código, o PR **NÃO** pode ser criado. |
17
+ | `dw-git-discipline` | **SEMPRE** — valida naming de branch (`<tipo>/<escopo>` kebab-case), histórico atomic-commit (cada commit single-intent, mensagem conventional), tempo de vida da branch (flag se >7 dias) e escopo da PR (sugere split se diff > ~400 linhas). Descrição da PR segue summary + test plan, não dump de `git log`. |
17
18
  | `/dw-security-check` | **SEMPRE para projetos TS/Python/C#/Rust** — `security-check.md` com status ≠ REJECTED é obrigatório para projetos em linguagem suportada. |
18
19
 
19
20
  <critical>Hard gate 1 (verify): se a sessão atual não tem um VERIFICATION REPORT PASS de `dw-verify` produzido APÓS a última edição/commit, PARAR e invocar `dw-verify` antes de prosseguir. PR é um artefato permanente — exige o maior rigor de verificação.</critical>
@@ -23,20 +23,14 @@ Você é um assistente de ajuda do workspace. Quando invocado, apresente ao usu
23
23
  | qa, teste visual, playwright | `/dw-run-qa` | QA E2E com browser automation |
24
24
  | refactor, smell, fowler | `/dw-refactoring-analysis` | Auditoria de code smells priorizada |
25
25
  | design, ui, redesign | `/dw-redesign-ui` | Auditoria + propostas + implementação visual |
26
- | decisão, adr, arquitetura | `/dw-adr` | Registrar Architecture Decision Record |
27
26
  | debate, council, stress-test, opiniões | `/dw-brainstorm --council` ou `/dw-create-techspec --council` | Invoca `dw-council` para debate multi-advisor |
28
27
  | security, segurança, vulnerabilidade, owasp, trivy, cve | `/dw-security-check` | Check multi-camada rígido (OWASP estático + Trivy SCA/IaC + audit nativo) para TS/Python/C#/Rust |
29
28
  | supply chain, outdated, comprometido, pacote malicioso, atualizar deps, npm audit, pip-audit | `/dw-deps-audit` | Detecta + classifica + plano de update por pacote com QA escopada. Vai além do `/dw-security-check` adicionando remediação. |
30
29
  | skill, achar skill, instalar skill, ecossistema, capacidade, estender agente | `/dw-find-skills` | Descobre skills no skills.sh / `npx skills` e instala global ou local |
31
30
  | projeto novo, scaffold, bootstrap, comecar, iniciar projeto, fullstack, monorepo | `/dw-new-project` | Entrevista de stack + tools create-* + docker-compose para dev. Roda apos `npx dev-workflow init`. |
32
31
  | dockerize, docker, dockerfile, compose, container, imagem prod, multi-stage | `/dw-dockerize` | Le projeto existente, brainstorm de base, gera Dockerfile + docker-compose para dev/prod/ambos, ou audita artefatos existentes. |
33
- | mapear codebase, indice intel, code map, knowledge graph, indice queryable | `/dw-map-codebase` | Constroi .dw/intel/ (stack/files/apis/deps/arch) para /dw-intel e outros comandos pararem de re-explorar o codebase. |
34
- | executar fase, tasks paralelas, wave, dispatch, commits atomicos | `/dw-execute-phase` | Roda uma fase de PRD em waves com commits atomicos por task, deviation handling e gate hard de plan-checker antes de tocar codigo. |
35
- | plan check, verificar plano, validacao de plano, goal backward | `/dw-plan-checker` | Verificacao goal-backward de tasks.md antes da execucao. PASS / REVISE / BLOCK em 6 dimensoes. |
36
32
  | refinamento, refine, idea, one-pager, ideia | `/dw-brainstorm --onepager` | Refinamento de ideia com Product Inventory + classification (IMPROVES/CONSOLIDATES/NEW) + one-pager durável |
37
33
  | reverter, rollback de task | `/dw-revert-task` | Revert seguro com check de dependências |
38
- | hotfix, mudança rápida | `/dw-quick` | Task pontual com garantias sem PRD |
39
- | retomar, onde parei | `/dw-resume` | Restaura contexto da sessão anterior |
40
34
  | pesquisa, research | `/dw-deep-research` | Pesquisa multi-fonte com citações |
41
35
  | ideia, brainstorm | `/dw-brainstorm` | Ideação estruturada com trade-offs |
42
36
  | atualizar dev-workflow | `/dw-update` | Atualiza para versão npm mais recente |
@@ -117,9 +111,6 @@ Este workspace utiliza um sistema de comandos AI que automatiza o ciclo completo
117
111
  | `/dw-bugfix` | Analisa e corrige bugs (triagem bug vs feature) | Target + descrição | Fix + commit OU PRD (se feature) |
118
112
  | `/dw-fix-qa` | Corrige bugs documentados no QA e retesta com evidências | Path do PRD | Código + `QA/bugs.md` + `QA/qa-report.md` atualizados |
119
113
  | `/dw-redesign-ui` | Audita, propõe e implementa redesign visual de páginas/componentes | Página/componente alvo | Brief de redesign + código |
120
- | `/dw-quick` | Executa task pontual com garantias do workflow sem PRD | Descrição da mudança | Código + commit |
121
- | `/dw-resume` | Restaura contexto da sessão e sugere próximo passo | (nenhum) | Resumo + sugestão |
122
- | `/dw-intel` | Consulta inteligência do codebase sobre padrões e arquitetura | Pergunta | Resposta com fontes |
123
114
  | `/dw-autopilot` | Orquestrador completo: de um desejo até o PR com mínima intervenção | Descrição do desejo | PRD + código + commits + PR |
124
115
 
125
116
  ### Análise e Pesquisa
@@ -154,11 +145,15 @@ Este workspace utiliza um sistema de comandos AI que automatiza o ciclo completo
154
145
  | `/dw-generate-pr` | Push + cria PR + copia body + abre URL | Branch alvo | PR no GitHub |
155
146
  | `/dw-revert-task` | Reverte com segurança os commits de uma task específica (check de dependências + confirmação) | Path do PRD + número da task | Commits revertidos + `tasks.md` atualizado |
156
147
 
157
- ### Decisões Arquiteturais
148
+ ### Comandos internos (usados por outros dw-* commands; raramente invocados direto)
158
149
 
159
- | Comando | O que faz | Input | Output |
160
- |---------|-----------|-------|--------|
161
- | `/dw-adr` | Registra um Architecture Decision Record (ADR) para decisão não-trivial durante o PRD | Path do PRD + título | `.dw/spec/<prd>/adrs/adr-NNN.md` + cross-refs atualizadas |
150
+ | Comando | O que faz | Tipicamente invocado por |
151
+ |---------|-----------|--------------------------|
152
+ | `/dw-adr` | Registra Architecture Decision Record durante execução do PRD | `/dw-create-techspec`, `/dw-run-task` quando surge decisão não-trivial |
153
+ | `/dw-intel` | Consulta o índice do codebase em `.dw/intel/` | `/dw-create-prd`, `/dw-create-techspec`, `/dw-code-review` etc. |
154
+ | `/dw-map-codebase` | Constroi/refresca o índice queryable em `.dw/intel/` | `/dw-analyze-project` (auto-roda após geração de rules) |
155
+
156
+ Esses ficam expostos como slash commands para uso manual ocasional (ex.: registrar ADR rapidamente mid-sessão, consultas ad-hoc no codebase) mas a maioria dos usuários nunca invoca direto — eles são chamados pelos comandos high-level acima.
162
157
 
163
158
  ### Utilitários
164
159
 
@@ -245,16 +240,6 @@ Inspiradas em skills do projeto [Compozy](https://github.com/compozy/compozy) (`
245
240
  /dw-autopilot "descrição do que quer construir" # Pesquisa → PRD → Tasks → Código → QA → PR
246
241
  ```
247
242
 
248
- ### Task Rápida
249
- ```bash
250
- /dw-quick "descrição da mudança" # Implementa + valida + commit
251
- ```
252
-
253
- ### Retomar Sessão
254
- ```bash
255
- /dw-resume # Restaura contexto + sugere próximo passo
256
- ```
257
-
258
243
  ### Consultar Codebase
259
244
  ```bash
260
245
  /dw-intel "como funciona X neste projeto?" # Resposta com fontes
@@ -287,9 +272,7 @@ workspace/
287
272
  │ │ ├── dw-review-implementation.md
288
273
  │ │ ├── dw-deep-research.md
289
274
  │ │ ├── dw-intel.md
290
- │ │ ├── dw-quick.md
291
275
  │ │ ├── dw-redesign-ui.md
292
- │ │ ├── dw-resume.md
293
276
  │ │ ├── dw-bugfix.md
294
277
  │ │ ├── dw-fix-qa.md
295
278
  │ │ ├── dw-commit.md
@@ -339,10 +322,7 @@ workspace/
339
322
  - Sim. O comando é framework-agnostic. Para React usa react-doctor e `vercel-react-best-practices`; para Angular usa `ng lint` e Angular DevTools. Design visual (`ui-ux-pro-max`) funciona com qualquer framework.
340
323
 
341
324
  **Q: Como obtenho inteligência do codebase e execução paralela?**
342
- - Os dois são nativos do dev-workflow desde a v0.9.0. Rode `/dw-map-codebase` para construir o índice queryable em `.dw/intel/`, depois `/dw-intel "<pergunta>"` para consultá-lo. Para execução paralela, `/dw-execute-phase` dispatcha tasks em waves com commits atômicos por task. Sem dependência externa.
343
-
344
- **Q: O `/dw-quick` substitui o `/dw-run-task`?**
345
- - Não. `/dw-quick` é para mudanças pontuais sem PRD. `/dw-run-task` executa tasks de um plano estruturado com PRD e TechSpec.
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.
346
326
 
347
327
  **Q: O `/dw-autopilot` substitui todos os outros comandos?**
348
328
  - Não. Ele orquestra os comandos existentes em sequência. Você ainda pode usar cada comando individualmente para controle manual. O autopilot é para quando quer ir do desejo ao PR com mínima intervenção.
@@ -10,7 +10,7 @@ Voce e um assistente de inteligencia do codebase. Este comando responde pergunta
10
10
  - Use para entender como algo funciona no projeto (fluxo de auth, modelo de dados, superficie de rotas)
11
11
  - Use para encontrar padroes, convencoes ou decisoes arquiteturais
12
12
  - Use para verificar se algo ja existe antes de implementar
13
- - NAO use para implementar mudancas (use `/dw-quick` ou `/dw-run-task`)
13
+ - NAO use para implementar mudancas (use `/dw-run-task`)
14
14
 
15
15
  ## Posicao no Pipeline
16
16
 
@@ -21,8 +21,9 @@ Pré-requisito: Execute `/dw-analyze-project` primeiro para entender padrões e
21
21
  Quando disponíveis no projeto em `./.agents/skills/`, use como suporte analítico sem substituir este comando:
22
22
 
23
23
  - `dw-review-rigor`: **SEMPRE** — ao catalogar code smells, aplicar de-duplication (mesmo smell em N arquivos = 1 entrada com affected list), severity ordering nos P0-P3, signal-over-volume (máx ~20 findings; manter críticos, podar marginais). Smell com ADR justificatório baixa para `low` no máximo.
24
+ - `dw-simplification`: **SEMPRE** — todo smell flagueado passa pelo filtro Chesterton's Fence (o que o construto FAZ, por que foi adicionado, o que quebra se removido). Smells sem resposta clara para "por que isso está aqui" caem para `info` com nota de investigação, em vez de virarem proposta de refactor. Métricas de complexidade fundamentam severidade (complexidade cognitiva ≥16 ou nesting depth ≥4 = candidato `high`; <10 = `low` no máximo).
24
25
  - `security-review`: delegue preocupações de segurança para este skill — não duplique
25
- - `vercel-react-best-practices`: delegue padrões de performance React/Next.js para este skill
26
+ - `vercel-react-best-practices`: delegue padrões de performance React/Next.js para este skill — ao sinalizar smells de perf, siga `references/perf-discipline.md` (measure → identify → fix → verify → guard) e cite a métrica + ferramenta, não vibes
26
27
 
27
28
  ## Ferramentas de Análise
28
29
 
@@ -313,6 +313,25 @@
313
313
 
314
314
  <critical>NÃO APROVE requisitos sem evidência concreta no código</critical>
315
315
  <critical>ANALISE o código real, não confie apenas nos checkboxes do tasks.md</critical>
316
- <critical>Se 100% dos requisitos foram implementados e NÃO há gaps: NÃO entre em plan mode, NÃO crie tasks. Apenas apresente o relatório e ENCERRE.</critical>
317
- <critical>Se gaps forem encontrados, entre no loop de fix-review automaticamente. NÃO aguarde instruções do usuário para corrigir gaps. Máximo de 3 ciclos antes de marcar como BLOCKED.</critical>
316
+ <critical>Se 100% dos requisitos foram implementados e NÃO há gaps: NÃO entre em plan mode, NÃO crie tasks. Apresente o relatório Level 2 e siga para Level 3 (próxima seção).</critical>
317
+ <critical>Se gaps forem encontrados, entre no loop de fix-review automaticamente. NÃO aguarde instruções do usuário para corrigir gaps. Máximo de 3 ciclos antes de marcar como BLOCKED. Level 3 só roda após o loop chegar em APPROVED no Level 2.</critical>
318
+
319
+ ## Level 3 — Camada de Qualidade (auto-invocada no fim)
320
+
321
+ Após Level 2 (cobertura do PRD) chegar em APPROVED, **invoque automaticamente `/dw-code-review`** para adicionar a camada formal de qualidade (best practices, SOLID, DRY, complexity, security, convenções). Resolve a expectativa do usuário de que um review único cubra tanto "entregamos tudo?" (Level 2) quanto "o que entregamos está bem feito?" (Level 3).
322
+
323
+ Pipeline:
324
+
325
+ 1. Após Level 2 APPROVED, rode `/dw-code-review {{PRD_PATH}}` com o mesmo escopo de PRD.
326
+ 2. Aguarde `/dw-code-review` produzir veredito (APPROVED / APPROVED WITH CAVEATS / REJECTED).
327
+ 3. Escreva resumo consolidado em `{{PRD_PATH}}/QA/review-consolidated.md` referenciando ambos.
328
+ 4. Status final combina os dois vereditos:
329
+ - Level 2 APPROVED + Level 3 APPROVED → consolidado APPROVED
330
+ - Level 2 APPROVED + Level 3 APPROVED WITH CAVEATS → consolidado APPROVED WITH CAVEATS
331
+ - Level 2 APPROVED + Level 3 REJECTED → consolidado REJECTED (Level 3 vence)
332
+
333
+ ### Flag para pular Level 3
334
+
335
+ `/dw-review-implementation --no-code-review` pula Level 3 e emite só Level 2.
336
+
318
337
  </system_instructions>
@@ -158,7 +158,7 @@ Se uma tarefa FALHAR durante a execução:
158
158
 
159
159
  ### Verificação de Plano (Pré-Execução)
160
160
 
161
- Antes de iniciar execução, delegue para `/dw-plan-checker {{PRD_PATH}}`:
161
+ Antes de iniciar execução, spawne o **agente plan-checker** de `.agents/skills/dw-execute-phase/agents/plan-checker.md`:
162
162
  - O agente plan-checker verifica as 6 dimensões (cobertura de requisitos, completude da task, soundness de dependência, wiring de artefatos, budget de contexto, compliance de constraints)
163
163
  - Se REVISE: apresente os issues e sugira correções. Máximo 3 ciclos via `/dw-create-tasks --revise`
164
164
  - Se BLOCK: suba o conflito para o usuário, NÃO auto-replan
@@ -166,7 +166,7 @@ Antes de iniciar execução, delegue para `/dw-plan-checker {{PRD_PATH}}`:
166
166
 
167
167
  ### Execução Paralela (Wave-Based)
168
168
 
169
- Após PASS do plan-checker, delegue para `/dw-execute-phase {{PRD_PATH}}`:
169
+ Após PASS do plan-checker, spawne o **agente executor** de `.agents/skills/dw-execute-phase/agents/executor.md`:
170
170
  - O agente executor analisa o campo `Depends on:` de cada task para montar o grafo de dependências
171
171
  - Agrupa tasks em waves:
172
172
  - Wave 1: tasks sem dependências (rodam em paralelo)
@@ -86,5 +86,5 @@ Idealmente 2-4 stories. Se são mais de 5, provavelmente não é MVP.]
86
86
  Escolha UM:
87
87
 
88
88
  - **`/dw-create-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-quick`** — quando é um IMPROVES tão pequeno que cabe em task única (até 3 arquivos, sem novo endpoint/tela)
89
+ - **`/dw-run-task`** — 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
@@ -95,6 +95,7 @@ If no `.dw/intel/` exists at all, `/dw-intel` falls back to `.dw/rules/` (seeded
95
95
  - `references/intel-format.md` — schema for each `.dw/intel/` file with examples.
96
96
  - `references/incremental-update.md` — how partial updates work (which files to re-read, how to merge with existing entries).
97
97
  - `references/query-patterns.md` — how `/dw-intel` answers different question shapes (where-is, what-uses, architecture-of, dependency-of).
98
+ - `references/api-design-discipline.md` — Hyrum's Law, contract-first design, error semantics, boundary validation, versioning. Use when intel feeds techspec authoring (`/dw-create-techspec`) for endpoints — design must respect existing project conventions surfaced in `apis.json`. Adapted from [`addyosmani/agent-skills/api-design`](https://github.com/addyosmani/agent-skills/tree/main/api-design) (MIT).
98
99
 
99
100
  ## Inspired by
100
101
 
@@ -0,0 +1,138 @@
1
+ # API design discipline — contract-first, convention-respecting
2
+
3
+ > Adapted from [`addyosmani/agent-skills/api-design`](https://github.com/addyosmani/agent-skills/tree/main/api-design) (MIT). Patterns adapted to dev-workflow's context where intel feeds techspec authoring; emphasis is on respecting the project's existing conventions over imposing external standards.
4
+
5
+ When designing or extending APIs, the goal is not "follow REST best practices" — it's "fit this project's contract and remain stable." This file frames the discipline.
6
+
7
+ ## Hyrum's Law
8
+
9
+ > With a sufficient number of users of an API, it does not matter what you promise in the contract: all observable behaviors of your system will be depended on by somebody.
10
+
11
+ Practical consequence: any field returned, any header sent, any error format used, any timing characteristic — at least one consumer probably depends on it. Changing it breaks them. This is true even for behaviors you consider "implementation details."
12
+
13
+ Implications:
14
+
15
+ 1. **Be deliberate about what you expose.** Returning `{ ok: true, data: ... }` instead of just `data` adds an observable that future consumers will couple to.
16
+ 2. **Default to the smallest contract that satisfies known consumers.** Adding more later is easy; removing later is breaking.
17
+ 3. **Treat the contract as load-bearing infrastructure.** Schema docs, type definitions, and OpenAPI/JSON Schema spec files are part of the contract, not metadata.
18
+
19
+ ## Read project intel before designing
20
+
21
+ When intel is available (`.dw/intel/` populated), read it first:
22
+
23
+ - `apis.json` — what shapes already exist? Naming patterns? Pagination style?
24
+ - `arch.md` — how do existing endpoints group? Which layer owns what?
25
+ - `stack.json` — what's the framework? Schema validator? Serializer?
26
+
27
+ A new API should look LIKE existing APIs in the project. If the project uses snake_case in JSON, your new endpoint uses snake_case. If existing endpoints return `{ data, meta }`, yours does too. Imposing an external "best practice" that conflicts with existing patterns adds inconsistency for no payoff.
28
+
29
+ ## Contract-first design
30
+
31
+ Before writing the handler, write the contract:
32
+
33
+ ```typescript
34
+ // API contract (TypeScript-first; equivalent in OpenAPI/Zod/etc.)
35
+ interface CreateOrderRequest {
36
+ customer_id: string;
37
+ items: { sku: string; qty: number }[];
38
+ shipping_address: Address;
39
+ }
40
+
41
+ interface CreateOrderResponse {
42
+ order_id: string;
43
+ status: 'pending' | 'confirmed';
44
+ estimated_ship_date: string; // ISO-8601
45
+ }
46
+
47
+ interface CreateOrderError {
48
+ code: 'invalid_input' | 'inventory_unavailable' | 'payment_declined';
49
+ message: string;
50
+ details?: Record<string, unknown>;
51
+ }
52
+ ```
53
+
54
+ The contract is reviewed BEFORE implementation. Errors caught here cost minutes; errors caught after release cost hours of migration.
55
+
56
+ ## Error semantics
57
+
58
+ Errors are part of the contract. Common pitfalls:
59
+
60
+ - **Generic 500 with no body.** Caller can't differentiate transient from permanent → over-retries.
61
+ - **Different error shapes per endpoint.** Caller can't write a unified error handler.
62
+ - **Validation errors mixed with auth errors mixed with server errors.** Status codes alone aren't enough; codes must be discriminating.
63
+
64
+ Discipline:
65
+
66
+ - Pick one error shape (e.g., `{ code, message, details? }` or RFC 7807 ProblemDetails). Use it everywhere.
67
+ - Distinguish: validation (`400`/`422`), auth (`401`/`403`), not-found (`404`), conflict (`409`), rate-limit (`429`), retryable server error (`503`), permanent server error (`500`).
68
+ - Document error codes alongside the request/response shape. Callers code against codes, not English messages.
69
+
70
+ ## Boundary validation
71
+
72
+ Validate at the API boundary, not deep inside.
73
+
74
+ - Use a schema validator (Zod, Joi, Pydantic, etc.) that matches the project's stack.
75
+ - Reject malformed input with a structured error before any business logic runs.
76
+ - Trust internal callers; validate external input.
77
+
78
+ The same principle applies on the response: type-check what you serialize. A handler returning `customer.email` when there's a possibility of `customer === null` produces a 500 in production — caught in development with strict typing.
79
+
80
+ ## Versioning
81
+
82
+ When the contract changes incompatibly, version. Common strategies:
83
+
84
+ | Strategy | Trade-off |
85
+ |----------|-----------|
86
+ | URL versioning (`/v1/orders`, `/v2/orders`) | Visible, simple; URL clutter |
87
+ | Header versioning (`Accept: application/vnd.app.v2+json`) | Cleaner URLs; less discoverable |
88
+ | Body versioning (`{ version: 2, ... }`) | Flexible per-request; more parsing complexity |
89
+
90
+ Pick the project's existing strategy; don't introduce a second one. Changing strategy is itself a breaking change.
91
+
92
+ When deprecating a version:
93
+
94
+ 1. Announce deprecation date in docs and response headers (`Deprecation: ...`, `Sunset: ...`).
95
+ 2. Continue to serve the old version for the announced period.
96
+ 3. Provide a migration guide for callers.
97
+ 4. Remove ONLY after the deprecation period and confirmation no callers remain.
98
+
99
+ ## Pagination
100
+
101
+ | Style | When |
102
+ |-------|------|
103
+ | Offset/limit (`?offset=20&limit=10`) | Small datasets, simple UIs. Breaks under concurrent inserts (skip/dup rows). |
104
+ | Cursor-based (`?cursor=abc&limit=10`) | Large datasets, infinite scroll. Stable under writes. |
105
+ | Page-based (`?page=3&per_page=10`) | UI-driven, equivalent to offset under the hood. |
106
+
107
+ Cursor is preferred for any list expected to grow large or change during browsing. Don't mix styles across the API.
108
+
109
+ ## Idempotency
110
+
111
+ Operations that can be retried (POST creating something, PUT updating, DELETE removing) need idempotency guarantees:
112
+
113
+ - **Idempotency keys:** caller sends a unique key with each request; server deduplicates.
114
+ - **Conditional requests:** use ETags / `If-Match` headers for safe concurrent updates.
115
+ - **Replay-safe semantics:** the operation produces the same outcome regardless of how many times it's retried.
116
+
117
+ Without these, retries cause duplicates (orders, charges, emails) — common production bug.
118
+
119
+ ## When the project has its own conventions
120
+
121
+ If `.dw/intel/apis.json` shows a strong existing pattern (e.g., all endpoints use `snake_case`, return `{ data, meta }`, use cursor pagination, error format `{ error: { code, message } }`):
122
+
123
+ - Follow it. Don't propose a "better" alternative without explicit user buy-in.
124
+ - Document the convention in the techspec so future contributors stay aligned.
125
+ - Inconsistency hurts more than imperfection.
126
+
127
+ ## Anti-patterns
128
+
129
+ - Designing the handler before the contract — handler implementation forces awkward shapes.
130
+ - Returning different shapes for success and error (callers need bifurcating type guards everywhere).
131
+ - Stuffing multiple operations into one endpoint (`POST /process`) — opaque, hard to test, hard to monitor.
132
+ - Using HTTP status 200 with a body indicating failure — callers can't trust standard error handling.
133
+ - Breaking changes shipped without a version bump.
134
+ - Adding "nice to have" fields to the response that aren't documented — callers will couple to them anyway (Hyrum).
135
+
136
+ ## Integration with dev-workflow
137
+
138
+ Use this discipline when authoring techspecs (`/dw-create-techspec`) or refactoring API surfaces. Cite `apis.json` evidence in the techspec — "existing endpoints use cursor pagination (apis.json:42); this endpoint follows the same pattern."
@@ -0,0 +1,106 @@
1
+ ---
2
+ name: dw-debug-protocol
3
+ description: Use when investigating a bug — applies stop-the-line discipline plus a six-step triage (reproduce → localize → reduce → fix root cause → guard → verify) so you fix what's actually broken instead of papering over symptoms.
4
+ ---
5
+
6
+ # Debug Protocol
7
+
8
+ > **Inspired by** [`addyosmani/agent-skills/debugging-and-error-recovery`](https://github.com/addyosmani/agent-skills/tree/main/debugging-and-error-recovery) (MIT). Patterns and stop-the-line philosophy adapted from Addy Osmani's work; specific guidance and references rewritten to fit dev-workflow's bugfix and QA loops.
9
+
10
+ The fastest path through a bug is the disciplined one. This skill encodes the discipline.
11
+
12
+ ## When this skill applies
13
+
14
+ - Any failing test, runtime error, or "it works locally but not in CI" report.
15
+ - Reproducing a user-reported issue.
16
+ - A regression after a refactor or dependency bump.
17
+ - An intermittent / non-reproducible bug (see `references/non-reproducible-strategy.md`).
18
+
19
+ If you're tempted to "just try a fix and see," stop. Run the protocol below first.
20
+
21
+ ## The four core rules
22
+
23
+ ### 1. Stop the line
24
+
25
+ The moment a bug is confirmed, stop adjacent work. Do not pile features on top of broken state. Branches stay frozen until the bug is reproduced and a fix path is identified — *or* explicitly downgraded ("not blocking, scheduled for later").
26
+
27
+ See `references/stop-the-line.md` for when this rule bends.
28
+
29
+ ### 2. Reproduce before fixing
30
+
31
+ Without a deterministic reproduction, you cannot know whether your "fix" worked. The reproduction is the hypothesis test. Even a flaky bug needs a *reproducible-enough* test (e.g., "fails 8/10 runs") before fixing.
32
+
33
+ If you cannot reproduce: see `references/non-reproducible-strategy.md`. Don't fix on guess.
34
+
35
+ ### 3. Find the root cause, not the nearest cause
36
+
37
+ The first place the stack trace lights up is rarely where the bug LIVES. The bug lives wherever the invariant was violated. Fixing the symptom (e.g., catching a `null` you shouldn't have produced) hides the real issue and makes the next bug worse.
38
+
39
+ ### 4. Guard against recurrence before declaring done
40
+
41
+ Every fix produces an artifact: a regression test that proves the bug exists, then proves it's fixed. Without this artifact, the bug WILL come back during the next refactor.
42
+
43
+ ## The six-step triage
44
+
45
+ Each bug runs through these six steps, in order. See `references/six-step-triage.md` for detail.
46
+
47
+ | Step | Question | Output |
48
+ |------|----------|--------|
49
+ | 1. Reproduce | Can I trigger this on demand? | A failing test or repro script |
50
+ | 2. Localize | Where does the invariant break? | A file:line where state goes wrong |
51
+ | 3. Reduce | What's the smallest input that triggers it? | Minimal repro (1-3 lines if possible) |
52
+ | 4. Fix root cause | Why is the invariant violated? Fix THAT. | Code change at the cause, not the symptom |
53
+ | 5. Guard | What test would have caught this? | Regression test added to suite |
54
+ | 6. Verify end-to-end | Does the original report scenario now pass? | Manual or scripted E2E proof |
55
+
56
+ Do not skip steps. Skipping reduce → bigger fix than needed. Skipping guard → repeat bug in 3 weeks.
57
+
58
+ ## Error categorization
59
+
60
+ Bugs cluster into a small number of categories. Knowing the category narrows where to look — see `references/error-categorization.md`:
61
+
62
+ | Category | Typical symptom | Where to look first |
63
+ |----------|-----------------|---------------------|
64
+ | UI / render | Wrong pixels, missing element, click does nothing | Component tree, prop flow, conditional render |
65
+ | Network / I/O | Timeout, 500, partial data | Request payload, headers, error path, retry |
66
+ | State / data | Wrong value displayed, stale read | State management, cache invalidation, race |
67
+ | Concurrency | "Sometimes fails", deadlock | Async order, locks, await placement |
68
+ | Configuration | Works dev, fails prod | Env vars, secrets, build flags, infra config |
69
+ | Logic | Branch returns wrong result | Guard conditions, off-by-one, boolean polarity |
70
+
71
+ ## Non-reproducible bugs
72
+
73
+ Some bugs only happen in production, only on certain users, only at certain times. Don't fix them on intuition. The protocol in `references/non-reproducible-strategy.md` covers:
74
+
75
+ - Timing/race conditions: instrument with logs first, fix second
76
+ - Environment-specific: bisect by environment delta
77
+ - State-dependent: capture user state at moment of failure
78
+ - Frequency-dependent: deploy logging, wait for next occurrence
79
+
80
+ A "fix" for an unreproduced bug is a guess. Mark it as such in the commit message.
81
+
82
+ ## Verification before declaring done
83
+
84
+ A bug is fixed when:
85
+
86
+ 1. The repro from step 1 now passes.
87
+ 2. The regression test from step 5 was committed.
88
+ 3. Lint + tests + build are all GREEN.
89
+ 4. The original report scenario (E2E) was verified — by you, or with a screenshot/log/run trace if not directly reproducible.
90
+
91
+ If any are missing, the bug is "fixed pending verification," not "fixed."
92
+
93
+ ## Integration with dev-workflow commands
94
+
95
+ - `/dw-bugfix` runs this skill end-to-end. The bug report is decomposed into steps 1-6 and progressed atomically.
96
+ - `/dw-fix-qa` uses this skill when QA findings are bug-shaped (failing scenario rather than missing feature). Each finding becomes a six-step run.
97
+ - `/dw-code-review` flags fixes that skipped step 5 (no regression test) as REJECTED.
98
+
99
+ ## When to escalate / pair
100
+
101
+ After 60 minutes stuck at step 2 (localize) or step 4 (root cause), surface the situation to the user:
102
+
103
+ - "I've exhausted hypotheses A/B/C; here's what I tried and what's left."
104
+ - Don't silently spin. Fresh eyes find what stuck eyes miss.
105
+
106
+ This is not failure — it's protocol. Stuck > 1 hour is a signal, not a flaw.