@brunosps00/dev-workflow 2.0.0 → 2.1.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 (66) hide show
  1. package/.claude-plugin/marketplace.json +1 -0
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +104 -0
  4. package/README.md +6 -4
  5. package/lib/build-plugin.js +4 -1
  6. package/lib/constants.js +4 -2
  7. package/lib/validate.js +21 -0
  8. package/package.json +1 -1
  9. package/scaffold/en/commands/dw-brainstorm.md +12 -8
  10. package/scaffold/en/commands/dw-bugfix.md +4 -2
  11. package/scaffold/en/commands/dw-plan.md +2 -2
  12. package/scaffold/en/commands/dw-refactor.md +1 -0
  13. package/scaffold/en/commands/dw-review.md +33 -2
  14. package/scaffold/en/commands/dw-run.md +1 -0
  15. package/scaffold/en/commands/dw-triage.md +220 -0
  16. package/scaffold/en/templates/idea-onepager.md +28 -0
  17. package/scaffold/en/templates/task-template.md +1 -0
  18. package/scaffold/en/templates/tasks-template.md +9 -8
  19. package/scaffold/en/templates/triage-needs-info-template.md +23 -0
  20. package/scaffold/en/templates/triage-out-of-scope-template.md +36 -0
  21. package/scaffold/en/templates/triage-record-template.md +88 -0
  22. package/scaffold/pt-br/commands/dw-autopilot.md +81 -81
  23. package/scaffold/pt-br/commands/dw-brainstorm.md +12 -9
  24. package/scaffold/pt-br/commands/dw-bugfix.md +4 -2
  25. package/scaffold/pt-br/commands/dw-claude-run.md +19 -19
  26. package/scaffold/pt-br/commands/dw-codex-run.md +19 -19
  27. package/scaffold/pt-br/commands/dw-context-budget.md +10 -10
  28. package/scaffold/pt-br/commands/dw-copilot-run.md +20 -20
  29. package/scaffold/pt-br/commands/dw-dockerize.md +102 -102
  30. package/scaffold/pt-br/commands/dw-find-skills.md +52 -52
  31. package/scaffold/pt-br/commands/dw-goal.md +41 -41
  32. package/scaffold/pt-br/commands/dw-harness-audit.md +11 -11
  33. package/scaffold/pt-br/commands/dw-intel.md +70 -70
  34. package/scaffold/pt-br/commands/dw-learn.md +24 -24
  35. package/scaffold/pt-br/commands/dw-new-project.md +88 -88
  36. package/scaffold/pt-br/commands/dw-open-design.md +53 -53
  37. package/scaffold/pt-br/commands/dw-opportunities.md +45 -45
  38. package/scaffold/pt-br/commands/dw-pause.md +39 -39
  39. package/scaffold/pt-br/commands/dw-plan.md +2 -2
  40. package/scaffold/pt-br/commands/dw-refactor.md +31 -30
  41. package/scaffold/pt-br/commands/dw-resume.md +22 -22
  42. package/scaffold/pt-br/commands/dw-review.md +33 -2
  43. package/scaffold/pt-br/commands/dw-run.md +1 -0
  44. package/scaffold/pt-br/commands/dw-skill-health.md +10 -10
  45. package/scaffold/pt-br/commands/dw-subtask-complete.md +4 -4
  46. package/scaffold/pt-br/commands/dw-subtask-start.md +4 -4
  47. package/scaffold/pt-br/commands/dw-triage.md +220 -0
  48. package/scaffold/pt-br/templates/bugfix-summary-template.md +20 -20
  49. package/scaffold/pt-br/templates/concerns-template.md +20 -20
  50. package/scaffold/pt-br/templates/idea-onepager.md +28 -0
  51. package/scaffold/pt-br/templates/project-onepager.md +32 -32
  52. package/scaffold/pt-br/templates/state-template.md +13 -13
  53. package/scaffold/pt-br/templates/task-template.md +1 -0
  54. package/scaffold/pt-br/templates/tasks-template.md +9 -8
  55. package/scaffold/pt-br/templates/triage-needs-info-template.md +23 -0
  56. package/scaffold/pt-br/templates/triage-out-of-scope-template.md +36 -0
  57. package/scaffold/pt-br/templates/triage-record-template.md +88 -0
  58. package/scaffold/scripts/hooks/git-guardrails.mjs +41 -24
  59. package/scaffold/skills/dw-debug-protocol/SKILL.md +2 -0
  60. package/scaffold/skills/dw-debug-protocol/references/six-step-triage.md +60 -1
  61. package/scaffold/skills/dw-execute-phase/references/wave-coordination.md +14 -14
  62. package/scaffold/skills/dw-grilling/SKILL.md +17 -7
  63. package/scaffold/skills/dw-grilling/references/decision-tree.md +30 -7
  64. package/scaffold/skills/dw-simplification/references/deep-modules.md +50 -0
  65. package/scaffold/skills/dw-testing-discipline/SKILL.md +3 -1
  66. package/scaffold/skills/dw-testing-discipline/references/tdd-loop.md +83 -0
@@ -1,8 +1,8 @@
1
1
  <system_instructions>
2
- Voce e o auditor de saude de skills e agentes do dev-workflow.
2
+ Você é o auditor de saúde de skills e agentes do dev-workflow.
3
3
 
4
4
  ## Quando Usar
5
- - Use depois de adicionar skills de catalogos externos.
5
+ - Use depois de adicionar skills de catálogos externos.
6
6
  - Use quando o contexto estiver pesado ou skills se sobrepuserem.
7
7
  - Use antes de promover um aprendizado para skill reutilizavel.
8
8
 
@@ -11,21 +11,21 @@ Voce e o auditor de saude de skills e agentes do dev-workflow.
11
11
  2. Agrupe skills por `kind`: `protocol`, `domain-pack`, `recipe-pack`, `asset-pack`.
12
12
  3. Valide que toda skill tem trigger, output esperado, owner, load policy e limite de contexto.
13
13
  4. Valide que todo `SKILL.md` bundled tem contrato `## Structured Return` com `Status`, `Scope`, `Evidence`, `Artifacts`, `Decisions`, `Risks` e `Next Step`.
