@brunosps00/dev-workflow 0.4.7 → 0.6.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 (64) hide show
  1. package/README.md +33 -6
  2. package/lib/constants.js +6 -0
  3. package/lib/install-deps.js +39 -1
  4. package/package.json +1 -1
  5. package/scaffold/en/commands/dw-adr.md +117 -0
  6. package/scaffold/en/commands/dw-autopilot.md +7 -0
  7. package/scaffold/en/commands/dw-brainstorm.md +6 -0
  8. package/scaffold/en/commands/dw-bugfix.md +9 -0
  9. package/scaffold/en/commands/dw-code-review.md +28 -0
  10. package/scaffold/en/commands/dw-create-tasks.md +12 -0
  11. package/scaffold/en/commands/dw-create-techspec.md +8 -0
  12. package/scaffold/en/commands/dw-fix-qa.md +5 -0
  13. package/scaffold/en/commands/dw-generate-pr.md +11 -0
  14. package/scaffold/en/commands/dw-help.md +44 -3
  15. package/scaffold/en/commands/dw-quick.md +8 -1
  16. package/scaffold/en/commands/dw-refactoring-analysis.md +1 -0
  17. package/scaffold/en/commands/dw-resume.md +10 -3
  18. package/scaffold/en/commands/dw-revert-task.md +114 -0
  19. package/scaffold/en/commands/dw-review-implementation.md +17 -0
  20. package/scaffold/en/commands/dw-run-plan.md +19 -1
  21. package/scaffold/en/commands/dw-run-task.md +14 -1
  22. package/scaffold/en/commands/dw-security-check.md +271 -0
  23. package/scaffold/en/commands/dw-update.md +39 -0
  24. package/scaffold/en/templates/adr-template.md +56 -0
  25. package/scaffold/en/templates/prd-template.md +12 -0
  26. package/scaffold/en/templates/task-template.md +12 -0
  27. package/scaffold/en/templates/tasks-template.md +6 -0
  28. package/scaffold/en/templates/techspec-template.md +12 -0
  29. package/scaffold/pt-br/commands/dw-adr.md +117 -0
  30. package/scaffold/pt-br/commands/dw-autopilot.md +7 -0
  31. package/scaffold/pt-br/commands/dw-brainstorm.md +6 -0
  32. package/scaffold/pt-br/commands/dw-bugfix.md +9 -0
  33. package/scaffold/pt-br/commands/dw-code-review.md +28 -0
  34. package/scaffold/pt-br/commands/dw-create-tasks.md +12 -0
  35. package/scaffold/pt-br/commands/dw-create-techspec.md +8 -0
  36. package/scaffold/pt-br/commands/dw-fix-qa.md +5 -0
  37. package/scaffold/pt-br/commands/dw-generate-pr.md +11 -0
  38. package/scaffold/pt-br/commands/dw-help.md +44 -3
  39. package/scaffold/pt-br/commands/dw-quick.md +8 -1
  40. package/scaffold/pt-br/commands/dw-refactoring-analysis.md +1 -0
  41. package/scaffold/pt-br/commands/dw-resume.md +10 -3
  42. package/scaffold/pt-br/commands/dw-revert-task.md +114 -0
  43. package/scaffold/pt-br/commands/dw-review-implementation.md +17 -0
  44. package/scaffold/pt-br/commands/dw-run-plan.md +19 -1
  45. package/scaffold/pt-br/commands/dw-run-task.md +14 -1
  46. package/scaffold/pt-br/commands/dw-security-check.md +271 -0
  47. package/scaffold/pt-br/commands/dw-update.md +40 -0
  48. package/scaffold/pt-br/templates/adr-template.md +56 -0
  49. package/scaffold/pt-br/templates/prd-template.md +12 -0
  50. package/scaffold/pt-br/templates/task-template.md +12 -0
  51. package/scaffold/pt-br/templates/tasks-template.md +6 -0
  52. package/scaffold/pt-br/templates/techspec-template.md +12 -0
  53. package/scaffold/skills/dw-council/SKILL.md +189 -0
  54. package/scaffold/skills/dw-council/agents/architect-advisor.md +44 -0
  55. package/scaffold/skills/dw-council/agents/devils-advocate.md +45 -0
  56. package/scaffold/skills/dw-council/agents/pragmatic-engineer.md +47 -0
  57. package/scaffold/skills/dw-council/agents/product-mind.md +48 -0
  58. package/scaffold/skills/dw-council/agents/security-advocate.md +48 -0
  59. package/scaffold/skills/dw-memory/SKILL.md +178 -0
  60. package/scaffold/skills/dw-review-rigor/SKILL.md +145 -0
  61. package/scaffold/skills/dw-verify/SKILL.md +196 -0
  62. package/scaffold/skills/security-review/languages/csharp.md +507 -0
  63. package/scaffold/skills/security-review/languages/rust.md +584 -0
  64. package/scaffold/skills/security-review/languages/typescript.md +373 -0
