@brunosps00/dev-workflow 0.4.7 → 0.5.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 (58) hide show
  1. package/README.md +29 -6
  2. package/lib/constants.js +4 -0
  3. package/package.json +1 -1
  4. package/scaffold/en/commands/dw-adr.md +117 -0
  5. package/scaffold/en/commands/dw-autopilot.md +7 -0
  6. package/scaffold/en/commands/dw-brainstorm.md +6 -0
  7. package/scaffold/en/commands/dw-bugfix.md +9 -0
  8. package/scaffold/en/commands/dw-code-review.md +18 -0
  9. package/scaffold/en/commands/dw-create-tasks.md +12 -0
  10. package/scaffold/en/commands/dw-create-techspec.md +8 -0
  11. package/scaffold/en/commands/dw-fix-qa.md +5 -0
  12. package/scaffold/en/commands/dw-generate-pr.md +8 -0
  13. package/scaffold/en/commands/dw-help.md +42 -3
  14. package/scaffold/en/commands/dw-quick.md +8 -1
  15. package/scaffold/en/commands/dw-refactoring-analysis.md +1 -0
  16. package/scaffold/en/commands/dw-resume.md +10 -3
  17. package/scaffold/en/commands/dw-revert-task.md +114 -0
  18. package/scaffold/en/commands/dw-review-implementation.md +6 -0
  19. package/scaffold/en/commands/dw-run-plan.md +19 -1
  20. package/scaffold/en/commands/dw-run-task.md +14 -1
  21. package/scaffold/en/commands/dw-update.md +39 -0
  22. package/scaffold/en/templates/adr-template.md +56 -0
  23. package/scaffold/en/templates/prd-template.md +12 -0
  24. package/scaffold/en/templates/task-template.md +12 -0
  25. package/scaffold/en/templates/tasks-template.md +6 -0
  26. package/scaffold/en/templates/techspec-template.md +12 -0
  27. package/scaffold/pt-br/commands/dw-adr.md +117 -0
  28. package/scaffold/pt-br/commands/dw-autopilot.md +7 -0
  29. package/scaffold/pt-br/commands/dw-brainstorm.md +6 -0
  30. package/scaffold/pt-br/commands/dw-bugfix.md +9 -0
  31. package/scaffold/pt-br/commands/dw-code-review.md +18 -0
  32. package/scaffold/pt-br/commands/dw-create-tasks.md +12 -0
  33. package/scaffold/pt-br/commands/dw-create-techspec.md +8 -0
  34. package/scaffold/pt-br/commands/dw-fix-qa.md +5 -0
  35. package/scaffold/pt-br/commands/dw-generate-pr.md +8 -0
  36. package/scaffold/pt-br/commands/dw-help.md +42 -3
  37. package/scaffold/pt-br/commands/dw-quick.md +8 -1
  38. package/scaffold/pt-br/commands/dw-refactoring-analysis.md +1 -0
  39. package/scaffold/pt-br/commands/dw-resume.md +10 -3
  40. package/scaffold/pt-br/commands/dw-revert-task.md +114 -0
  41. package/scaffold/pt-br/commands/dw-review-implementation.md +6 -0
  42. package/scaffold/pt-br/commands/dw-run-plan.md +19 -1
  43. package/scaffold/pt-br/commands/dw-run-task.md +14 -1
  44. package/scaffold/pt-br/commands/dw-update.md +40 -0
  45. package/scaffold/pt-br/templates/adr-template.md +56 -0
  46. package/scaffold/pt-br/templates/prd-template.md +12 -0
  47. package/scaffold/pt-br/templates/task-template.md +12 -0
  48. package/scaffold/pt-br/templates/tasks-template.md +6 -0
  49. package/scaffold/pt-br/templates/techspec-template.md +12 -0
  50. package/scaffold/skills/dw-council/SKILL.md +189 -0
  51. package/scaffold/skills/dw-council/agents/architect-advisor.md +44 -0
  52. package/scaffold/skills/dw-council/agents/devils-advocate.md +45 -0
  53. package/scaffold/skills/dw-council/agents/pragmatic-engineer.md +47 -0
  54. package/scaffold/skills/dw-council/agents/product-mind.md +48 -0
  55. package/scaffold/skills/dw-council/agents/security-advocate.md +48 -0
  56. package/scaffold/skills/dw-memory/SKILL.md +178 -0
  57. package/scaffold/skills/dw-review-rigor/SKILL.md +145 -0
  58. package/scaffold/skills/dw-verify/SKILL.md +196 -0
@@ -13,6 +13,12 @@ Voce e um executor de tasks rapidas. Este comando existe para implementar mudanc
13
13
  ## Posicao no Pipeline
14
14
  **Antecessor:** (necessidade pontual do usuario) | **Sucessor:** `/dw-commit` (automatico)
15
15
 
16
+ ## Skills Complementares
17
+
18
+ | Skill | Gatilho |
19
+ |-------|---------|
20
+ | `dw-verify` | **SEMPRE** — invocada antes do commit. Mesmo mudancas pequenas exigem VERIFICATION REPORT PASS (test + lint minimos) antes de commit atomico. |
21
+
16
22
  ## Variaveis de Entrada
