@brunosps00/dev-workflow 2.1.0 → 2.3.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 (129) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/CHANGELOG.md +118 -0
  3. package/README.md +17 -6
  4. package/lib/constants.js +24 -20
  5. package/lib/init.js +34 -0
  6. package/lib/instruction-health.js +38 -0
  7. package/lib/post-update.js +2 -1
  8. package/lib/validate.js +3 -1
  9. package/package.json +1 -1
  10. package/scaffold/config/routing.json +61 -23
  11. package/scaffold/en/agent-instructions.md +31 -135
  12. package/scaffold/en/commands/dw-analyze-project.md +2 -0
  13. package/scaffold/en/commands/dw-autopilot.md +22 -243
  14. package/scaffold/en/commands/dw-bugfix.md +9 -35
  15. package/scaffold/en/commands/dw-claude-run.md +29 -45
  16. package/scaffold/en/commands/dw-codex-run.md +30 -45
  17. package/scaffold/en/commands/dw-context-budget.md +6 -14
  18. package/scaffold/en/commands/dw-copilot-run.md +29 -41
  19. package/scaffold/en/commands/dw-generate-pr.md +2 -2
  20. package/scaffold/en/commands/dw-goal.md +11 -5
  21. package/scaffold/en/commands/dw-harness-audit.md +2 -0
  22. package/scaffold/en/commands/dw-help.md +8 -4
  23. package/scaffold/en/commands/dw-pause.md +1 -0
  24. package/scaffold/en/commands/dw-plan.md +14 -7
  25. package/scaffold/en/commands/dw-qa.md +2 -0
  26. package/scaffold/en/commands/dw-report.md +169 -0
  27. package/scaffold/en/commands/dw-resume.md +5 -11
  28. package/scaffold/en/commands/dw-review.md +4 -3
  29. package/scaffold/en/commands/dw-run.md +19 -165
  30. package/scaffold/en/commands/dw-skill-health.md +7 -0
  31. package/scaffold/en/commands/dw-update.md +18 -4
  32. package/scaffold/en/commands/dw-worktree.md +100 -0
  33. package/scaffold/en/references/command-routing.md +53 -0
  34. package/scaffold/en/references/execution-contract.md +55 -0
  35. package/scaffold/en/templates/frontend-quality-template.md +43 -0
  36. package/scaffold/en/templates/task-template.md +20 -40
  37. package/scaffold/en/templates/tasks-template.md +9 -6
  38. package/scaffold/en/templates/techspec-template.md +4 -0
  39. package/scaffold/pt-br/agent-instructions.md +31 -135
  40. package/scaffold/pt-br/commands/dw-analyze-project.md +2 -0
  41. package/scaffold/pt-br/commands/dw-autopilot.md +22 -243
  42. package/scaffold/pt-br/commands/dw-bugfix.md +9 -35
  43. package/scaffold/pt-br/commands/dw-claude-run.md +29 -46
  44. package/scaffold/pt-br/commands/dw-codex-run.md +30 -45
  45. package/scaffold/pt-br/commands/dw-context-budget.md +6 -14
  46. package/scaffold/pt-br/commands/dw-copilot-run.md +29 -43
  47. package/scaffold/pt-br/commands/dw-generate-pr.md +2 -2
  48. package/scaffold/pt-br/commands/dw-goal.md +11 -5
  49. package/scaffold/pt-br/commands/dw-harness-audit.md +2 -0
  50. package/scaffold/pt-br/commands/dw-help.md +8 -4
  51. package/scaffold/pt-br/commands/dw-pause.md +1 -0
  52. package/scaffold/pt-br/commands/dw-plan.md +14 -7
  53. package/scaffold/pt-br/commands/dw-qa.md +2 -0
  54. package/scaffold/pt-br/commands/dw-report.md +169 -0
  55. package/scaffold/pt-br/commands/dw-resume.md +7 -11
  56. package/scaffold/pt-br/commands/dw-review.md +4 -3
  57. package/scaffold/pt-br/commands/dw-run.md +19 -165
  58. package/scaffold/pt-br/commands/dw-skill-health.md +7 -0
  59. package/scaffold/pt-br/commands/dw-update.md +18 -4
  60. package/scaffold/pt-br/commands/dw-worktree.md +100 -0
  61. package/scaffold/pt-br/references/command-routing.md +53 -0
  62. package/scaffold/pt-br/references/execution-contract.md +55 -0
  63. package/scaffold/pt-br/templates/frontend-quality-template.md +43 -0
  64. package/scaffold/pt-br/templates/task-template.md +20 -40
  65. package/scaffold/pt-br/templates/tasks-template.md +9 -6
  66. package/scaffold/pt-br/templates/techspec-template.md +4 -0
  67. package/scaffold/scripts/hooks/git-guardrails.mjs +1 -0
  68. package/scaffold/scripts/lib/workflow-contract.mjs +101 -0
  69. package/scaffold/scripts/lib/worktree-gc.mjs +460 -0
  70. package/scaffold/skill-registry.json +23 -23
  71. package/scaffold/skills/dw-cli-run/SKILL.md +33 -208
  72. package/scaffold/skills/dw-cli-run/references/dispatch-tuning.md +14 -72
  73. package/scaffold/skills/dw-codebase-intel/SKILL.md +5 -39
  74. package/scaffold/skills/dw-codebase-intel/agents/intel-updater.md +1 -1
  75. package/scaffold/skills/dw-codebase-intel/references/agents-detail.md +7 -0
  76. package/scaffold/skills/dw-codebase-intel/references/files-in-dw-intel-detail.md +16 -0
  77. package/scaffold/skills/dw-codebase-intel/references/how-dw-intel-reads-this-detail.md +12 -0
  78. package/scaffold/skills/dw-codebase-intel/references/how-to-compose-the-typical-flow-detail.md +11 -0
  79. package/scaffold/skills/dw-council/SKILL.md +2 -17
  80. package/scaffold/skills/dw-council/references/integration-with-other-dw-commands-detail.md +7 -0
  81. package/scaffold/skills/dw-council/references/phase-2-tensions-and-rebuttals-detail.md +15 -0
  82. package/scaffold/skills/dw-domain-modeling/SKILL.md +1 -1
  83. package/scaffold/skills/dw-execute-phase/SKILL.md +12 -32
  84. package/scaffold/skills/dw-execute-phase/agents/executor.md +15 -252
  85. package/scaffold/skills/dw-execute-phase/agents/plan-checker.md +4 -207
  86. package/scaffold/skills/dw-execute-phase/references/atomic-commits.md +8 -18
  87. package/scaffold/skills/dw-execute-phase/references/de-sloppify-pass-optional-cleanup-task-detail.md +12 -0
  88. package/scaffold/skills/dw-execute-phase/references/deviation-rules-during-execution-detail.md +8 -0
  89. package/scaffold/skills/dw-execute-phase/references/how-the-two-agents-compose-detail.md +7 -0
  90. package/scaffold/skills/dw-execute-phase/references/plan-verification.md +9 -155
  91. package/scaffold/skills/dw-execute-phase/references/wave-coordination.md +6 -97
  92. package/scaffold/skills/dw-git-discipline/SKILL.md +2 -2
  93. package/scaffold/skills/dw-grilling/SKILL.md +1 -1
  94. package/scaffold/skills/dw-incident-response/SKILL.md +1 -64
  95. package/scaffold/skills/dw-incident-response/references/the-five-phases-detail.md +66 -0
  96. package/scaffold/skills/dw-llm-eval/SKILL.md +5 -53
  97. package/scaffold/skills/dw-llm-eval/references/agent-tool-use-evaluation-detail.md +23 -0
  98. package/scaffold/skills/dw-llm-eval/references/anti-patterns-will-block-in-dw-review-code-only-detail.md +9 -0
  99. package/scaffold/skills/dw-llm-eval/references/consistency-run-to-run-stability-detail.md +10 -0
  100. package/scaffold/skills/dw-llm-eval/references/integration-with-dev-workflow-commands-detail.md +6 -0
  101. package/scaffold/skills/dw-llm-eval/references/the-oracle-ladder-detail.md +15 -0
  102. package/scaffold/skills/dw-memory/SKILL.md +4 -50
  103. package/scaffold/skills/dw-memory/references/context-budget.md +8 -56
  104. package/scaffold/skills/dw-memory/references/promotion-decision-test-detail.md +30 -0
  105. package/scaffold/skills/dw-minimalism/SKILL.md +4 -5
  106. package/scaffold/skills/dw-review-rigor/SKILL.md +1 -54
  107. package/scaffold/skills/dw-review-rigor/references/the-five-rules-detail.md +56 -0
  108. package/scaffold/skills/dw-simplification/SKILL.md +2 -55
  109. package/scaffold/skills/dw-simplification/references/pattern-recognition-detail.md +11 -0
  110. package/scaffold/skills/dw-simplification/references/the-five-rules-detail.md +48 -0
  111. package/scaffold/skills/dw-source-grounding/SKILL.md +1 -56
  112. package/scaffold/skills/dw-source-grounding/references/the-protocol-detect-fetch-implement-cite-detail.md +58 -0
  113. package/scaffold/skills/dw-testing-discipline/SKILL.md +25 -177
  114. package/scaffold/skills/dw-testing-discipline/references/agent-guardrails.md +9 -167
  115. package/scaffold/skills/dw-testing-discipline/references/core-rules.md +3 -3
  116. package/scaffold/skills/dw-testing-discipline/references/mutation-testing.md +19 -0
  117. package/scaffold/skills/dw-testing-discipline/references/patterns.md +3 -12
  118. package/scaffold/skills/dw-ui-discipline/SKILL.md +2 -59
  119. package/scaffold/skills/dw-ui-discipline/references/frontend-engineering.md +46 -0
  120. package/scaffold/skills/dw-ui-discipline/references/the-four-grounding-questions-detail.md +61 -0
  121. package/scaffold/skills/dw-verify/SKILL.md +26 -148
  122. package/scaffold/skills/dw-verify/references/verification-discovery-and-attribution.md +2 -2
  123. package/scaffold/skills/humanizer/SKILL.md +2 -1
  124. package/scaffold/skills/security-review/SKILL.md +3 -183
  125. package/scaffold/skills/security-review/references/do-not-flag-detail.md +49 -0
  126. package/scaffold/skills/security-review/references/quick-patterns-reference-detail.md +56 -0
  127. package/scaffold/skills/security-review/references/review-process-detail.md +84 -0
  128. package/scaffold/skills/vercel-react-best-practices/SKILL.md +1 -90
  129. package/scaffold/skills/vercel-react-best-practices/references/quick-reference-detail.md +92 -0