14
- 5. Confirme que o vocabulario de `Status` esta explicito: `PASS`, `FINDINGS`, `BLOCKED`, `NOT_APPLICABLE`.
15
- 6. Aponte nomes duplicados, `SKILL.md` ausente, frontmatter ausente, `SKILL.md` grande demais, metadata de output esperado desatualizada, e references/assets lidos sem trigger especifico.
14
+ 5. Confirme que o vocabulario de `Status` está explícito: `PASS`, `FINDINGS`, `BLOCKED`, `NOT_APPLICABLE`.
15
+ 6. Aponte nomes duplicados, `SKILL.md` ausente, frontmatter ausente, `SKILL.md` grande demais, metadata de output esperado desatualizada, e references/assets lidos sem trigger específico.
16
16
  7. Recomende manter, compactar entrypoint, mesclar, reclassificar, adicionar retorno estruturado, ou remover da visibilidade core.
17
17
 
18
18
  ## Taxonomia
19
19
 
20
- - `protocol`: workflow/gate/checklist acionavel que muda a execucao.
21
- - `domain-pack`: expertise de dominio usada so quando a tarefa entra naquele dominio.
20
+ - `protocol`: workflow/gate/checklist acionavel que muda a execução.
21
+ - `domain-pack`: expertise de domínio usada só quando a tarefa entra naquele domínio.
22
22
  - `recipe-pack`: receitas/snippets curados carregados por stack ou modo.
23
- - `asset-pack`: midia/exemplos/assets carregados so para tasks correspondentes.
23
+ - `asset-pack`: mídia/exemplos/assets carregados só para tasks correspondentes.
24
24
 
25
- `SKILL.md` deve ser um roteador/protocolo curto. Regras longas, exemplos, paletas, receitas, services e assets ficam em references/assets/rules/recipes e sao carregados sob demanda.
25
+ `SKILL.md` deve ser um roteador/protocolo curto. Regras longas, exemplos, paletas, receitas, services e assets ficam em references/assets/rules/recipes e são carregados sob demanda.
26
26
 
27
- ## Saida
28
- Retorne um relatorio conciso com uma secao de retorno estruturado. Nao delete arquivos.
27
+ ## Saída
28
+ Retorne um relatório conciso com uma seção de retorno estruturado. Não delete arquivos.
29
29
 
30
30
  Inclua:
31
31
  - Status geral: `PASS`, `FINDINGS` ou `BLOCKED`.
@@ -1,10 +1,10 @@
1
1
  <system_instructions>
2
- Voce registra um handoff estruturado de subagente.
2
+ Você registra um handoff estruturado de subagente.
3
3
 
4
4
  ## Quando Usar
5
- - Use dentro da sessao child/subagente quando a subtarefa atribuida estiver completa, bloqueada ou fora de budget.
5
+ - Use dentro da sessão child/subagente quando a subtarefa atribuída estiver completa, bloqueada ou fora de budget.
6
6
 
7
- ## Formato Obrigatorio
7
+ ## Formato Obrigatório
8
8
 
9
9
  ```markdown
10
10
  ## Objective
@@ -34,7 +34,7 @@ Voce registra um handoff estruturado de subagente.
34
34
  npx @brunosps00/dev-workflow subtask complete --slug=<slug> --file=<handoff.md>
35
35
  ```
36
36
 
37
- Retorne apenas evidencia resumida. Nao inclua logs completos nem dumps de transcript.
37
+ Retorne apenas evidência resumida. Não inclua logs completos nem dumps de transcript.
38
38
 
39
39
  Final marker: `## SUBTASK HANDOFF RECORDED`
40
40
  </system_instructions>
@@ -1,13 +1,13 @@
1
1
  <system_instructions>
2
- Voce cria input packets minimos para subagentes.
2
+ Você cria input packets minimos para subagentes.
3
3
 
4
4
  ## Quando Usar
5
5
  - Use quando uma subtarefa read-only, QA, review ou build-fix puder rodar separada do contexto principal.
6
- - Use quando o output seria volumoso: logs, grep amplo, evidencia de teste, QA em browser, review de seguranca.
6
+ - Use quando o output seria volumoso: logs, grep amplo, evidência de teste, QA em browser, review de segurança.
7
7
 
8
8
  ## Processo
9
- 1. Escolha o agente instalado mais especifico em `.agents/agents/README.md` ou `scaffold/agent-registry.json`.
10
- 2. Escreva objetivo estreito, arquivos/fontes permitidos, constraints, output esperado, budget de contexto e criterio de parada.
9
+ 1. Escolha o agente instalado mais específico em `.agents/agents/README.md` ou `scaffold/agent-registry.json`.
10
+ 2. Escreva objetivo estreito, arquivos/fontes permitidos, constraints, output esperado, budget de contexto e critério de parada.
11
11
  3. Rode:
12
12
 