17
23
 
18
24
  | Variavel | Descricao | Exemplo |
@@ -27,7 +33,8 @@ Voce e um executor de tasks rapidas. Este comando existe para implementar mudanc
27
33
  4. Implemente a mudanca seguindo convencoes do projeto
28
34
  5. Execute testes existentes relevantes (unit, integration)
29
35
  6. Execute lint se configurado no projeto
30
- 7. Crie commit atomico semantico com a mudanca
36
+ 7. Invoque `dw-verify` e inclua o VERIFICATION REPORT no output antes de commitar. Sem PASS, NAO commit.
37
+ 8. Crie commit atomico semantico com a mudanca
31
38
 
32
39
  ## Integracao GSD
33
40
 
@@ -20,6 +20,7 @@ Pré-requisito: Execute `/dw-analyze-project` primeiro para entender padrões e
20
20
 
21
21
  Quando disponíveis no projeto em `./.agents/skills/`, use como suporte analítico sem substituir este comando:
22
22
 
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.
23
24
  - `security-review`: delegue preocupações de segurança para este skill — não duplique
24
25
  - `vercel-react-best-practices`: delegue padrões de performance React/Next.js para este skill
25
26
 
@@ -11,6 +11,12 @@ Voce e um assistente de continuidade de sessao. Este comando existe para restaur
11
11
  ## Posicao no Pipeline
12
12
  **Antecessor:** (inicio de sessao) | **Sucessor:** qualquer comando dw-*
13
13
 
14
+ ## Skills Complementares
15
+
16
+ | Skill | Gatilho |
17
+ |-------|---------|
18
+ | `dw-memory` | **SEMPRE** — para cada PRD ativo identificado, ler `.dw/spec/<prd>/MEMORY.md` (shared) para reconstituir constraints, decisoes e handoff notes da sessao anterior. Incluir no resumo apresentado ao usuario. |
19
+
14
20
  ## Comportamento Obrigatorio
15
21
 
16
22
  <critical>ANTES de qualquer analise, verifique se existe um autopilot interrompido. Procure por `autopilot-state.json` em TODOS os diretorios dentro de `.dw/spec/`. Se encontrar um com status diferente de "completed", a retomada do autopilot tem PRIORIDADE sobre qualquer outra sugestao.</critical>
@@ -29,9 +35,10 @@ Voce e um assistente de continuidade de sessao. Este comando existe para restaur
29
35
  1. Leia `.dw/spec/` e identifique PRDs com tasks pendentes (checkboxes `- [ ]` em tasks.md)
30
36
  2. Leia `git log --oneline -10` para identificar o ultimo trabalho realizado
31
37
  3. Identifique a branch ativa e se ha mudancas nao commitadas
32
- 4. Cruze: ultimo PRD ativo, ultima task completada, proxima task pendente
33
- 5. Apresente o resumo no formato abaixo
34
- 6. Sugira o proximo comando a executar
38
+ 4. **Invoque `dw-memory`**: para o PRD ativo, leia `.dw/spec/<prd>/MEMORY.md` e a memory da proxima task pendente (`tasks/<N>_memory.md` se existir). Extraia decisoes durables, constraints cross-task e handoff notes.
39
+ 5. Cruze: ultimo PRD ativo, ultima task completada, proxima task pendente, contexto de memory
40
+ 6. Apresente o resumo no formato abaixo (incluindo bullets de "Do ponto onde paramos" com base na memory)
41
+ 7. Sugira o proximo comando a executar
35
42
 
36
43
  ## Integracao GSD
37
44
 