@@ -1,179 +1,33 @@
1
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).
2
+ # Executar tasks aprovadas
3
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.
4
+ Use `/dw-run` para todas as tasks pendentes, `/dw-run <task-id>` para uma e `/dw-run --resume` para continuar. Inputs são ID da task e diretório ativo `.dw/spec/<prd>/`. Tasks e dependências precisam existir e estar aprovadas. Para investigação sem plano use `/dw-bugfix`.
9
5
 
10
- ## Posição no Pipeline
11
- **Antecessor:** `/dw-plan` (com tasks aprovadas) | **Sucessor:** `/dw-review` então `/dw-commit` + `/dw-generate-pr`
6
+ ## Escolha e preparação
12
7
 
13
- ## Modos
8
+ Leia `.dw/references/execution-contract.md` e o arquivo relevante da task. Consuma `execution-plan.json` quando existir; valide com `node .dw/scripts/lib/workflow-contract.mjs validate <plan.json>`. Confira IDs/dependências contra tasks.md. Tasks legadas schema 1.0 sem escolhas executam localmente. CLIs instaladas não implicam autorização cruzada.
14
9
 
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. |
10
+ Respeite decisões da constitution e IDs de requisitos (`FR-N.M` / `RF-N.M`). Ausência usa defaults não bloqueantes. Inspecione código relevante e regras do projeto; consulte `.dw/intel/` somente quando útil e confira atualização. Não exija mapa completo antes de cada task.
20
11
 
21
- ## Entradas
12
+ Carregue skills conforme a necessidade: `dw-verify` para evidência, `dw-memory` para decisões/checkpoints relevantes, `dw-testing-discipline` ao projetar testes, `dw-ui-discipline` para UI, `dw-llm-eval` para AI e `dw-execute-phase` para checagem de plano/dependências. Use `dw-search-first` para dependências novas e `dw-minimalism` para decisão concreta de abstração/escopo, não antes de cada função. Use `dw-simplification` para cleanup com escopo explícito após verificar. Para TDD/test first/red-green-refactor explícito, use `dw-testing-discipline/references/tdd-loop.md` nessa task.
22
13
 
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` |
14
+ ## Loop de execução
27
15
 
28
- ## Skills Complementares
16
+ 1. Arme `/dw-report` uma vez (idempotente, pule quando `DW_REPORT_AUTO=off`). Valide cobertura, grafo de dependências e critérios usando `dw-execute-phase`; corrija inconsistências internas antes de executar, pergunte só decisões materiais ausentes.
17
+ 2. Escolha próxima task cujas dependências estejam concluídas na branch de execução. Tasks independentes podem rodar juntas apenas com agentes/worktrees aprovados e integração definida. Um escritor por worktree; tasks acopladas sequenciais.
18
+ 3. Use executor/modelo/esforço/agentes aprovados. Escolhas locais executam no workflow atual. Escolhas cruzadas invocam `/dw-codex-run`, `/dw-claude-run` ou `/dw-copilot-run` com pacote preparado. O parent mantém o objetivo.
19
+ 4. Implemente critérios com padrões do projeto, testes da estratégia aprovada e falhas relevantes. No retorno do worker, inspecione diff e critérios independentemente; confira/reutilize evidência válida ou rode checks afetados via `dw-verify`. Corrija falhas no escopo automaticamente, usando a mesma sessão externa quando aplicável.
20
+ 5. Commite só mudanças da task após verificação válida; preserve commits atômicos e IDs de requisitos. Inclua status no commit e registre o SHA na coluna `Commit` de tasks.md e run-log.md. Inclua bookkeeping restante na próxima task ou commit final de metadados; nunca `git add .` sobre mudanças alheias.
21
+ 6. Atualize `execution-state.json`, `active-session.md` e run-log.md com tasks concluídas, escolhas, branch/worktree, sessões exatas, verificação e próximo passo. Continue tasks aprovadas restantes; `--checkpoint` pede pausa explícita entre waves.
22
+ 7. Após todas as tasks, rode `/dw-review` para cobertura de requisitos e qualidade. Corrija achados no escopo automaticamente; decisões do usuário só para mudança de escopo ou adiamento. Workflows completos continuam por `/dw-qa` aplicável e correções sob `/dw-goal` ou orquestrador chamador. Pedido de task única termina no handoff validado dessa task.
29
23
 
30
- Quando disponíveis em `./.agents/skills/`, estas skills são invocadas por task:
24
+ ## Retomada e bloqueios
31
25
 
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
- - Instincts (lazy): no início da task, carregue também qualquer instinct de alta confiança (`.dw/memory/instincts/`, confidence ≥0.7) cujo `trigger` case com a task — convenções aprendidas promovidas pelo `/dw-learn`. Case por trigger; nunca carregue o conjunto inteiro.
35
- - `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).
36
- - `dw-testing-discipline`: aplica placement doctrine, 6 agent guardrails e 25 anti-patterns ao adicionar testes.
37
- - `dw-testing-discipline` modo test-first: SOMENTE quando o texto da task ou o usuário disser explicitamente `TDD`, `test first` ou `red-green-refactor`, execute essa task por `references/tdd-loop.md` (confirmar seams públicas com o usuário → escrever UM teste vermelho → rodar e observar o vermelho → implementar o mínimo para verde → rodar e observar o verde → próximo slice; refactor só depois do loop via `dw-simplification`). Este não é o modo padrão do `/dw-run`.
38
- - `dw-ui-discipline`: quando task toca UI, as 4 grounding questions precisam ser respondidas antes de qualquer decisão visual.
39
- - `dw-llm-eval`: quando task toca código de feature AI, regras de reference dataset + oracle ladder se aplicam.
40
- - `dw-minimalism`: **antes de escrever código novo** — sobe o decision ladder YAGNI (precisa existir? reusar? stdlib? nativo? dep instalada? uma linha?) na intensidade ativa, depois escreve o mínimo. Passa novas dependências pro `dw-search-first`.
41
- - `vercel-react-best-practices`: quando task toca performance React/Next.js.
26
+ Pedido de resume já autoriza continuar. Inspecione estado salvo e worktree real sem perguntar “continuar?” novamente. Preserve tasks concluídas e escolhas aprovadas; confira dependências/evidência anterior. Recupere IDs ausentes só de logs da task com identidade validada; caso contrário reconstrua sessão nova no mesmo worktree sem descartar mudanças. Veja limitações entre provedores no execution-contract.
42
27
 
