@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.
Files changed (43) hide show
  1. package/README.md +33 -16
  2. package/bin/dev-workflow.js +24 -7
  3. package/lib/aws-categories.js +80 -0
  4. package/lib/azure-categories.js +168 -0
  5. package/lib/constants.js +14 -6
  6. package/lib/init.js +28 -0
  7. package/lib/install-aws-skills.js +345 -0
  8. package/lib/install-azure-skills.js +231 -0
  9. package/lib/mcp.js +32 -21
  10. package/lib/prompts.js +38 -1
  11. package/package.json +1 -1
  12. package/scaffold/en/agent-instructions.md +23 -0
  13. package/scaffold/en/commands/dw-analyze-project.md +64 -0
  14. package/scaffold/en/commands/dw-autopilot.md +64 -5
  15. package/scaffold/en/commands/dw-bugfix.md +124 -26
  16. package/scaffold/en/commands/dw-install-aws-skills.md +166 -0
  17. package/scaffold/en/commands/dw-install-azure-skills.md +138 -0
  18. package/scaffold/en/commands/dw-intel.md +30 -3
  19. package/scaffold/en/commands/dw-pause.md +92 -0
  20. package/scaffold/en/commands/dw-qa.md +87 -11
  21. package/scaffold/en/commands/dw-resume.md +90 -0
  22. package/scaffold/en/commands/dw-review.md +22 -12
  23. package/scaffold/en/templates/bugfix-summary-template.md +66 -0
  24. package/scaffold/en/templates/concerns-template.md +59 -0
  25. package/scaffold/en/templates/state-template.md +59 -0
  26. package/scaffold/pt-br/agent-instructions.md +23 -0
  27. package/scaffold/pt-br/commands/dw-analyze-project.md +64 -0
  28. package/scaffold/pt-br/commands/dw-autopilot.md +64 -5
  29. package/scaffold/pt-br/commands/dw-bugfix.md +134 -18
  30. package/scaffold/pt-br/commands/dw-install-aws-skills.md +166 -0
  31. package/scaffold/pt-br/commands/dw-install-azure-skills.md +138 -0
  32. package/scaffold/pt-br/commands/dw-intel.md +30 -3
  33. package/scaffold/pt-br/commands/dw-pause.md +92 -0
  34. package/scaffold/pt-br/commands/dw-qa.md +87 -11
  35. package/scaffold/pt-br/commands/dw-resume.md +90 -0
  36. package/scaffold/pt-br/commands/dw-review.md +22 -12
  37. package/scaffold/pt-br/templates/bugfix-summary-template.md +66 -0
  38. package/scaffold/pt-br/templates/concerns-template.md +59 -0
  39. package/scaffold/pt-br/templates/state-template.md +59 -0
  40. package/scaffold/skills/dw-codebase-intel/SKILL.md +9 -5
  41. package/scaffold/skills/dw-codebase-intel/references/query-patterns.md +52 -0
  42. package/scaffold/skills/dw-memory/SKILL.md +26 -1
  43. package/scaffold/skills/dw-memory/references/context-budget.md +63 -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 | Gera `.dw/spec/dw-bugfix-*/prd.md` para techspec -> tasks |
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 detectar que o bug precisa de mais planejamento:
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. Em vez de executar, gera documento em `.dw/spec/dw-bugfix-[nome]/prd.md`
51
- 3. O arquivo é nomeado `prd.md` para manter compatibilidade com o pipeline dw-create-techspec/dw-plan tasks
52
- 4. Depois o usuário pode rodar `/dw-plan techspec .dw/spec/dw-bugfix-[nome]`
53
- 5. E então `/dw-plan tasks .dw/spec/dw-bugfix-[nome]`
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` (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. Criar diretório: `.dw/spec/dw-bugfix-[nome-do-bug]/`
243
- 2. Preencher com todas as informações coletadas nos passos anteriores
244
- 3. Salvar como: `.dw/spec/dw-bugfix-[nome-do-bug]/prd.md` (usa nome `prd.md` para compatibilidade com pipeline)
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` usando `.dw/templates/bugfix-template.md`. Este é o path que `/dw-plan` 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
- **IMPORTANTE:** O arquivo deve ser nomeado `prd.md` para que os comandos
247
- `/dw-plan techspec` e `/dw-plan tasks` funcionem sem modificação.
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
- - [ ] **Checkpoint de escopo realizado (passo 4.1)**
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).
@@ -0,0 +1,166 @@
1
+ <system_instructions>
2
+ Você instala agent skills opt-in da AWS a partir do `aws/agent-toolkit-for-aws` (Apache 2.0) em `.agents/skills/aws/` e registra o AWS MCP Server unificado (stdio via `uvx mcp-proxy-for-aws`, requer credenciais AWS) em `.claude/settings.json`. Mesmo resultado de `npx @brunosps00/dev-workflow install-aws-skills` — interface diferente.
3
+
4
+ ## Quando Usar
5
+ - Use quando o usuário pedir para "instalar skills AWS", "configurar MCP da AWS", "adicionar expertise AWS", "vou trabalhar com AWS", ou similar.
6
+ - Use quando um projeto existente começa uma feature que toca AWS (Lambda, S3, Bedrock, EC2, etc.) e ainda não há `.agents/skills/aws/`.
7
+ - NÃO use para Azure, GCP ou clouds não-AWS — têm comandos próprios ou não são suportados.
8
+ - NÃO use para instalar as skills nativas do dev-workflow — essas vêm com `init`/`update`.
9
+
10
+ ## Posição no Pipeline
11
+ **Antecessor:** (pedido explícito do usuário) | **Sucessor:** qualquer trabalho de feature AWS (tipicamente `/dw-plan` ou `/dw-autopilot`).
12
+
13
+ ## Pré-requisitos
14
+
15
+ <critical>Este comando precisa de:
16
+ 1. `git` no PATH.
17
+ 2. `uv` (Python tool runner) — provê `uvx` que invoca o `mcp-proxy-for-aws`.
18
+ 3. `aws cli` ≥ 2.32.0.
19
+ 4. Credenciais AWS válidas — verifique com `aws sts get-caller-identity`.
20
+
21
+ Se QUALQUER um faltar ou estiver inválido, PARE e diga ao usuário como instalar/configurar. NÃO clone ou copie nada se os pré-requisitos não estão prontos — install parcial é pior que nenhum.</critical>
22
+
23
+ ## Categorias (nativas do upstream)
24
+
25
+ | Categoria | Caminhos upstream |
26
+ |---|---|
27
+ | **All** | `skills/core-skills/*` + `skills/specialized-skills/*/*` |
28
+ | **Core** | `skills/core-skills/*` — 13 skills horizontais: amazon-bedrock, aws-amplify, aws-billing-and-cost-management, aws-cdk, aws-cloudformation, aws-containers, aws-iam, aws-messaging-and-streaming, aws-observability, aws-sdk-js-v3-usage, aws-sdk-python-usage, aws-sdk-swift-usage, aws-serverless |
29
+ | **Analytics** | `skills/specialized-skills/analytics-skills/*` |
30
+ | **Database** | `skills/specialized-skills/database-skills/*` |
31
+ | **EC2 / Compute** | `skills/specialized-skills/ec2-skills/*` |
32
+ | **Migration & Modernization** | `skills/specialized-skills/migration-and-modernization-skills/*` |
33
+ | **Networking & Content Delivery** | `skills/specialized-skills/networking-and-content-delivery-skills/*` |
34
+ | **Operations** | `skills/specialized-skills/operations-skills/*` |
35
+ | **Security & Identity** | `skills/specialized-skills/security-and-identity-skills/*` |
36
+ | **Serverless** | `skills/specialized-skills/serverless-skills/*` |
37
+ | **Storage** | `skills/specialized-skills/storage-skills/*` |
38
+
39
+ ## Fluxo de Trabalho
40
+
41
+ ### 1. Verificar pré-requisitos
42
+
43
+ Rode cada um via Bash. Em qualquer falha, PARE e imprima o bloco de instrução correspondente:
44
+
45
+ | Check | Se faltar |
46
+ |---|---|
47
+ | `git --version` | `git é obrigatório. Instale via brew/apt/git-scm.com.` |
48
+ | `uv --version` | `uv é obrigatório. Instale: curl -LsSf https://astral.sh/uv/install.sh \| sh` (macOS/Linux) ou PowerShell equivalente no Windows. |
49
+ | `aws --version` | `aws cli ≥ 2.32.0 é obrigatório. Instale via brew install awscli, winget install Amazon.AWSCLI, ou siga a doc AWS.` |
50
+ | `aws sts get-caller-identity` | `Credenciais AWS faltando/expiradas. Mais fácil: aws login (rotaciona a cada 15 min, valid 12h). SSO: aws configure sso. Keys: aws configure.` |
51
+
52
+ NÃO prossiga para o passo 2 se algum check falhar.
53
+
54
+ ### 2. Escolher região
55
+
56
+ Pergunte ao usuário qual região AWS usar. O MCP server é regional — endpoints suportados:
57
+
58
+ - `us-east-1` → `https://aws-mcp.us-east-1.api.aws/mcp`
59
+ - `eu-central-1` → `https://aws-mcp.eu-central-1.api.aws/mcp`
60
+
61
+ Default `us-east-1` se o usuário não tiver preferência. O agent pode sobrescrever por query (ex: "list EC2 instances in eu-west-1") — a região do endpoint é só a região de operação default.
62
+
63
+ ### 3. Perguntar quais categorias instalar
64
+
65
+ Use AskUserQuestion (multi-select se suportar; caso contrário, loop). Apresente as 11 categorias acima. Sugestão default quando indeciso: pergunte "qual parte da AWS você vai mexer?" e mapeie para uma categoria.
66
+
67
+ ### 4. Clone shallow do repo upstream
68
+
69
+ ```bash
70
+ TMP=$(mktemp -d -t dw-aws-skills-XXXXXX)
71
+ git clone --depth=1 https://github.com/aws/agent-toolkit-for-aws.git "$TMP"
72
+ ```
73
+
74
+ Se o clone falhar, PARE e reporte o erro verbatim.
75
+
76
+ ### 5. Filtrar e copiar
77
+
78
+ Para cada categoria selecionada, glob o caminho upstream correspondente e colete todos os diretórios de skill. Exemplos:
79
+
80
+ - "Core" → cada subdir de `$TMP/skills/core-skills/`
81
+ - "Database" → cada subdir de `$TMP/skills/specialized-skills/database-skills/`
82
+ - "All" → cada subdir de `$TMP/skills/core-skills/` E cada subdir de `$TMP/skills/specialized-skills/*/`
83
+
84
+ Antes de copiar, **limpe** `.agents/skills/aws/` para refresh limpo (re-runs substituem seleções anteriores).
85
+
86
+ Pule qualquer skill cujo root contenha scripts executáveis (`.sh`, `.py`, `.js`, `.ts`, `.ps1`, `.bat`) — dev-workflow instala apenas skills puramente markdown. Reporte a contagem de pulados.
87
+
88
+ Copie cada diretório casado recursivamente para `.agents/skills/aws/<skill-name>/`. **Achatar** a hierarquia upstream — o destino não tem split `core-skills/` vs `specialized-skills/`. Só o slug da skill como nome de diretório.
89
+
90
+ ### 6. Registrar o AWS MCP Server
91
+
92
+ Leia `.claude/settings.json`. Parseie o JSON. Upsert em `mcpServers`:
93
+
94
+ ```json
95
+ {
96
+ "mcpServers": {
97
+ "aws-mcp": {
98
+ "command": "uvx",
99
+ "args": [
100
+ "mcp-proxy-for-aws@latest",
101
+ "https://aws-mcp.us-east-1.api.aws/mcp",
102
+ "--metadata",
103
+ "AWS_REGION=us-east-1"
104
+ ],
105
+ "transport": "stdio",
106
+ "timeout": 100000
107
+ }
108
+ }
109
+ }
110
+ ```
111
+
112
+ Substitua o endpoint e o valor de `AWS_REGION` pela região escolhida no passo 2.
113
+
114
+ Se `mcpServers.aws-mcp` já existir, deixe intocado — nunca sobrescreva. Diga ao usuário para editar `.claude/settings.json` direto (ou remover a entry e re-rodar) para mudar a região. Outras entradas em `mcpServers` (context7, playwright, microsoft-learn, etc.) DEVEM ser preservadas.
115
+
116
+ ### 7. Escrever `.dw/references/aws-mcp-instructions.md`
117
+
118
+ Crie (sobrescreva se presente) com a orientação canônica para o agent — as 5 MCP tools (`aws___search_documentation`, `aws___read_documentation`, `aws___retrieve_skill`, `aws___call_aws`, `aws___run_script`), o protocolo de operações destrutivas (confirmar antes de qualquer `create*`/`update*`/`delete*`/`modify*`/IAM/billing), comportamento de região, source-grounding, refresh/uninstall.
119
+
120
+ A versão CLI deste comando (`npx @brunosps00/dev-workflow install-aws-skills`) já carrega o texto canônico. Se rodando como slash command, replique o mesmo conteúdo do constant `AWS_MCP_INSTRUCTIONS` em `lib/install-aws-skills.js`.
121
+
122
+ ### 8. Cleanup
123
+
124
+ Remova `$TMP`. Sempre — mesmo se passos anteriores falharam.
125
+
126
+ ### 9. Reportar
127
+
128
+ ```
129
+ ## Skills AWS instaladas
130
+
131
+ Categorias: [lista]
132
+ Região: us-east-1 (ou escolhida)
133
+ Skills copiadas: N (M puladas com scripts executáveis)
134
+ MCP registrado: aws-mcp (ou "já presente, deixado inalterado")
135
+ Instruções do agent: .dw/references/aws-mcp-instructions.md
136
+
137
+ ## Próximos passos
138
+
139
+ 1. Reinicie o Claude Code (ou Codex / Copilot / OpenCode) para o MCP carregar.
140
+ 2. Valide com uma pergunta AWS, ex: "Qual o limite de execuções concorrentes do Lambda?"
141
+ 3. O agent agora pode chamar APIs AWS via aws___call_aws — revise
142
+ .dw/references/aws-mcp-instructions.md para o protocolo de operações destrutivas.
143
+ 4. Para refrescar do upstream, rode /dw-install-aws-skills de novo.
144
+ 5. Para desinstalar: rm -rf .agents/skills/aws/ e remova a entrada "aws-mcp"
145
+ de .claude/settings.json mcpServers.
146
+ ```
147
+
148
+ ## Comportamento Obrigatório
149
+
150
+ <critical>NUNCA adicione o MCP `aws-mcp` fora deste comando. É opt-in. `init` e `update` NÃO DEVEM mexer.</critical>
151
+
152
+ <critical>NUNCA registre o AWS Knowledge MCP deprecated (`https://knowledge-mcp.global.api.aws`). A AWS oficialmente substituiu pelo AWS MCP Server unificado; registrar ambos causa tool conflicts que confundem agents.</critical>
153
+
154
+ <critical>NUNCA auto-instale `uv` ou `aws cli`. Imprima o bloco de instruções e deixe o usuário escolher o caminho de instalação. Evita quebrar o ambiente do usuário com gerenciadores que não controlamos.</critical>
155
+
156
+ <critical>NUNCA pule a checagem de credenciais. Um install limpo sem `aws sts get-caller-identity` funcionando produz um MCP quebrado que falha em toda tool call. Melhor parar e instruir.</critical>
157
+
158
+ <critical>NUNCA copie LICENSE/README/CONTRIBUTING do upstream para `.agents/skills/aws/` — pertencem à AWS e poluem a descoberta de skills. Copie apenas `SKILL.md` por skill + conteúdo auxiliar (references/, assets/).</critical>
159
+
160
+ <critical>NUNCA copie skills com scripts executáveis. O escopo do dev-workflow é markdown-only. Se uma skill precisa de scripts, o usuário deve instalar direto do repo upstream, não por este comando.</critical>
161
+
162
+ ## Atribuição
163
+
164
+ Skills vêm de [`aws/agent-toolkit-for-aws`](https://github.com/aws/agent-toolkit-for-aws) (Apache 2.0, da AWS). O MCP server está documentado em [docs.aws.amazon.com/aws-mcp/](https://docs.aws.amazon.com/aws-mcp/). O proxy é [`aws/mcp-proxy-for-aws`](https://github.com/aws/mcp-proxy-for-aws). dev-workflow apenas orquestra a instalação.
165
+
166
+ </system_instructions>
@@ -0,0 +1,138 @@
1
+ <system_instructions>
2
+ Você instala agent skills opt-in da Azure a partir do `MicrosoftDocs/Agent-Skills` (CC-BY-4.0) em `.agents/skills/azure/` e registra o Microsoft Learn MCP Server (HTTP, sem auth) em `.claude/settings.json`. Mesmo resultado de `npx @brunosps00/dev-workflow install-azure-skills` — interface diferente.
3
+
4
+ ## Quando Usar
5
+ - Use quando o usuário pedir para "instalar skills Azure", "configurar MCP do Microsoft docs", "adicionar expertise Azure", "vou trabalhar com Azure", ou similar.
6
+ - Use quando um projeto existente começa uma feature que toca Azure (Container Apps, OpenAI, AKS, etc.) e ainda não há `.agents/skills/azure/`.
7
+ - NÃO use para AWS, GCP ou qualquer cloud não-Microsoft — não estão no repo upstream.
8
+ - NÃO use para instalar as skills nativas do dev-workflow — essas vêm com `init`/`update`.
9
+
10
+ ## Posição no Pipeline
11
+ **Antecessor:** (pedido explícito do usuário) | **Sucessor:** qualquer trabalho de feature Azure (tipicamente `/dw-plan` ou `/dw-autopilot`).
12
+
13
+ ## Pré-requisitos
14
+
15
+ <critical>Este comando precisa de `git` no PATH. Se `git --version` falhar, PARE e diga ao usuário para instalar git primeiro.</critical>
16
+
17
+ ## Categorias (curadas)
18
+
19
+ | Categoria | O que cobre |
20
+ |---|---|
21
+ | All | Todas as skills no diretório `skills/` upstream. |
22
+ | Compute | AKS, App Service, Container Apps/Instances/Registry, Functions, VMs, Batch, Spring Apps. |
23
+ | Data & Storage | Blob, Cosmos DB, SQL, MySQL, PostgreSQL, Cache Redis, Data Lake, Files, Table/Queue Storage, Managed Disks. |
24
+ | AI & ML | OpenAI, AI Foundry, AI Vision, AI Search, AI Services, Machine Learning, Anomaly Detector, Bot Service, Cognitive Services. |
25
+ | Networking | Application Gateway, Front Door, Load Balancer, VPN Gateway, ExpressRoute, Bastion, DNS, CDN, Virtual Network, Virtual WAN, Private Link, Network Watcher, Firewall, Traffic Manager. |
26
+ | Identity & Security | Entra ID (Active Directory), Key Vault, Attestation, Defender, Sentinel, Security Center, Artifact Signing. |
27
+ | DevOps | Boards, Pipelines, Artifacts, Repos, Azure DevOps Server, Test Plans. |
28
+ | Observability | Monitor, Application Insights, Log Analytics. |
29
+ | Integration | Logic Apps, Service Bus, Event Grid, Event Hubs, API Management, API Center, Business Process Tracking. |
30
+ | Architecture | Architecture guidance, Advisor, Blueprints, Well-Architected, Policy, Resource Graph, Resource Manager. |
31
+
32
+ ## Fluxo de Trabalho
33
+
34
+ ### 1. Verificar `git`
35
+
36
+ Rode `git --version` via Bash. Em caso de falha, PARE com: `git é obrigatório para instalar skills Azure. Instale o git e tente novamente.`
37
+
38
+ ### 2. Perguntar ao usuário quais categorias instalar
39
+
40
+ Use AskUserQuestion (multi-select se a interface suportar; caso contrário, loop). Apresente as 10 categorias com suas descrições. Sugestão default quando o usuário não decide: pergunte "qual parte da Azure você vai mexer?" e mapeie a resposta para uma categoria.
41
+
42
+ ### 3. Clone shallow do repo upstream
43
+
44
+ ```bash
45
+ TMP=$(mktemp -d -t dw-azure-skills-XXXXXX)
46
+ git clone --depth=1 https://github.com/MicrosoftDocs/Agent-Skills.git "$TMP"
47
+ ```
48
+
49
+ Se o clone falhar (rede, rate limit do GitHub, etc.), PARE e reporte o erro verbatim. Não instale parcialmente.
50
+
51
+ ### 4. Filtrar e copiar
52
+
53
+ Para cada subdiretório de `$TMP/skills/`, decida se casa com as categorias selecionadas. O match é **por prefixo** — um diretório `azure-aks-edge-essentials` casa com o prefixo `azure-aks`.
54
+
55
+ **Tabela de prefixos (canônica — manter em sincronia com `lib/azure-categories.js` no repo dev-workflow):**
56
+
57
+ | Categoria | Prefixos |
58
+ |---|---|
59
+ | **All** | (todo diretório sob `$TMP/skills/`) |
60
+ | **Compute** | `azure-aks`, `azure-app-service`, `azure-container-apps`, `azure-container-instances`, `azure-container-registry`, `azure-functions`, `azure-virtual-machines`, `azure-vmware-solution`, `azure-batch`, `azure-spring-apps` |
61
+ | **Data & Storage** | `azure-blob-storage`, `azure-cosmos-db`, `azure-sql`, `azure-database-for-mysql`, `azure-database-for-postgresql`, `azure-cache-redis`, `azure-data-lake`, `azure-files`, `azure-storage`, `azure-table-storage`, `azure-queue-storage`, `azure-managed-disk` |
62
+ | **AI & ML** | `azure-openai`, `azure-ai-foundry`, `azure-ai-vision`, `azure-ai-search`, `azure-ai-services`, `azure-machine-learning`, `azure-anomaly-detector`, `azure-bot-service`, `azure-cognitive` |
63
+ | **Networking** | `azure-application-gateway`, `azure-front-door`, `azure-load-balancer`, `azure-vpn-gateway`, `azure-expressroute`, `azure-bastion`, `azure-dns`, `azure-cdn`, `azure-virtual-network`, `azure-virtual-wan`, `azure-private-link`, `azure-network-watcher`, `azure-firewall`, `azure-traffic-manager` |
64
+ | **Identity & Security** | `azure-active-directory`, `azure-entra`, `azure-key-vault`, `azure-attestation`, `azure-defender`, `azure-sentinel`, `azure-security-center`, `azure-artifact-signing` |
65
+ | **DevOps** | `azure-boards`, `azure-pipelines`, `azure-artifacts`, `azure-repos`, `azure-devops`, `azure-test-plans` |
66
+ | **Observability** | `azure-monitor`, `azure-application-insights`, `azure-log-analytics` |
67
+ | **Integration** | `azure-logic-apps`, `azure-service-bus`, `azure-event-grid`, `azure-event-hubs`, `azure-api-management`, `azure-api-center`, `azure-business-process-tracking` |
68
+ | **Architecture** | `azure-architecture`, `azure-advisor`, `azure-blueprints`, `azure-well-architected`, `azure-policy`, `azure-resource-graph`, `azure-resource-manager` |
69
+
70
+ Um diretório casa uma categoria se seu nome é igual a um dos prefixos OU começa com `<prefixo>-`.
71
+
72
+ Antes de copiar, **limpe** `.agents/skills/azure/` para garantir refresh limpo (re-runs substituem seleções anteriores; intencional).
73
+
74
+ Pule qualquer skill cujo root contenha scripts executáveis (`.sh`, `.py`, `.js`, `.ts`, `.ps1`, `.bat`) — dev-workflow instala apenas skills puramente markdown. Reporte a contagem de pulados.
75
+
76
+ Copie cada diretório casado recursivamente para `.agents/skills/azure/<skill-name>/`. Preserve subdiretórios (`references/`, `assets/`).
77
+
78
+ ### 5. Registrar o Microsoft Learn MCP server
79
+
80
+ Leia `.claude/settings.json` (crie o diretório se faltar). Parseie o JSON. Upsert em `mcpServers`:
81
+
82
+ ```json
83
+ {
84
+ "mcpServers": {
85
+ "microsoft-learn": {
86
+ "type": "http",
87
+ "url": "https://learn.microsoft.com/api/mcp"
88
+ }
89
+ }
90
+ }
91
+ ```
92
+
93
+ Se `mcpServers.microsoft-learn` já existir, deixe intocado — nunca sobrescreva config do usuário. Outras entradas em `mcpServers` (context7, playwright, etc.) DEVEM ser preservadas.
94
+
95
+ ### 6. Escrever `.dw/references/azure-mcp-instructions.md`
96
+
97
+ Crie o arquivo (sobrescreva se presente) com a orientação para o agent — quando chamar qual MCP tool (`microsoft_docs_search`, `microsoft_docs_fetch`, `microsoft_code_sample_search`), como citar fontes per `dw-source-grounding`, e como refrescar ou desinstalar.
98
+
99
+ A versão CLI deste comando (`npx @brunosps00/dev-workflow install-azure-skills`) já carrega o texto canônico — se você está rodando como slash command, replique o mesmo conteúdo do constant `AZURE_MCP_INSTRUCTIONS` em `lib/install-azure-skills.js`.
100
+
101
+ ### 7. Cleanup
102
+
103
+ Remova `$TMP`. Sempre — mesmo se passos anteriores falharam.
104
+
105
+ ### 8. Reportar
106
+
107
+ ```
108
+ ## Skills Azure instaladas
109
+
110
+ Categorias: [lista]
111
+ Skills copiadas: N (M puladas com scripts executáveis)
112
+ MCP registrado: microsoft-learn (ou "já presente, deixado inalterado")
113
+ Instruções do agent: .dw/references/azure-mcp-instructions.md
114
+
115
+ ## Próximos passos
116
+
117
+ 1. Reinicie o Claude Code (ou Codex / Copilot / OpenCode) para o MCP carregar.
118
+ 2. Valide com uma pergunta Azure, ex: "Como faço deploy em Azure Container Apps?"
119
+ 3. Para refrescar do upstream, rode /dw-install-azure-skills de novo.
120
+ 4. Para desinstalar: rm -rf .agents/skills/azure/ e remova a entrada "microsoft-learn"
121
+ de .claude/settings.json mcpServers.
122
+ ```
123
+
124
+ ## Comportamento Obrigatório
125
+
126
+ <critical>NUNCA adicione o MCP `microsoft-learn` fora deste comando. É opt-in. `init` e `update` NÃO DEVEM mexer.</critical>
127
+
128
+ <critical>NUNCA copie skills com scripts executáveis. O escopo do dev-workflow é markdown-only. Se uma skill precisa de scripts, o usuário deve instalar direto do repo upstream, não por este comando.</critical>
129
+
130
+ <critical>NUNCA fabrique a URL do upstream ou do MCP. O repo é `https://github.com/MicrosoftDocs/Agent-Skills.git` e o endpoint do MCP é `https://learn.microsoft.com/api/mcp`. São endpoints first-party Microsoft, atribuição CC-BY-4.0 obrigatória.</critical>
131
+
132
+ <critical>NUNCA copie LICENSE/README do upstream para `.agents/skills/azure/` — são da Microsoft e poluem a descoberta de skills do agent. Copie apenas `SKILL.md` + conteúdo auxiliar por skill (references/, assets/).</critical>
133
+
134
+ ## Atribuição
135
+
136
+ Skills vêm de [`MicrosoftDocs/Agent-Skills`](https://github.com/MicrosoftDocs/Agent-Skills) (CC-BY-4.0, da Microsoft). O MCP server está documentado em [Microsoft Learn](https://learn.microsoft.com/en-us/training/support/mcp-get-started). dev-workflow apenas orquestra a instalação — nenhum conteúdo upstream é modificado além de posicionamento.
137
+
138
+ </system_instructions>
@@ -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. **Metadata de refresh.** Escrever `.dw/intel/.last-refresh.json` com `updated_at`, `version`, `mode` (full ou incremental), contagem de arquivos scanned.
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