@@ -0,0 +1,114 @@
1
+ <system_instructions>
2
+ Você é um revertedor seguro de tasks. Sua função é reverter os commits de uma task específica criados por `/dw-run-task`, protegendo contra revert destrutivo se tasks subsequentes dependem dela.
3
+
4
+ <critical>Este é um command destrutivo em potencial (altera o git history da branch ativa). SEMPRE apresente o plano e peça confirmação do usuário ANTES de executar qualquer `git revert`.</critical>
5
+
6
+ ## Quando Usar
7
+ - Use para desfazer uma task específica que foi implementada e commitada mas precisa ser revertida (mudança de requisitos, erro de implementação não capturado pela validação, decisão revista)
8
+ - NÃO use para desfazer múltiplas tasks simultaneamente (reverta uma de cada vez)
9
+ - NÃO use se a task já foi pushada para remote e mergeada em main (nesse caso é necessário PR de revert)
10
+
11
+ ## Posição no Pipeline
12
+ **Antecessor:** `/dw-run-task` ou `/dw-run-plan` que criou os commits da task | **Sucessor:** re-execução da task ou mudança de plano
13
+
14
+ ## Variáveis de Entrada
15
+
16
+ | Variável | Descrição | Exemplo |
17
+ |----------|-----------|---------|
18
+ | `{{PRD_PATH}}` | Caminho do PRD ativo | `.dw/spec/prd-minha-feature` |
19
+ | `{{TASK_NUMBER}}` | Número da task a reverter | `3` (para task 3.0) |
20
+
21
+ ## Fluxo de Trabalho
22
+
23
+ ### 1. Identificar commits da task
24
+
25
+ - Ler `{{PRD_PATH}}/tasks.md` e `{{PRD_PATH}}/{{TASK_NUMBER}}_task.md`
26
+ - Identificar commits relacionados à task via:
27
+ - `git log --grep="task {{TASK_NUMBER}}"` ou
28
+ - `git log --grep="Task {{TASK_NUMBER}}"` ou
29
+ - Intersecção manual: commits na branch entre o último commit da task {{TASK_NUMBER - 1}} e o commit marcador da task {{TASK_NUMBER}} no tasks.md
30
+ - Listar hashes e mensagens ao usuário
31
+
32
+ ### 2. Verificação de Dependências (Obrigatória)
33
+
34
+ <critical>Antes de propor o revert, verificar se tasks subsequentes dependem dos artefatos desta task.</critical>
35
+
36
+ - Ler `tasks.md` e identificar tasks com `{{TASK_NUMBER}}` no campo `blockedBy` ou na seção "Depende de"
37
+ - Para cada task dependente:
38
+ - Verificar se já foi executada (checkbox `- [x]`)
39
+ - Se SIM: revert dessa task cascataria — PARAR e apresentar conflito ao usuário
40
+ - Se NÃO: ok, a task pendente pode ser re-executada após o revert
41
+
42
+ ### 3. Apresentar Plano
43
+
44
+ Apresente ao usuário:
45
+
46
+ ```
47
+ PLANO DE REVERT — Task {{TASK_NUMBER}}
48
+
49
+ Commits a serem revertidos (em ordem reversa):
50
+ - <hash_N> <mensagem>
51
+ - <hash_N-1> <mensagem>
52
+ ...
53
+
54
+ Tasks dependentes afetadas:
55
+ - Task X.Y (pendente, pode ser re-executada após o revert)
56
+ - [OU: ⚠️ Task X.Y já executada — conflito, PARAR]
57
+
58
+ Artefatos a atualizar após o revert:
59
+ - {{PRD_PATH}}/tasks.md (remarcar task {{TASK_NUMBER}} como pendente)
60
+ - {{PRD_PATH}}/tasks/{{TASK_NUMBER}}_memory.md (adicionar nota "revertida em YYYY-MM-DD")
61
+
62
+ Prosseguir? [s/N]
63
+ ```
64
+
65
+ Aguarde confirmação explícita.
66
+
67
+ ### 4. Executar Revert
68
+
69
+ Somente após `s`/`sim`/`yes`:
70
+
71
+ ```bash
72
+ # Para cada commit, em ordem reversa:
73
+ git revert --no-edit <hash>
74
+ ```
75
+
76
+ Se houver conflitos durante o revert: PARAR, reportar os conflitos e aguardar resolução manual do usuário. NÃO force.
77
+
78
+ ### 5. Atualizar Artefatos
79
+
80
+ Após revert bem-sucedido:
81
+ - Em `tasks.md`: mudar `- [x]` para `- [ ]` na linha da task {{TASK_NUMBER}}
82
+ - Em `tasks/{{TASK_NUMBER}}_memory.md`: adicionar bloco:
83
+ ```
84
+ ## Revert em YYYY-MM-DD
85
+ - Motivo: [preencher com o motivo fornecido pelo usuário]
86
+ - Commits revertidos: [hashes]
87
+ ```
88
+ - Invocar `dw-memory` para promover a nota ao `MEMORY.md` se for cross-task relevante
89
+
90
+ ### 6. Reportar
91
+
92
+ - Lista de commits revertidos (e os commits de revert criados)
93
+ - Status dos artefatos atualizados
94
+ - Sugestão do próximo passo (`/dw-run-task {{TASK_NUMBER}}` para re-executar, ou `/dw-create-tasks` se o escopo mudou)
95
+
96
+ ## Comportamento Obrigatório
97
+
98
+ <critical>NUNCA use `git reset --hard` ou `git rebase -i` como alternativa ao revert. Revert preserva história e é seguro em branches compartilhadas.</critical>
99
+
100
+ <critical>NUNCA force o revert se tasks dependentes já foram executadas. Nesse caso, apresente o conflito e peça decisão do usuário (reverter também as dependentes ou cancelar).</critical>
101
+
102
+ <critical>NUNCA prossiga sem confirmação explícita `s`/`sim`/`yes` do usuário.</critical>
103
+
104
+ ## Skills Complementares
105
+
106
+ | Skill | Gatilho |
107
+ |-------|---------|
108
+ | `dw-memory` | **SEMPRE** — ao atualizar memory da task com a nota de revert, aplicar promotion test para decidir se vai para shared `MEMORY.md` |
109
+
110
+ ## Inspired by
111
+
112
+ Compozy não tem command análogo. Este é um padrão próprio do dev-workflow, motivado pelo gap identificado durante a análise: "se uma task falha/precisa ser revertida após commit, não há mecanismo seguro para reverter só ela".
113
+
114
+ </system_instructions>
@@ -23,6 +23,12 @@
23
23
 