43
- ## Constitution Gate
28
+ Dependência ausente: conclua primeiro a task aprovada pendente; pergunte só se fora do plano. Falha de verificação: diagnostique, corrija e reexecute checks invalidados. Framework de teste ausente: descubra runner configurado antes de perguntar. Complexidade maior: registre desvio e divida/reordene dentro do escopo. Comportamento novo de produto, conflito arquitetural ou dependência não aprovada: proponha mudança material e aguarde só no trabalho dependente. Preserve checkpoints em impasse real ou pausa do usuário.
44
29
 
45
- <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>
46
-
47
- ## Inteligência do Codebase
48
-
49
- <critical>Se `.dw/intel/` existir, consulte via `/dw-intel` antes de implementar pra alinhar com padrões existentes.</critical>
50
- - Per-task: `/dw-intel "padrões para <tópico da task>"` para surfacar convenções relevantes.
51
-
52
- ## Modo 1: UMA task (`run <task-id>`)
53
-
54
- ### Pré-requisitos
55
- - `tasks.md` + per-task files existem em `.dw/spec/<prd>/`.
56
- - Dependências da task-alvo estão completadas (cheque seção "Depende de" do `task.md`).
57
-
58
- ### Comportamento
59
-
60
- 1. **Ler o task file:** `.dw/spec/<prd>/<task-id>_task.md`. Entender inputs, FRs cobertos, critérios de aceitação, subtasks.
61
- 2. **Plano de implementação:**
62
- - Liste arquivos a criar/modificar.
63
- - Identifique testes a adicionar por subtask.
64
- - Confirme dependências (se faltando, PARE e surface).
65
- 3. **Implementar:**
66
- - Siga padrões do projeto de `.dw/rules/` e `.dw/intel/`.
67
- - Aplique skills complementares (UI gate, test discipline, etc.).
68
- - Testes unitários obrigatórios para backend/services conforme testspec.
69
- - Match no framework de testes especificado em `.dw/rules/`.
70
- 4. **Validar (Level 1):**
71
- - Rodar comando de teste do projeto.
72
- - Checar critérios de aceitação do task file.
73
- - Rodar `dw-verify` para produzir Verification Report (test + lint + build GREEN).
74
- - Para frontend interativo, também validar comportamento real via recipes Playwright do `dw-testing-discipline` se risco de regressão for relevante.
75
- 5. **Commit:**
76
- - Mensagem atômica: `feat(<scope>): <título da task> (#<task-id>)`.
77
- - Referencie FRs cobertos.
78
- - Uma task = um commit (exceto se task tem subtask milestones explícitos que ganham commits separados).
79
- 6. **Atualizar tasks.md:** marcar `Status` da task como `Done` e escrever o SHA curto (`git rev-parse --short HEAD`) na coluna `Commit`. Esse é o único registro que liga a task ao seu diff — não pule.
80
- 7. **Reportar:** o que foi feito, testes adicionados, o que foi validado.
81
-
82
- ### CONDIÇÕES DE PARADA
83
- - Dependências não satisfeitas → perguntar ao usuário como prosseguir.
84
- - Verification Report FAIL → não commitar; reportar o que está quebrado.
85
- - Scope creep detectado mid-implementação → PARE e peça pra usuário escopar.
86
-
87
- ## Modo 2: TODAS as tasks pending (default `run`)
88
-
89
- ### Pré-requisitos
90
- - `tasks.md` + per-task files existem com dependências declaradas.
91
- - `tasks-validation.md` mostra PASS (ou override explícito).
92
- - Branch criada: `feat/prd-<feature-slug>`.
93
-
94
- ### Comportamento
95
-
96
- 1. **Plan check (via agente `dw-execute-phase/plan-checker`):**
97
- - Verificação goal-backward em 6 dimensões: essas tasks vão de fato entregar o que o PRD promete?
98
- - Se FAIL em qualquer dimensão, PARE e reporte ao usuário antes de qualquer código ser tocado.
99
- 2. **Construir grafo de dependência:**
100
- - Sort topológico das tasks.
101
- - Identificar tasks independentes que podem rodar em waves paralelas.
102
- 3. **Dispatch paralelo em waves (via agente `dw-execute-phase/executor`):**
103
- - Cada wave contém tasks sem dependência inter.
104
- - Executar waves serialmente; dentro de uma wave, tasks paralelas.
105
- - Per-task: mesmo fluxo Level 1 do Modo 1 (implementar → validar → commit atômico).
106
- 4. **Deviation handling:**
107
- - Se task encontra scope creep, PARE essa task, surface ao usuário.
108
- - Se task falha verificação, a wave para. Nenhuma wave subsequente roda até resolver.
109
- 5. **Checkpoint entre waves:**
110
- - Imprime resumo da wave: tasks completas, commits, deviations.
111
- - Continua automaticamente exceto se `--checkpoint` foi passado (aí aguarda OK).
112
- 6. **Level 2 review final:**
113
- - Após todas as tasks completarem, invoca automaticamente `/dw-review` (comando merged — roda PRD compliance check + code quality review).
114
- - Apresenta relatório consolidado.
115
- - Cycle de correções interativo: review surface gaps → usuário decide fix, adiar, ou aceitar.
116
-
117
- ### Output
118
-
119
- ```
120
- .dw/spec/<prd>/
121
- ├── active-session.md # escrito no checkpoint; consumido por --resume
122
- ├── run-log.md # log per-wave com SHAs de commit
123
- └── review-consolidated.md # review final L2+L3 (de /dw-review)
124
- ```
125
-
126
- ## Modo 3: Resume (`run --resume`)
127
-
128
- ### Pré-requisitos
129
- - `run` anterior (Modo 2) foi interrompido.
130
- - `active-session.md` existe no `.dw/spec/<prd>/` da PRD atual.
131
-
132
- ### Comportamento
133
-
134
- 1. Ler `active-session.md` pra determinar onde a sessão parou.
135
- 2. Surface ao usuário: "Resumindo da wave N, task X.0. Já completadas: <lista>. Continuar?"
136
- 3. Em confirmação, resume da próxima task pendente com mesmo comportamento Modo 2.
137
-
138
- Se `active-session.md` não existe mas tasks não-completadas existem, trate como Modo 2 fresh start.
139
-
140
- ## Em todos os modos: deviation handling
141
-
142
- Quando implementação não pode prosseguir como planejado:
143
-
144
- | Deviation | Ação |
145
- |-----------|------|
146
- | Task requer nova dependência não no TechSpec | PARE. Sugerir `/dw-plan techspec --update` pra revisar. |
147
- | Critério de aceitação ambíguo | PARE. Perguntar ao usuário. |
148
- | Decisão de test framework faltando | PARE. Usar `dw-testing-discipline` placement doctrine pra propor; pedir sign-off. |
149
- | Padrão de `.dw/rules/` não encaixa | PARE. Surface o atrito; proponha deviation justificada por ADR ou update das rules. |
150
- | Complexidade oculta emerge (task estimada 2h, parece 8h) | PARE. Surface; ou split task via `/dw-plan tasks --update` ou aceite delay com nota. |
151
-
152
- ## Reporting
153
-
154
- Após qualquer run (Modo 1, 2 ou 3 completar), imprima:
155
-
156
- - Tasks completas com SHAs de commit.
157
- - Contagem de arquivos tocados.
158
- - Testes adicionados (unit + E2E se aplicável).
159
- - Veredicto Verification Report por task.
160
- - Para Modo 2: status do review consolidado final.
161
- - Para Modo 2: deviations encontrados e como resolvidos.
162
-
163
- ## Anti-patterns
164
-
165
- - Pular `dw-verify` pra "economizar tempo antes do commit" — produz commits que não buildam.
166
- - Rodar tasks sem dependência satisfeita — produz commits que não funcionam isolados.
167
- - Deixar wave paralelo rodar sem watch por deviations — scope creep silencioso compõe.
168
- - Commitar múltiplas tasks num único commit — quebra bisect, quebra granularidade de revert.
169
- - Pular review Level 2 final no Modo 2 — entrega features que não batem com PRD.
170
-
171
- ## Diretrizes finais
172
-
173
- - Commits atômicos são não-negociáveis. Uma task = um commit (ou um subtask-bundle se explícito).
174
- - Testes são obrigatórios per estratégia do TechSpec.
175
- - Veredicto PASS do Verification Report é o gate, não o objetivo — nunca enfraquecer asserts pra passar.
176
- - Deviation surfacing é feature, não bug. Pare e pergunte. Usuário prefere interrupção a implementação errada.
177
- - Pra plans multi-dia, `--resume` é seu amigo. Não restart do zero.
30
+ ## Relatório final
178
31
 
