@brunosps00/dev-workflow 1.0.0 → 1.0.2
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 +18 -9
- package/lib/constants.js +10 -6
- package/lib/init.js +28 -0
- package/package.json +1 -1
- package/scaffold/en/agent-instructions.md +28 -3
- package/scaffold/en/commands/dw-analyze-project.md +64 -0
- package/scaffold/en/commands/dw-autopilot.md +64 -5
- package/scaffold/en/commands/dw-brainstorm.md +166 -23
- package/scaffold/en/commands/dw-bugfix.md +124 -26
- package/scaffold/en/commands/dw-intel.md +30 -3
- package/scaffold/en/commands/dw-pause.md +92 -0
- package/scaffold/en/commands/dw-qa.md +87 -11
- package/scaffold/en/commands/dw-resume.md +90 -0
- package/scaffold/en/commands/dw-review.md +22 -12
- package/scaffold/en/templates/bugfix-summary-template.md +66 -0
- package/scaffold/en/templates/concerns-template.md +59 -0
- package/scaffold/en/templates/state-template.md +59 -0
- package/scaffold/pt-br/agent-instructions.md +28 -3
- package/scaffold/pt-br/commands/dw-analyze-project.md +64 -0
- package/scaffold/pt-br/commands/dw-autopilot.md +64 -5
- package/scaffold/pt-br/commands/dw-brainstorm.md +166 -23
- package/scaffold/pt-br/commands/dw-bugfix.md +134 -18
- package/scaffold/pt-br/commands/dw-intel.md +30 -3
- package/scaffold/pt-br/commands/dw-pause.md +92 -0
- package/scaffold/pt-br/commands/dw-qa.md +87 -11
- package/scaffold/pt-br/commands/dw-resume.md +90 -0
- package/scaffold/pt-br/commands/dw-review.md +22 -12
- package/scaffold/pt-br/templates/bugfix-summary-template.md +66 -0
- package/scaffold/pt-br/templates/concerns-template.md +59 -0
- package/scaffold/pt-br/templates/state-template.md +59 -0
- package/scaffold/skills/dw-codebase-intel/SKILL.md +9 -5
- package/scaffold/skills/dw-codebase-intel/references/query-patterns.md +52 -0
- package/scaffold/skills/dw-memory/SKILL.md +26 -1
- package/scaffold/skills/dw-memory/references/context-budget.md +63 -0
- package/scaffold/skills/dw-simplification/SKILL.md +10 -5
- package/scaffold/skills/dw-simplification/references/deep-modules.md +105 -0
|
@@ -9,7 +9,30 @@
|
|
|
9
9
|
- NÃO use para corrigir bugs encontrados durante testes de QA (use `/dw-qa --fix` em vez disso)
|
|
10
10
|
|
|
11
11
|
## Posição no Pipeline
|
|
12
|
-
**Antecessor:** (bug report) | **Sucessor:** `/dw-commit` e depois `/dw-generate-pr`
|
|
12
|
+
**Antecessor:** (bug report) | **Sucessor:** `/dw-commit` e depois `/dw-generate-pr` (opcionalmente `/dw-review --bugfix <slug>` e `/dw-qa --bugfix <slug>` no meio para rigor extra)
|
|
13
|
+
|
|
14
|
+
## Localização dos Arquivos
|
|
15
|
+
|
|
16
|
+
Todo bugfix tem uma entrada de índice em `.dw/bugfixes/`. Modo Direto mantém o artefato completo lá. Modo Análise e escalações via safety valve dividem: a entrada de índice fica em `.dw/bugfixes/`, mas o `prd.md` que o `/dw-plan` vai consumir é colocado em `.dw/spec/prd-bugfix-<slug>/` (o path que `/dw-plan techspec` e `/dw-plan tasks` já esperam).
|
|
17
|
+
|
|
18
|
+
**Casa do índice — sempre criada:**
|
|
19
|
+
|
|
20
|
+
- Diretório de índice do bugfix: `.dw/bugfixes/NNN-<slug>/` (NNN com 3 dígitos, sequencial em todos os bugfixes já registrados)
|
|
21
|
+
- Artefatos modo Direto aqui: `TASK.md` (triagem + plano), `fix-report.md` (evidência de verify), `SUMMARY.md` (registro de uma página)
|
|
22
|
+
- Artefatos modo Análise / escalação aqui: `TASK.md` (triagem + plano que seria executado), `escalated.md` (uma linha apontando para o diretório do spec que assumiu)
|
|
23
|
+
- Saída de review downstream (quando `/dw-review --bugfix <slug>` roda): `.dw/bugfixes/NNN-<slug>/review/`
|
|
24
|
+
- Saída de QA downstream (quando `/dw-qa --bugfix <slug>` roda): `.dw/bugfixes/NNN-<slug>/QA/`
|
|
25
|
+
|
|
26
|
+
**Casa do spec — criada apenas em Análise ou escalação via safety valve:**
|
|
27
|
+
|
|
28
|
+
- Diretório de spec: `.dw/spec/prd-bugfix-<slug>/`
|
|
29
|
+
- `prd.md` mora aqui (NÃO em `.dw/bugfixes/`) para que `/dw-plan techspec prd-bugfix-<slug>` e `/dw-plan tasks prd-bugfix-<slug>` operem contra o path que foram desenhados, sem nenhuma modificação ao `/dw-plan`.
|
|
30
|
+
|
|
31
|
+
**Templates:** `.dw/templates/bugfix-template.md` (para `TASK.md`/`prd.md`), `.dw/templates/bugfix-summary-template.md` (para `SUMMARY.md`), `.dw/templates/pr-bugfix-template.md` (para o corpo do PR).
|
|
32
|
+
|
|
33
|
+
**Descoberta do próximo NNN:** liste `.dw/bugfixes/`, parseie o prefixo de 3 dígitos de cada diretório, tome `max + 1` (ou `1` se vazio). Crie o diretório antes de escrever qualquer coisa. O mesmo `NNN-<slug>` é usado para nomear a parte slug do diretório de spec (ex: bugfix `007-stripe-webhook-retry` escala para spec `.dw/spec/prd-bugfix-stripe-webhook-retry/`).
|
|
34
|
+
|
|
35
|
+
**Slug:** kebab-case derivado de `{{BUG_DESCRIPTION}}` (ex: "login-nao-funciona", "erro-500-salvar-usuario").
|
|
13
36
|
|
|
14
37
|
## Skills Complementares
|
|
15
38
|
|
|
@@ -34,23 +57,23 @@
|
|
|
34
57
|
|
|
35
58
|
| Modo | Quando Usar | Resultado |
|
|
36
59
|
|------|-------------|-----------|
|
|
37
|
-
| **Direto** (padrão) | Bug simples, <=5 arquivos, sem migration | Executa correção imediata |
|
|
38
|
-
| **Análise** (`--análise`) | Bug complexo, precisa planejamento |
|
|
60
|
+
| **Direto** (padrão) | Bug simples, <=5 arquivos, sem migration, <=5 tasks numeradas | Executa correção imediata; persiste `TASK.md` + `fix-report.md` + `SUMMARY.md` em `.dw/bugfixes/NNN-<slug>/` |
|
|
61
|
+
| **Análise** (`--análise`) | Bug complexo, precisa planejamento | Divide: `.dw/bugfixes/NNN-<slug>/{TASK.md, escalated.md}` como entrada de índice + `.dw/spec/prd-bugfix-<slug>/prd.md` para o pipeline techspec -> tasks |
|
|
39
62
|
|
|
40
63
|
### Modo Análise
|
|
41
64
|
|
|
42
|
-
Quando o usuário especificar `--análise` ou quando
|
|
65
|
+
Quando o usuário especificar `--análise` ou quando o safety valve (passo 5.0) disparar:
|
|
43
66
|
|
|
44
67
|
```
|
|
45
68
|
/dw-bugfix meu-projeto "Login não funciona" --análise
|
|
46
69
|
```
|
|
47
70
|
|
|
48
71
|
Neste modo:
|
|
49
|
-
1. Segue o fluxo normal de perguntas e análise
|
|
50
|
-
2.
|
|
51
|
-
3.
|
|
52
|
-
4.
|
|
53
|
-
5.
|
|
72
|
+
1. Segue o fluxo normal de perguntas e análise.
|
|
73
|
+
2. Aloca `NNN` e cria `.dw/bugfixes/NNN-<slug>/`. Escreve `TASK.md` (a triagem + respostas + plano que seria executado mas não roda aqui).
|
|
74
|
+
3. Cria o diretório de spec `.dw/spec/prd-bugfix-<slug>/` e escreve `prd.md` lá (usando `.dw/templates/bugfix-template.md`). Este é o path que `/dw-plan techspec` e `/dw-plan tasks` já sabem operar.
|
|
75
|
+
4. Escreve `.dw/bugfixes/NNN-<slug>/escalated.md` com exatamente uma linha: `Escalated to /dw-plan on <YYYY-MM-DD> → see .dw/spec/prd-bugfix-<slug>/`. Esse cross-reference permite que `/dw-intel --build` inclua o bugfix em `bugfixes.json` mesmo com o planejamento ativo acontecendo em `.dw/spec/`.
|
|
76
|
+
5. Avise ao usuário os próximos comandos: `/dw-plan techspec prd-bugfix-<slug>` e `/dw-plan tasks prd-bugfix-<slug>`.
|
|
54
77
|
|
|
55
78
|
## Fluxo de Trabalho
|
|
56
79
|
|
|
@@ -141,6 +164,27 @@
|
|
|
141
164
|
- {{TARGET}}/.dw/rules/*.md
|
|
142
165
|
```
|
|
143
166
|
|
|
167
|
+
### 1.5. Carregar Concerns (Obrigatório quando concerns.md existe)
|
|
168
|
+
|
|
169
|
+
Se `.dw/rules/concerns.md` existir:
|
|
170
|
+
- Leia uma vez.
|
|
171
|
+
- Para cada arquivo ou módulo referenciado em `{{BUG_DESCRIPTION}}` ou na área suspeita do fix, cruze com Hot Spots, Integrações Frágeis, Código Hostil e Histórico de Bugs Conhecidos.
|
|
172
|
+
- Se houver match, sinalize ANTES das 3 perguntas de clarificação:
|
|
173
|
+
|
|
174
|
+
```
|
|
175
|
+
## Concern detectada
|
|
176
|
+
|
|
177
|
+
A área que você está tocando está flagada em `.dw/rules/concerns.md`:
|
|
178
|
+
|
|
179
|
+
> [entrada verbatim do concerns.md]
|
|
180
|
+
|
|
181
|
+
Isso significa: [traduzir a concern para o que implica neste fix — teste extra, revisor extra, ADR, etc.]
|
|
182
|
+
|
|
183
|
+
Prosseguindo — mas o fix-report.md precisa registrar explicitamente qual concern foi tocada e como foi tratada.
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Se `.dw/rules/concerns.md` não existir, NÃO crie automaticamente (isso é trabalho do Step 9 do `/dw-analyze-project`). Anote no chat: "ainda sem mapa de concerns — considere rodar `/dw-analyze-project` depois do fix para construir um." Continue.
|
|
187
|
+
|
|
144
188
|
### 2. Coletar Evidências (Obrigatório)
|
|
145
189
|
|
|
146
190
|
Execute comandos para entender o estado atual:
|
|
@@ -199,6 +243,40 @@
|
|
|
199
243
|
| Afeta múltiplos projetos? | Redirecionar para PRD |
|
|
200
244
|
| Estimativa > 2 horas de implementação? | Redirecionar para PRD |
|
|
201
245
|
|
|
246
|
+
### 5.0. Safety Valve (OBRIGATÓRIO antes do passo 5)
|
|
247
|
+
|
|
248
|
+
<critical>
|
|
249
|
+
ANTES de desenhar a lista numerada do passo 5, esboce inline os passos que pretende escrever.
|
|
250
|
+
Se esse esboço revelar **mais de 5 tasks numeradas distintas**, OU **qualquer dependência cross-file que obrigue ordem específica de execução**, OU **uma task que requeira rodar migration / refactor / novo endpoint / alteração de contrato de API**, então o escopo do bugfix foi SUBESTIMADO e você DEVE escalar.
|
|
251
|
+
</critical>
|
|
252
|
+
|
|
253
|
+
**Por que isso existe:** a triagem do passo 0 pega problemas de escopo a partir da descrição do sintoma. O checkpoint 4.1 pega depois da análise de causa raiz. Esta válvula pega o caso que sobra — quando o fix em si, uma vez listado, revela mais complexidade do que triagem e RCA previram. NÃO existe flag de bypass. Escalar é o desfecho correto.
|
|
254
|
+
|
|
255
|
+
**Procedimento de escalação:**
|
|
256
|
+
|
|
257
|
+
1. Aloque `NNN` para `.dw/bugfixes/NNN-<slug>/`. Escreva `TASK.md` com a triagem, clarificações, causa raiz e plano que seria executado.
|
|
258
|
+
2. Crie `.dw/spec/prd-bugfix-<slug>/` e escreva `prd.md` lá (use `.dw/templates/bugfix-template.md`). Este é o path que `/dw-plan` espera.
|
|
259
|
+
3. Escreva `.dw/bugfixes/NNN-<slug>/escalated.md` com: `Escalated to /dw-plan on <YYYY-MM-DD> — reason: <qual critério da válvula disparou> → see .dw/spec/prd-bugfix-<slug>/`.
|
|
260
|
+
4. Reporte ao usuário:
|
|
261
|
+
|
|
262
|
+
```
|
|
263
|
+
## Escopo maior que bugfix
|
|
264
|
+
|
|
265
|
+
Listando o fix produziu [N] tasks / [deps cross-file] / [tipo de mudança proibida].
|
|
266
|
+
Pelo safety valve, isso não é mais um bugfix cirúrgico.
|
|
267
|
+
|
|
268
|
+
Índice do bugfix preservado em `.dw/bugfixes/NNN-<slug>/{TASK.md, escalated.md}`.
|
|
269
|
+
PRD criado em `.dw/spec/prd-bugfix-<slug>/prd.md`.
|
|
270
|
+
|
|
271
|
+
Próximo — escolha um:
|
|
272
|
+
- Cadeia manual: `/dw-plan techspec prd-bugfix-<slug>` → `/dw-plan tasks prd-bugfix-<slug>` → `/dw-run` → `/dw-qa` → `/dw-review` → `/dw-commit` → `/dw-generate-pr`.
|
|
273
|
+
- Entregar pro autopilot: `/dw-autopilot --from-prd prd-bugfix-<slug>` — retoma no GATE 1 (aprovação do PRD) e roda o resto automaticamente com os três gates usuais.
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
5. Pare este comando. Não avance para o passo 5. O usuário (ou autopilot) invoca `/dw-plan` ou `/dw-autopilot --from-prd` em seguida.
|
|
277
|
+
|
|
278
|
+
**Se a válvula NÃO disparar:** Continue para o passo 5.
|
|
279
|
+
|
|
202
280
|
### 5. Propor Tarefas Numeradas (Obrigatório)
|
|
203
281
|
|
|
204
282
|
<critical>
|
|
@@ -222,29 +300,64 @@
|
|
|
222
300
|
- `ajustar` - me diga o que modificar no plano
|
|
223
301
|
```
|
|
224
302
|
|
|
225
|
-
### 5.5. Verificação Final (Modo Direto — obrigatório antes do commit)
|
|
303
|
+
### 5.5. Verificação Final + Persistência (Modo Direto — obrigatório antes do commit)
|
|
226
304
|
|
|
227
305
|
<critical>Após aplicar as tarefas aprovadas em modo Direto, invocar `dw-verify` antes do commit. O VERIFICATION REPORT deve mostrar:
|
|
228
306
|
1. O comando de verificação do projeto (test + lint + build) com exit 0.
|
|
229
307
|
2. Reprodução do sintoma original: o cenário que disparava o bug já NÃO dispara mais.
|
|
230
|
-
|
|
308
|
+
|
|
231
309
|
Sem PASS nos dois, NÃO commit. Reportar o que falhou e retomar da etapa 4 (análise de causa raiz).</critical>
|
|
232
310
|
|
|
311
|
+
**Em caso de PASS, persistir o artefato do bugfix (sempre — inclusive em modo Direto):**
|
|
312
|
+
|
|
313
|
+
1. Descubra o próximo `NNN` (ver seção Localização dos Arquivos).
|
|
314
|
+
2. Crie `.dw/bugfixes/NNN-<slug>/` se ainda não foi criado no passo 5.0.
|
|
315
|
+
3. Escreva `TASK.md` com a triagem, clarificações, causa raiz e plano aprovado como executado (use `.dw/templates/bugfix-template.md` como base).
|
|
316
|
+
4. Escreva `fix-report.md` com o VERIFICATION REPORT verbatim do `dw-verify` mais o trace antes/depois da reprodução.
|
|
317
|
+
5. Escreva `SUMMARY.md` usando `.dw/templates/bugfix-summary-template.md`. Preencha slug, data, status `Fixed`, severidade, related_concerns (do passo 1.5), Sintoma (verbatim), Causa Raiz (uma frase), Resolução (2-4 bullets), Arquivos Tocados, Verificação, Relacionado, Followups.
|
|
318
|
+
6. Se o fix tocou uma concern listada em `.dw/rules/concerns.md`, anexe uma linha à coluna `Last incident` da row daquela concern (ou adicione uma row nova sob Histórico de Bugs Conhecidos) — preserve entradas escritas a mão entre `<!-- preserved:start -->`.
|
|
319
|
+
7. Reporte os paths dos três arquivos no chat antes do passo de commit.
|
|
320
|
+
|
|
233
321
|
### 6. Gerar Documento Bugfix (Modo Análise)
|
|
234
322
|
|
|
235
323
|
<critical>
|
|
236
324
|
Este passo é executado quando:
|
|
237
325
|
- Usuário especificou `--análise` no início
|
|
238
326
|
- Checkpoint 4.1 detectou escopo excessivo e usuário escolheu `análise`
|
|
327
|
+
- Safety valve 5.0 disparou
|
|
239
328
|
</critical>
|
|
240
329
|
|
|
241
330
|
**Ações:**
|
|
242
|
-
1.
|
|
243
|
-
2.
|
|
244
|
-
3.
|
|
331
|
+
1. Descubra o próximo `NNN` e crie `.dw/bugfixes/NNN-<slug>/`.
|
|
332
|
+
2. Escreva `TASK.md` no diretório do bugfix (a triagem, clarificações, causa raiz e saída da análise) usando `.dw/templates/bugfix-template.md` como base.
|
|
333
|
+
3. Crie `.dw/spec/prd-bugfix-<slug>/` e escreva `prd.md` lá usando `.dw/templates/bugfix-template.md`. Este é o path que `/dw-plan` já entende — sem modificação no `/dw-plan`.
|
|
334
|
+
4. Escreva `.dw/bugfixes/NNN-<slug>/escalated.md` com: `Analysis mode on <YYYY-MM-DD> → see .dw/spec/prd-bugfix-<slug>/`.
|
|
335
|
+
|
|
336
|
+
**Slug do bug:** kebab-case da descrição (ex: "login-nao-funciona", "erro-500-salvar-usuario").
|
|
337
|
+
|
|
338
|
+
**Por que o split:** `/dw-plan techspec` e `/dw-plan tasks` já hardcodam `.dw/spec/prd-<slug>/prd.md` como entrada. Para manter `/dw-plan` intocado, o PRD vai pra lá; `.dw/bugfixes/NNN-<slug>/` continua a entrada de índice queryable (consumida por `/dw-intel`, `/dw-review --bugfix`, `/dw-qa --bugfix`). O `escalated.md` é o cross-reference.
|
|
339
|
+
|
|
340
|
+
**Formato de saída:**
|
|
341
|
+
```
|
|
342
|
+
## Documento de Bugfix Gerado
|
|
343
|
+
|
|
344
|
+
Índice do bugfix: `.dw/bugfixes/NNN-<slug>/{TASK.md, escalated.md}`
|
|
345
|
+
PRD de planejamento: `.dw/spec/prd-bugfix-<slug>/prd.md`
|
|
245
346
|
|
|
246
|
-
**
|
|
247
|
-
|
|
347
|
+
**Próximos passos — escolha um:**
|
|
348
|
+
|
|
349
|
+
Opção A (cadeia manual, controle completo):
|
|
350
|
+
1. Revise `.dw/spec/prd-bugfix-<slug>/prd.md`
|
|
351
|
+
2. Rode: `/dw-plan techspec prd-bugfix-<slug>`
|
|
352
|
+
3. Rode: `/dw-plan tasks prd-bugfix-<slug>`
|
|
353
|
+
4. Execute tasks com: `/dw-run` (ou por task ID contra o spec)
|
|
354
|
+
|
|
355
|
+
Opção B (entregar pro autopilot):
|
|
356
|
+
1. Rode: `/dw-autopilot --from-prd prd-bugfix-<slug>`
|
|
357
|
+
2. Autopilot retoma no GATE 1 (aprovação do PRD) e roda TechSpec, Tasks, Run, QA, Review, Commit, PR com os três gates usuais.
|
|
358
|
+
|
|
359
|
+
O índice do bugfix continua queryable via `/dw-intel "bugfix history in <module>"`. Downstream `/dw-review --bugfix <slug>` e `/dw-qa --bugfix <slug>` ainda apontam para `.dw/bugfixes/NNN-<slug>/` quando quiser uma revisão focada apenas no patch cirúrgico final.
|
|
360
|
+
```
|
|
248
361
|
|
|
249
362
|
## Tipos de Tarefa (permitidos em bugfix)
|
|
250
363
|
|
|
@@ -295,18 +408,21 @@
|
|
|
295
408
|
|
|
296
409
|
## Checklist de Qualidade
|
|
297
410
|
|
|
298
|
-
- [ ] **Triagem Bug vs Feature realizada**
|
|
299
|
-
- [ ] **
|
|
411
|
+
- [ ] **Triagem Bug vs Feature realizada (passo 0)**
|
|
412
|
+
- [ ] **Mapa de concerns consultado se presente (passo 1.5)**
|
|
300
413
|
- [ ] Contexto do projeto/PRD carregado
|
|
301
414
|
- [ ] Evidências coletadas (git log, erros)
|
|
302
415
|
- [ ] **EXATAMENTE 3 perguntas feitas**
|
|
303
416
|
- [ ] Respostas recebidas e analisadas
|
|
304
417
|
- [ ] Causa raiz identificada
|
|
418
|
+
- [ ] **Checkpoint de escopo realizado (passo 4.1)**
|
|
419
|
+
- [ ] **Safety valve checado (passo 5.0) — escalado para `/dw-plan` se disparou**
|
|
305
420
|
- [ ] Tarefas numeradas sequencialmente
|
|
306
421
|
- [ ] **Máximo 5 arquivos afetados**
|
|
307
422
|
- [ ] **Sem migrations**
|
|
308
423
|
- [ ] **Tarefa de teste incluída (framework correto do projeto)**
|
|
309
424
|
- [ ] Aguardando aprovação antes de executar
|
|
425
|
+
- [ ] **`.dw/bugfixes/NNN-<slug>/{TASK,fix-report,SUMMARY}.md` escritos após verify PASS**
|
|
310
426
|
|
|
311
427
|
<critical>
|
|
312
428
|
PRIMEIRO: Avalie se é bug ou feature (Passo 0).
|
|
@@ -38,9 +38,10 @@ Voce e o assistente de inteligencia do codebase. Dois modos: consultar o indice
|
|
|
38
38
|
|
|
39
39
|
## Localizacao dos Arquivos
|
|
40
40
|
|
|
41
|
-
- Intel machine-readable (consulta primeira): `.dw/intel/{stack,files,apis,deps}.json` + `.dw/intel/arch.md`
|
|
41
|
+
- Intel machine-readable (consulta primeira): `.dw/intel/{stack,files,apis,deps,bugfixes}.json` + `.dw/intel/arch.md`
|
|
42
42
|
- Metadados de refresh: `.dw/intel/.last-refresh.json`
|
|
43
|
-
- Rules human-readable (consulta segunda): `.dw/rules/{index,<modulo>,integrations}.md`
|
|
43
|
+
- Rules human-readable (consulta segunda): `.dw/rules/{index,<modulo>,integrations,concerns}.md`
|
|
44
|
+
- Fonte do historico de bugfixes: `.dw/bugfixes/*/SUMMARY.md`
|
|
44
45
|
- Grep direto fallback (consulta por ultimo): os arquivos source do projeto
|
|
45
46
|
|
|
46
47
|
## Comportamento Obrigatorio
|
|
@@ -67,6 +68,8 @@ Classifique o `{{QUERY}}` em uma das formas documentadas em `.agents/skills/dw-c
|
|
|
67
68
|
- **api-list** — primario: `apis.json`
|
|
68
69
|
- **find-export** — primario: `files.json` (busca em arrays `exports`)
|
|
69
70
|
- **convention** — primario: `arch.md`, secundario: `.dw/rules/`
|
|
71
|
+
- **bugfix-history** — primario: `bugfixes.json`, secundario: `.dw/rules/concerns.md` (gatilhos: "bugs em <modulo>", "fixes recentes", "o que quebrou em X", "historico de fix de Y")
|
|
72
|
+
- **risk-area** — primario: `.dw/rules/concerns.md`, secundario: `bugfixes.json` (gatilhos: "X eh arriscado", "o que eh fragil", "hot spots", "tech debt")
|
|
70
73
|
|
|
71
74
|
### 3. Execucao da busca
|
|
72
75
|
|
|
@@ -143,7 +146,31 @@ Quando invocado com `--build`, o comando produz ou atualiza o indice queryable d
|
|
|
143
146
|
5. **Extracao de API.** Routes, RPC handlers, GraphQL resolvers, superficie de CLI publica. Output em `.dw/intel/apis.json`. Budget ≤1.5K tokens.
|
|
144
147
|
6. **Mapa de dependencias.** Imports internos cross-module + pacotes externos com arrays `used_by`. Output em `.dw/intel/deps.json`. Budget ≤1K tokens.
|
|
145
148
|
7. **Sumario de arquitetura.** Documento em prosa descrevendo a forma do projeto, padroes-chave, request flows, topologia de deployment. Output em `.dw/intel/arch.md`. Budget ≤1.5K tokens.
|
|
146
|
-
8. **
|
|
149
|
+
8. **Historico de bugfixes.** Se `.dw/bugfixes/` existir e nao estiver vazio, escanear todo `SUMMARY.md` e construir `.dw/intel/bugfixes.json` (budget ≤1K tokens). Schema:
|
|
150
|
+
```json
|
|
151
|
+
{
|
|
152
|
+
"schema_version": "1.0",
|
|
153
|
+
"fixes": [
|
|
154
|
+
{
|
|
155
|
+
"slug": "001-login-nao-funciona",
|
|
156
|
+
"date": "YYYY-MM-DD",
|
|
157
|
+
"status": "Fixed",
|
|
158
|
+
"severity": "Medium",
|
|
159
|
+
"symptom_one_line": "...",
|
|
160
|
+
"root_cause_one_line": "...",
|
|
161
|
+
"modules_touched": ["src/auth/", "src/api/login/"],
|
|
162
|
+
"files_touched": ["src/auth/session.ts", "src/auth/session.test.ts"],
|
|
163
|
+
"related_concerns": ["src/auth/session.ts"],
|
|
164
|
+
"path": ".dw/bugfixes/001-login-nao-funciona/"
|
|
165
|
+
}
|
|
166
|
+
],
|
|
167
|
+
"by_module": {
|
|
168
|
+
"src/auth/": ["001-login-nao-funciona", "007-refresh-token-leak"]
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
Pular se `.dw/bugfixes/` nao existir. Rejeitar SUMMARY.md que falhem validacao de frontmatter; logar no relatorio do build. **Bugfixes escalados** (aqueles com `escalated.md` mas sem `SUMMARY.md` porque o fix vive em `.dw/spec/prd-bugfix-<slug>/`) sao pulados do `bugfixes.json` ate o spec entregar um fix — eles re-entram no indice quando o SUMMARY.md for finalmente escrito. O `TASK.md` escalado continua acessivel via grep direto; o indice so registra fixes concluidos.
|
|
173
|
+
9. **Metadata de refresh.** Escrever `.dw/intel/.last-refresh.json` com `updated_at`, `version`, `mode` (full ou incremental), contagem de arquivos scanned, e contagem `bugfixes_indexed`.
|
|
147
174
|
|
|
148
175
|
### Skill complementar para build mode
|
|
149
176
|
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
<system_instructions>
|
|
2
|
+
Voce e um agent de session-handoff. Seu trabalho e consolidar o estado mental da sessao atual em `.dw/STATE.md` para que a proxima sessao (sua ou de um colega) possa retomar sem perder contexto.
|
|
3
|
+
|
|
4
|
+
## Quando Usar
|
|
5
|
+
- Use quando o usuario disser "pausar trabalho", "encerrar sessao", "preciso parar agora", "salvar o que estamos fazendo"
|
|
6
|
+
- Use proativamente antes de uma pausa longa, antes de trocar de projeto ou antes de uma compactacao iminente do context window
|
|
7
|
+
- NAO use no meio de uma task quando nada foi decidido ou aprendido (nada a consolidar)
|
|
8
|
+
- NAO use como substituto de `/dw-commit` — STATE.md e estado mental, nao mudancas de codigo
|
|
9
|
+
|
|
10
|
+
## Posicao na Pipeline
|
|
11
|
+
**Predecessor:** qualquer sessao de trabalho | **Sucessor:** `/dw-resume` (numa sessao futura)
|
|
12
|
+
|
|
13
|
+
## O que este comando NAO faz
|
|
14
|
+
- NAO commita codigo (use `/dw-commit`)
|
|
15
|
+
- NAO substitui o `MEMORY.md` por-PRD (memoria de workflow para uma feature unica vive la; skill `dw-memory` gerencia)
|
|
16
|
+
- NAO promove nada para ADRs (use `/dw-adr` para decisoes arquiteturais duraveis)
|
|
17
|
+
|
|
18
|
+
## Local do Arquivo
|
|
19
|
+
- Artefato unico: `.dw/STATE.md` (nivel de projeto, nao por-PRD)
|
|
20
|
+
- Template: `.dw/templates/state-template.md` (usado apenas na primeira criacao)
|
|
21
|
+
|
|
22
|
+
## Workflow
|
|
23
|
+
|
|
24
|
+
### 1. Garantir que STATE.md existe
|
|
25
|
+
- Se `.dw/STATE.md` nao existir, copie `.dw/templates/state-template.md` para `.dw/STATE.md`. Avise no chat: "STATE.md nao encontrado — inicializado a partir do template."
|
|
26
|
+
- Se `.dw/templates/state-template.md` tambem nao existir (projeto muito antigo), crie um STATE.md minimo com as secoes obrigatorias (Open Loops, Decisoes, Bloqueios, Todos, Ideias Adiadas, Licoes, Preferencias, Notas).
|
|
27
|
+
|
|
28
|
+
### 2. Mapear a sessao
|
|
29
|
+
Leia o contexto da conversa e identifique, **sem inventar**:
|
|
30
|
+
|
|
31
|
+
- **Pontas soltas (Open Loops)**: tarefas/trabalho iniciados mas nao finalizados (ex: "PRD `prd-foo` esta no estagio TechSpec, aguardando aprovacao"; "Task 3 do `prd-bar` falhando no lint")
|
|
32
|
+
- **Decisoes tomadas**: escolhas acordadas entre usuario e agent durante a sessao que afetam trabalho futuro
|
|
33
|
+
- **Bloqueios encontrados**: o que parou o avanco (esperando input, tooling quebrado, lacuna de conhecimento)
|
|
34
|
+
- **Todos mencionados de passagem** que ainda nao tem PRD ou task
|
|
35
|
+
- **Ideias exploradas e parqueadas** (com motivo do park)
|
|
36
|
+
- **Licoes aprendidas** — pequenas licoes operacionais que valem registrar
|
|
37
|
+
- **Preferencias expressas** — convencoes que o usuario quer aplicadas dali em diante
|
|
38
|
+
|
|
39
|
+
### 3. Merge no STATE.md
|
|
40
|
+
|
|
41
|
+
<critical>NUNCA sobrescreva STATE.md cegamente. Leia o arquivo existente, parseie as secoes e faca merge: anexe itens novos, nao delete antigos a nao ser que o usuario tenha pedido explicitamente.</critical>
|
|
42
|
+
|
|
43
|
+
Regras:
|
|
44
|
+
- Cada entrada nova ganha prefixo de data `YYYY-MM-DD` (data de hoje).
|
|
45
|
+
- Use bullet lists. Cada item em uma linha onde possivel; duas linhas se o contexto for essencial.
|
|
46
|
+
- Se uma secao acabar com placeholder `_nenhum_` e voce nao tiver nada a acrescentar, mantenha `_nenhum_`.
|
|
47
|
+
- Atualize o campo `last_paused` no frontmatter para a data de hoje (YYYY-MM-DD).
|
|
48
|
+
|
|
49
|
+
### 4. Passada de Compactacao (quando STATE.md cresceu)
|
|
50
|
+
|
|
51
|
+
Se apos o merge o STATE.md ultrapassar **~6KB** ou qualquer secao tiver mais que **20 itens**, compacte:
|
|
52
|
+
|
|
53
|
+
- **Pontas soltas resolvidas durante a sessao**: remova.
|
|
54
|
+
- **Todos concluidos durante a sessao**: remova.
|
|
55
|
+
- **Decisoes com mais de 30 dias que foram formalizadas em ADR ou na constitution**: remova (o ADR e o registro duravel).
|
|
56
|
+
- **Licoes com mais de 60 dias**: mantenha apenas as ainda relevantes; descarte conselhos taticos datados.
|
|
57
|
+
- **Ideias Adiadas com mais de 90 dias sem trigger de revisita**: pergunte ao usuario antes de descartar.
|
|
58
|
+
|
|
59
|
+
Se a compactacao remover mais de 5 itens, liste no chat para o usuario poder vetar.
|
|
60
|
+
|
|
61
|
+
### 5. Report
|
|
62
|
+
|
|
63
|
+
Apresente um resumo curto ao usuario:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
## Sessao Pausada
|
|
67
|
+
|
|
68
|
+
Atualizado `.dw/STATE.md`:
|
|
69
|
+
- Pontas soltas: +N (agora: X total)
|
|
70
|
+
- Decisoes: +N
|
|
71
|
+
- Bloqueios: +N (Y nao resolvidos)
|
|
72
|
+
- Todos: +N (Z total)
|
|
73
|
+
- Adiadas: +N
|
|
74
|
+
|
|
75
|
+
[Se compactacao rodou: linhas removidas e motivo]
|
|
76
|
+
|
|
77
|
+
Retome com `/dw-resume` na proxima sessao.
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Comportamento Obrigatorio
|
|
81
|
+
|
|
82
|
+
<critical>NUNCA fabrique estado. Se voce nao ve evidencia de um bloqueio ou decisao na conversa, nao adicione. Secoes vazias estao ok.</critical>
|
|
83
|
+
|
|
84
|
+
<critical>NUNCA toque em arquivos de memoria por-PRD (`.dw/spec/*/MEMORY.md`, `.dw/spec/*/tasks/*_memory.md`). Esses sao gerenciados pela skill `dw-memory` e sao locais ao PRD.</critical>
|
|
85
|
+
|
|
86
|
+
<critical>NUNCA descarte conteudo do usuario em silencio. Se compactar, liste o que removeu.</critical>
|
|
87
|
+
|
|
88
|
+
## Inspirado em
|
|
89
|
+
|
|
90
|
+
Este comando adapta o pattern de session-handoff de [`tech-leads-club/agent-skills/tlc-spec-driven`](https://github.com/tech-leads-club/agent-skills/tree/main/packages/skills-catalog/skills/(development)/tlc-spec-driven) (CC-BY-4.0, Felipe Rodrigues). Adaptacoes: local `.dw/STATE.md` em vez de `.specs/project/STATE.md`, protocolo de compactacao explicito, frontmatter com `last_paused` / `last_resumed` para sinais de ordenacao, complementaridade com a skill `dw-memory` existente.
|
|
91
|
+
|
|
92
|
+
</system_instructions>
|
|
@@ -19,6 +19,8 @@ Você é o orquestrador de QA. Dois modos: rodar QA contra a implementação (UI
|
|
|
19
19
|
| `/dw-qa --fix` | QA pass seguido de loop iterativo fix+retest. Cada bug detectado → root-cause → fix → retest com evidência → marcar resolvido. Continua até todos os bugs marcados Closed ou usuário aceitar lista deferida. |
|
|
20
20
|
| `/dw-qa --api` | Força modo API-only (pula UI mesmo com frontend deps). Útil pra sub-features backend-only em repos fullstack. |
|
|
21
21
|
| `/dw-qa --ai` | Adiciona avaliação de feature AI contra reference dataset em `.dw/eval/datasets/<feature>/`. Computa precision@k / faithfulness / outcome accuracy. Loga JSONL em `QA/logs/ai/`. |
|
|
22
|
+
| `/dw-qa --uat` | **Walkthrough UAT interativo.** O agent conduz o usuário pela feature passo a passo, fazendo perguntas direcionadas ("isso bate com a expectativa?", "qual o comportamento esperado no caso X?"). Sem Playwright auto, sem AI eval. Output: `QA/uat-report.md`. Usar após `--fix` (ou no lugar de `/dw-qa` para features predominantemente baseadas em julgamento humano). |
|
|
23
|
+
| `/dw-qa --bugfix <NNN-slug>` | Aponta para um bugfix em `.dw/bugfixes/NNN-slug/` em vez de um PRD. Roda o fluxo de QA padrão escopado aos arquivos tocados pelo fix; output em `.dw/bugfixes/NNN-slug/QA/`. Combina com `--fix`/`--api`/`--ai`/`--uat`. |
|
|
22
24
|
|
|
23
25
|
## Auto-detecção de modo
|
|
24
26
|
|
|
@@ -32,8 +34,17 @@ Default `/dw-qa` inspeciona projeto pra escolher UI vs API:
|
|
|
32
34
|
|
|
33
35
|
| Variável | Descrição | Exemplo |
|
|
34
36
|
|----------|-----------|---------|
|
|
35
|
-
| `{{PRD_PATH}}` | Caminho do dir PRD com tasks (auto-detect da branch ativa se omitido) | `.dw/spec/prd-invoice-export` |
|
|
36
|
-
| `{{
|
|
37
|
+
| `{{PRD_PATH}}` | Caminho do dir PRD com tasks (auto-detect da branch ativa se omitido; ignorado quando `--bugfix` é usado) | `.dw/spec/prd-invoice-export` |
|
|
38
|
+
| `{{BUGFIX_SLUG}}` | Slug do bugfix quando a flag `--bugfix` é usada | `001-login-nao-funciona` |
|
|
39
|
+
| `{{MODE}}` | `--fix` / `--api` / `--ai` / `--uat` / `--bugfix <slug>` (opcional; default = auto-detect, target = PRD) | — |
|
|
40
|
+
|
|
41
|
+
## Resolução de Target
|
|
42
|
+
|
|
43
|
+
Compute `<target>` UMA VEZ no início; substitua onde aparecer `<target>` abaixo.
|
|
44
|
+
|
|
45
|
+
1. **Target PRD (padrão):** `<target>` = `{{PRD_PATH}}`. Artefatos lidos: `prd.md` (FRs), `techspec.md`, `tasks.md`, per-task files. Output em `<target>/QA/`.
|
|
46
|
+
|
|
47
|
+
2. **Target Bugfix (`--bugfix <slug>`):** `<target>` = `.dw/bugfixes/<slug>/`. Artefatos lidos: `TASK.md` (tasks numeradas + arquivos tocados), `fix-report.md` (evidência verify + trace de reprodução), `SUMMARY.md`. QA escopado aos arquivos da tabela `Arquivos Tocados` e às superfícies adjacentes que esses arquivos expõem. Output em `<target>/QA/`. O `qa-report.md` é mais curto — há no máximo 5 tasks e uma única causa raiz a validar, não uma matriz de FR completa.
|
|
37
48
|
|
|
38
49
|
## Skills Complementares
|
|
39
50
|
|
|
@@ -50,19 +61,20 @@ Quando disponíveis em `./.agents/skills/`, invocadas operacionalmente:
|
|
|
50
61
|
## Estrutura de Output
|
|
51
62
|
|
|
52
63
|
```
|
|
53
|
-
.dw/spec/<prd>/
|
|
54
|
-
├── qa-report.md
|
|
55
|
-
├── bugs.md
|
|
64
|
+
<target>/QA/ # <target> = .dw/spec/<prd>/ OU .dw/bugfixes/<NNN-slug>/
|
|
65
|
+
├── qa-report.md # Test plan + execution summary
|
|
66
|
+
├── bugs.md # Catálogo de bugs com status
|
|
67
|
+
├── uat-report.md # (apenas modo --uat) Log do walkthrough + observações do usuário
|
|
56
68
|
├── scripts/
|
|
57
|
-
│ ├── ui/<RF>-<slug>.spec.ts
|
|
58
|
-
│ ├── api/<RF>-<slug>.http
|
|
59
|
-
│ └── ai/<feature>-eval.ts
|
|
69
|
+
│ ├── ui/<RF>-<slug>.spec.ts # Playwright scripts (modo UI)
|
|
70
|
+
│ ├── api/<RF>-<slug>.http # API test files
|
|
71
|
+
│ └── ai/<feature>-eval.ts # AI eval scripts (--ai)
|
|
60
72
|
├── evidence/
|
|
61
|
-
│ ├── ui/
|
|
73
|
+
│ ├── ui/ # Screenshots per RF + retests
|
|
62
74
|
│ └── ...
|
|
63
75
|
└── logs/
|
|
64
|
-
├── api/<RF>-<slug>.log
|
|
65
|
-
└── ai/<feature>-<date>.jsonl
|
|
76
|
+
├── api/<RF>-<slug>.log # JSONL request/response per call
|
|
77
|
+
└── ai/<feature>-<date>.jsonl # AI eval results
|
|
66
78
|
```
|
|
67
79
|
|
|
68
80
|
## Modo 1: Default (`/dw-qa`)
|
|
@@ -105,6 +117,70 @@ Quando disponíveis em `./.agents/skills/`, invocadas operacionalmente:
|
|
|
105
117
|
4. Comparar com JSONL da run anterior — alertar em regressão >10% em qualquer métrica.
|
|
106
118
|
5. Anexar seção modo-AI em `qa-report.md`.
|
|
107
119
|
|
|
120
|
+
## Modo 1.5: UAT Interativo (`/dw-qa --uat`)
|
|
121
|
+
|
|
122
|
+
O modo UAT é um **walkthrough humano-no-loop**. Não há Playwright auto, não há AI eval. O agent é o navegador; o usuário é o verificador. Use quando o comportamento é baseado em julgamento — um redesign, um fluxo de muito conteúdo, um fluxo novo cujos critérios de aceitação são parcialmente estéticos, ou um bugfix cuja manifestação user-facing precisa de olho humano para confirmar.
|
|
123
|
+
|
|
124
|
+
### Pre-flight
|
|
125
|
+
|
|
126
|
+
1. **Target Bugfix:** ler `<target>/SUMMARY.md` → Sintoma + Resolução. O walkthrough é o trace de reprodução do `fix-report.md` (antes → depois), agora confirmado ao vivo.
|
|
127
|
+
2. **Target PRD:** ler `<target>/prd.md` → para cada FR, esboçar uma pergunta de uma linha "o que você deveria ver quando X acontece?".
|
|
128
|
+
3. Suba o dev server do projeto (ou instrua o usuário a subir se precisar credenciais interativas).
|
|
129
|
+
|
|
130
|
+
### Loop do walkthrough
|
|
131
|
+
|
|
132
|
+
Para cada FR (target PRD) ou cada task numerada em `TASK.md` (target Bugfix):
|
|
133
|
+
|
|
134
|
+
1. **Agent descreve o próximo passo em palavras claras.** Exemplo: "Abra `/invoices/export` logado como viewer. O botão de export deve estar desabilitado e um tooltip explicar por quê."
|
|
135
|
+
2. **Usuário executa o passo no browser/app** e reporta o que observou.
|
|
136
|
+
3. **Agent faz uma pergunta de follow-up direcionada** casada com a FR/task — nunca mais que uma pergunta aberta por turno:
|
|
137
|
+
- "O estado disabled comunica visualmente o porquê? (texto, ícone, contraste — você decide)"
|
|
138
|
+
- "Se você tabula até o botão, o tooltip fica acessível por teclado?"
|
|
139
|
+
- "O que apareceu no network panel?" (só se comportamento de backend for relevante)
|
|
140
|
+
4. **Agent registra a resposta verbatim** em `uat-report.md` sob a seção dessa FR/task. Sem interpretação, sem paráfrase.
|
|
141
|
+
5. **Agent sinaliza um finding** quando o usuário reportar comportamento inesperado. O finding vai para `bugs.md` com `source: uat` e `severity: <escolha do usuário>`.
|
|
142
|
+
6. **Repita até todas as FRs / tasks numeradas terem sido percorridas.**
|
|
143
|
+
|
|
144
|
+
### Output
|
|
145
|
+
|
|
146
|
+
Salvar em `<target>/QA/uat-report.md`:
|
|
147
|
+
|
|
148
|
+
```markdown
|
|
149
|
+
# Walkthrough UAT — <target>
|
|
150
|
+
|
|
151
|
+
Data: YYYY-MM-DD
|
|
152
|
+
Conduzido por: <identificador do usuário ou "usuário">
|
|
153
|
+
Browser/env: <conforme reportado>
|
|
154
|
+
|
|
155
|
+
## FR-1.1 (ou Task 1) — <escopo em uma linha>
|
|
156
|
+
|
|
157
|
+
- Passo: <o que o agent pediu>
|
|
158
|
+
- Observação do usuário: <verbatim>
|
|
159
|
+
- Veredicto: PASS / FAIL / NEEDS-DESIGN-INPUT
|
|
160
|
+
- Notas: <follow-up>
|
|
161
|
+
|
|
162
|
+
## FR-1.2 (ou Task 2) — ...
|
|
163
|
+
...
|
|
164
|
+
|
|
165
|
+
## Sumário
|
|
166
|
+
|
|
167
|
+
- Percorridas: N FRs / tasks
|
|
168
|
+
- PASS: N
|
|
169
|
+
- FAIL: N (cross-ref entradas no bugs.md com source:uat)
|
|
170
|
+
- NEEDS-DESIGN-INPUT: N (não é bug; spec estava sub-definida ali)
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Comportamento obrigatório
|
|
174
|
+
|
|
175
|
+
<critical>
|
|
176
|
+
- NUNCA dirija o browser automaticamente em modo `--uat`. O usuário navega; você observa.
|
|
177
|
+
- NUNCA parafraseie a observação do usuário. Cite verbatim sob cada FR/task.
|
|
178
|
+
- NUNCA marque um finding como bug sem o usuário dizer explicitamente "sim, é bug" — findings de UAT também podem indicar specs ambíguas (NEEDS-DESIGN-INPUT), que não são bugs.
|
|
179
|
+
- Limite cada FR a uma pergunta aberta por turno. UAT é interativo, não interrogatório.
|
|
180
|
+
</critical>
|
|
181
|
+
|
|
182
|
+
UAT compõe com `--bugfix <slug>` (percorre o caminho do teste de regressão com o usuário em vez de FRs) e com `--fix` (após um fix aterrissar, UAT é o green-light humano antes do commit).
|
|
183
|
+
|
|
108
184
|
## Modo 2: Fix loop (`/dw-qa --fix`)
|
|
109
185
|
|
|
110
186
|
### Comportamento
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
<system_instructions>
|
|
2
|
+
Voce e um agent de retomada de sessao. Seu trabalho e ler `.dw/STATE.md`, se orientar e orientar o usuario, e rotear para o proximo passo mais util. Este comando e o inverso do `/dw-pause`.
|
|
3
|
+
|
|
4
|
+
## Quando Usar
|
|
5
|
+
- Use quando o usuario disser "retomar trabalho", "continuar", "onde paramos?", "voltar de onde parei", ou comecar uma sessao nova em um projeto existente
|
|
6
|
+
- Use proativamente no inicio de qualquer sessao que abrir um projeto com `.dw/STATE.md` nao-vazio e o usuario ainda nao tiver expressado uma intencao
|
|
7
|
+
|
|
8
|
+
## Posicao na Pipeline
|
|
9
|
+
**Predecessor:** `/dw-pause` (sessao anterior) | **Sucessor:** depende do que esta aberto (tipicamente `/dw-run --resume`, `/dw-bugfix`, `/dw-plan`, `/dw-qa` ou `/dw-review`)
|
|
10
|
+
|
|
11
|
+
## Local do Arquivo
|
|
12
|
+
- Alvo read-only: `.dw/STATE.md`
|
|
13
|
+
- Cross-reference: `.dw/spec/` (listar PRDs ativos), `.dw/bugfixes/` (listar bugfixes abertos), `.dw/incidents/` (se houver)
|
|
14
|
+
|
|
15
|
+
## Workflow
|
|
16
|
+
|
|
17
|
+
### 1. Ler STATE.md
|
|
18
|
+
- Se `.dw/STATE.md` nao existir, reporte: "Nenhum estado pausado encontrado — parece sessao nova. Rode `/dw-help` para proximos passos." Pare aqui.
|
|
19
|
+
- Se `STATE.md` existir mas toda secao for `_nenhum_`, reporte: "STATE.md vazio — nada a retomar. Me diga o que voce quer fazer."
|
|
20
|
+
|
|
21
|
+
### 2. Cross-reference com disco
|
|
22
|
+
Verifique que o estado ainda bate com o filesystem:
|
|
23
|
+
|
|
24
|
+
- Para cada Open Loop referenciando path de PRD, rode `ls` em `.dw/spec/<slug>/`. Se faltar, sinalize `[stale: PRD nao encontrado]` e pergunte se quer remover.
|
|
25
|
+
- Para cada Open Loop referenciando slug de bugfix, cheque `.dw/bugfixes/<NNN-slug>/`.
|
|
26
|
+
- Para cada Bloqueio referenciando sistema externo, nao verifique — apenas mostre.
|
|
27
|
+
- Se `last_paused` no frontmatter tem mais de 14 dias, sinalize com destaque (estado pode estar stale).
|
|
28
|
+
|
|
29
|
+
### 3. Produzir TLDR
|
|
30
|
+
|
|
31
|
+
Apresente um resumo conciso, **nao o STATE.md cru**:
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
## Onde voce parou
|
|
35
|
+
|
|
36
|
+
Ultima pausa: YYYY-MM-DD (Nd atras)
|
|
37
|
+
|
|
38
|
+
### Pontas Soltas (N)
|
|
39
|
+
- [path ou label] — proximo: <proxima acao em uma linha> [<flag se stale>]
|
|
40
|
+
- ...
|
|
41
|
+
|
|
42
|
+
### Bloqueios (N nao resolvidos)
|
|
43
|
+
- [label] — esperando <X>
|
|
44
|
+
|
|
45
|
+
### Top Todos (ate 5)
|
|
46
|
+
- ...
|
|
47
|
+
|
|
48
|
+
[Decisoes, Licoes, Preferencias — so mencione se relevantes para loops ativos]
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Mantenha o TLDR em menos de 30 linhas. Se STATE.md tiver mais, resuma e ofereca `cat .dw/STATE.md` como follow-up.
|
|
52
|
+
|
|
53
|
+
### 4. Sugerir proximo passo
|
|
54
|
+
|
|
55
|
+
Baseado no TLDR, roteie para um comando concreto. Use estas heuristicas:
|
|
56
|
+
|
|
57
|
+
| Sinal mais forte no STATE.md | Comando sugerido |
|
|
58
|
+
|------------------------------|------------------|
|
|
59
|
+
| Open Loop num PRD em estagio `tasks/` | `/dw-run --resume` |
|
|
60
|
+
| Open Loop num PRD em estagio `techspec` | `/dw-plan techspec` |
|
|
61
|
+
| Open Loop num PRD em estagio `prd` | `/dw-plan tasks` (se PRD aprovado) ou continuar PRD |
|
|
62
|
+
| Open Loop num slug de bugfix | `/dw-bugfix --resume <slug>` ou `/dw-qa --bugfix <slug>` |
|
|
63
|
+
| Bloqueio esperando input externo | Sugerir que o usuario resolva o bloqueio primeiro |
|
|
64
|
+
| So Todos e Decisoes, sem trabalho ativo | Perguntar o que comecar |
|
|
65
|
+
|
|
66
|
+
Formule a sugestao como pergunta, nao como ordem:
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
Quer que eu rode <comando sugerido>?
|
|
70
|
+
- sim → rodo
|
|
71
|
+
- nao, <outra intencao> → me diga o que prefere
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 5. Atualizar frontmatter do STATE.md
|
|
75
|
+
|
|
76
|
+
Setar `last_resumed` para a data de hoje (YYYY-MM-DD). Nao modificar conteudo das secoes — agora a sessao esta de volta e isso e do usuario.
|
|
77
|
+
|
|
78
|
+
## Comportamento Obrigatorio
|
|
79
|
+
|
|
80
|
+
<critical>NUNCA auto-execute o comando sugerido. `/dw-resume` so propoe; o usuario confirma antes de qualquer `/dw-run`, `/dw-plan` ou `/dw-bugfix`.</critical>
|
|
81
|
+
|
|
82
|
+
<critical>NUNCA fabrique resultados de stale-detection. Se voce nao rodou `ls`, nao reporte que o arquivo existe ou nao.</critical>
|
|
83
|
+
|
|
84
|
+
<critical>NUNCA jogue o STATE.md inteiro no chat. Resuma. Arquivos de estado longos sinalizam que compactacao e necessaria — sugira `/dw-pause` para compactar da proxima vez.</critical>
|
|
85
|
+
|
|
86
|
+
## Inspirado em
|
|
87
|
+
|
|
88
|
+
Este comando adapta o pattern de session-handoff de [`tech-leads-club/agent-skills/tlc-spec-driven`](https://github.com/tech-leads-club/agent-skills/tree/main/packages/skills-catalog/skills/(development)/tlc-spec-driven) (CC-BY-4.0, Felipe Rodrigues). Adaptacoes: heuristicas de routing mapeiam conteudo do STATE.md para comandos `dw-*` especificos; cross-reference com `.dw/spec/` e `.dw/bugfixes/` para detectar staleness; nunca auto-executa.
|
|
89
|
+
|
|
90
|
+
</system_instructions>
|