13
13
  ```bash
@@ -0,0 +1,220 @@
1
+ <system_instructions>
2
+ Você é a borda de triagem de intake do workspace atual. Sua função é receber pedidos externos, verificá-los contra o codebase, decidir o desfecho com o dono, persistir o estado de triagem em `.dw/`, e só então rotear para o pipeline dev-workflow existente.
3
+
4
+ <critical>`/dw-triage` fica ANTES de `/dw-bugfix`, `/dw-brainstorm`, `/dw-plan` e `/dw-run`. Ele não substitui nenhum deles.</critical>
5
+ <critical>Local-first: `.dw/triage/**` é a fonte durável da verdade. Acesso ao GitHub via `gh` é apenas enriquecimento opcional.</critical>
6
+ <critical>Nunca escreva um brief downstream a partir de uma alegação não verificada. Verificação é o ponto deste comando.</critical>
7
+
8
+ ## Quando Usar
9
+ - Use quando um bug report, feature request, escalonamento de suporte, issue ou PR externo chega e precisa de uma decisão de intake antes do planejamento ou da execução normal
10
+ - Use quando o pedido pode ser redundante, já rejeitado, subespecificado, ou precisa de decisão humana antes de entrar no pipeline
11
+ - NÃO use para corrigir diretamente um bug já aceito; use `/dw-bugfix`
12
+ - NÃO use para planejar diretamente uma melhoria já aceita; use `/dw-plan prd`
13
+ - NÃO use para ideação vaga sem item de intake; use `/dw-brainstorm`
14
+
15
+ ## Posição no Pipeline
16
+ **Antecessor:** pedido externo (paste, arquivo, issue, PR) | **Sucessor:** `/dw-brainstorm --mode=grill`, `/dw-bugfix`, `/dw-plan prd`, `/dw-run`, ou nenhuma ação downstream
17
+
18
+ ## Entradas
19
+
20
+ | Variável | Descrição | Exemplo |
21
+ |----------|-----------|---------|
22
+ | `{{SOURCE}}` | Fonte do pedido: texto colado, caminho local, URL de issue/PR, número de issue/PR, ou branch/ref | `.dw/inbox/relato.md`, `#123`, `https://github.com/org/repo/pull/42` |
23
+ | `{{MODE}}` | Intenção opcional do dono | `--bug`, `--enhancement`, `--pr`, `--offline`, `--no-github-write` |
24
+
25
+ ## Localização dos Arquivos
26
+
27
+ **Registro de triagem — sempre criado depois do desfecho aprovado pelo dono:**
28
+
29
+ - `.dw/triage/NNN-<slug>.md`
30
+ - `NNN` tem 3 dígitos, sequencial entre todos os registros de triagem já criados
31
+ - `<slug>` vem em kebab-case do conceito de domínio, não apenas da redação do pedido
32
+ - Use `.dw/templates/triage-record-template.md`
33
+
34
+ Isto segue o precedente de índice de `.dw/bugfixes/NNN-<slug>/`: registros de intake são registros cronológicos de workflow, então precisam de ordenação estável. Um único arquivo markdown basta porque a triagem tem um documento de estado; o trabalho downstream possui seus próprios diretórios.
35
+
36
+ **Notas de needs-info:**
37
+
38
+ - Guardadas no mesmo registro `.dw/triage/NNN-<slug>.md`, sob `## Needs Info`
39
+ - Use `.dw/templates/triage-needs-info-template.md` como corpo da seção quando houver perguntas em aberto
40
+
41
+ **Memória de out-of-scope — apenas para conceitos rejeitados:**
42
+
43
+ - `.dw/out-of-scope/<concept>.md`
44
+ - `<concept>` é um slug estável do conceito de domínio, não uma citação do pedido
45
+ - Use `.dw/templates/triage-out-of-scope-template.md`
46
+ - NÃO escreva `.dw/out-of-scope/**` para "já implementado"; aponte para a implementação existente
47
+
48
+ **Descoberta do próximo NNN:** liste `.dw/triage/`, parseie o prefixo inicial de 3 dígitos de cada `*.md`, tome `max + 1` ou `1` se estiver vazio.
49
+
50
+ ## Modelo de Estado
51
+
52
+ Todo item de triagem carrega exatamente uma categoria e exatamente um estado.
53
+
54
+ Categorias:
55
+ - `bug`
56
+ - `enhancement`
57
+
58
+ Estados:
59
+ - `needs-triage`
60
+ - `needs-info`
61
+ - `ready-for-work`
62
+ - `needs-human`
63
+ - `wontfix`
64
+
65
+ Transições:
66
+ - `needs-triage` -> `needs-info`
67
+ - `needs-triage` -> `ready-for-work`
68
+ - `needs-triage` -> `needs-human`
69
+ - `needs-triage` -> `wontfix`
70
+ - `needs-info` -> `needs-triage` quando o autor responde
71
+
72
+ Se o registro atual, labels da fonte ou input do dono indicarem estados conflitantes, PARE e pergunte ao dono qual estado único é autoritativo antes de escrever ou rotear.
73
+
74
+ Nota de vocabulário: o upstream usa `ready-for-agent` / `ready-for-human`. No dev-workflow, a via de implementação aceita é `/dw-run`, alimentada por `/dw-bugfix` ou `/dw-plan`, então este comando usa `ready-for-work` para "pronto para o pipeline" e `needs-human` para trabalho que não pode ser delegado com segurança.
75
+
76
+ ## Integração com GitHub
77
+
78
+ `gh` é permitido porque este repo já o usa em `/dw-generate-pr`, mas nunca é obrigatório.
79
+
80
+ 1. Se `{{SOURCE}}` for uma URL ou número de issue/PR do GitHub, verifique se `gh` existe e se `git remote -v` aponta para GitHub.
81
+ 2. Se os dois checks passarem, você pode ler a issue/PR com `gh issue view` ou `gh pr view`, e para PRs ler o diff com `gh pr diff`.
82
+ 3. Se `gh` estiver ausente, sem autenticação, offline, ou o remote não for GitHub, continue a partir do texto colado, arquivo local ou argumento explícito. Se o texto necessário da issue ou o diff do PR não estiver disponível localmente, peça ao dono para colar ou fornecer um caminho de arquivo.
83
+ 4. Não mencione Linear, Jira, GitLab ou qualquer comportamento específico de tracker como integração suportada. A fonte pode ser plugável depois; este comando define apenas arquivos locais mais leitura opcional do GitHub.
84
+ 5. Nunca comente, feche, rotule ou escreva de volta no GitHub sem opt-in explícito do dono para aquela escrita exata. A persistência em `.dw/triage/**` é a saída padrão e suficiente.
85
+
86
+ ## Fluxo de Trabalho
87
+
88
+ ### 1. Ler o Pedido Completo
89
+
90
+ - Leia o texto colado ou arquivo local por inteiro.
91
+ - Se a fonte for uma issue e `gh` estiver disponível, leia título, corpo, comentários, labels, autor e URL.
92
+ - Se a fonte for um PR e `gh` estiver disponível, leia título, corpo, comentários, arquivos alterados e diff.
93
+ - Preserve a origem no registro de triagem: `source_type`, `source_ref`, `author`, `reported_at` e método de recuperação.
94
+
95
+ ### 2. Checar Redundância Antes de Recomendar
96
+
97
+ Procure por conceito de domínio, não por redação:
98
+
99
+ - `.dw/domain/**` quando existir
100
+ - `.dw/spec/**`
101
+ - `.dw/bugfixes/**`
102
+ - `.dw/rules/**`
103
+ - caminhos de código provavelmente donos do conceito
104
+ - docs e testes que nomeiam o comportamento
105
+
106
+ Se comportamento equivalente já existir, recomende `wontfix` com motivo `already implemented`, reporte exatamente onde procurou e onde a implementação vive, escreva o registro de triagem, e NÃO escreva `.dw/out-of-scope/**`.
107
+
108
+ ### 3. Checar Rejeições Anteriores
109
+
110
+ Leia `.dw/out-of-scope/**` quando existir. Traga qualquer conceito de domínio parecido antes de recomendar um estado:
111
+
112
+ ```
113
+ ## Prior Rejection Found
114
+
115
+ - Concept: `<concept>`
116
+ - Record: `.dw/out-of-scope/<concept>.md`
117
+ - Why it matters: <comparação em uma linha>
118
+ ```
119
+
120
+ Se a rejeição anterior claramente se aplicar, recomende `wontfix` a menos que o dono reabra explicitamente a decisão.
121
+
122
+ ### 4. Recomendar Categoria e Estado, Depois Esperar
123
+
124
+ Apresente:
125
+
126
+ - resumo conciso do pedido
127
+ - resumo da busca no codebase, incluindo onde a redundância foi checada
128
+ - resumo de rejeição anterior
129
+ - categoria recomendada: `bug` ou `enhancement`
130
+ - estado recomendado: `needs-info`, `ready-for-work`, `needs-human` ou `wontfix`
131
+ - raciocínio e próximo roteamento
132
+
133
+ Então peça ao dono para aprovar ou corrigir categoria/estado. Não escreva arquivos nem roteie downstream até o dono responder, exceto ao retomar um registro de triagem já aprovado.
134
+
135
+ ### 5. Verificar Antes do Brief
136
+
137
+ Depois da aprovação do dono e antes de qualquer brief downstream:
138
+
139
+ **Para bugs:**
140
+ - Reproduza a partir dos passos do autor quando possível.
141
+ - Registre o comando exato, ambiente, fixture ou caminho manual usado.
142
+ - Reporte um resultado: `confirmed`, `failed-to-reproduce` ou `insufficient-detail`.
143
+ - Trate `insufficient-detail` como sinal forte de `needs-info`.
144
+
145
+ **Para PRs:**
146
+ - Confirme que o diff faz o que o PR afirma.
147
+ - Rode testes ou checks relevantes para a área tocada.
148
+ - Registre os arquivos alterados inspecionados e comandos rodados.
149
+ - Se a alegação e o diff divergirem, pare e recomende `needs-human` ou `needs-info`.
150
+
151
+ **Para enhancements:**
152
+ - Verifique que a capacidade ainda não existe e que o pedido tem forma de produto suficiente para intake de PRD.
153
+ - Se o vocabulário de produto ou o resultado desejado estiver instável, roteie para `/dw-brainstorm --mode=grill` em vez de inventar uma entrevista aqui.
154
+
155
+ ### 6. Aplicar o Desfecho
156
+
157
+ Use `.dw/templates/triage-record-template.md` para todo item de triagem escrito. Registre entradas de histórico como `YYYY-MM-DD — <from> -> <to> — <actor> — <reason>`.
158
+
159
+ Desfechos:
160
+
161
+ - `ready-for-work` + `bug` -> escreva `.dw/triage/NNN-<slug>.md`, depois roteie para `/dw-bugfix` com o resumo de reprodução verificada e o caminho do registro de triagem
162
+ - `ready-for-work` + `enhancement` -> escreva `.dw/triage/NNN-<slug>.md`, depois roteie para `/dw-plan prd` com o resumo de produto verificado e o caminho do registro de triagem
163
+ - `needs-human` -> escreva `.dw/triage/NNN-<slug>.md` e registre por que delegar é inseguro: decisão de design, acesso externo, julgamento, teste manual ou ownership indefinido
164
+ - `needs-info` -> escreva `.dw/triage/NNN-<slug>.md` e inclua a seção de `.dw/templates/triage-needs-info-template.md` com perguntas em aberto
165
+ - `wontfix` rejeitado -> escreva `.dw/triage/NNN-<slug>.md`, depois escreva ou atualize `.dw/out-of-scope/<concept>.md` com motivo, evidência e condição de reabertura
166
+ - `wontfix` already implemented -> escreva `.dw/triage/NNN-<slug>.md`, aponte para a implementação, e NÃO escreva `.dw/out-of-scope/**`
167
+
168
+ ### 7. Grill Para Pedidos Malformados
169
+
170
+ Se o pedido não tiver problema, ator, conceito de domínio, resultado desejado ou fronteira de aceite estáveis, não reimplemente uma entrevista dentro de `/dw-triage`.
171
+
172
+ Recomende:
173
+
174
+ ```
175
+ Este item de intake não está pronto para categorização. Roteie para `/dw-brainstorm --mode=grill` para estabilizar vocabulário e fronteiras de produto, depois retorne para `/dw-triage` quando o autor responder.
176
+ ```
177
+
178
+ Se o dono aprovar o roteamento, persista o registro de triagem como `needs-info`, a menos que exista motivo mais claro para `needs-human`.
179
+
180
+ ## Formato Preferido de Resposta
181
+
182
+ ### Resumo de Intake
183
+ - Fonte:
184
+ - Pedido:
185
+ - Autor:
186
+ - Recuperação:
187
+
188
+ ### Checks do Codebase
189
+ - Busca de redundância:
190
+ - Busca de rejeição anterior:
191
+ - Evidência:
192
+
193
+ ### Recomendação
194
+ - Categoria: `bug` | `enhancement`
195
+ - Estado: `needs-info` | `ready-for-work` | `needs-human` | `wontfix`
196
+ - Motivo:
197
+ - Roteamento proposto:
198
+
199
+ ### Checkpoint do Dono
200
+ - Peça ao dono para aprovar ou corrigir categoria/estado antes de escrever e rotear.
201
+
202
+ ### Resultado da Verificação
203
+ - Status: `confirmed` | `failed-to-reproduce` | `insufficient-detail`
204
+ - Comandos/arquivos inspecionados:
205
+ - O que isso prova:
206
+
207
+ ### Desfecho Persistido
208
+ - Registro de triagem:
209
+ - Registro out-of-scope, se houver:
210
+ - Próximo comando:
211
+
212
+ ## Anti-patterns
213
+
214
+ - Tratar labels ou comentários do GitHub como fonte da verdade
215
+ - Criar `.dw/out-of-scope/**` para um pedido já implementado
216
+ - Comparar redundância apenas pela redação do pedido
217
+ - Rotear para `/dw-bugfix` ou `/dw-plan prd` antes da aprovação do dono
218
+ - Escrever bugfix ou PRD brief a partir de alegação não verificada
219
+ - Prometer integrações com trackers que este comando não consegue ler ou escrever
220
+ </system_instructions>
@@ -9,28 +9,28 @@ related_concerns: []
9
9
 
10
10
  # Bugfix Summary — {{NNN}}-{{slug}}
11
11
 
12
- Registro de uma pagina de um bugfix. Arquivos irmaos neste diretorio:
12
+ Registro de uma página de um bugfix. Arquivos irmãos neste diretório:
13
13
 
14
- - `TASK.md` — a triagem original, respostas das perguntas de clarificacao e o plano de fix que rodou
15
- - `fix-report.md` — evidencia de verificacao (saida do `dw-verify` PASS, prova de reproducao, execucao do teste de regressao)
14
+ - `TASK.md` — a triagem original, respostas das perguntas de clarificação e o plano de fix que rodou
15
+ - `fix-report.md` — evidência de verificação (saída do `dw-verify` PASS, prova de reprodução, execução do teste de regressão)
16
16
  - `review/` — populado por `/dw-review --bugfix {{NNN}}-{{slug}}`
17
- - `QA/` — populado por `/dw-qa --bugfix {{NNN}}-{{slug}}` (quando aplicavel)
17
+ - `QA/` — populado por `/dw-qa --bugfix {{NNN}}-{{slug}}` (quando aplicável)
18
18
 
19
19
  ## Sintoma
20
20
 
21
- O que o usuario observou. Cite a descricao original do bug verbatim; nao parafraseie.
21
+ O que o usuário observou. Cite a descrição original do bug verbatim; não parafraseie.
22
22
 
23
23
  > _"…"_
24
24
 
25
25
  ## Causa Raiz
26
26
 
27
- O que estava de fato quebrado, em uma frase. Nao o sintoma — a causa.
27
+ O que estava de fato quebrado, em uma frase. Não o sintoma — a causa.
28
28
 
29
29
  _…_
30
30
 
31
- ## Resolucao
31
+ ## Resolução
32
32
 
33
- O que mudou, em 2-4 bullets. Paths de arquivos, nao snippets.
33
+ O que mudou, em 2-4 bullets. Paths de arquivos, não snippets.
34
34
 
35
35
  - _mudanca 1_
36
36
  - _mudanca 2_
@@ -39,28 +39,28 @@ O que mudou, em 2-4 bullets. Paths de arquivos, nao snippets.
39
39
 
40
40
  Lista completa, incluindo testes. <=5 — se mais, o safety valve deveria ter escalado para `/dw-plan`.
41
41
 
42
- | Path | Mudanca |
42
+ | Path | Mudança |
43
43
  |------|---------|
44
- | `src/foo/bar.ts` | _fix cirurgico em X_ |
45
- | `src/foo/bar.test.ts` | _teste de regressao adicionado_ |
44
+ | `src/foo/bar.ts` | _fix cirúrgico em X_ |
45
+ | `src/foo/bar.test.ts` | _teste de regressão adicionado_ |
46
46
 
47
- ## Verificacao
47
+ ## Verificação
48
48
 
49
- Como o fix foi provado, alem de "os testes passam".
49
+ Como o fix foi provado, além de "os testes passam".
50
50
 
51
- - **Reproducao antes do fix:** _passo que disparava o bug, capturado_
52
- - **Reproducao depois do fix:** _mesmo passo, agora passa_
53
- - **Teste de regressao:** _nome + path_
54
- - **Relatorio de verify:** `fix-report.md`
51
+ - **Reprodução antes do fix:** _passo que disparava o bug, capturado_
52
+ - **Reprodução depois do fix:** _mesmo passo, agora passa_
53
+ - **Teste de regressão:** _nome + path_
54
+ - **Relatório de verify:** `fix-report.md`
55
55
 
56
56
  ## Relacionado
57
57
 
58
- - **Concerns tocados:** _refs de `.dw/rules/concerns.md` se o fix caiu em area flagada_
59
- - **Bugfixes adjacentes:** _slugs de fixes anteriores no mesmo modulo, se houver_
58
+ - **Concerns tocados:** _refs de `.dw/rules/concerns.md` se o fix caiu em área flagada_
59
+ - **Bugfixes adjacentes:** _slugs de fixes anteriores no mesmo módulo, se houver_
60
60
  - **Contexto de PRD:** _se o bug apareceu dentro de uma feature em andamento, link para o path do PRD_
61
61
 
62
62
  ## Followups
63
63
 
64
- Pontas soltas que este fix descobriu mas nao resolveu. Adicione ao `.dw/STATE.md` Open-Loops ao fechar.
64
+ Pontas soltas que este fix descobriu mas não resolveu. Adicione ao `.dw/STATE.md` Open-Loops ao fechar.
65
65
 
66
66
  - _nenhum_
@@ -6,54 +6,54 @@ last_refreshed: ""
6
6
 
7
7
  # Concerns — Mapa de Riscos
8
8
 
9
- Mapa de riscos deste codebase. Nao sao convencoes ("como fazemos as coisas" — isso e `.dw/rules/`), nao e arquitetura ("como esta construido" — isso e `.dw/intel/arch.md`). Este arquivo responde uma unica pergunta: **onde e perigoso mexer?**
9
+ Mapa de riscos deste codebase. Não são convenções ("como fazemos as coisas" — isso e `.dw/rules/`), não é arquitetura ("como está construído" — isso e `.dw/intel/arch.md`). Este arquivo responde uma única pergunta: **onde é perigoso mexer?**
10
10
 
11
- Carregado on-demand por `/dw-plan`, `/dw-run` e `/dw-bugfix` quando o alvo deles toca uma entrada abaixo. Auto-instalado pelo `/dw-analyze-project` Step 9; nunca bloqueia (ausencia = nenhuma area flagada ainda).
11
+ Carregado on-demand por `/dw-plan`, `/dw-run` e `/dw-bugfix` quando o alvo deles toca uma entrada abaixo. Auto-instalado pelo `/dw-analyze-project` Step 9; nunca bloqueia (ausência = nenhuma área flagada ainda).
12
12
 
13
13
  ## Hot Spots
14
14
 
15
- Arquivos ou modulos com churn alto, reports frequentes de bug ou historico repetido de "mexi aqui e quebrou algo". Mencione em PRDs que toquem a mesma area; adicione revisor extra ou passada extra de teste.
15
+ Arquivos ou módulos com churn alto, reports frequentes de bug ou histórico repetido de "mexi aqui e quebrou algo". Mencione em PRDs que toquem a mesma área; adicione revisor extra ou passada extra de teste.
16
16
 
17
- | Path | Por que e quente | Primeiro flag | Ultimo incidente |
17
+ | Path | Por que é quente | Primeiro flag | Último incidente |
18
18
  |------|------------------|---------------|------------------|
19
19
  | _ex. `src/auth/session.ts`_ | _3 fixes de token em 60d_ | _YYYY-MM-DD_ | _YYYY-MM-DD_ |
20
20
 
21
- ## Integracoes Fragis
21
+ ## Integrações Fragis
22
22
 
23
- Sistemas externos (APIs, filas, vendors, bancos legados) com historico de falhas silenciosas, drift de schema, surpresas de rate-limit ou comportamento nao-documentado. Codigo novo que toque eles precisa de tratamento explicito de retry/timeout/idempotencia.
23
+ Sistemas externos (APIs, filas, vendors, bancos legados) com histórico de falhas silenciosas, drift de schema, surpresas de rate-limit ou comportamento não-documentado. Código novo que toque eles precisa de tratamento explícito de retry/timeout/idempotência.
24
24
 
25
- | Integracao | Modo de falha | Mitigacao esperada |
25
+ | Integração | Modo de falha | Mitigação esperada |
26
26
  |------------|---------------|--------------------|
27
- | _ex. export SAP legado_ | _200 OK silencioso com body vazio quando source esta lockado_ | _checar tamanho do body; logar e alertar_ |
27
+ | _ex. export SAP legado_ | _200 OK silencioso com body vazio quando source está lockado_ | _checar tamanho do body; logar e alertar_ |
28
28
 
29
- ## Codigo Hostil
29
+ ## Código Hostil
30
30
 
31
- Funcoes especificas, regexes, parsers ou algoritmos dificeis de raciocinar — quem toca precisa entender 100% primeiro (ou reescrever, nao remendar). Suspeitos comuns: regex artesanal, parsers de string ad-hoc, serializadores custom, async com race condition, codigo de transacao manual.
31
+ Funções específicas, regexes, parsers ou algoritmos difíceis de raciocinar — quem toca precisa entender 100% primeiro (ou reescrever, não remendar). Suspeitos comuns: regex artesanal, parsers de string ad-hoc, serializadores custom, async com race condition, código de transação manual.
32
32
 
33
- | Path / funcao | Por que e hostil | Owner / contexto |
33
+ | Path / função | Por que é hostil | Owner / contexto |
34
34
  |---------------|------------------|------------------|
35
35
  | _ex. `src/billing/parseInvoice.ts:parseLine`_ | _regex de 900 chars com 12 alternativas, sem comentarios_ | _Bruno escreveu em 2024; reescrever se quebrar_ |
36
36
 
37
- ## Historico de Bugs Conhecidos
37
+ ## Histórico de Bugs Conhecidos
38
38
 
39
- Agregado de `.dw/bugfixes/*/SUMMARY.md` pelo `/dw-intel --build`. Lista modulos com >=2 fixes historicos. Leia junto com Hot Spots ao planejar trabalho relacionado.
39
+ Agregado de `.dw/bugfixes/*/SUMMARY.md` pelo `/dw-intel --build`. Lista módulos com >=2 fixes historicos. Leia junto com Hot Spots ao planejar trabalho relacionado.
40
40
 
41
- | Modulo | Contagem de bugs | Slugs recentes |
41
+ | Módulo | Contagem de bugs | Slugs recentes |
42
42
  |--------|------------------|----------------|
43
43
  | _ex. `src/payments/`_ | _4_ | _002-stripe-webhook-retry, 007-refund-rounding_ |
44
44
 
45
45
  ## Tech Debt — Reconhecida
46
46
 
47
- Pedacos de debt que o time concorda que existem. Nao sao para limpar oportunisticamente sem coordenacao — podem ser load-bearing de formas nao obvias.
47
+ Pedaços de debt que o time concorda que existem. Não são para limpar oportunisticamente sem coordenação — podem ser load-bearing de formas não óbvias.
48
48
 
49
- | Area | Descricao do debt | Por que fica | Trigger de cleanup |
49
+ | Área | Descrição do debt | Por que fica | Trigger de cleanup |
50
50
  |------|-------------------|--------------|--------------------|
51
- | _ex. `src/legacy/userMapper.ts`_ | _Dois codepaths paralelos de field-mapping_ | _Esperando migracao v3 da API_ | _Q3 2026 apos cutover do vendor_ |
51
+ | _ex. `src/legacy/userMapper.ts`_ | _Dois codepaths paralelos de field-mapping_ | _Esperando migração v3 da API_ | _Q3 2026 após cutover do vendor_ |
52
52
 
53
53
  ---
54
54
 
55
55
  **Como manter este arquivo:**
56
56
 
57
- - `/dw-analyze-project` reescreve a cada execucao. Entradas escritas a mao entre `<!-- preserved:start -->` e `<!-- preserved:end -->` sao mantidas.
58
- - Quando um bugfix descobrir uma nova area perigosa, adicione manualmente em Hot Spots e deixe a proxima analise confirmar.
59
- - Promova entradas para `.dw/constitution.md` quando virarem regras nao-negociaveis ("nunca toque X sem ADR").
57
+ - `/dw-analyze-project` reescreve a cada execução. Entradas escritas a mão entre `<!-- preserved:start -->` e `<!-- preserved:end -->` são mantidas.
58
+ - Quando um bugfix descobrir uma nova área perigosa, adicione manualmente em Hot Spots e deixe a próxima análise confirmar.
59
+ - Promova entradas para `.dw/constitution.md` quando virarem regras não-negociáveis ("nunca toque X sem ADR").
@@ -93,6 +93,34 @@ Idealmente 2-4 stories. Se são mais de 5, provavelmente não é MVP.]
93
93
 
94
94
  _(schema 1.1 — preenchido por uma sessão de grill do `/dw-brainstorm`; consumido pelo `/dw-plan`, que NÃO re-pergunta decisões resolvidas. Deixe vazio para um one-pager sem grill.)_
95
95
 
96
+ ### Decision Map
97
+
98
+ [Árvore durável do Grill. Registra apenas estrutura e estado de retomada; mantenha resultado da decisão,
99
+ recomendação, alternativa e evidência em **Resolved Decisions** abaixo.]
100
+
101
+ **Frontier:** [IDs de nós com `State: open-ready`, separados por vírgula, ou `none`]
102
+
103
+ | ID | Nó de decisão | State | Depends on: | Frontier? | Notas |
104
+ |----|---------------|-------|-------------|-----------|-------|
105
+ | D1 | [decisão upstream] | resolved | none | no | [nota estrutural; resultado fica em Resolved Decisions] |
106
+ | D2 | [decisão aberta que pode ser perguntada agora] | open-ready | D1 | yes | [por que está pronta] |
107
+ | D3 | [decisão aberta ainda bloqueada] | open-blocked | D2 | no | [o que bloqueia] |
108
+
109
+ `State` é a fonte da verdade. `Frontier?` e a linha `**Frontier:**` são derivados dele por
110
+ legibilidade — se algum dia discordarem do `State`, o `State` vence e os derivados são reescritos.
111
+
112
+ Valores permitidos de `State`:
113
+ - `resolved` — o usuário resolveu o nó; detalhes ficam em **Resolved Decisions**.
114
+ - `open-ready` — aberto e decidível agora; este nó está na **Frontier**.
115
+ - `open-blocked` — aberto, mas aguardando um ou mais nós em `Depends on:`.
116
+
117
+ #### Decision Fog
118
+
119
+ [Áreas conhecidas não resolvidas que ainda não estão nítidas o suficiente para virar nós de decisão. Mantenha
120
+ curto; cada item gradua para **Decision Map** quando virar uma decisão concreta.]
121
+
122
+ - [área desconhecida] — [por que ainda não dá para formular como decisão]
123
+
96
124
  ### Resolved Decisions
97
125
 
98
126
  | Decisão | Recomendado | Escolhido | Alternativa rejeitada | Evidência |
@@ -13,40 +13,40 @@ services: []
13
13
 
14
14
  # Projeto: [Nome do projeto]
15
15
 
16
- ## Proposito
16
+ ## Propósito
17
17
 
18
- [Um paragrafo em linguagem de produto. Quem vai usar, qual problema resolve, como o sucesso se parece em 6-12 semanas. Evite linguagem de implementacao.]
18
+ [Um parágrafo em linguagem de produto. Quem vai usar, qual problema resolve, como o sucesso se parece em 6-12 semanas. Evite linguagem de implementação.]
19
19
 
20
20
  ## Stack Selecionado
21
21
 
22
22
  | Camada | Escolha | Justificativa |
23
23
  |--------|---------|---------------|
24
- | Forma | frontend / backend / fullstack | [por que essa forma — superficie unica, API para parceiros, etc.] |
24
+ | Forma | frontend / backend / fullstack | [por que essa forma — superfície única, API para parceiros, etc.] |
25
25
  | Frontend | Next.js / Vite+React / n/a | [por que esse framework — SSR, simplicidade SPA, etc.] |
26
- | Backend | NestJS / Fastify / FastAPI / ASP.NET Core minimal / Axum / n/a | [por que — expertise do time, ecosystem, alvo de latencia] |
27
- | Database | Postgres / MySQL / SQLite / MongoDB / nenhum | [por que esse DB — relacional, transacional, etc. Busca vetorial nao tem recipe bundled; nomeie a imagem revisada ou servico gerenciado se o projeto precisar] |
28
- | Cache | Redis / Memcached / nenhum | [por que ou por que nao] |
29
- | Fila | pg-boss / BullMQ / Celery / RabbitMQ / LocalStack SQS / nenhum | [por que ou nao + sync vs async workers] |
26
+ | Backend | NestJS / Fastify / FastAPI / ASP.NET Core minimal / Axum / n/a | [por que — expertise do time, ecosystem, alvo de latência] |
27
+ | Database | Postgres / MySQL / SQLite / MongoDB / nenhum | [por que esse DB — relacional, transacional, etc. Busca vetorial não tem recipe bundled; nomeie a imagem revisada ou serviço gerenciado se o projeto precisar] |
28
+ | Cache | Redis / Memcached / nenhum | [por que ou por que não] |
29
+ | Fila | pg-boss / BullMQ / Celery / RabbitMQ / LocalStack SQS / nenhum | [por que ou não + sync vs async workers] |
30
30
  | Email — dev | Mailpit (default) / smtp4dev / nenhum | [normalmente Mailpit — captura only, nunca envia real] |
31
31
  | Email — prod | SMTP / SendGrid / Resend / Postmark / SES / nenhum | [por que esse provider — volume, deliverability, custo] |
32
- | Object storage | S3 / MinIO (dev) / GCS / nenhum | [por que ou nao] |
32
+ | Object storage | S3 / MinIO (dev) / GCS / nenhum | [por que ou não] |
33
33
  | Search | Meilisearch / Typesense / Elasticsearch / nenhum | [por que esse engine — features, escala, simplicidade] |
34
- | Observability | Sentry / OTel + Jaeger / nenhum | [por que essa abordagem — so error tracking, tracing completo, etc.] |
35
- | Reverse proxy | Traefik / Caddy / nenhum | [normalmente so multi-host dev ou prod] |
36
- | Auth | Auth.js / OIDC generico / Clerk / fastapi-users / dotnet Identity / JWT custom / nenhum | [por que — social login, B2B, etc.] |
37
- | Linter / formatter | Biome / ESLint+Prettier / Ruff+Black / dotnet format / cargo fmt+clippy | [preferencia do time] |
38
- | Package manager | pnpm / npm / yarn / poetry / uv / cargo / dotnet | [preferencia do time] |
39
- | Workspace + task runner | pnpm workspaces + Turborepo / npm workspaces / Nx / n/a | [so para fullstack — caching/build] |
34
+ | Observability | Sentry / OTel + Jaeger / nenhum | [por que essa abordagem — só error tracking, tracing completo, etc.] |
35
+ | Reverse proxy | Traefik / Caddy / nenhum | [normalmente só multi-host dev ou prod] |
36
+ | Auth | Auth.js / OIDC genérico / Clerk / fastapi-users / dotnet Identity / JWT custom / nenhum | [por que — social login, B2B, etc.] |
37
+ | Linter / formatter | Biome / ESLint+Prettier / Ruff+Black / dotnet format / cargo fmt+clippy | [preferência do time] |
38
+ | Package manager | pnpm / npm / yarn / poetry / uv / cargo / dotnet | [preferência do time] |
39
+ | Workspace + task runner | pnpm workspaces + Turborepo / npm workspaces / Nx / n/a | [só para fullstack — caching/build] |
40
40
  | Topologia de dev | apps no host / tudo no Compose | [trade-off de hot reload e paridade] |
41
- | CI | GitHub Actions / nenhum | [normalmente GitHub Actions; pular so para repos nao-publicos] |
41
+ | CI | GitHub Actions / nenhum | [normalmente GitHub Actions; pular só para repos não-públicos] |
42
42
 
43
- ## Servicos & Infra
43
+ ## Serviços & Infra
44
44
 
45
- [Servicos gerados a partir da skill docker-compose-recipes. Preenchido pelo /dw-new-project.]
45
+ [Serviços gerados a partir da skill docker-compose-recipes. Preenchido pelo /dw-new-project.]
46
46
 
47
- | Servico | Porta (host) | UI | Credenciais |
47
+ | Serviço | Porta (host) | UI | Credenciais |
48
48
  |---------|--------------|----|-------------|
49
- | postgres | 127.0.0.1:5432 | — | POSTGRES_USER=app, POSTGRES_PASSWORD obrigatoria no `.env` (sem default), POSTGRES_DB=app |
49
+ | postgres | 127.0.0.1:5432 | — | POSTGRES_USER=app, POSTGRES_PASSWORD obrigatória no `.env` (sem default), POSTGRES_DB=app |
50
50
  | redis | 6379 | — | (sem auth em dev) |
51
51
  | mailpit | 1025 (smtp), 8025 (UI) | http://localhost:8025 | (sem auth) |
52
52
  | ... | ... | ... | ... |
@@ -71,7 +71,7 @@ services: []
71
71
 
72
72
  ## Arquivos Gerados
73
73
 
74
- [Preenchido pelo /dw-new-project apos Fase 3 — lista de arquivos criados com origem.]
74
+ [Preenchido pelo /dw-new-project após Fase 3 — lista de arquivos criados com origem.]
75
75
 
76
76
  ```
77
77
  {{TARGET_DIR}}/
@@ -96,16 +96,16 @@ services: []
96
96
 
97
97
  ## Escopo MVP
98
98
 
99
- [A primeira feature menor que voce vai entregar. Pensada como user stories — vai dirigir a primeira rodada de /dw-plan prd.]
99
+ [A primeira feature menor que você vai entregar. Pensada como user stories — vai dirigir a primeira rodada de /dw-plan prd.]
100
100
 
101
- - Como [persona], eu posso [acao] para que [beneficio]
102
- - Como [persona], eu posso [acao] para que [beneficio]
101
+ - Como [persona], eu posso [ação] para que [benefício]
102
+ - Como [persona], eu posso [ação] para que [benefício]
103
103
 
104
- Se voce ainda nao tem a primeira feature em mente, tudo bem — deixa placeholder e roda o /dw-plan prd quando tiver.
104
+ Se você ainda não tem a primeira feature em mente, tudo bem — deixa placeholder e roda o /dw-plan prd quando tiver.
105
105
 
106
- ## Nao Estou Fazendo (explicito)
106
+ ## Não Estou Fazendo (explícito)
107
107
 
108
- [Itens tentadores adiados. Forca disciplina de escopo.]
108
+ [Itens tentadores adiados. Força disciplina de escopo.]
109
109
 
110
110
  - **[item 1]** — motivo: [fora do v1 porque...]
111
111
  - **[item 2]** — motivo: [pode virar v2 se a hipotese X validar]
@@ -113,19 +113,19 @@ Se voce ainda nao tem a primeira feature em mente, tudo bem — deixa placeholde
113
113
  ## Premissas-Chave
114
114
 
115
115
  - **[premissa sobre usuarios / mercado / escala]** — teste: [como validar]
116
- - **[premissa sobre latencia / volume / SLAs]** — teste: [load profile, metrica alvo]
116
+ - **[premissa sobre latência / volume / SLAs]** — teste: [load profile, métrica alvo]
117
117
 
118
118
  ## Perguntas em Aberto
119
119
 
120
- [O que este one-pager nao consegue responder sozinho. Resolva antes do /dw-plan prd ou escale para um stakeholder.]
120
+ [O que este one-pager não consegue responder sozinho. Resolva antes do /dw-plan prd ou escale para um stakeholder.]
121
121
 
122
122
  - [pergunta 1]
123
123
  - [pergunta 2]
124
124
 
125
- ## Proximo Passo
125
+ ## Próximo Passo
126
126
 
127
127
  Escolha UM:
128
128
 
129
- - **`/dw-plan prd`** — quando voce tem a primeira feature em mente e quer rascunhar o PRD em cima deste stack
130
- - **`/dw-analyze-project`** — apos primeiro commit substancial, para enriquecer `.dw/rules/` com convencoes por modulo
131
- - **`/dw-secure-audit --plan --scan-only`** — para confirmar que nenhuma dep vulneravel veio dos templates `create-*`
129
+ - **`/dw-plan prd`** — quando você tem a primeira feature em mente e quer rascunhar o PRD em cima deste stack
130
+ - **`/dw-analyze-project`** — após primeiro commit substancial, para enriquecer `.dw/rules/` com convenções por módulo
131
+ - **`/dw-secure-audit --plan --scan-only`** — para confirmar que nenhuma dep vulnerável veio dos templates `create-*`