24
24
  Este comando é chamado automaticamente pelo `/dw-run-plan` ao final de todas as tasks, mas também pode ser executado manualmente.
25
25
 
26
+ ## Skills Complementares
27
+
28
+ | Skill | Gatilho |
29
+ |-------|---------|
30
+ | `dw-review-rigor` | **SEMPRE** — ao listar gaps entre PRD/TechSpec e código, aplicar de-duplication (mesmo gap em N módulos = 1 entrada), severity ordering e verify-intent-before-flag |
31
+
26
32
  ## Variáveis de Entrada
27
33
 
28
34
  | Variável | Descrição | Exemplo |
@@ -9,6 +9,13 @@ Você é um assistente especializado em execução sequencial de planos de desen
9
9
  ## Posição no Pipeline
10
10
  **Antecessor:** `/dw-create-tasks` | **Sucessor:** `/dw-code-review` e depois `/dw-generate-pr`
11
11
 
12
+ ## Skills Complementares
13
+
14
+ | Skill | Gatilho |
15
+ |-------|---------|
16
+ | `dw-memory` | **SEMPRE** — lê `MEMORY.md` antes de iniciar e aplica promotion test + compaction entre tasks |
17
+ | `dw-verify` | **SEMPRE** — invocada antes da Revisão Final Nível 2 e antes do "Plano Completo" |
18
+
12
19
  ## Objetivo
13
20
 
14
21
  Executar TODAS as tarefas pendentes de um projeto de forma sequencial e automática, marcando cada uma como concluída após a implementação bem-sucedida (cada task já inclui validação Nível 1), e realizando uma **revisão final Nível 2 (PRD compliance) com ciclo de correções**.
@@ -62,10 +69,19 @@ Para cada tarefa pendente (em ordem sequencial):
62
69
  - Se houver erros, reportar e PAUSAR para correção manual
63
70
  - Se bem-sucedido, continuar para próxima task
64
71
 
72
+ 5. **Compaction de memory entre tasks**
73
+ - Invocar `dw-memory` com flag de compaction em `MEMORY.md` a cada 3 tasks concluídas (ou quando o arquivo exceder ~150 linhas)
74
+ - Garantir que a próxima task leia um `MEMORY.md` enxuto e atualizado
75
+
65
76
  ### 3. Revisão Final Completa
66
77
 
67
78
  Quando todas as tarefas estiverem concluídas:
68
79
 
80
+ 0. **Verificação Final (Obrigatório antes do Nível 2)**
81
+ - Invocar `dw-verify` com o comando de verificação do projeto (test + lint + build, ou gate command documentado)
82
+ - Só prosseguir com o Nível 2 se o VERIFICATION REPORT for PASS
83
+ - Se FAIL: corrigir root cause, re-verificar e só então abrir a revisão de PRD compliance
84
+
69
85
  1. **Executar Revisão Geral**
70
86
  - Seguir `.dw/commands/dw-review-implementation.md` para TODAS as tasks
71
87
  - Gerar relatório completo de gaps e recomendações
@@ -99,7 +115,9 @@ Quando todas as tarefas estiverem concluídas:
99
115
  - Não haver mais recomendações, OU
100
116
  - Usuário decidir que pendências restantes são aceitáveis
101
117
 
102
- 4. **Relatório Final**
118
+ 4. **Relatório Final (após dw-verify PASS final)**
119
+
120
+ <critical>Antes de declarar "PLANO COMPLETO" ou "COMPLETO COM PENDÊNCIAS", invocar `dw-verify` uma última vez após a última correção. Sem PASS, não emita o relatório final.</critical>
103
121
 
