@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.
- package/README.md +29 -6
- package/lib/constants.js +4 -0
- package/package.json +1 -1
- package/scaffold/en/commands/dw-adr.md +117 -0
- package/scaffold/en/commands/dw-autopilot.md +7 -0
- package/scaffold/en/commands/dw-brainstorm.md +6 -0
- package/scaffold/en/commands/dw-bugfix.md +9 -0
- package/scaffold/en/commands/dw-code-review.md +18 -0
- package/scaffold/en/commands/dw-create-tasks.md +12 -0
- package/scaffold/en/commands/dw-create-techspec.md +8 -0
- package/scaffold/en/commands/dw-fix-qa.md +5 -0
- package/scaffold/en/commands/dw-generate-pr.md +8 -0
- package/scaffold/en/commands/dw-help.md +42 -3
- package/scaffold/en/commands/dw-quick.md +8 -1
- package/scaffold/en/commands/dw-refactoring-analysis.md +1 -0
- package/scaffold/en/commands/dw-resume.md +10 -3
- package/scaffold/en/commands/dw-revert-task.md +114 -0
- package/scaffold/en/commands/dw-review-implementation.md +6 -0
- package/scaffold/en/commands/dw-run-plan.md +19 -1
- package/scaffold/en/commands/dw-run-task.md +14 -1
- package/scaffold/en/commands/dw-update.md +39 -0
- package/scaffold/en/templates/adr-template.md +56 -0
- package/scaffold/en/templates/prd-template.md +12 -0
- package/scaffold/en/templates/task-template.md +12 -0
- package/scaffold/en/templates/tasks-template.md +6 -0
- package/scaffold/en/templates/techspec-template.md +12 -0
- package/scaffold/pt-br/commands/dw-adr.md +117 -0
- package/scaffold/pt-br/commands/dw-autopilot.md +7 -0
- package/scaffold/pt-br/commands/dw-brainstorm.md +6 -0
- package/scaffold/pt-br/commands/dw-bugfix.md +9 -0
- package/scaffold/pt-br/commands/dw-code-review.md +18 -0
- package/scaffold/pt-br/commands/dw-create-tasks.md +12 -0
- package/scaffold/pt-br/commands/dw-create-techspec.md +8 -0
- package/scaffold/pt-br/commands/dw-fix-qa.md +5 -0
- package/scaffold/pt-br/commands/dw-generate-pr.md +8 -0
- package/scaffold/pt-br/commands/dw-help.md +42 -3
- package/scaffold/pt-br/commands/dw-quick.md +8 -1
- package/scaffold/pt-br/commands/dw-refactoring-analysis.md +1 -0
- package/scaffold/pt-br/commands/dw-resume.md +10 -3
- package/scaffold/pt-br/commands/dw-revert-task.md +114 -0
- package/scaffold/pt-br/commands/dw-review-implementation.md +6 -0
- package/scaffold/pt-br/commands/dw-run-plan.md +19 -1
- package/scaffold/pt-br/commands/dw-run-task.md +14 -1
- package/scaffold/pt-br/commands/dw-update.md +40 -0
- package/scaffold/pt-br/templates/adr-template.md +56 -0
- package/scaffold/pt-br/templates/prd-template.md +12 -0
- package/scaffold/pt-br/templates/task-template.md +12 -0
- package/scaffold/pt-br/templates/tasks-template.md +6 -0
- package/scaffold/pt-br/templates/techspec-template.md +12 -0
- package/scaffold/skills/dw-council/SKILL.md +189 -0
- package/scaffold/skills/dw-council/agents/architect-advisor.md +44 -0
- package/scaffold/skills/dw-council/agents/devils-advocate.md +45 -0
- package/scaffold/skills/dw-council/agents/pragmatic-engineer.md +47 -0
- package/scaffold/skills/dw-council/agents/product-mind.md +48 -0
- package/scaffold/skills/dw-council/agents/security-advocate.md +48 -0
- package/scaffold/skills/dw-memory/SKILL.md +178 -0
- package/scaffold/skills/dw-review-rigor/SKILL.md +145 -0
- 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.
|
|
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.
|
|
33
|
-
5.
|
|
34
|
-
6.
|
|
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
|
|
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: 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).
|