@@ -1,3 +1,9 @@
1
+ ---
2
+ type: techspec
3
+ schema_version: "1.0"
4
+ status: draft
5
+ ---
6
+
1
7
  # Technical Specification Template
2
8
 
3
9
  ## Executive Summary
@@ -121,3 +127,9 @@ type ServiceName interface {
121
127
  ### Relevant Files
122
128
 
123
129
  [List relevant project files here]
130
+
131
+ ## Related ADRs
132
+
133
+ [List architectural ADRs that constrain or inform this techspec. Leave empty if none. Use `/dw-adr` during execution to record new decisions.
134
+
135
+ - `adrs/adr-NNN.md` — [short title]]
@@ -0,0 +1,117 @@
1
+ <system_instructions>
2
+ Você é um registrador de decisões arquiteturais. Sua função é criar um **Architecture Decision Record (ADR)** que documente uma decisão técnica importante feita durante a fase atual do PRD.
3
+
4
+ ## Quando Usar
5
+ - Use quando uma decisão arquitetural ou de design foi tomada e precisa ser registrada para referência futura (escolha de biblioteca, padrão de comunicação, tradeoff de performance, restrição imposta por compliance, etc.)
6
+ - Use durante `/dw-create-techspec` ou `/dw-run-task` quando a justificativa da decisão não cabe no techspec nem no task file
7
+ - NÃO use para decisões triviais ou reversíveis sem custo (escolha de nome de variável, ordem de import)
8
+ - NÃO use para registrar bugs ou incidents (use `/dw-bugfix` ou notas operacionais)
9
+
10
+ ## Posição no Pipeline
11
+ **Antecessor:** qualquer ponto do pipeline após `/dw-create-prd` | **Sucessor:** continua o fluxo anterior (techspec, task, review)
12
+
13
+ O ADR é **aditivo**: ele não substitui nenhuma etapa do pipeline. Qualquer command existente pode invocar `/dw-adr` quando uma decisão não-trivial precisar de registro permanente.
14
+
15
+ ## Variáveis de Entrada
16
+
17
+ | Variável | Descrição | Exemplo |
18
+ |----------|-----------|---------|
19
+ | `{{PRD_PATH}}` | Caminho da pasta do PRD ativo | `.dw/spec/prd-minha-feature` |
20
+ | `{{TITLE}}` | Título curto da decisão (imperativo) | "Usar PostgreSQL ao invés de MongoDB" |
21
+
22
+ Se `{{PRD_PATH}}` não for fornecido, pergunte ao usuário qual PRD está ativo (leia `.dw/spec/` e liste). Se `{{TITLE}}` não for fornecido, pergunte.
23
+
24
+ ## Localização dos Arquivos
25
+
26
+ - Diretório de ADRs: `{{PRD_PATH}}/adrs/`
27
+ - Arquivo novo: `{{PRD_PATH}}/adrs/adr-NNN.md` (NNN zero-padded para 3 dígitos)
28
+ - Template: `.dw/templates/adr-template.md`
29
+
30
+ ## Fluxo de Trabalho
31
+
32
+ ### 1. Descobrir o próximo número
33
+ - Liste os arquivos em `{{PRD_PATH}}/adrs/` (crie o diretório se não existir)
34
+ - O próximo número é `max(existentes) + 1`, ou `1` se vazio
35
+
36
+ ### 2. Coletar contexto (perguntas mínimas)
37
+
38
+ Pergunte ao usuário **4 perguntas objetivas**, uma por vez:
39
+
40
+ 1. **Contexto**: qual problema ou força motivadora levou a esta decisão? (1-3 frases)
41
+ 2. **Decisão**: qual é a decisão tomada? (1 frase acionável, começa com verbo)
42
+ 3. **Alternativas consideradas**: quais outras opções foram avaliadas e por que não foram escolhidas? (mínimo 2)
43
+ 4. **Consequências**: quais são os tradeoffs positivos e negativos desta decisão? (explicite os negativos — sem painting rosy)
44
+
45
+ ### 3. Escrever o arquivo ADR
46
+
47
+ Use `.dw/templates/adr-template.md` como base. Campos obrigatórios:
48
+
49
+ ```yaml
50
+ ---
51
+ id: NNN
52
+ status: Proposed | Accepted | Deprecated | Superseded
53
+ title: [título do ADR]
54
+ date: YYYY-MM-DD
55
+ prd: [slug do PRD]
56
+ schema_version: "1.0"
57
+ ---
58
+
59
+ # ADR-NNN: [Título]
60
+
61
+ ## Status
62
+ [Proposed | Accepted | Deprecated | Superseded by ADR-XXX]
63
+
64
+ ## Context
65
+ [Contexto e forças motivadoras]
66
+
67
+ ## Decision
68
+ [A decisão tomada]
69
+
70
+ ## Alternatives Considered
71
+ 1. **[Alternativa 1]** — [por que não foi escolhida]
72
+ 2. **[Alternativa 2]** — [por que não foi escolhida]
73
+
74
+ ## Consequences
75
+ ### Positivas
76
+ - [consequência positiva 1]
77
+
78
+ ### Negativas
79
+ - [consequência negativa / tradeoff aceito]
80
+
81
+ ## Related
82
+ - PRD: `.dw/spec/prd-[nome]/prd.md`
83
+ - TechSpec: `.dw/spec/prd-[nome]/techspec.md` (se aplicável)
84
+ - Tasks afetadas: [lista, se aplicável]
85
+ ```
86
+
87
+ ### 4. Atualizar referências cruzadas
88
+
89
+ Se o ADR for criado **durante** a execução de um PRD, adicionar uma linha na seção "Related ADRs" dos artefatos relacionados:
90
+ - `prd.md`, `techspec.md`, ou `[N]_task.md`, conforme o escopo da decisão
91
+
92
+ Se a seção "Related ADRs" não existir no arquivo, adicioná-la ao final.
93
+
94
+ ### 5. Reportar
95
+
96
+ Apresente ao usuário:
97
+ - Caminho do ADR criado
98
+ - Artefatos atualizados com referência cruzada
99
+ - Status inicial (geralmente `Accepted` para decisões já tomadas, `Proposed` para decisões ainda abertas)
100
+
101
+ ## Comportamento Obrigatório
102
+
103
+ <critical>NUNCA sobrescreva um ADR existente. Cada ADR é imutável — se a decisão muda, crie um novo ADR com status `Supersedes ADR-NNN` e marque o antigo como `Superseded by ADR-XXX`.</critical>
104
+
105
+ <critical>NUNCA pinte o tradeoff como "só positivo". A seção Consequências Negativas é obrigatória — se não houver nenhum custo, a decisão não precisa de ADR.</critical>
106
+
107
+ ## Inspired by
108
+
109
+ Este command é inspirado no padrão de ADRs de `/tmp/compozy/.agents/skills/cy-create-adr/` do projeto [Compozy](https://github.com/compozy/compozy). Adaptações para dev-workflow:
110
+
111
+ - Paths são `.dw/spec/<prd>/adrs/` ao invés de `.compozy/tasks/<name>/adrs/`
112
+ - 4 perguntas mínimas em vez do fluxo interativo mais longo (alinhado com o estilo conciso de outros commands dw-*)
113
+ - Integração explícita com `schema_version` dos templates v1.0
114
+
115
+ Credit: Compozy project.
116
+
117
+ </system_instructions>
@@ -33,6 +33,13 @@ Uma etapa que invoca um comando `/dw-xxx` SO e considerada completa quando os ar
33
33
  ## Posicao no Pipeline
34
34
  **Antecessor:** (desejo do usuario) | **Sucessor:** (merge do PR)
35
35
 
36
+ ## Skills Complementares
37
+
38
+ | Skill | Gatilho |
39
+ |-------|---------|
40
+ | `dw-memory` | **SEMPRE** — thread de memory atravessa todas as fases (brainstorm -> PRD -> techspec -> tasks -> execucao -> QA -> review -> PR). Decisoes de um gate alimentam o contexto do proximo. |
41
+ | `dw-verify` | **SEMPRE** — invocada em cada gate (PRD, Tasks, PR) antes de pedir aprovacao do usuario; e antes do commit final + push. |
42
+
36
43
  ## Variaveis de Entrada
37
44
 
38
45
  | Variavel | Descricao | Exemplo |
@@ -11,6 +11,11 @@ Você é um facilitador de brainstorming para o workspace atual. Este comando ex
11
11
  ## Posição no Pipeline
12
12
  **Antecessor:** (ideia do usuário) | **Sucessor:** `/dw-create-prd`
13
13
 
14
+ ## Flags
15
+
16
+ - **(padrão)**: brainstorm normal com 3-7 opções (conservadora, equilibrada, ousada) e trade-offs
17
+ - **`--council`**: após o brainstorm normal, invoca a skill `dw-council` para stress-test das top 2-3 opções através de 3-5 archetypes (pragmatic-engineer, architect-advisor, security-advocate, product-mind, devils-advocate). Útil quando a escolha é de alto impacto e há genuine dissent entre caminhos.
18
+
14
19
  ## Fluxograma de Decisão: Brainstorm vs PRD Direto
15
20
 
16
21
  ```dot
@@ -33,6 +38,7 @@ digraph brainstorm_decision {
33
38
 
34
39
  Quando disponíveis no projeto em `./.agents/skills/`, use para enriquecer a ideação:
35
40
 
41
+ - `dw-council` (opt-in via `--council`): stress-test multi-advisor das opções mais promissoras com steel-manning obrigatório e concession tracking. **NÃO invocar por padrão** — só quando a flag está presente ou quando surge consenso rápido demais (sinal de false consensus).
36
42
  - `ui-ux-pro-max`: use quando o brainstorm envolver frontend, direção de estilo UI, escolhas de design system ou exploração de identidade visual
37
43
  - `vercel-react-best-practices`: use quando explorar arquitetura React/Next.js ou trade-offs de performance
38
44
  - `security-review`: use quando o brainstorm tocar auth, manipulação de dados ou features sensíveis à segurança
@@ -15,6 +15,7 @@
15
15
 
16
16
  Quando disponíveis no projeto em `./.agents/skills/`, use estas skills como suporte contextual sem substituir este comando:
17
17
 
18
+ - `dw-verify`: **SEMPRE** — em modo Direto, invocada antes do commit da correção. O VERIFICATION REPORT deve mostrar que o sintoma original do bug não se reproduz mais (não apenas que os testes passam).
18
19
  - `vercel-react-best-practices`: use quando o bug afeta React/Next.js e há suspeita de problemas de render, hidratação, fetching, waterfall, bundle ou re-render
19
20
  - `webapp-testing`: use quando a correção requer fluxo E2E/reteste reproduzível em uma web app
20
21
  - `security-review`: use quando a causa raiz toca auth, autorização, input externo, upload, secrets, SQL, XSS, SSRF ou outras superfícies sensíveis
@@ -219,6 +220,14 @@
219
220
  - `ajustar` - me diga o que modificar no plano
220
221
  ```
221
222
 
223
+ ### 5.5. Verificação Final (Modo Direto — obrigatório antes do commit)
224
+
225
+ <critical>Após aplicar as tarefas aprovadas em modo Direto, invocar `dw-verify` antes do commit. O VERIFICATION REPORT deve mostrar:
226
+ 1. O comando de verificação do projeto (test + lint + build) com exit 0.
227
+ 2. Reprodução do sintoma original: o cenário que disparava o bug já NÃO dispara mais.
228
+
229
+ Sem PASS nos dois, NÃO commit. Reportar o que falhou e retomar da etapa 4 (análise de causa raiz).</critical>
230
+
222
231
  ### 6. Gerar Documento Bugfix (Modo Análise)
223
232
 
224
233
  <critical>
@@ -21,6 +21,9 @@ Normalmente invocado antes de criar PR via `/dw-generate-pr`
21
21
 
22
22
  Quando disponíveis no projeto em `./.agents/skills/`, use estas skills como apoio analítico sem substituir este comando:
23
23
 
24
+ - `dw-review-rigor`: **SEMPRE** — aplica de-duplication (mesmo pattern em N arquivos = 1 finding), severity ordering (critical → high → medium → low), verify-before-flag, skip-what-linter-catches, e signal-over-volume. A tabela "Problemas Encontrados" do relatório segue essa disciplina.
25
+ - `dw-verify`: **SEMPRE** — invocada antes de emitir verdict `APROVADO` ou `APROVADO COM RESSALVAS`. Sem VERIFICATION REPORT PASS (test + lint + build), o verdict não pode sair como APROVADO.
26
+ - `/dw-security-check`: **SEMPRE para projetos TS/Python/C#/Rust** — invocado como step 6.7 (Camada de Segurança) antes de emitir verdict. Se o projeto usa linguagem suportada e `security-check.md` não existe OU tem status REJECTED, o verdict é **REPROVADO** — sem exceção.
24
27
  - `security-review`: use quando auth, autorização, input externo, upload, SQL, integração externa, secrets, SSRF, XSS ou superfícies sensíveis estiverem presentes
25
28
  - `vercel-react-best-practices`: use quando o diff tocar React/Next.js para revisar padrões de renderização, fetching, bundle, hidratação e performance
26
29
 
@@ -180,6 +183,31 @@ Verificar:
180
183
 
181
184
  <critical>O REVIEW NÃO PODE SER APROVADO SE ALGUM TESTE FALHAR</critical>
182
185
 
186
+ ### 6.5. Aplicar `dw-review-rigor` (Obrigatório)
187
+
188
+ Antes de escrever a tabela "Problemas Encontrados" do relatório, invocar a skill `dw-review-rigor` e aplicar as cinco regras:
189
+
190
+ 1. **De-duplicação**: se o mesmo padrão aparece em N arquivos, emitir 1 finding com a lista de arquivos afetados — nunca N findings idênticos.
191
+ 2. **Severity ordering**: apresentar sempre na ordem critical → high → medium → low (não por arquivo).
192
+ 3. **Verify intent before flagging**: checar comentários adjacentes, ADRs em `.dw/spec/*/adrs/`, cobertura de testes, regras em `.dw/rules/`. Não flaggar o que tem justificativa documentada.
193
+ 4. **Skip what linter catches**: rodar o linter do projeto primeiro; nada que ele já reporta vira finding.
194
+ 5. **Signal over volume**: máximo ~8 findings precisos são mais úteis que 30 marginais. Manter todos os critical/high; podar medium/low para os mais impactantes.
195
+
196
+ Se houver reviews anteriores em `{{PRD_PATH}}/reviews/` ou `{{PRD_PATH}}/dw-code-review.md` (round anterior), ler e emitir **apenas findings NOVOS** — não re-flaggar itens já tratados.
197
+
198
+ ### 6.6. Verificação Final (Obrigatório antes do verdict)
199
+
200
+ <critical>Invocar `dw-verify` e incluir o VERIFICATION REPORT no início do relatório. Sem PASS, o verdict só pode ser `REPROVADO` — nunca `APROVADO` ou `APROVADO COM RESSALVAS`.</critical>
201
+
202
+ ### 6.7. Camada de Segurança (Obrigatório para projetos TS/Python/C#/Rust)
203
+
204
+ <critical>Para projetos em TypeScript/JavaScript, Python, C# ou Rust que tiveram código modificado no diff, invocar `/dw-security-check` com o mesmo `{{PRD_PATH}}`. Sem `security-check.md` presente no PRD OU com status diferente de CLEAN/PASSED WITH OBSERVATIONS, o verdict é **REPROVADO** — sem exceção.</critical>
205
+
206
+ - Se `/dw-security-check` retornar **REJECTED**: verdict automático **REPROVADO**. Incluir na seção "Problemas Encontrados" do relatório final os findings CRITICAL/HIGH do security-check com severity apropriada.
207
+ - Se retornar **PASSED WITH OBSERVATIONS**: pode seguir para APROVADO COM RESSALVAS, listando as observations medium/low como ressalvas.
208
+ - Se retornar **CLEAN**: prossegue normalmente para o verdict baseado nos demais critérios.
209
+ - Projetos em linguagens não suportadas pelo security-check (Go, Java, PHP, Ruby etc.) → pular este step com nota visível no relatório de code-review.
210
+
183
211
  ### 7. Gerar Relatório de Code Review (Obrigatório)
184
212
 
185
213
  Salvar em `{{PRD_PATH}}/dw-code-review.md`:
@@ -42,10 +42,22 @@
42
42
  - Organizar sequenciamento
43
43
  - Incluir testes unitários como subtarefas de cada task
44
44
 
45
+ 3.5. **Verificação de Dependências Circulares (Pré-flight)**
46
+ - Antes de escrever qualquer arquivo, monte o grafo de dependências (campo `blockedBy` ou "Depende de" entre tasks)
47
+ - Detecte ciclos: se a task A depende de B e B depende (direta ou transitivamente) de A, há ciclo
48
+ - Se houver ciclo: **NÃO escreva os arquivos**. Apresente o ciclo ao usuário e peça reestruturação (ex: extrair responsabilidade comum, inverter dependência, mesclar tasks)
49
+ - Se não houver ciclo: prossiga
50
+
45
51
  4. **Gerar Arquivos de Tarefas Individuais**
46
52
  - Criar arquivo para cada tarefa principal
47
53
  - Detalhar subtarefas e critérios de sucesso
48
54
  - Incluir testes unitários obrigatórios
55
+ - **Enriquecimento codebase-aware (Opcional mas recomendado)**: para tasks que tocam áreas conhecidas do codebase, dispatche um Agent Explore em paralelo (um por task ou um por área) para preencher:
56
+ - "Arquivos Relevantes": paths e razão pela qual são relevantes para a task
57
+ - "Arquivos Dependentes": paths que podem precisar mudar em cascata
58
+ - "Regras Aplicáveis": links para `.dw/rules/*.md` que restringem a task
59
+ - "ADRs Relacionados": arquivos em `.dw/spec/<prd>/adrs/` que constrangem decisões
60
+ Esse enriquecimento é aditivo: não bloqueia a geração das tasks, apenas aumenta a qualidade do contexto que a `dw-run-task` recebe depois.
49
61
 
50
62
  ## Diretrizes de Criação de Tarefas
51
63
 
@@ -13,10 +13,16 @@
13
13
  ## Posição no Pipeline
14
14
  **Antecessor:** `/dw-create-prd` | **Sucessor:** `/dw-create-tasks`
15
15
 
16
+ ## Flags
17
+
18
+ - **(padrão)**: gera techspec normal a partir do PRD
19
+ - **`--council`**: antes de finalizar o techspec, invoca a skill `dw-council` sobre a decisão arquitetural principal (ex: monólito vs microserviços, SQL vs NoSQL, lib X vs Y). O output do council vira uma seção "Debate Arquitetural" no techspec, e decisões firmes viram ADR via `/dw-adr`. Útil quando o techspec introduz uma escolha estrutural de alto impacto.
20
+
16
21
  ## Skills Complementares
17
22
 
18
23
  Quando disponíveis no projeto em `./.agents/skills/`, use como apoio:
19
24
 
25
+ - `dw-council` (opt-in via `--council`): debate multi-advisor da decisão arquitetural principal com steel-manning. **NÃO invocar por padrão**.
20
26
  - `vercel-react-best-practices`: use quando definir arquitetura frontend para projetos React/Next.js
21
27
  - `ui-ux-pro-max`: use quando definir decisões de design system, paletas de cores, tipografia e estilo UI no TechSpec
22
28
  - `security-review`: use quando a feature tocar auth, autorização ou manipulação de dados sensíveis
@@ -94,6 +100,8 @@
94
100
  - Revisar padrões do projeto em `{{RULES_PATH}}`
95
101
  - Confirmar que o PRD existe em `{{PRD_PATH}}` ou `.dw/spec/prd-[nome-funcionalidade]/prd.md`
96
102
 
103
+ <critical>Hard gate: se o PRD tiver seção "Questões em Aberto" / "Open Questions" com itens não resolvidos, PARAR. Apresentar as questões ao usuário e pedir que sejam resolvidas antes de escrever o techspec. Um techspec construído sobre requisitos indefinidos gera retrabalho garantido.</critical>
104
+
97
105
  ## Fluxo de Trabalho
98
106
 
99
107
  ### 1. Analisar PRD (Obrigatório)
@@ -17,6 +17,7 @@ Você é um assistente IA especializado em correção de bugs pós-QA com retest
17
17
 
18
18
  Quando disponíveis no projeto em `./.agents/skills/`, use estas skills como suporte operacional sem substituir este comando:
19
19
 
20
+ - `dw-verify`: **SEMPRE** — invocada antes de marcar qualquer bug como `Corrigido` ou `Fechado` no `QA/bugs.md`. Sem VERIFICATION REPORT PASS (test + lint + build) + evidência de reteste, o status permanece `Reaberto` ou `Em análise`.
20
21
  - `webapp-testing`: suporte para estruturar retestes, capturas e scripts quando complementar ao Playwright MCP
21
22
  - `vercel-react-best-practices`: use apenas se a correção afetar frontend React/Next.js e houver risco de regressão de renderização, hidratação, fetching ou performance
22
23
 
@@ -88,6 +89,10 @@ Para cada bug corrigido:
88
89
  7. Registrar no relatório de QA qual usuário/perfil foi usado no reteste
89
90
  8. Se o reteste exigir auth persistente, inspeção além do MCP, ou reprodução mais fiel em navegador real, registrar no relatório
90
91
 
92
+ ### 3.5. Verificação Final Antes de Atualizar Status
93
+
94
+ <critical>Invocar a skill `dw-verify` antes de mudar o status de qualquer bug para `Corrigido` ou `Fechado`. O VERIFICATION REPORT (test + lint + build) deve ser PASS **e** a evidência de reteste do Playwright deve estar salva. Sem os dois, o status não muda.</critical>
95
+
91
96
  ### 4. Atualização de Artefatos
92
97
 
93
98
  Atualizar `QA/bugs.md` para cada bug:
@@ -9,6 +9,17 @@
9
9
  ## Posição no Pipeline
10
10
  **Antecessor:** `/dw-code-review` ou `/dw-commit` | **Sucessor:** (merge)
11
11
 
12
+ ## Skills Complementares
13
+
14
+ | Skill | Gatilho |
15
+ |-------|---------|
16
+ | `dw-verify` | **SEMPRE** — invocada antes do `git push`. Sem VERIFICATION REPORT PASS na sessão após a última edição de código, o PR **NÃO** pode ser criado. |
17
+ | `/dw-security-check` | **SEMPRE para projetos TS/Python/C#/Rust** — `security-check.md` com status ≠ REJECTED é obrigatório para projetos em linguagem suportada. |
18
+
19
+ <critical>Hard gate 1 (verify): se a sessão atual não tem um VERIFICATION REPORT PASS de `dw-verify` produzido APÓS a última edição/commit, PARAR e invocar `dw-verify` antes de prosseguir. PR é um artefato permanente — exige o maior rigor de verificação.</critical>
20
+
21
+ <critical>Hard gate 2 (security): para projetos TS/Python/C#/Rust, se `{{PRD_PATH}}/security-check.md` não existir OU tiver status REJECTED, PARAR e invocar `/dw-security-check` antes de prosseguir. Vulnerabilidades HIGH/CRITICAL NÃO podem chegar ao PR. Para outras linguagens (Go, Java, etc.), este gate é pulado com nota.</critical>
22
+
12
23
  ## Uso
13
24
 
14
25
  ```
@@ -11,7 +11,27 @@ Você é um assistente de ajuda do workspace. Quando invocado, apresente ao usu
11
11
  ## Comportamento
12
12
 
13
13
  - Se invocado sem argumentos (`/dw-help`): mostre o guia completo abaixo
14
- - Se invocado com argumento (`/dw-help dw-create-prd`): mostre apenas a seção detalhada daquele comando
14
+ - Se invocado com argumento correspondente a um comando (`/dw-help dw-create-prd`): mostre apenas a seção detalhada daquele comando
15
+ - Se invocado com **keyword que não é nome de comando** (`/dw-help bug`, `/dw-help review`, `/dw-help design`): faça lookup contextual — identifique o(s) comando(s) mais relevante(s) pela keyword e apresente cada um com 1-2 linhas de justificativa ("para bug, use `/dw-bugfix` porque..."). Use a tabela de mapeamento abaixo.
16
+
17
+ ### Mapeamento contextual (keyword → comando sugerido)
18
+
19
+ | Keyword(s) | Comando sugerido | Justificativa |
20
+ |------------|------------------|---------------|
21
+ | bug, erro, falha, problema | `/dw-bugfix` | Triagem automática bug vs feature + correção |
22
+ | review, revisão, qualidade | `/dw-code-review` | Review formal Nível 3 com relatório |
23
+ | qa, teste visual, playwright | `/dw-run-qa` | QA E2E com browser automation |
24
+ | refactor, smell, fowler | `/dw-refactoring-analysis` | Auditoria de code smells priorizada |
25
+ | design, ui, redesign | `/dw-redesign-ui` | Auditoria + propostas + implementação visual |
26
+ | decisão, adr, arquitetura | `/dw-adr` | Registrar Architecture Decision Record |
27
+ | debate, council, stress-test, opiniões | `/dw-brainstorm --council` ou `/dw-create-techspec --council` | Invoca `dw-council` para debate multi-advisor |
28
+ | security, segurança, vulnerabilidade, owasp, trivy, cve | `/dw-security-check` | Check multi-camada rígido (OWASP estático + Trivy SCA/IaC + audit nativo) para TS/Python/C#/Rust |
29
+ | reverter, rollback de task | `/dw-revert-task` | Revert seguro com check de dependências |
30
+ | hotfix, mudança rápida | `/dw-quick` | Task pontual com garantias sem PRD |
31
+ | retomar, onde parei | `/dw-resume` | Restaura contexto da sessão anterior |
32
+ | pesquisa, research | `/dw-deep-research` | Pesquisa multi-fonte com citações |
33
+ | ideia, brainstorm | `/dw-brainstorm` | Ideação estruturada com trade-offs |
34
+ | atualizar dev-workflow | `/dw-update` | Atualiza para versão npm mais recente |
15
35
 
16
36
  ---
17
37
 
@@ -116,6 +136,7 @@ Este workspace utiliza um sistema de comandos AI que automatiza o ciclo completo
116
136
  | `/dw-review-implementation` | Compara PRD vs código (FRs, endpoints, tasks) | Path do PRD | Relatório de gaps |
117
137
  | `/dw-code-review` | Code review formal (qualidade, rules, testes) | Path do PRD | `code-review.md` |
118
138
  | `/dw-refactoring-analysis` | Auditoria de code smells e oportunidades de refatoração (catálogo Fowler) | Path do PRD | `refactoring-analysis.md` |
139
+ | `/dw-security-check` | Check de segurança rígido (OWASP estático + Trivy SCA/IaC + audit nativo) para TS/Python/C#/Rust | Path do PRD ou código | `security-check.md` |
119
140
 
120
141
  ### Versionamento
121
142
 
@@ -123,13 +144,33 @@ Este workspace utiliza um sistema de comandos AI que automatiza o ciclo completo
123
144
  |---------|-----------|-------|--------|
124
145
  | `/dw-commit` | Commit semântico (Conventional Commits) | - | Commit |
125
146
  | `/dw-generate-pr` | Push + cria PR + copia body + abre URL | Branch alvo | PR no GitHub |
147
+ | `/dw-revert-task` | Reverte com segurança os commits de uma task específica (check de dependências + confirmação) | Path do PRD + número da task | Commits revertidos + `tasks.md` atualizado |
148
+
149
+ ### Decisões Arquiteturais
150
+
151
+ | Comando | O que faz | Input | Output |
152
+ |---------|-----------|-------|--------|
153
+ | `/dw-adr` | Registra um Architecture Decision Record (ADR) para decisão não-trivial durante o PRD | Path do PRD + título | `.dw/spec/<prd>/adrs/adr-NNN.md` + cross-refs atualizadas |
126
154
 
127
155
  ### Utilitários
128
156
 
129
157
  | Comando | O que faz | Input | Output |
130
158
  |---------|-----------|-------|--------|
131
- | `/dw-help` | Este guia de comandos | (opcional) comando | Este documento |
132
- | `/dw-update` | Atualiza o dev-workflow para a versão mais recente no npm sem sair do agente | (nenhum) | Arquivos gerenciados atualizados |
159
+ | `/dw-help` | Este guia de comandos (suporta lookup por keyword: `/dw-help bug`) | (opcional) comando ou keyword | Este documento ou seção filtrada |
160
+ | `/dw-update` | Atualiza o dev-workflow para a versão mais recente no npm sem sair do agente (suporta `--rollback`) | (nenhum) ou `--rollback` | Arquivos gerenciados atualizados ou restaurados |
161
+
162
+ ### Bundled Skills (invocadas internamente — não são commands)
163
+
164
+ Skills em `.agents/skills/` que os commands acima invocam transparentemente. Você não as chama diretamente.
165
+
166
+ | Skill | Invocada por | Papel |
167
+ |-------|--------------|-------|
168
+ | `dw-verify` | run-task, run-plan, fix-qa, bugfix, code-review, generate-pr, quick | Iron Law: nenhuma claim de sucesso sem VERIFICATION REPORT PASS |
169
+ | `dw-memory` | run-task, run-plan, autopilot, resume, revert-task | Memory de workflow em dois níveis (shared + task-local) com promotion test |
170
+ | `dw-review-rigor` | code-review, review-implementation, refactoring-analysis | De-duplication, severity ordering, verify-intent-before-flag, signal-over-volume |
171
+ | `dw-council` | brainstorm `--council`, create-techspec `--council` | Debate multi-advisor (3-5 archetypes) com steel-manning, concession tracking e synthesis que preserva dissent. Opt-in. |
172
+
173
+ Inspiradas em skills do projeto [Compozy](https://github.com/compozy/compozy) (`cy-final-verify`, `cy-workflow-memory`, `cy-review-round`).
133
174
 
134
175
  ## Fluxos Comuns
135
176
 
@@ -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,13 @@
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
+ | `/dw-security-check` | **SEMPRE para projetos TS/Python/C#/Rust com diff que toca código** — os findings viram uma categoria "Security Gaps" no ciclo interativo de correções. Se status REJECTED, os gaps são bloqueantes. |
32
+
26
33
  ## Variáveis de Entrada
27
34
 
28
35
  | Variável | Descrição | Exemplo |
@@ -36,6 +43,16 @@
36
43
  2. Especificações técnicas da TechSpec
37
44
  3. Tasks definidas no tasks.md
38
45
  4. Código efetivamente implementado (via git diff/status)
46
+ 5. **Segurança do código implementado** (via `/dw-security-check` para projetos TS/Python/C#/Rust)
47
+
48
+ ## Camada de Segurança (Obrigatório para projetos TS/Python/C#/Rust)
49
+
50
+ <critical>Se o projeto usa TypeScript, Python, C# ou Rust e o diff toca código (não apenas docs), INVOCAR `/dw-security-check {{PRD_PATH}}` antes de listar gaps. O status e findings retornados alimentam a seção "Security Gaps" do relatório de Nível 2.</critical>
51
+
52
+ - Status **REJECTED** do security-check → os findings CRITICAL/HIGH viram gaps **bloqueantes** no ciclo interativo de correções (equivalente a gap de funcionalidade crítica não implementada)
53
+ - Status **PASSED WITH OBSERVATIONS** → os findings MEDIUM/LOW viram recomendações no ciclo
54
+ - Status **CLEAN** → seção "Security Gaps: Nenhum" no relatório
55
+ - Projeto em linguagem não suportada → nota no relatório indicando que a camada de segurança foi pulada
39
56
 
40
57
  ## Arquivos a Ler (Obrigatório)
41
58