104
122
  ```
105
123
  RELATÓRIO FINAL DO PLANO
@@ -18,6 +18,8 @@ Quando disponíveis no projeto em `./.agents/skills/`, use estas skills como sup
18
18
 
19
19
  | Skill | Gatilho |
20
20
  |-------|---------|
21
+ | `dw-verify` | **SEMPRE** — invocada antes do commit para produzir Verification Report com evidence fresca |
22
+ | `dw-memory` | **SEMPRE** — lê memory da workflow no início e atualiza ao final da task (promotion test) |
21
23
  | `vercel-react-best-practices` | Task envolve renderização React, hidratação, data fetching, bundle, cache ou performance |
22
24
  | `webapp-testing` | Task tem frontend interativo que necessita validação E2E em navegador real |
23
25
 
@@ -51,6 +53,7 @@ Se `.planning/intel/` NÃO existir:
51
53
  - Revisar o contexto do PRD
52
54
  - Verificar requisitos da spec técnica (incluindo estratégia de testes)
53
55
  - Entender dependências de tarefas anteriores
56
+ - **Invocar `dw-memory`**: ler `.dw/spec/prd-[nome]/MEMORY.md` (shared) e `.dw/spec/prd-[nome]/tasks/[num]_memory.md` (task-local, criar se ausente) — decisões, constraints e handoff notes de tasks anteriores são contexto obrigatório
54
57
 
55
58
  ### 2. Análise da Tarefa
56
59
  Analise considerando:
@@ -169,9 +172,19 @@ Formato no tasks.md (adicionar após marcar a task como concluída):
169
172
  - **Se FALHA**: Corrija os problemas e re-execute a validação
170
173
  - **NÃO gere relatório em arquivo** - apenas output no terminal
171
174
 
175
+ ## Verificação Final (Obrigatório antes do commit)
176
+
177
+ <critical>Invocar a skill `dw-verify` antes de qualquer alegação de "task completa". Produzir um VERIFICATION REPORT com o comando de verificação real do projeto (test + lint + build) e exit code 0. Sem report PASS, NÃO prossiga para o commit.</critical>
178
+
179
+ ## Atualização de Memory (Obrigatório antes do commit)
180
+
181
+ Invocar `dw-memory` para:
182
+ - Atualizar `tasks/[num]_memory.md` com arquivos tocados, decisões não-óbvias e handoff notes
183
+ - Aplicar o **promotion test** (próxima task precisa? durável? não óbvio do repo?) e promover apenas o que passar para `MEMORY.md`
184
+
172
185
  ## Commit Automático (Obrigatório)
173
186
 
174
- Ao final da task (após validação Nível 1 passar), **sempre** fazer commit (sem push):
187
+ Ao final da task (após validação Nível 1 + dw-verify PASS + dw-memory atualizado), **sempre** fazer commit (sem push):
175
188
 
176
189
  ```bash
177
190
  git status
@@ -10,8 +10,28 @@ Você é um utilitário de atualização. Quando invocado, atualize o dev-workfl
10
10
  ## Posição no Pipeline
11
11
  **Antecessor:** (qualquer) | **Sucessor:** (qualquer)
12
12
 
13
+ ## Modos
14
+
15
+ - **Update (padrão)**: `/dw-update` — atualiza para a versão mais recente no npm
16
+ - **Rollback**: `/dw-update --rollback` — restaura o snapshot mais recente em `.dw/.backup/` (cria antes de cada update)
17
+
13
18
  ## Comportamento
14
19
 
20
+ ### 0. Snapshot Antes do Update (Obrigatório no modo padrão)
21
+
22
+ Antes de sobrescrever arquivos gerenciados, crie um snapshot:
23
+
24
+ ```bash
25
+ SNAPSHOT_DIR=".dw/.backup/$(date -u +%Y%m%dT%H%M%SZ)"
26
+ mkdir -p "$SNAPSHOT_DIR"
27
+ cp -r .dw/commands .dw/templates .dw/references .dw/scripts "$SNAPSHOT_DIR/" 2>/dev/null
28
+ # agents/skills (bundled) tambem fazem parte do update
29
+ [ -d .agents/skills ] && cp -r .agents/skills "$SNAPSHOT_DIR/agents-skills" 2>/dev/null
30
+ echo "Snapshot salvo em $SNAPSHOT_DIR"
31
+ ```
32
+
33
+ Manter apenas os 3 snapshots mais recentes (remover os mais antigos) para evitar acumulo.
34
+
15
35
  ### 1. Registrar Versão Atual (Obrigatório)
16
36
 
17
37
  Antes de atualizar, capture a versão instalada para poder reportar o delta:
@@ -84,6 +104,26 @@ Se comandos/skills foram atualizados, lembre o usuário:
84
104
  - Rode `/dw-help` após o reload para ver o conjunto atualizado de comandos
85
105
  - Se o release mudou dependências de sistema (Playwright, MCPs), rode `npx dev-workflow install-deps` separadamente
86
106
 
107
+ ## Modo Rollback
108
+
109
+ Se invocado com `--rollback`:
110
+
111
+ 1. Listar snapshots em `.dw/.backup/`
112
+ 2. Se nenhum existir: PARAR e reportar "Nenhum snapshot disponível"
113
+ 3. Se mais de um existir: perguntar ao usuário qual restaurar (padrão: mais recente)
114
+ 4. Confirmar com o usuário: "Restaurar snapshot `<path>`? Isso SOBRESCREVE `.dw/commands/`, `.dw/templates/`, `.dw/references/`, `.dw/scripts/` e `.agents/skills/`. Prosseguir? [s/N]"
115
+ 5. Somente após `s`: copiar de volta
116
+
117
+ ```bash
118
+ cp -r "$SNAPSHOT_DIR/commands" .dw/
119
+ cp -r "$SNAPSHOT_DIR/templates" .dw/
120
+ cp -r "$SNAPSHOT_DIR/references" .dw/ 2>/dev/null
121
+ cp -r "$SNAPSHOT_DIR/scripts" .dw/ 2>/dev/null
122
+ [ -d "$SNAPSHOT_DIR/agents-skills" ] && cp -r "$SNAPSHOT_DIR/agents-skills" .agents/skills 2>/dev/null
123
+ ```
124
+
125
+ 6. Reportar: snapshot restaurado, versão provavelmente recuperada (ler de `.dw/commands/dw-help.md` ou metadata se houver)
126
+
87
127
  ## Opções Avançadas
