@brunosps00/dev-workflow 1.0.1 → 1.0.4
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 +33 -16
- package/bin/dev-workflow.js +24 -7
- package/lib/aws-categories.js +80 -0
- package/lib/azure-categories.js +168 -0
- package/lib/constants.js +14 -6
- package/lib/init.js +28 -0
- package/lib/install-aws-skills.js +345 -0
- package/lib/install-azure-skills.js +231 -0
- package/lib/mcp.js +32 -21
- package/lib/prompts.js +38 -1
- package/package.json +1 -1
- package/scaffold/en/agent-instructions.md +23 -0
- package/scaffold/en/commands/dw-analyze-project.md +64 -0
- package/scaffold/en/commands/dw-autopilot.md +64 -5
- package/scaffold/en/commands/dw-bugfix.md +124 -26
- package/scaffold/en/commands/dw-install-aws-skills.md +166 -0
- package/scaffold/en/commands/dw-install-azure-skills.md +138 -0
- 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 +23 -0
- 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-bugfix.md +134 -18
- package/scaffold/pt-br/commands/dw-install-aws-skills.md +166 -0
- package/scaffold/pt-br/commands/dw-install-azure-skills.md +138 -0
- 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
|
@@ -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>
|
|
@@ -15,16 +15,28 @@ Você é o orquestrador de review. Roda Level 2 (PRD compliance / cobertura) e L
|
|
|
15
15
|
|
|
16
16
|
| Invocação | O que roda |
|
|
17
17
|
|-----------|------------|
|
|
18
|
-
| `/dw-review` | **Padrão.** Level 2 (cobertura PRD) + Level 3 (qualidade de código) em sequência. Relatório consolidado em
|
|
19
|
-
| `/dw-review --coverage-only` | Apenas Level 2 — mapeia cada requisito do PRD para o código que entrega. Pula qualidade. |
|
|
20
|
-
| `/dw-review --code-only` | Apenas Level 3 — qualidade / convenção / security checks. Pula mapeamento PRD. |
|
|
18
|
+
| `/dw-review` | **Padrão.** Level 2 (cobertura PRD) + Level 3 (qualidade de código) em sequência. Relatório consolidado em `<target>/QA/review-consolidated.md` (target resolve pra dir do PRD ou do bugfix; ver Resolução de Target). |
|
|
19
|
+
| `/dw-review --coverage-only` | Apenas Level 2 — mapeia cada requisito do PRD (ou escopo do bugfix) para o código que entrega. Pula qualidade. |
|
|
20
|
+
| `/dw-review --code-only` | Apenas Level 3 — qualidade / convenção / security checks. Pula mapeamento de PRD/escopo. |
|
|
21
|
+
| `/dw-review --bugfix <NNN-slug>` | Aponta para um bugfix em `.dw/bugfixes/NNN-slug/` em vez de um PRD. Level 2 mapeia o escopo do bugfix (TASK.md + fix-report.md + SUMMARY.md) para o código que entrega o fix; Level 3 checa o diff. Output: `.dw/bugfixes/NNN-slug/review/`. |
|
|
21
22
|
|
|
22
23
|
## Entradas
|
|
23
24
|
|
|
24
25
|
| Variável | Descrição | Exemplo |
|
|
25
26
|
|----------|-----------|---------|
|
|
26
|
-
| `{{PRD_PATH}}` | Caminho do dir PRD (auto-detect da branch ativa se omitido) | `.dw/spec/prd-invoice-export` |
|
|
27
|
-
| `{{
|
|
27
|
+
| `{{PRD_PATH}}` | Caminho do dir PRD (auto-detect da branch ativa se omitido; ignorado quando `--bugfix` é usado) | `.dw/spec/prd-invoice-export` |
|
|
28
|
+
| `{{BUGFIX_SLUG}}` | Slug do bugfix quando a flag `--bugfix` é usada | `001-login-nao-funciona` |
|
|
29
|
+
| `{{MODE}}` | `--coverage-only` / `--code-only` / `--bugfix <slug>` (opcional; default = ambos, target = PRD) | — |
|
|
30
|
+
|
|
31
|
+
## Resolução de Target
|
|
32
|
+
|
|
33
|
+
O review roda contra um de dois tipos de target. Compute `<target>` UMA VEZ no início; substitua onde aparecer `<target>` abaixo.
|
|
34
|
+
|
|
35
|
+
1. **Target PRD (padrão):** `<target>` = `{{PRD_PATH}}` (auto-detectado da branch ativa quando omitido). Artefatos lidos: `prd.md`, `techspec.md`, `tasks.md`, `tasks/<N>_task.md`, `tasks-validation.md`. Output em `<target>/QA/`. Nomes de arquivo: `review-coverage.md`, `dw-code-review.md`, `review-consolidated.md`.
|
|
36
|
+
|
|
37
|
+
2. **Target Bugfix (`--bugfix <slug>`):** `<target>` = `.dw/bugfixes/<slug>/`. Artefatos lidos: `TASK.md` (o plano de fix com tasks numeradas 1..≤5), `fix-report.md` (evidência de verify), `SUMMARY.md` (registro de uma página). Não há FRs no sentido de PRD — em vez disso, cada task numerada em `TASK.md` é a unidade de cobertura. Output em `<target>/review/`. Nomes: `review-coverage.md`, `dw-code-review.md`, `review-consolidated.md`.
|
|
38
|
+
|
|
39
|
+
Quando o target Bugfix é usado, o mapeamento de cobertura (Level 2) opera sobre as tasks numeradas do `TASK.md` (não FR-N.M); uma task é ENTREGUE quando (a) os arquivos que ela alegou tocar estão no diff e (b) o teste de regressão referenciado em `fix-report.md` existe e roda. Código órfão em modo bugfix é qualquer coisa no diff que não corresponde a uma task numerada — sinal forte de que o safety valve deveria ter escalado para `/dw-plan`.
|
|
28
40
|
|
|
29
41
|
## Skills Complementares
|
|
30
42
|
|
|
@@ -59,10 +71,8 @@ Quando disponíveis em `./.agents/skills/`, são invocadas como apoio analítico
|
|
|
59
71
|
### Comportamento
|
|
60
72
|
|
|
61
73
|
1. **Carregar artefatos:**
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
- `.dw/spec/<prd>/tasks.md` + per-task files → extrair trabalho commitado.
|
|
65
|
-
- `tasks-validation.md` → trazer status das dimensões.
|
|
74
|
+
- **Target PRD:** `<target>/prd.md` → extrair requisitos funcionais. `<target>/techspec.md` → extrair decisões arquiteturais. `<target>/tasks.md` + per-task files → extrair trabalho commitado. `<target>/tasks-validation.md` → trazer status das dimensões.
|
|
75
|
+
- **Target Bugfix:** `<target>/TASK.md` → extrair as tasks numeradas (1..≤5) e seus arquivos-alvo. `<target>/fix-report.md` → extrair evidência de verify e referência do teste de regressão. `<target>/SUMMARY.md` → extrair Sintoma, Causa Raiz, Arquivos Tocados, Verificação.
|
|
66
76
|
|
|
67
77
|
2. **Mapear cada FR para código:**
|
|
68
78
|
- Para cada `FR-N.M`, encontrar código que entrega (file path + line range + commit SHA).
|
|
@@ -78,7 +88,7 @@ Quando disponíveis em `./.agents/skills/`, são invocadas como apoio analítico
|
|
|
78
88
|
|
|
79
89
|
### Output
|
|
80
90
|
|
|
81
|
-
Salvo em
|
|
91
|
+
Salvo em `<target>/QA/review-coverage.md` (target PRD) ou `<target>/review/review-coverage.md` (target Bugfix):
|
|
82
92
|
|
|
83
93
|
```markdown
|
|
84
94
|
# Coverage Review
|
|
@@ -145,14 +155,14 @@ Se FALTANDO > 0, o veredicto sugere revisitar `/dw-plan tasks` pra escopar ou `/
|
|
|
145
155
|
|
|
146
156
|
### Output
|
|
147
157
|
|
|
148
|
-
Salvo em
|
|
158
|
+
Salvo em `<target>/QA/dw-code-review.md` (target PRD) ou `<target>/review/dw-code-review.md` (target Bugfix). Linha de verdict é uma de:
|
|
149
159
|
- **APROVADO** — todos os gates verdes; pronto pra commit + PR.
|
|
150
160
|
- **APROVADO COM RESSALVAS** — verde mas findings valem corrigir em follow-up (filed com severities).
|
|
151
161
|
- **REPROVADO** — ao menos um hard gate falhou. Especifique qual.
|
|
152
162
|
|
|
153
163
|
## Output consolidado (modo padrão)
|
|
154
164
|
|
|
155
|
-
Quando ambos níveis rodam, relatório consolidado em
|
|
165
|
+
Quando ambos níveis rodam, relatório consolidado em `<target>/QA/review-consolidated.md` (target PRD) ou `<target>/review/review-consolidated.md` (target Bugfix):
|
|
156
166
|
|
|
157
167
|
```markdown
|
|
158
168
|
# Review Consolidado
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: "1.0"
|
|
3
|
+
slug: ""
|
|
4
|
+
created: ""
|
|
5
|
+
status: "Fixed | In Review | QA Pending | Reverted"
|
|
6
|
+
severity: "Low | Medium | High"
|
|
7
|
+
related_concerns: []
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Bugfix Summary — {{NNN}}-{{slug}}
|
|
11
|
+
|
|
12
|
+
Registro de uma pagina de um bugfix. Arquivos irmaos neste diretorio:
|
|
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)
|
|
16
|
+
- `review/` — populado por `/dw-review --bugfix {{NNN}}-{{slug}}`
|
|
17
|
+
- `QA/` — populado por `/dw-qa --bugfix {{NNN}}-{{slug}}` (quando aplicavel)
|
|
18
|
+
|
|
19
|
+
## Sintoma
|
|
20
|
+
|
|
21
|
+
O que o usuario observou. Cite a descricao original do bug verbatim; nao parafraseie.
|
|
22
|
+
|
|
23
|
+
> _"…"_
|
|
24
|
+
|
|
25
|
+
## Causa Raiz
|
|
26
|
+
|
|
27
|
+
O que estava de fato quebrado, em uma frase. Nao o sintoma — a causa.
|
|
28
|
+
|
|
29
|
+
_…_
|
|
30
|
+
|
|
31
|
+
## Resolucao
|
|
32
|
+
|
|
33
|
+
O que mudou, em 2-4 bullets. Paths de arquivos, nao snippets.
|
|
34
|
+
|
|
35
|
+
- _mudanca 1_
|
|
36
|
+
- _mudanca 2_
|
|
37
|
+
|
|
38
|
+
## Arquivos Tocados
|
|
39
|
+
|
|
40
|
+
Lista completa, incluindo testes. <=5 — se mais, o safety valve deveria ter escalado para `/dw-plan`.
|
|
41
|
+
|
|
42
|
+
| Path | Mudanca |
|
|
43
|
+
|------|---------|
|
|
44
|
+
| `src/foo/bar.ts` | _fix cirurgico em X_ |
|
|
45
|
+
| `src/foo/bar.test.ts` | _teste de regressao adicionado_ |
|
|
46
|
+
|
|
47
|
+
## Verificacao
|
|
48
|
+
|
|
49
|
+
Como o fix foi provado, alem de "os testes passam".
|
|
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`
|
|
55
|
+
|
|
56
|
+
## Relacionado
|
|
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_
|
|
60
|
+
- **Contexto de PRD:** _se o bug apareceu dentro de uma feature em andamento, link para o path do PRD_
|
|
61
|
+
|
|
62
|
+
## Followups
|
|
63
|
+
|
|
64
|
+
Pontas soltas que este fix descobriu mas nao resolveu. Adicione ao `.dw/STATE.md` Open-Loops ao fechar.
|
|
65
|
+
|
|
66
|
+
- _nenhum_
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: "1.0"
|
|
3
|
+
generated_by: dw-analyze-project (Step 9)
|
|
4
|
+
last_refreshed: ""
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Concerns — Mapa de Riscos
|
|
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?**
|
|
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).
|
|
12
|
+
|
|
13
|
+
## Hot Spots
|
|
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.
|
|
16
|
+
|
|
17
|
+
| Path | Por que e quente | Primeiro flag | Ultimo incidente |
|
|
18
|
+
|------|------------------|---------------|------------------|
|
|
19
|
+
| _ex. `src/auth/session.ts`_ | _3 fixes de token em 60d_ | _YYYY-MM-DD_ | _YYYY-MM-DD_ |
|
|
20
|
+
|
|
21
|
+
## Integracoes Fragis
|
|
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.
|
|
24
|
+
|
|
25
|
+
| Integracao | Modo de falha | Mitigacao esperada |
|
|
26
|
+
|------------|---------------|--------------------|
|
|
27
|
+
| _ex. export SAP legado_ | _200 OK silencioso com body vazio quando source esta lockado_ | _checar tamanho do body; logar e alertar_ |
|
|
28
|
+
|
|
29
|
+
## Codigo Hostil
|
|
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.
|
|
32
|
+
|
|
33
|
+
| Path / funcao | Por que e hostil | Owner / contexto |
|
|
34
|
+
|---------------|------------------|------------------|
|
|
35
|
+
| _ex. `src/billing/parseInvoice.ts:parseLine`_ | _regex de 900 chars com 12 alternativas, sem comentarios_ | _Bruno escreveu em 2024; reescrever se quebrar_ |
|
|
36
|
+
|
|
37
|
+
## Historico de Bugs Conhecidos
|
|
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.
|
|
40
|
+
|
|
41
|
+
| Modulo | Contagem de bugs | Slugs recentes |
|
|
42
|
+
|--------|------------------|----------------|
|
|
43
|
+
| _ex. `src/payments/`_ | _4_ | _002-stripe-webhook-retry, 007-refund-rounding_ |
|
|
44
|
+
|
|
45
|
+
## Tech Debt — Reconhecida
|
|
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.
|
|
48
|
+
|
|
49
|
+
| Area | Descricao do debt | Por que fica | Trigger de cleanup |
|
|
50
|
+
|------|-------------------|--------------|--------------------|
|
|
51
|
+
| _ex. `src/legacy/userMapper.ts`_ | _Dois codepaths paralelos de field-mapping_ | _Esperando migracao v3 da API_ | _Q3 2026 apos cutover do vendor_ |
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
**Como manter este arquivo:**
|
|
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").
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: "1.0"
|
|
3
|
+
last_paused: ""
|
|
4
|
+
last_resumed: ""
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Estado da Sessao
|
|
8
|
+
|
|
9
|
+
Memoria de trabalho entre sessoes. Indice leve do que esta em andamento, do que foi decidido, do que ficou parado. Atualizado por `/dw-pause` (consolida) e lido por `/dw-resume` (orienta).
|
|
10
|
+
|
|
11
|
+
Diferente do `MEMORY.md` por-PRD (memoria de workflow para uma feature) ou dos ADRs (decisoes arquiteturais duraveis), este arquivo vive no nivel do projeto e sobrevive entre PRDs, branches e sessoes. Edite livremente entre pausas.
|
|
12
|
+
|
|
13
|
+
## Open Loops (Pontas Soltas)
|
|
14
|
+
|
|
15
|
+
O que esta em andamento — trabalho comecado mas nao terminado. Cada entrada: label curto + path/alvo + proxima acao concreta.
|
|
16
|
+
|
|
17
|
+
- _nenhum_
|
|
18
|
+
|
|
19
|
+
## Decisoes
|
|
20
|
+
|
|
21
|
+
Decisoes transversais que ainda nao viraram ADR (porque nao justificam um, ou porque a formalizacao foi adiada). Formato: `YYYY-MM-DD — decisao — contexto (1 linha)`.
|
|
22
|
+
|
|
23
|
+
- _nenhuma_
|
|
24
|
+
|
|
25
|
+
## Bloqueios
|
|
26
|
+
|
|
27
|
+
O que esta impedindo o avanco. Externo (esperando alguem), interno (lacuna de conhecimento) ou tecnico (tooling quebrado). Cada entrada: label curto + o que esta bloqueado + dono / condicao de desbloqueio.
|
|
28
|
+
|
|
29
|
+
- _nenhum_
|
|
30
|
+
|
|
31
|
+
## Todos
|
|
32
|
+
|
|
33
|
+
Pequenos follow-ups que nao justificam um PRD ou task. Uma linha cada. Limpe conforme forem feitos ou migrados para um PRD.
|
|
34
|
+
|
|
35
|
+
- _nenhum_
|
|
36
|
+
|
|
37
|
+
## Ideias Adiadas
|
|
38
|
+
|
|
39
|
+
Ideias consideradas mas parqueadas. Capture para nao perder; revisite quando o escopo mudar. Cada entrada: ideia + motivo do park + trigger de revisita (se conhecido).
|
|
40
|
+
|
|
41
|
+
- _nenhuma_
|
|
42
|
+
|
|
43
|
+
## Licoes
|
|
44
|
+
|
|
45
|
+
Pequenas licoes aprendidas no trabalho recente — padroes que funcionaram, pegadinhas, "da proxima vez eu...". Nao sao arquiteturais (essas vao para ADRs); sao operacionais.
|
|
46
|
+
|
|
47
|
+
- _nenhuma_
|
|
48
|
+
|
|
49
|
+
## Preferencias
|
|
50
|
+
|
|
51
|
+
Convencoes acordadas durante o trabalho que afetam como o agent deve se comportar dali em diante. Exemplos: "sempre rodar `pnpm typecheck` antes do commit", "preferir named exports a default exports em utils".
|
|
52
|
+
|
|
53
|
+
- _nenhuma_
|
|
54
|
+
|
|
55
|
+
## Notas
|
|
56
|
+
|
|
57
|
+
Bloco livre. Opcional.
|
|
58
|
+
|
|
59
|
+
- _nenhuma_
|
|
@@ -44,8 +44,9 @@ The intel directory is the contract. Every file is machine-parseable and referen
|
|
|
44
44
|
| `files.json` | File graph: per-file imports/exports/type | JSON |
|
|
45
45
|
| `apis.json` | API surface: routes, methods, params, source file | JSON |
|
|
46
46
|
| `deps.json` | Dependencies: version, type, used_by, invocation | JSON |
|
|
47
|
+
| `bugfixes.json` | Historical bugfix index aggregated from `.dw/bugfixes/*/SUMMARY.md` (slug, date, modules touched, related concerns, by_module map). Optional — present only if `.dw/bugfixes/` is non-empty. | JSON |
|
|
47
48
|
| `arch.md` | Human-readable architecture overview + key components + data flow | Markdown |
|
|
48
|
-
| `.last-refresh.json` | Timestamps + content hashes for incremental detection | JSON |
|
|
49
|
+
| `.last-refresh.json` | Timestamps + content hashes for incremental detection (now includes `bugfixes_indexed` count) | JSON |
|
|
49
50
|
|
|
50
51
|
Schemas are documented in `references/intel-format.md`.
|
|
51
52
|
|
|
@@ -61,9 +62,10 @@ This skill ships ONE agent — `intel-updater` — which produces machine-readab
|
|
|
61
62
|
|
|
62
63
|
1. **`/dw-intel --build`** is invoked.
|
|
63
64
|
2. The command spawns `intel-updater` with `focus: full` (first run) or `focus: partial --files <paths>` (incremental).
|
|
64
|
-
3. The agent reads source files (using Glob/Read/Grep; no Bash file listing for cross-platform safety) and writes the
|
|
65
|
-
4.
|
|
66
|
-
5.
|
|
65
|
+
3. The agent reads source files (using Glob/Read/Grep; no Bash file listing for cross-platform safety) and writes the intel files (`stack.json`, `files.json`, `apis.json`, `deps.json`, `arch.md`).
|
|
66
|
+
4. If `.dw/bugfixes/` exists and contains at least one `SUMMARY.md`, the agent additionally scans every SUMMARY frontmatter + Files Touched section and writes `bugfixes.json`. SUMMARY files with invalid frontmatter are logged and skipped.
|
|
67
|
+
5. The agent writes `.last-refresh.json` with timestamps + hashes for incremental change detection on the next run, including a `bugfixes_indexed` count.
|
|
68
|
+
6. `/dw-intel --build` reports completion and invites the user to query via `/dw-intel "<question>"`.
|
|
67
69
|
|
|
68
70
|
For human-readable analysis (architecture overview, module conventions, anti-patterns), run `/dw-analyze-project` after `/dw-intel --build` — it reads `.dw/intel/` as input and produces `.dw/rules/`.
|
|
69
71
|
|
|
@@ -88,7 +90,7 @@ If no `.dw/intel/` exists at all, `/dw-intel` falls back to `.dw/rules/` (seeded
|
|
|
88
90
|
- **Cross-platform**: use Glob/Read/Grep; never Bash `ls`/`find`/`cat` (those break on Windows).
|
|
89
91
|
- **Forbidden files**: never read `.env*` (except `.env.example`/`.env.template`), `*.key`, `*.pem`, `*.pfx`, `*.p12`, `*.keystore`, `*.jks`, `id_rsa`, `id_ed25519`, or files matching `*credential*`/`*secret*` in name. Skip silently if encountered.
|
|
90
92
|
- **Excluded directories**: `node_modules/`, `.git/`, `dist/`, `build/`, `.dw/` (planning docs, not project code).
|
|
91
|
-
- **Output budget**: `files.json` ≤2K tokens, `apis.json` ≤1.5K, `deps.json` ≤1K, `stack.json` ≤500, `arch.md` ≤1.5K. For large repos, prioritize coverage of key files over exhaustive listing.
|
|
93
|
+
- **Output budget**: `files.json` ≤2K tokens, `apis.json` ≤1.5K, `deps.json` ≤1K, `stack.json` ≤500, `arch.md` ≤1.5K, `bugfixes.json` ≤1K. For large repos, prioritize coverage of key files over exhaustive listing. For `bugfixes.json`, keep one-line symptom/root-cause summaries; do not embed full SUMMARY.md content.
|
|
92
94
|
|
|
93
95
|
## References
|
|
94
96
|
|
|
@@ -100,3 +102,5 @@ If no `.dw/intel/` exists at all, `/dw-intel` falls back to `.dw/rules/` (seeded
|
|
|
100
102
|
## Inspired by
|
|
101
103
|
|
|
102
104
|
Adapted from [`get-shit-done-cc`](https://github.com/gsd-build/get-shit-done) (`gsd-intel-updater`) by gsd-build (MIT license). Core schemas (`files.json`, `apis.json`, `deps.json`, `stack.json`, `arch.md`) and incremental update protocol preserved. Path conventions changed from `.planning/intel/` to `.dw/intel/`. CLI tooling (`gsd-sdk query intel.*`) replaced by agent-driven inline operations (no separate runtime). The companion `gsd-codebase-mapper` agent (human-readable analysis docs) was NOT ported — its scope overlaps with the existing `/dw-analyze-project` command which writes to `.dw/rules/`.
|
|
105
|
+
|
|
106
|
+
The `bugfixes.json` index and the `bugfix-history` / `risk-area` query shapes (see `references/query-patterns.md`) were added in v1.0.2 to enable cross-skill awareness of `.dw/bugfixes/` — adapted from the operational-memory pattern in [`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). The original skill maintains a single `STATE.md`; dev-workflow splits this into project-level `.dw/STATE.md` (session continuity) and a queryable `bugfixes.json` (historical fixes), which compose with the existing per-PRD `MEMORY.md`.
|