32
+ Retorne IDs concluídos e SHAs, arquivos afetados, checks válidos, achados pendentes e próximo passo. `/dw-review` escreve `<prd-path>/QA/review-consolidated.md`. Estado/logs duráveis ficam no diretório da spec; audit/sessões dos workers ficam fora de worktrees descartáveis. Gate aprovado prova só seu escopo; nunca enfraqueça assertions nem esconda bloqueios. Merge, push e publicação exigem autorização aplicável.
179
33
  </system_instructions>
@@ -24,7 +24,14 @@ Você é o auditor de saúde de skills e agentes do dev-workflow.
24
24
 
25
25
  `SKILL.md` deve ser um roteador/protocolo curto. Regras longas, exemplos, paletas, receitas, services e assets ficam em references/assets/rules/recipes e são carregados sob demanda.
26
26
 
27
+ ## Descoberta e budgets de contexto
28
+
29
+ Confira instruções gerenciadas ≤6000 bytes, entrypoints ≤8000 bytes e descrições ≤250 caracteres. No código do pacote rode `npm run validate`; em consumidores inspecione arquivos instalados. Separe metadados de descoberta de corpos sob demanda. Aponte leituras incondicionais e gatilhos amplos sobrepostos; cópias por plataforma não implicam contexto duplicado. Confira referências e preserve atribuição/Structured Return ao compactar. Candidatos podem estar antigos: proponha atualização de routing.json após validar disponibilidade, sem sobrescrever escolhas silenciosamente.
30
+
27
31
  ## Saída
32
+
33
+ Quando `.dw/config/routing-defaults.json` existir, compare seus candidatos atuais com o `.dw/config/routing.json` do proprietário. Relate diferenças relevantes e valide modelos/capacidades propostos antes da adoção. Valores diferentes podem ser intencionais; não os trate como falha de migração nem sobrescreva automaticamente. Atribuições de tarefas aprovadas têm precedência sobre ambos os arquivos de candidatos.
34
+
28
35
  Retorne um relatório conciso com uma seção de retorno estruturado. Não delete arquivos.
29
36
 
30
37
  Inclua:
@@ -39,7 +39,7 @@ Manter apenas os 3 snapshots mais recentes (remover os mais antigos) para evitar
39
39
  Antes de atualizar, capture a versão instalada para poder reportar o delta:
40
40
 
41
41
  ```bash
42
- node -e "try { console.log(require('@brunosps00/dev-workflow/package.json').version) } catch(e) { console.log('not-cached-locally') }" 2>/dev/null
42
+ node -e 'try { const s = JSON.parse(require("node:fs").readFileSync(".dw/install-state.json", "utf8")); console.log(s.version || "unknown"); } catch { console.log("unknown"); }'
43
43
  ```
44
44
 
45
45
  ### 2. Detectar Idioma dos Comandos Instalados (Obrigatório)
@@ -72,7 +72,7 @@ Regras:
72
72
 
73
73
  ### 3. Executar o Update (Obrigatório)
74
74
 
75
- <critical>Use `npx -y @brunosps00/dev-workflow@latest` para FORÇAR a busca da versão mais recente no npm (ignora cache local). Passe `--lang=<DETECTED_LANG>` para evitar prompt interativo.</critical>
75
+ <critical>Use `npx -y @brunosps00/dev-workflow@latest` para selecionar a versão marcada como `latest` no npm. Passe `--lang=<DETECTED_LANG>` para evitar prompt interativo.</critical>
76
76
 
77
77
  ```bash
78
78
  npx -y @brunosps00/dev-workflow@latest update --lang=$DETECTED_LANG
@@ -91,9 +91,23 @@ Se o update falhar (erro de rede, permissão, pacote indisponível): reporte o e
91
91
  ### 4. Capturar Nova Versão
92
92
 
93
93
  ```bash