88
128
 
89
129
  Se o usuário pedir uma versão específica (não `@latest`):
@@ -0,0 +1,56 @@
1
+ ---
2
+ id: NNN
3
+ status: Proposed
4
+ title: [Título imperativo curto da decisão]
5
+ date: YYYY-MM-DD
6
+ prd: [slug do PRD, ex: prd-user-auth]
7
+ schema_version: "1.0"
8
+ supersedes: null
9
+ superseded_by: null
10
+ ---
11
+
12
+ # ADR-NNN: [Título]
13
+
14
+ ## Status
15
+
16
+ Proposed | Accepted | Deprecated | Superseded by ADR-XXX
17
+
18
+ ## Context
19
+
20
+ [Contexto do problema. Quais forças motivadoras levaram a esta decisão?
21
+ 1-3 parágrafos curtos. Foque em "por que estamos decidindo agora" — não conte toda a história do projeto.]
22
+
23
+ ## Decision
24
+
25
+ [A decisão tomada. Comece com um verbo ("Adotar", "Usar", "Migrar para", "Rejeitar").
26
+ 1 frase acionável, seguida de 1-3 frases de detalhe se necessário.]
27
+
28
+ ## Alternatives Considered
29
+
30
+ 1. **[Alternativa 1]** — [o que era, por que não foi escolhida. 1-2 frases.]
31
+ 2. **[Alternativa 2]** — [o que era, por que não foi escolhida. 1-2 frases.]
32
+ 3. **[Adicione mais se relevante.]**
33
+
34
+ ## Consequences
35
+
36
+ ### Positivas
37
+ - [Consequência positiva 1]
38
+ - [Consequência positiva 2]
39
+
40
+ ### Negativas
41
+ - [Custo aceito 1 — não omita]
42
+ - [Custo aceito 2]
43
+
44
+ ### Neutras / Mitigações
45
+ - [Tradeoff sem viés, ou plano de mitigação]
46
+
47
+ ## Related
48
+
49
+ - PRD: `.dw/spec/[prd-slug]/prd.md`
50
+ - TechSpec: `.dw/spec/[prd-slug]/techspec.md` (se aplicável)
51
+ - Tasks afetadas: [lista de tasks, se aplicável]
52
+ - ADRs relacionadas: [lista, se aplicável]
53
+
54
+ ## References
55
+
56
+ - [Links para documentação externa, RFC, post, issue]
@@ -1,3 +1,9 @@
1
+ ---
2
+ type: prd
3
+ schema_version: "1.0"
4
+ status: draft
5
+ ---
6
+
1
7
  # Template de Documento de Requisitos de Produto (PRD)
2
8
 
3
9
  ## Visão Geral
@@ -68,3 +74,9 @@ Detalhes de implementação serão abordados na Especificação Técnica.]
68
74
  - Perguntas sobre necessidades do usuário ou objetivos de negócio
69
75
  - Dependências de fatores de negócio externos
70
76
  - Áreas requerendo design ou pesquisa de usuário]
77
+
78
+ ## Related ADRs
79
+
80
+ [Liste ADRs que constrangem ou informam esta feature. Deixe vazio se não houver. Use `/dw-adr` para registrar uma decisão que surgir durante a execução.
81
+
82
+ - `adrs/adr-NNN.md` — [título curto]]
@@ -1,3 +1,9 @@
1
+ ---
2
+ type: task
3
+ schema_version: "1.0"
4
+ status: pending
5
+ ---
6
+
1
7
  # Tarefa X.0: [Título da Tarefa Principal]
2
8
 
3
9
  <critical>Ler os arquivos de prd.md e techspec.md desta pasta, se você não ler esses arquivos sua tarefa será invalidada</critical>
@@ -60,3 +66,9 @@ git commit -m "feat([modulo]): [descrição]
60
66
  - [item 2]
61
67
  - Add unit tests"