94
- node -e "console.log(require('@brunosps00/dev-workflow/package.json').version)" 2>/dev/null
94
+ node -e 'const s = JSON.parse(require("node:fs").readFileSync(".dw/install-state.json", "utf8")); if (s.package !== "@brunosps00/dev-workflow" || !s.version) process.exit(1); console.log(s.version);'
95
95
  ```
96
96
 
97
+ ### Checks de compatibilidade do upgrade
98
+
99
+ Leia o `.dw/commands/dw-update.md` atualizado após o CLI terminar. Use `.dw/install-state.json` e o output `Installed version` do CLI para a diferença de versões: um pacote executado por `npx` não precisa ser resolvível pelo `node_modules` do consumidor. Estado novo ausente ou inválido é falha de verificação; não declare sucesso do update.
100
+
101
+ Em um upgrade de versão anterior à 2.3.0 (ou versão legada desconhecida):
102
+
103
+ - Verifique a entrega de `.dw/references/execution-contract.md`, `.dw/scripts/lib/workflow-contract.mjs` e `.dw/templates/frontend-quality-template.md`. Comandos, skills, wrappers e blocos de instruções gerenciados são atualizados pelo `update` normal; não é necessário `--force`.
104
+ - Compare `.dw/config/routing.json` com o novo `.dw/config/routing-defaults.json` gerenciado durante `/dw-skill-health`. Mantenha escolhas ativas do proprietário e atribuições aprovadas. Proponha mudanças específicas de modelo/esforço após verificar capacidades; atualizar arquivos do scaffold não autoriza trocar provedores.
105
+ - Preserve `.dw/spec/`, `.dw/goals/`, `.dw/STATE.md`, estado de execução/sessão, rules e `.dw/templates/overrides/`. Planos schema 1.0 continuam válidos e locais por padrão. Para um `execution-plan.json` ativo, rode `node .dw/scripts/lib/workflow-contract.mjs validate <plan-path>`; relate planos inválidos sem reescrever aprovações ou zerar progresso. Novos planos de tarefas usam schema 1.1.
106
+ - Inspecione overrides de templates de tarefas por schemas/regras de roteamento antigos e relate diferenças que sobreponham os novos templates gerenciados; não substitua overrides do proprietário automaticamente.
107
+ - Se documentação de qualidade frontend for relevante e estiver ausente, faça `/dw-analyze-project` adicionar a baseline às rules existentes do módulo, com escopo nessa documentação. Preserve gates existentes; proponha ferramentas separadamente. Pule essa ação em `só atualize os arquivos`.
108
+
109
+ Não converta trabalho ativo à força nem regenere globalmente documentação de produto para adotar a versão. Registre findings de compatibilidade e mantenha o reload da sessão como passo final.
110
+
97
111
  ### 5. Reportar Resultado
98
112
 
99
113
  Apresente ao usuário:
@@ -157,7 +171,7 @@ Ex.: `npx -y @brunosps00/dev-workflow@0.4.5 update --lang=pt-br`
157
171
  ## Observações
158
172
 
159
173
  - `npx -y` evita o prompt "OK to install" quando o pacote não está em cache
160
- - `@latest` ignora o cache do npx e busca a tag `latest` do registry
174
+ - `@latest` seleciona a tag do registry; verifique o resultado instalado em vez de presumir que uma consulta ao pacote local identifica o CLI executado
161
175
  - `--lang=...` evita o prompt interativo de idioma; o valor vem da detecção automática na etapa 2
162
176
  - Este comando NÃO atualiza dependências Node do projeto do usuário, apenas o scaffold do dev-workflow
163
177
 
@@ -0,0 +1,100 @@
1
+ <system_instructions>
2
+ Você é o guardião do ciclo de vida das worktrees. Worktrees de delegação (uma por task `dw-*-run`, criadas como `../<projeto>-<slug>` ao lado do checkout principal) são baratas de criar e caras de esquecer: cada uma carrega seu próprio `node_modules`, saída de build e caches, e uma worktree mergeada que ninguém removeu é puro desperdício de disco (35 worktrees esquecidas = 40 GB num projeto real). Este comando é dono do ciclo inteiro — criar **preparada**, listar com **veredito**, remover só o que está **provadamente seguro**, mergear na **ordem segura** — por meio do script determinístico `.dw/scripts/lib/worktree-gc.mjs`. Ele nunca usa `--force`.
3
+
4
+ ## Quando Usar
5
+ - "Cria uma worktree pra X", "sobe uma worktree", e antes de qualquer dispatch WRITE de `/dw-codex-run`, `/dw-claude-run` ou `/dw-copilot-run` (o pre-flight deles chama `create` quando a worktree ainda não existe).
6
+ - "Limpa as worktrees", "quantas worktrees sobraram", "libera disco", logo após um merge, dentro do `/dw-pause`, e a partir do `/dw-harness-audit`.
7
+ - "Mergeia a worktree X" — a decisão explícita de merge do dono **depois** do gate.
8
+ - NÃO use pra mergear trabalho não revisado: o gate (`/dw-review` + `/dw-qa` + `/dw-secure-audit`) vem antes; `merge` só executa a ordem mecânica segura.
9
+
10
+ ## Posição no Pipeline
11
+ **Predecessor:** `/dw-plan` (spec + prompt prontos) ou qualquer task a delegar | **Sucessor:** `/dw-codex-run` / `/dw-claude-run` / `/dw-copilot-run` (após `create`); `/dw-commit` + `/dw-generate-pr` (após `merge`)
12
+
13
+ ## Modos
14
+
15
+ | Invocação | Comportamento |
16
+ |-----------|---------------|
17
+ | `/dw-worktree list [--base <branch>] [--json] [--strict]` | Tabela de toda worktree secundária: branch, tamanho aparente, idade, arquivos sujos, **veredito**, motivo. `--strict` sai com 3 quando existe qualquer entrada REMOVABLE/PRUNABLE (gancho de auditoria). |
18
+ | `/dw-worktree create <slug> [--branch <name>] [--base <branch>] [--no-prep]` | Cria `../<projeto>-<slug>` em `feat/<slug>` (ou `--branch`) a partir da branch base, depois roda os comandos de **prep** pra que um delegado nunca trabalhe cego (detectado pelo lockfile: `pnpm install --frozen-lockfile --prefer-offline` + `pnpm build:packages` quando esse script existe; `npm ci`; `yarn install --frozen-lockfile`; `bun install`; `uv sync`). Falha no prep = exit 2: a worktree existe mas **não despache** até corrigir. Imprime `WORKTREE=<path>`. |
19
+ | `/dw-worktree clean [--apply] [--older-than <dias>] [--keep-branches]` | **Dry-run por default.** Com `--apply`: remove toda worktree REMOVABLE, apaga a branch dela (merge verificado) e faz prune das registrações mortas. Entradas KEEP nunca são tocadas. |
20
+ | `/dw-worktree merge <slug\|path> [--base <branch>] [--keep-branches]` | A ordem segura, a partir do checkout principal: principal está na branch base e limpo → worktree limpa e sem processo dentro → `git merge --ff-only` → `git worktree remove` → apaga a branch → `git worktree prune`. Qualquer checagem que falhe aborta **antes** do merge com a correção exata; merge não-ff é recusado (rebase dentro da worktree, roda o gate de novo, mergeia de novo). |
21
+ | `/dw-worktree prune` | Descarta registrações cujo diretório já sumiu. |
22
+
23
+ ## Vereditos — o script decide; você reporta, não sobrescreve
24
+
25
+ | Veredito | Significado | Ação |
26
+ |----------|-------------|------|
27
+ | `REMOVABLE` | Head é ancestral de uma branch de integração, árvore limpa, nenhum processo com cwd dentro, não travada | `clean --apply` remove |
28
+ | `KEEP:unmerged` | N commits fora de qualquer branch de integração | Dono decide: mergear (`merge`), manter ou descartar explicitamente |
29
+ | `KEEP:dirty` | Arquivos não commitados ou não rastreados | Commit/stash dentro da worktree, ou o dono descarta explicitamente |
30
+ | `KEEP:in-use` | Um processo (dev server, execução de CLI, shell) tem o cwd dentro | Pare-o primeiro (`TaskStop`, ou o PID listado) |
31
+ | `KEEP:locked` | `git worktree lock` | Dono destrava |
32
+ | `KEEP:recent` | Só com `--older-than N`: mergeada mas último commit mais novo que N dias | GC por idade apenas |
33
+ | `PRUNABLE` | Diretório já sumiu | `prune` |
34
+
35
+ ## Regras Duras
36
+
37
+ <critical>Crie via `create`, nunca um `git worktree add` pelado. A convenção (`../<projeto>-<slug>`, branch a partir da base) é o que permite ao `list` e ao `clean` raciocinar sobre a árvore, e o passo de prep é o que impede o agente delegado de trabalhar cego (`tsc: Cannot find module`, `jest: not found`).</critical>
38
+
39
+ <critical>O fim de vida é no MESMO TURNO do merge. O turno que mergeia a branch de uma worktree também a remove: `merge` faz os dois numa chamada; se o merge aconteceu por outro meio (PR mergeado no forge, merge manual), rode `clean --apply` nesse mesmo turno. Um turno que termina com `list` ainda mostrando entradas REMOVABLE é trabalho inacabado — não um "depois".</critical>
40
+
41
+ <critical>Nunca `--force`. `git worktree remove --force` e `git branch -D` à mão são bloqueados pelo hook git-guardrails. Uma worktree suja, não mergeada, em uso ou travada é um veredito KEEP: reporte com o motivo e deixe-a. O único caminho pra remover uma worktree KEEP é a instrução explícita do dono nomeando-a — e mesmo assim, prefira commitar/mergear a forçar.</critical>
42
+
43
+ <critical>Nunca mude o estado ativo do dono. `merge` aborta se o checkout principal não está na branch base ou tem mudanças não commitadas; nunca roda `checkout`, `stash` ou `reset` na árvore do dono.</critical>
44
+
45
+ ## Resolução da branch base
46
+
47
+ `--base` → `DW_WORKTREE_BASE` → `.dw/config.json` `worktree.base` → `origin/HEAD` → `develop` → `main` → `master` (a primeira que existe localmente vence; as outras que existem ainda são consultadas pro "merged into"). Um projeto que integra em `develop` enquanto `origin/HEAD` aponta pra `main` deve definir:
48
+
49
+ ```json
50
+ { "worktree": { "base": "develop", "prep": ["pnpm install --frozen-lockfile --prefer-offline", "pnpm build:packages"] } }
51
+ ```
52
+
53
+ `worktree.prep` substitui a detecção por lockfile por completo (array vazio = sem prep).
54
+
55
+ ## Workflow
56
+
57
+ 1. Rode o script de qualquer lugar dentro do repo (ele resolve o checkout principal): `node .dw/scripts/lib/worktree-gc.mjs <modo> …`. Se o script não existir, a instalação está velha → `dev-workflow update`, depois continue.
58
+ 2. Mostre a saída do script **literalmente** — a tabela é o report, não parafraseie vereditos.
59
+ 3. `clean` sem `--apply` quando o usuário pediu pra *checar*; com `--apply` quando pediu pra *limpar* ou quando você está fechando um turno de merge.
60
+ 4. Após `clean --apply` / `merge`: diga quantas foram removidas, tamanho aparente liberado, cada entrada KEEP com o motivo, e a linha de disco livre.
61
+ 5. Se o usuário pediu pra limpar *tudo* e sobraram entradas KEEP: uma pergunta listando-as (nome · veredito · motivo · tamanho) com a opção segura primeiro (merge / commit) e "descartar" por último. Caso contrário, só reporte.
62
+
63
+ ## Integrações (quem chama isto)
64
+
65
+ - **Pre-flight do `dw-cli-run`** — worktree alvo ausente → `create <slug>`; **Disciplina** — branch mergeada → `/dw-worktree merge <slug>` ou `/dw-worktree clean --apply` no mesmo turno.
66
+ - **`/dw-pause`** — roda `list`; toda entrada REMOVABLE é um open loop pra fechar *agora* com `clean --apply`, não pra registrar.
67
+ - **`/dw-harness-audit`** — `list --strict`; exit 3 limita a categoria *Worktree hygiene* e cada sobra é citada.
68
+ - **Hook git-guardrails** — bloqueia `git worktree remove --force`, `git branch -D`, `git clean -f`.
69
+
70
+ ## Formato de saída
71
+
72
+ ```
73
+ 🌳 Worktrees — /home/me/code/app (base: develop)
74
+ <tabela do script literal>
75
+ 33 REMOVABLE (~75.9G apparent) · 2 KEEP · 0 PRUNABLE
76
+ Próximo: /dw-worktree clean --apply (dry-run acima)
77
+ ```
78
+
79
+ Após `--apply`:
80
+
81
+ ```
82
+ 🌳 Limpo — removidas 33 worktree(s), ~75.9G aparente · mantidas 2: app-build (KEEP:dirty: 1 arquivo não commitado), w20 (KEEP:unmerged: 1 commit à frente de develop)
83
+ 41.2G free on the filesystem of /home/me/code
84
+ ```
85
+
86
+ ## Anti-patterns
87
+ - `git worktree add` à mão → worktree sem prep, delegado cego, nome fora da convenção.
88
+ - Mergear e "limpar depois" → o depois nunca chega; 40 GB disso.
89
+ - `git worktree remove --force` / `branch -D` pra fazer um veredito KEEP sumir.
90
+ - Parafrasear vereditos ou esconder motivos de KEEP.
91
+ - Rodar `merge` antes do gate.
92
+ - Fazer checkout da branch base na árvore principal do dono pra o `merge` passar.
93
+
94
+ ## Structured Return
95
+ - **Status:** `PASS` (modo concluído; após `clean --apply`/`merge` zero REMOVABLE restantes) · `FINDINGS` (entradas REMOVABLE mostradas em dry-run, ou entradas KEEP precisam do dono) · `BLOCKED` (script ausente, merge recusado, prep falhou).
96
+ - **Evidence:** a saída do script (tabela, linhas de removido, linha de disco livre).
97
+ - **Artifacts:** `WORKTREE=<path>` pro `create`; paths removidos + branches apagadas pro `clean`/`merge`.
98
+ - **Next Step:** o próximo comando exato (`/dw-codex-run` na worktree criada; `clean --apply`; a decisão do dono sobre entradas KEEP).
99
+
100
+ </system_instructions>
@@ -0,0 +1,53 @@
1
+ # Roteamento de comandos
2
+
3
+ Aplique primeiro as regras de roteamento da raiz. Consulte este catálogo somente para localizar um comando especializado. Uma sugestão de comando não autoriza publicação, merge ou outro workflow.
4
+
5
+ ## Trigger Map
6
+
7
+ | Intenção do usuário (literal ou parafraseada) | Auto-trigger |
8
+ |------------------------------------------------|--------------|
9
+ | "Implementa X" / "Cria Y" / "Adiciona feature Z" / "Preciso de..." | `/dw-plan` / `/dw-autopilot` |
10
+ | "Autopilota esse PRD" / "Leva esse PRD pra PR" / continua escalação de bugfix autonomamente | `/dw-autopilot --from-prd <slug>` (PRD existente em `.dw/spec/<slug>/`) |
11
+ | "Retoma autopilot" / "continua depois do plan" / `autopilot-state.json` tem `status: plan_complete` | `/dw-autopilot` (ou `/dw-goal --from-autopilot <slug>` se o usuário pedir especificamente a etapa de goal) |
12
+ | Erro colado / "X está quebrado" / "Bug em Y" / screenshot de teste falhando | `/dw-bugfix "X"` |
13
+ | "Planeja essa feature" / "Escreve PRD + techspec + tasks" | `/dw-plan "X"` |
14
+ | "Escreve PRD pra X" / "Especifica Y" | `/dw-plan prd "X"` |
15
+ | "Desenha a arquitetura" / "Faz o techspec" | `/dw-plan techspec` |
16
+ | "Quebra em tasks" | `/dw-plan tasks` |
17
+ | "Roda essa task" (com ID da task) | `/dw-run <ID>` |
18
+ | "Roda todas as tasks pendentes" / "Executa o plano" | `/dw-run` |
19
+ | "Roda isso como goal" / "objetivo durável" / "long-running objective" | `/dw-goal "<objetivo>"` |
20
+ | "Continue de onde parei" | `/dw-run --resume` |
21
+ | "Pausa o trabalho" / "Encerra a sessão" / "Salva onde paramos" | `/dw-pause` |
22
+ | "Report de N em N minutos" / "Me mantém informado enquanto isso roda" / "Quero status periódico" | `/dw-report [--every <N>m]` |
23
+ | "Cria uma worktree pra X" / "Limpa as worktrees" / "Mergeia a worktree X" / "Quantas worktrees sobraram?" | `/dw-worktree create <slug>` / `/dw-worktree clean --apply` / `/dw-worktree merge <slug>` / `/dw-worktree list` |
24
+ | "Retoma" / "Onde paramos?" / "Volta de onde parei" | `/dw-resume` |
25
+ | "QA dessa feature" / "Roda o test plan" | `/dw-qa` |
26
+ | "Corrige os bugs do QA" | `/dw-qa --fix` |
27
+ | "Avalia a feature AI" / "Testa o RAG / classifier" | `/dw-qa --ai` |
28
+ | "Caminha comigo pela feature" / "UAT comigo" / "Vamos fazer um run-through manual" | `/dw-qa --uat` |
29
+ | "Revisa esse bugfix" / "Code-review do fix `<slug>`" | `/dw-review --bugfix <slug>` |
30
+ | "QA desse bugfix" / "Valida o fix `<slug>`" | `/dw-qa --bugfix <slug>` |
31
+ | "Revisa meu PR" / "Checa qualidade" / "Tá pronto pra subir?" | `/dw-review` |
32
+ | "Só checagem de cobertura PRD" | `/dw-review --coverage-only` |
33
+ | "Só code review qualidade" | `/dw-review --code-only` |
34
+ | "Hora de commitar" / mudanças validadas e prontas | `/dw-commit` |
35
+ | "Abre um PR" / "Sobe isso" | `/dw-generate-pr` |
36
+ | "Sugere ideias novas" / "O que devemos construir agora?" / "Encontra oportunidades" / "Ideias de roadmap" | `/dw-opportunities` |
37
+ | "Que melhorias de seguranca devemos considerar?" / "Encontra oportunidades de seguranca" | `/dw-opportunities "security"` |
38
+ | "Brainstorm X" / "Explora essa ideia" / "Research X" | `/dw-brainstorm "X"` (auto-dispatch dos modos grill / prototype / council / research / onepager conforme os sinais) |
39
+ | "Auditoria de saude do codigo" / "Tech debt" / "Oportunidades de refactor" / "Smells em X" | `/dw-refactor "X"` |
40
+ | "Onde está X?" / "O que usa Y?" / "Como Z é estruturado?" | `/dw-intel "<pergunta>"` |
41
+ | "Reconstrói o índice" / "Refresh do intel" | `/dw-intel --build` |
42
+ | "Contexto pesado" / "Audita uso de tokens" / "Por que o agente está lento?" | `/dw-context-budget` |
43
+ | "Checa instalação dev-workflow" / "Agentes/wrappers estão saudáveis?" | `/dw-harness-audit` |
44
+ | "Audita skills" / "Skills parecem duplicadas ou pesadas" | `/dw-skill-health` |
45
+ | "Redesign dessa UI" / "Audita e entrega novo design" | `/dw-redesign-ui "<target>"` |
46
+ | "Audita dependências" / "Estamos atrasados em pacotes?" | `/dw-secure-audit --plan` |
47
+ | "Scan de vulnerabilidades" / "Check de segurança" | `/dw-secure-audit` |
48
+ | "Analisa esse projeto" / "Gera rules" | `/dw-analyze-project` |
49
+ | "Abre um novo projeto" / "Bootstrap de stack" | `/dw-new-project` |
50
+ | "Dockeriza isso" / "Adiciona docker-compose" | `/dw-dockerize` |
51
+ | "Functional doc" / "Mapeia screens e flows" | `/dw-functional-doc` |
52
+ | "Instala skills Azure" / "Configura MCP do Microsoft docs" / "Adiciona expertise Azure" / "Vou trabalhar com Azure" | `/dw-install-azure-skills` |
53
+ | "Instala skills AWS" / "Configura MCP da AWS" / "Adiciona expertise AWS" / "Vou trabalhar com AWS" | `/dw-install-aws-skills` |
@@ -0,0 +1,55 @@
1
+ # Contrato de execução de tasks
2
+
3
+ Leia na quebra de tasks, no dispatch ou na retomada. O parent coordena o plano aprovado até a validação; retorno do runner é um handoff, não o fim do objetivo.
4
+
5
+ ## Escolhas no planejamento
6
+
7
+ Escolha desenvolvimento local ou cruzado em `/dw-plan tasks`, não a cada dispatch. Apresente matriz por task com complexidade, justificativa, ferramenta, modelo, esforço, agentes, dependências e checks. Use `light` para trabalho mecânico de baixo risco, `standard` para padrões conhecidos com decisões delimitadas e `heavy` para arquitetura, incerteza ou superfícies sensíveis. Quantidade de arquivos e tipo de commit não determinam complexidade sozinhos.
8
+
9
+ Use `.dw/config/routing.json` como candidatos de modelo, não prova de disponibilidade. Inspecione versão/help da CLI para flags e configuração; use documentação do provedor ou metadados disponíveis para IDs de modelos. Help/version não provam autenticação ou acesso na conta. Preserve escolhas explícitas. Prefira modelos configurados que atendam à task; proponha upgrades úteis citando fonte/data. Agentes locais herdam o modelo da sessão salvo override explícito suportado e aprovado. Não escolha outro tier arbitrariamente apenas para chamar uma revisão de independente.
10
+
11
+ Claude pode propor `codex` (`/dw-codex-run`), Codex pode propor `claude` (`/dw-claude-run`). Copilot/OpenCode mantêm execução local e podem usar adapters explicitamente selecionados. Mantenha trabalho pequeno/acoplado local salvo escolha do usuário. Use apenas agentes instalados e relevantes, sem fan-out obrigatório. Valide nomes contra `.dw/agent-registry.json` e os perfis instalados.
12
+
13
+ Junto de tasks.md e dos arquivos Markdown por task, escreva `execution-plan.json`:
14
+
15
+ ```json
16
+ {
17
+ "schema_version": "1.1",
18
+ "approved": false,
19
+ "tasks": [{
20
+ "id": "1.0",
21
+ "depends_on": [],
22
+ "execution": {
23
+ "complexity": "standard",
24
+ "rationale": "Padrão de serviço conhecido; mudança de comportamento delimitada",
25
+ "tool": "local",
26
+ "model": "inherit",
27
+ "effort": "inherit",
28
+ "agents": [],
29
+ "fallbacks": []
30
+ }
31
+ }]
32
+ }
33
+ ```
34
+
35
+ Resolva modelo/esforço concretos para ferramentas externas antes da aprovação. Fallbacks contêm `tool`, `model`, `effort`; use apenas alternativas aprovadas. Valide com `node .dw/scripts/lib/workflow-contract.mjs validate <plan.json>` e confira IDs/dependências contra tasks.md. Marque `approved: true` só depois da aprovação dessas escolhas pelo usuário; registre-a no log de decisões do plano. Mudanças exigem aprovação salvo pedido explícito ou fallback aprovado. O boolean escrito pelo agente é um registro, não prova independente de consentimento.
36
+
37
+ Precedência: instrução explícita atual → escolha aprovada da task → configuração do projeto → padrão da ferramenta. Em plano salvo, configuração/defaults servem para propor escolhas ausentes, nunca substituir silenciosamente escolhas aprovadas. Rejeição do modelo usa fallback aprovado ou bloqueia com evidência; sem troca de provedor não autorizada. Planos schema 1.0 sem metadados de execução rodam localmente; não force migração ou delegação retroativa.
38
+
39
+ ## Dependências e propriedade do worktree
40
+
41
+ Para WRITE crie worktree dedicado por `/dw-worktree create`. Registre revisão inicial e branch. Tasks de uma cadeia de dependências usam a mesma branch/worktree de execução, com um escritor por vez, mesmo quando tasks sucessivas escolhem CLIs diferentes. A próxima task recebe os commits das dependências nessa branch; nunca a recrie de main. Use worktrees separados para tasks independentes somente quando o plano aprovado definir como integrar as branches antes do trabalho dependente. Não faça merge na branch do usuário só para avançar à próxima task.
42
+
43
+ Faça stage apenas de mudanças no escopo. Commite implementação e status da task juntos; depois registre o SHA resultante em tasks.md/run-log (um SHA não pode incluir a si próprio no commit). Inclua esse registro no próximo commit com escopo ou em commit final de metadados; não entregue bookkeeping sujo sem reportar. Não faça amend nem stage de arquivos alheios automaticamente.
44
+
45
+ ## Estado durável e retomada
46
+
47
+ Persista `execution-state.json` junto do plano, com schema_version `1.1` e objeto `tasks` indexado por ID. Cada entrada registra escolha aprovada, worktree, branch/revisão base, ID de sessão do provedor, caminhos de audit/prompt, tentativa, status, checkpoint, SHA e registros de verificação. Guarde audit/sessão fora de worktrees descartáveis. Atualize antes do dispatch e após cada handoff; preserve trabalho concluído em interrupções.
48
+
49
+ Ao retomar, confira identidade da task salva, diff real, branch, dependências e evidência. Mantenha executor/sessão aprovados. Sem sidecar, recupere a sessão exata do audit da task e valide provedor/worktree/identidade. Nunca use `--last` ou `-c` às cegas. Se o ID não for recuperável, inicie nova sessão no mesmo worktree com task aprovada, estado, diff e logs; registre a perda de contexto conversacional. Sessão de um provedor não pode ser retomada por outro. Nunca use reset/clean para descartar trabalho parcial e tentar novamente.
50
+
51
+ ## Conclusão e autorização
52
+
53
+ O worker implementa e verifica sua task, retornando evidências e achados pendentes. O parent inspeciona independentemente diff e critérios de aceitação, confere validade da evidência, encaminha correções no escopo ao mesmo worker e continua dependências. Não precisa confirmar de novo execução/retomada já aprovada nem correções rotineiras. Só escopo material novo, alternativas aprovadas indisponíveis, restrições de permissão e decisões pendentes de produto/arquitetura bloqueiam trabalho dependente; continue trabalho independente autorizado quando possível.
54
+
55
+ Qualidade da revisão depende de critérios de aceitação e achados bloqueantes, não de nota numérica. Reutilize checks verificados para insumos/ambiente/escopo equivalentes; reexecute os afetados após edições. Complete checks exigidos pelo projeto na entrega. Merge, push e publicação continuam como limites separados de autorização. Sem autorização, reporte branch/worktree preparado e resultado validado.
@@ -0,0 +1,43 @@
1
+ ---
2
+ type: frontend-quality
3
+ schema_version: "1.0"
4
+ status: draft
5
+ ---
6
+
7
+ # Baseline de qualidade do frontend
8
+
9
+ Use em uma auditoria solicitada de frontend ou plano de ferramentas de qualidade. Incorpore ao `.dw/rules/<module>.md` existente na auditoria, ou à TechSpec da funcionalidade na implementação. Uma funcionalidade precisa apenas das linhas afetadas. Este template registra decisões; não configura ferramentas nem autoriza novos gates.
10
+
11
+ - Módulo e escopo: [workspace, entradas de runtime, diff relevante]
12
+ - Observado em: [revisão e alterações na árvore de trabalho, data]
13
+ - Stack: [versões de framework/compilador/runner/gerenciador de pacotes, lockfile]
14
+ - Política existente: [instruções, rules, scripts e caminhos do CI]
15
+
16
+ ## Controles
17
+
18
+ Separe observação e proposta. Preserve checks obrigatórios existentes. Valores de política: `required`, `advisory`, `deferred`, `not_applicable`. Uma proposta não adotada é `deferred`; registre execução separadamente como `passed`, `failed` ou `not_run`. Explique exclusões e evidências ausentes. Não marque ferramentas ausentes como aprovadas nem imponha silenciosamente um gate proposto.
19
+
20
+ | ID | Risco/controle a inspecionar | Configuração observada e lacunas | Política / mudança proposta | Comando exato, cwd e escopo | Evidência / execução |
21
+ |---|---|---|---|---|---|
22
+ | contract | Autoridade da API, divergência do cliente gerado, validação em runtime | | | | |
23
+ | types | Configuração efetiva de rigor do TypeScript e escapes inseguros | | | | |
24
+ | lint | Diagnósticos relevantes de framework, testes e acessibilidade | | | | |
25
+ | boundaries | Imports permitidos, separação servidor/cliente, entradas de produção | | | | |
26
+ | custom-rules | Defeito recorrente, fixtures do detector e erros acionáveis | | | | |
27
+ | feedback | Regras locais encontráveis e feedback opcional por hooks | | | | |
28
+ | mutation | Comportamento crítico, investigação de sobreviventes e validade do cache | | | | |
29
+ | dead-code | Alcançabilidade em runtime/API pública, arquivos gerados, exclusões revisadas | | | | |
30
+ | duplication | Regras de negócio compartilhadas versus markup repetido intencionalmente | | | | |
31
+ | ci | Jobs obrigatórios, falhas observáveis, dependências de deploy e regras do repositório | | | | |
32
+
33
+ ## Adoção e validação
34
+
35
+ - Próxima mudança: [risco eliminado, arquivos/configurações a alterar, ferramenta compatível existente ou dependência proposta]
36
+ - Dívida existente: [local da baseline; mantenha separada de defeitos introduzidos agora]
37
+ - Condição de promoção: [evidência necessária para passar de advisory a required; responsável pela decisão]
38
+ - Exceções: [regra/caminho específico, motivo, responsável e gatilho de revisão; sem exclusões abrangentes]
39
+ - Checks do detector: [fixture propositalmente inválida, fixture legítima, casos de alias/caminhos gerados e casos não suportados]
40
+ - Limites da análise: [não executado, serviço indisponível, grafo incompleto ou configurações de CI/repositório não inspecionadas]
41
+ - Checks de entrega: [comandos obrigatórios e aceite comportamental; reutilize evidência apenas com entradas/ambiente/escopo equivalentes]
42
+
43
+ Para orientação operacional, leia `dw-ui-discipline/references/frontend-engineering.md` no local das skills instaladas. Inclua a implementação aceita na matriz de execução de tarefas; continue sob a autorização existente. Uma auditoria isolada termina com findings documentados e mudanças propostas.