62
68
  ```
69
+
70
+ ## Related ADRs
71
+
72
+ [ADRs que restringem decisões desta task. Deixe vazio se não houver.
73
+
74
+ - `adrs/adr-NNN.md` — [título curto, como a decisão afeta esta task]]
@@ -1,3 +1,9 @@
1
+ ---
2
+ type: tasks-index
3
+ schema_version: "1.0"
4
+ status: draft
5
+ ---
6
+
1
7
  # Resumo de Tarefas de Implementação de [Funcionalidade]
2
8
 
3
9
  ## Branch
@@ -1,3 +1,9 @@
1
+ ---
2
+ type: techspec
3
+ schema_version: "1.0"
4
+ status: draft
5
+ ---
6
+
1
7
  # Template de Especificação Técnica
2
8
 
3
9
  ## Resumo Executivo
@@ -121,3 +127,9 @@ type NomeServico interface {
121
127
  ### Arquivos Relevantes
122
128
 
123
129
  [Liste aqui arquivos relevantes do projeto]
130
+
131
+ ## Related ADRs
132
+
133
+ [Liste ADRs arquiteturais que constrangem ou informam este techspec. Deixe vazio se não houver. Use `/dw-adr` durante a execução para registrar decisões novas.
134
+
135
+ - `adrs/adr-NNN.md` — [título curto]]
@@ -0,0 +1,189 @@
1
+ ---
2
+ name: dw-council
3
+ description: |
4
+ Orchestrates a multi-advisor debate (3-5 archetypes) to stress-test
5
+ high-stakes product, architecture, or scope decisions. Uses parallel
6
+ subagents with steel-manning, concession tracking, and dissent-preserving
7
+ synthesis. Invoked opt-in via `--council` flag from dw-brainstorm and
8
+ dw-create-techspec, or standalone when the user explicitly needs a
9
+ rigorous debate. Do not use for small decisions, routine implementation,
10
+ or when a single answer is already obvious.
11
+ allowed-tools:
12
+ - Read
13
+ - Task
14
+ - Write
15
+ ---
16
+
17
+ # dw-council — Multi-Advisor Debate
18
+
19
+ A real embedded subagent workflow — not inline roleplay. Each archetype is dispatched as an independent subagent with the archetype's priorities and debate protocol.
20
+
21
+ ## When to Use
22
+
23
+ - High-impact product, architecture, or scope decisions with real trade-offs
24
+ - Stress-testing a techspec proposal before committing
25
+ - Comparing multiple viable options where stakeholder priorities differ
26
+ - Preserving dissent instead of collapsing tension into false consensus
27
+
28
+ ## When NOT to Use
29
+
30
+ - Low-stakes or obviously-reversible decisions (a council is expensive; reserve for meaningful debates)
31
+ - Decisions already covered by an existing ADR
32
+ - When a single specialized skill suffices (e.g., `security-review` for auth concerns, `ui-ux-pro-max` for visual direction)
33
+
34
+ ## Required Inputs
35
+
36
+ - **Dilemma** (from caller or user): a refined problem statement with explicit constraints and the 2+ candidate paths
37
+ - **Context**: links to PRD/TechSpec/task files, rules, prior ADRs
38
+ - **Roster size**: 3, 4, or 5 advisors (see selection rules below)
39
+
40
+ ## Archetype Roster
41
+
42
+ The five archetypes live in `agents/*.md` (relative to this SKILL.md). Each is an independent subagent persona. Dispatch by id:
43
+
44
+ | Id | Focus |
45
+ |----|-------|
46
+ | `pragmatic-engineer` | Delivery, maintenance, boring tech that ships |
47
+ | `architect-advisor` | Boundaries, coupling/cohesion, compounding debt |
48
+ | `security-advocate` | Threat model, attack surface, blast radius |
49
+ | `product-mind` | User impact, business value, opportunity cost |
50
+ | `devils-advocate` | Stress-tester, hidden assumptions, edge cases |
51
+
52
+ ## Roster Selection
53
+
54
+ - **3 advisors** for binary choices or a narrow trade-off axis
55
+ - **4 advisors** for multi-factor decisions with 2-3 competing concerns
56
+ - **5 advisors** for broad, multi-faceted dilemmas
57
+
58
+ Rules:
59
+ - Always include `devils-advocate` when consensus forms quickly or the user explicitly asks for stress-testing
60
+ - Prefer the smallest roster that still produces real tension
61
+ - Match archetypes to the dilemma: security decision → include `security-advocate`; product scope → include `product-mind`; etc.
62
+
63
+ ## Phase 1: Opening Statements (parallel dispatch)
64
+
65
+ Dispatch all selected advisors **in parallel** using the Task/Agent tool. Each receives:
66
+
67
+ 1. The refined dilemma and explicit constraints
68
+ 2. The roster of other advisors in the session
69
+ 3. The instruction: *"Deliver your opening statement (2-3 paragraphs) ending with a one-line **Key Point**. Argue from your archetype's real priorities defined in `agents/<your-id>.md`."*
70
+
71
+ Render as:
72
+
73
+ ```markdown
74
+ ## Opening Statements
75
+
76
+ ### [Advisor Name] — [Archetype]
77
+ [Opening statement]
78
+
79
+ **Key Point:** [one-line summary]
80
+ ```
81
+
82
+ ## Phase 2: Tensions and Rebuttals
83
+
84
+ Read the openings and identify 2-4 **genuine tensions** (Side A, Side B, meaningful stakes — not cosmetic disagreements).
85
+
86
+ For each tension, re-dispatch the two opposing advisors (can be parallel within a tension, sequential across tensions) with this prompt:
87
+
88
+ ```
89
+ Steel-man [opponent]'s position in 1-2 sentences, then deliver your rebuttal
90
+ in 1 paragraph. State whether you concede, partially concede, or hold firm,
91
+ and why. Reference your priorities from agents/<your-id>.md.
92
+ ```
93
+
94
+ Record as:
95
+
96
+ ```markdown
97
+ ## Core Tensions
98
+
99
+ | Tension | Side A (Advisor) | Side B (Advisor) | Facilitator Note |
100
+ |---------|------------------|------------------|------------------|
101
+ | ... | ... | ... | ... |
102
+
103
+ ### Key Concessions
104
+ - **[Advisor A]** concedes to **[Advisor B]** on [point] because [reason]
105
+ - **[Advisor C]** holds firm on [point] because [reason]
106
+ ```
107
+
108
+ ## Phase 3: Position Evolution
109
+
110
+ ```markdown
111
+ ## Position Evolution
112
+
113
+ | Advisor | Initial Position | Final Position | Changed? |
114
+ |---------|------------------|----------------|----------|
115
+ | ... | ... | ... | Yes/No |
116
+
117
+ **Key Shifts:**
118
+ - [Who changed and why]
119
+ ```
120
+
121
+ ## Phase 4: Synthesis
122
+
123
+ ```markdown
124
+ ## Council Synthesis
125
+
126
+ ### Points of Consensus
127
+ - ...
128
+
129
+ ### Unresolved Tensions
130
+ | Tension | Position A | Position B | Trade-off |
131
+ |---------|------------|------------|-----------|
132
+ | ... | ... | ... | ... |
133
+
134
+ ### Recommended Path Forward
135
+ **Primary Recommendation:** ...
136
+
137
+ **Rationale:** ...
138
+
139
+ **Dissenting View:** [preserve the loudest holdout — do not flatten to consensus]
140
+
141
+ ### Risk Mitigation
142
+ - ...
143
+
144
+ ### What Would Change the Recommendation
145
+ - [condition X would flip the recommendation because ...]
146
+ ```
147
+
148
+ ## Output Location
149
+
150
+ - **Embedded mode** (invoked by `/dw-brainstorm --council` or `/dw-create-techspec --council`): return the synthesis inline; the caller extracts what it needs for the parent artifact (PRD, techspec, ADR).
151
+ - **Standalone mode**: save to `.dw/spec/<prd-slug>/council-YYYYMMDD.md` (if a PRD is active) or present inline if no PRD context exists. If the decision warrants a permanent record, suggest `/dw-adr` as the next step.
152
+
153
+ ## Debate Protocols (non-negotiable)
154
+
155
+ - **Steel-man first**: every rebuttal starts with the strongest version of the opposing case
156
+ - **Evidence required**: no bare assertions — point to the PRD, code, rule, or prior decision
157
+ - **No false consensus**: preserve live disagreement in the synthesis
158
+ - **Authentic voices**: each advisor argues from its real priorities, not a diplomatic middle
159
+ - **Concession discipline**: if an advisor moves, record what changed their mind
160
+
161
+ ## Failure Handling
162
+
163
+ - If an advisor returns out-of-character content, re-dispatch once with a protocol reminder
164
+ - If the failure repeats, note it in the synthesis and proceed with remaining advisors
165
+ - If fewer than 2 real tensions emerge: the dilemma may be lower-stakes than expected. Note that and produce a condensed synthesis. **This is a signal that a council may have been overkill.**
166
+
167
+ ## Integration With Other dw-* Commands
168
+
169
+ - **`/dw-brainstorm --council`** (opt-in): invokes the council after the normal brainstorm to stress-test the top 2-3 options before recommending
170
+ - **`/dw-create-techspec --council`** (opt-in): invokes the council on the primary architectural decision of the techspec before finalizing
171
+ - **Standalone** `/dw-council "<dilemma>"` (if registered as a command — currently this is a bundled skill invoked by the two above; it can be promoted to a command in a future release if direct usage becomes common)
172
+
173
+ The `--council` flag is **additive**: omitting it produces the normal brainstorm/techspec flow. Including it adds a debate section to the output.
174
+
175
+ ## Inspired by
176
+
177
+ Ported from Compozy's `cy-idea-factory` council subsystem:
178
+
179
+ - Protocol: `/tmp/compozy/.agents/skills/cy-idea-factory/references/council.md`
180
+ - Archetypes: `/tmp/compozy/extensions/cy-idea-factory/agents/*/AGENT.md`
181
+
182
+ Adaptations for dev-workflow:
183
+
184
+ - Five-archetype roster (dropped `the-thinker` to keep the roster lean for the initial release; can be added later)
185
+ - No dependency on a host `run_agent` registry: archetypes are plain markdown files that the orchestrator reads and passes to subagents via the Task/Agent tool
186
+ - Output paths use `.dw/spec/<prd>/council-*.md` instead of `.compozy/tasks/<name>/`
187
+ - Integration points map to dev-workflow commands (`dw-brainstorm`, `dw-create-techspec`) instead of Compozy's idea-factory pipeline
188
+
189
+ Credit: Compozy project (https://github.com/compozy/compozy).