@brunosps00/dev-workflow 0.8.1 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -27
- package/bin/dev-workflow.js +1 -1
- package/lib/constants.js +6 -8
- package/lib/init.js +6 -0
- package/lib/install-deps.js +0 -5
- package/lib/migrate-gsd.js +164 -0
- package/lib/uninstall.js +2 -2
- package/package.json +1 -1
- package/scaffold/en/commands/dw-analyze-project.md +6 -11
- package/scaffold/en/commands/dw-autopilot.md +10 -17
- package/scaffold/en/commands/dw-brainstorm.md +2 -2
- package/scaffold/en/commands/dw-bugfix.md +1 -0
- package/scaffold/en/commands/dw-code-review.md +7 -5
- package/scaffold/en/commands/dw-commit.md +6 -0
- package/scaffold/en/commands/dw-create-prd.md +5 -4
- package/scaffold/en/commands/dw-create-techspec.md +7 -4
- package/scaffold/en/commands/dw-deep-research.md +6 -0
- package/scaffold/en/commands/dw-deps-audit.md +1 -0
- package/scaffold/en/commands/dw-find-skills.md +4 -4
- package/scaffold/en/commands/dw-fix-qa.md +1 -0
- package/scaffold/en/commands/dw-generate-pr.md +1 -0
- package/scaffold/en/commands/dw-help.md +10 -27
- package/scaffold/en/commands/dw-intel.md +99 -30
- package/scaffold/en/commands/dw-map-codebase.md +125 -0
- package/scaffold/en/commands/dw-new-project.md +1 -1
- package/scaffold/en/commands/dw-redesign-ui.md +5 -9
- package/scaffold/en/commands/dw-refactoring-analysis.md +8 -6
- package/scaffold/en/commands/dw-review-implementation.md +28 -2
- package/scaffold/en/commands/dw-run-plan.md +14 -20
- package/scaffold/en/commands/dw-run-task.md +5 -4
- package/scaffold/en/commands/dw-update.md +3 -1
- package/scaffold/en/templates/idea-onepager.md +2 -2
- package/scaffold/pt-br/commands/dw-analyze-project.md +6 -11
- package/scaffold/pt-br/commands/dw-autopilot.md +10 -17
- package/scaffold/pt-br/commands/dw-brainstorm.md +2 -2
- package/scaffold/pt-br/commands/dw-bugfix.md +1 -0
- package/scaffold/pt-br/commands/dw-code-review.md +7 -5
- package/scaffold/pt-br/commands/dw-commit.md +6 -0
- package/scaffold/pt-br/commands/dw-create-prd.md +5 -4
- package/scaffold/pt-br/commands/dw-create-techspec.md +7 -4
- package/scaffold/pt-br/commands/dw-deep-research.md +6 -0
- package/scaffold/pt-br/commands/dw-deps-audit.md +1 -0
- package/scaffold/pt-br/commands/dw-find-skills.md +4 -4
- package/scaffold/pt-br/commands/dw-fix-qa.md +1 -0
- package/scaffold/pt-br/commands/dw-generate-pr.md +1 -0
- package/scaffold/pt-br/commands/dw-help.md +10 -27
- package/scaffold/pt-br/commands/dw-intel.md +99 -30
- package/scaffold/pt-br/commands/dw-map-codebase.md +125 -0
- package/scaffold/pt-br/commands/dw-new-project.md +1 -1
- package/scaffold/pt-br/commands/dw-redesign-ui.md +5 -9
- package/scaffold/pt-br/commands/dw-refactoring-analysis.md +8 -6
- package/scaffold/pt-br/commands/dw-review-implementation.md +21 -2
- package/scaffold/pt-br/commands/dw-run-plan.md +16 -22
- package/scaffold/pt-br/commands/dw-run-task.md +5 -4
- package/scaffold/pt-br/commands/dw-update.md +3 -1
- package/scaffold/pt-br/templates/idea-onepager.md +2 -2
- package/scaffold/skills/dw-codebase-intel/SKILL.md +102 -0
- package/scaffold/skills/dw-codebase-intel/agents/intel-updater.md +318 -0
- package/scaffold/skills/dw-codebase-intel/references/api-design-discipline.md +138 -0
- package/scaffold/skills/dw-codebase-intel/references/incremental-update.md +79 -0
- package/scaffold/skills/dw-codebase-intel/references/intel-format.md +208 -0
- package/scaffold/skills/dw-codebase-intel/references/query-patterns.md +148 -0
- package/scaffold/skills/dw-debug-protocol/SKILL.md +106 -0
- package/scaffold/skills/dw-debug-protocol/references/error-categorization.md +127 -0
- package/scaffold/skills/dw-debug-protocol/references/non-reproducible-strategy.md +108 -0
- package/scaffold/skills/dw-debug-protocol/references/six-step-triage.md +139 -0
- package/scaffold/skills/dw-debug-protocol/references/stop-the-line.md +52 -0
- package/scaffold/skills/dw-execute-phase/SKILL.md +133 -0
- package/scaffold/skills/dw-execute-phase/agents/executor.md +264 -0
- package/scaffold/skills/dw-execute-phase/agents/plan-checker.md +215 -0
- package/scaffold/skills/dw-execute-phase/references/atomic-commits.md +143 -0
- package/scaffold/skills/dw-execute-phase/references/plan-verification.md +156 -0
- package/scaffold/skills/dw-execute-phase/references/wave-coordination.md +102 -0
- package/scaffold/skills/dw-git-discipline/SKILL.md +120 -0
- package/scaffold/skills/dw-git-discipline/references/atomic-commits-discipline.md +158 -0
- package/scaffold/skills/dw-git-discipline/references/branch-hygiene.md +150 -0
- package/scaffold/skills/dw-git-discipline/references/trunk-based-pattern.md +82 -0
- package/scaffold/skills/dw-memory/SKILL.md +1 -2
- package/scaffold/skills/dw-simplification/SKILL.md +142 -0
- package/scaffold/skills/dw-simplification/references/behavior-preserving.md +148 -0
- package/scaffold/skills/dw-simplification/references/chestertons-fence.md +152 -0
- package/scaffold/skills/dw-simplification/references/complexity-metrics.md +147 -0
- package/scaffold/skills/dw-source-grounding/SKILL.md +128 -0
- package/scaffold/skills/dw-source-grounding/references/citation-protocol.md +108 -0
- package/scaffold/skills/dw-source-grounding/references/freshness-check.md +108 -0
- package/scaffold/skills/dw-source-grounding/references/source-priority.md +146 -0
- package/scaffold/skills/dw-verify/SKILL.md +0 -1
- package/scaffold/skills/vercel-react-best-practices/SKILL.md +4 -0
- package/scaffold/skills/vercel-react-best-practices/references/perf-discipline.md +122 -0
- package/scaffold/skills/webapp-testing/SKILL.md +5 -0
- package/scaffold/skills/webapp-testing/references/security-boundary.md +115 -0
- package/scaffold/skills/webapp-testing/references/three-workflow-patterns.md +144 -0
- package/scaffold/en/commands/dw-quick.md +0 -85
- package/scaffold/en/commands/dw-resume.md +0 -82
- package/scaffold/pt-br/commands/dw-quick.md +0 -85
- package/scaffold/pt-br/commands/dw-resume.md +0 -82
|
@@ -1,17 +1,26 @@
|
|
|
1
1
|
<system_instructions>
|
|
2
|
-
Voce e um assistente de inteligencia do codebase. Este comando
|
|
2
|
+
Voce e um assistente de inteligencia do codebase. Este comando responde perguntas sobre o projeto usando o indice queryable em `.dw/intel/` (construido pelo `/dw-map-codebase`) e as convencoes human-readable em `.dw/rules/` (construidas pelo `/dw-analyze-project`).
|
|
3
3
|
|
|
4
4
|
<critical>Este comando e somente leitura. NAO modifique codigo ou arquivos do projeto.</critical>
|
|
5
|
-
<critical>Sempre cite as fontes
|
|
5
|
+
<critical>Sempre cite as fontes (caminho do arquivo, numero da linha quando aplicavel).</critical>
|
|
6
|
+
<critical>Se o indice esta defasado (>7 dias) ou ausente, suba o aviso para o usuario — NAO caia em fallback silencioso sem sinalizar.</critical>
|
|
6
7
|
|
|
7
8
|
## Quando Usar
|
|
8
|
-
|
|
9
|
+
|
|
10
|
+
- Use para entender como algo funciona no projeto (fluxo de auth, modelo de dados, superficie de rotas)
|
|
9
11
|
- Use para encontrar padroes, convencoes ou decisoes arquiteturais
|
|
10
12
|
- Use para verificar se algo ja existe antes de implementar
|
|
11
|
-
- NAO use para implementar mudancas (use `/dw-
|
|
13
|
+
- NAO use para implementar mudancas (use `/dw-run-task`)
|
|
12
14
|
|
|
13
15
|
## Posicao no Pipeline
|
|
14
|
-
|
|
16
|
+
|
|
17
|
+
**Antecessor:** `/dw-map-codebase` (gera `.dw/intel/`) e/ou `/dw-analyze-project` (gera `.dw/rules/`) | **Sucessor:** qualquer comando `dw-*` que precisa agir sobre o intel
|
|
18
|
+
|
|
19
|
+
## Skills Complementares
|
|
20
|
+
|
|
21
|
+
| Skill | Gatilho |
|
|
22
|
+
|-------|---------|
|
|
23
|
+
| `dw-codebase-intel` | **SEMPRE** quando `.dw/intel/` existir. Leia `references/query-patterns.md` para mapear a query do usuario para o arquivo certo (stack/files/apis/deps/arch). |
|
|
15
24
|
|
|
16
25
|
## Variaveis de Entrada
|
|
17
26
|
|
|
@@ -19,42 +28,102 @@ Voce e um assistente de inteligencia do codebase. Este comando existe para respo
|
|
|
19
28
|
|----------|-----------|---------|
|
|
20
29
|
| `{{QUERY}}` | Pergunta sobre o codebase | "como funciona a autenticacao?" |
|
|
21
30
|
|
|
31
|
+
## Localizacao dos Arquivos
|
|
32
|
+
|
|
33
|
+
- Intel machine-readable (consulta primeira): `.dw/intel/{stack,files,apis,deps}.json` + `.dw/intel/arch.md`
|
|
34
|
+
- Metadados de refresh: `.dw/intel/.last-refresh.json`
|
|
35
|
+
- Rules human-readable (consulta segunda): `.dw/rules/{index,<modulo>,integrations}.md`
|
|
36
|
+
- Grep direto fallback (consulta por ultimo): os arquivos source do projeto
|
|
37
|
+
|
|
22
38
|
## Comportamento Obrigatorio
|
|
23
39
|
|
|
24
|
-
1.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
40
|
+
### 1. Verificacao de indice defasado
|
|
41
|
+
|
|
42
|
+
Antes de responder, leia `.dw/intel/.last-refresh.json` se existir:
|
|
43
|
+
|
|
44
|
+
- Se `updated_at` e mais de 7 dias atras → prefixe a resposta com: `⚠ Indice atualizado em YYYY-MM-DD (X dias atras). Considere rodar /dw-map-codebase para refresh.`
|
|
45
|
+
- Se `.dw/intel/` existe mas `.last-refresh.json` falta → prefixe com: `⚠ Sem metadado de refresh; o indice pode estar defasado.`
|
|
46
|
+
- Se `.dw/intel/` nao existe → diga ao usuario: `Sem .dw/intel/. Caindo para .dw/rules/ + grep. Para respostas mais ricas, rode /dw-map-codebase.`
|
|
47
|
+
|
|
48
|
+
Nao recuse responder — devolva a melhor info disponivel.
|
|
49
|
+
|
|
50
|
+
### 2. Deteccao do shape da query
|
|
51
|
+
|
|
52
|
+
Classifique o `{{QUERY}}` em uma das formas documentadas em `.agents/skills/dw-codebase-intel/references/query-patterns.md`:
|
|
53
|
+
|
|
54
|
+
- **where-is** — primario: `files.json`, secundario: `apis.json`
|
|
55
|
+
- **what-uses** — primario: `deps.json` (libs) ou `files.json` (simbolos)
|
|
56
|
+
- **architecture-of** — primario: `arch.md`, secundario: `stack.json`
|
|
57
|
+
- **stack** — primario: `stack.json`
|
|
58
|
+
- **dep-info** — primario: `deps.json`
|
|
59
|
+
- **api-list** — primario: `apis.json`
|
|
60
|
+
- **find-export** — primario: `files.json` (busca em arrays `exports`)
|
|
61
|
+
- **convention** — primario: `arch.md`, secundario: `.dw/rules/`
|
|
62
|
+
|
|
63
|
+
### 3. Execucao da busca
|
|
64
|
+
|
|
65
|
+
Leia o arquivo primario e busque matches (case-insensitive). Ranqueie:
|
|
31
66
|
|
|
32
|
-
|
|
67
|
+
1. Match exato de simbolo/path
|
|
68
|
+
2. Match substring nas keys
|
|
69
|
+
3. Match substring nas descricoes
|
|
33
70
|
|
|
34
|
-
|
|
71
|
+
Se primario retorna zero matches, caia para secundario, depois grep.
|
|
35
72
|
|
|
36
|
-
|
|
37
|
-
- Delegue para `/gsd-intel "{{QUERY}}"` para consulta indexada
|
|
38
|
-
- O GSD retorna informacoes de: architectural assumptions, decision spaces, behavioral references, UI patterns
|
|
39
|
-
- Enriqueca com dados de `.dw/rules/` quando relevante
|
|
73
|
+
### 4. Cross-reference
|
|
40
74
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
75
|
+
Para respostas mais ricas, cruze o match primario com intel relacionado:
|
|
76
|
+
|
|
77
|
+
- Um arquivo de `files.json` → pesquise suas dependencias em `deps.json`
|
|
78
|
+
- Uma API de `apis.json` → resolva o handler via `apis.json[entry].file`, depois liste os exports daquele arquivo em `files.json`
|
|
79
|
+
- Uma dep de `deps.json` → liste `used_by` e olhe cada entry em `files.json` para contexto
|
|
80
|
+
|
|
81
|
+
### 5. Sintetize e cite
|
|
82
|
+
|
|
83
|
+
Nao despeje JSON. Escreva resposta de 3-8 linhas que:
|
|
84
|
+
|
|
85
|
+
- Aborda a pergunta direto
|
|
86
|
+
- Cita caminhos em backticks
|
|
87
|
+
- Inclui linhas quando conhecidas (leia o arquivo brevemente se preciso)
|
|
88
|
+
- Menciona conceitos relacionados que o usuario pode querer seguir
|
|
45
89
|
|
|
46
90
|
## Formato de Resposta
|
|
47
91
|
|
|
48
|
-
|
|
92
|
+
```markdown
|
|
93
|
+
[⚠ aviso de indice defasado se aplicavel]
|
|
94
|
+
|
|
95
|
+
## Resposta: [topico]
|
|
96
|
+
|
|
97
|
+
[Resposta estruturada, 3-8 linhas, prosa. Cite caminhos inline.]
|
|
98
|
+
|
|
99
|
+
## Fontes
|
|
100
|
+
|
|
101
|
+
- `.dw/intel/files.json` — entries de `<arquivo_a>`, `<arquivo_b>`
|
|
102
|
+
- `.dw/intel/apis.json` — `<endpoint>`
|
|
103
|
+
- `.dw/rules/<modulo>.md` — convencao "<nome>"
|
|
104
|
+
- `<src/path/file.ts>:<linha>` — referencia direta de codigo (so se o arquivo foi aberto)
|
|
105
|
+
|
|
106
|
+
## Comandos Relacionados
|
|
107
|
+
|
|
108
|
+
- `/<dw-cmd>` — [por que util como proximo passo]
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Heuristicas
|
|
112
|
+
|
|
113
|
+
- **Prefira `.dw/intel/` ao grep.** E curado e mais rapido. Grep so quando intel esta ausente ou defasado.
|
|
114
|
+
- **Cite caminhos, nao conteudos.** O usuario pode `Read` se precisar do source.
|
|
115
|
+
- **Nao invente.** Se `.dw/intel/` nao tem a resposta e grep retorna nada, diga. Sugira `/dw-map-codebase` se `.dw/intel/` esta faltando.
|
|
116
|
+
- **Combine intel + rules.** Uma query sobre "como nomeamos arquivos de service?" deve puxar de `arch.md` (intel) E `.dw/rules/<modulo>.md` (convencoes do projeto). Os dois se complementam.
|
|
117
|
+
|
|
118
|
+
## Regras Criticas
|
|
49
119
|
|
|
50
|
-
|
|
120
|
+
- <critical>Somente leitura. NUNCA edite codigo ou arquivos do projeto deste comando.</critical>
|
|
121
|
+
- <critical>Cite caminhos. Toda afirmacao sobre o codebase tem que referenciar um arquivo real.</critical>
|
|
122
|
+
- <critical>Suba avisos de indice defasado de forma visivel — nao enterre no rodape.</critical>
|
|
123
|
+
- NAO inclua secrets/tokens/credenciais em nenhuma resposta (eles nao deveriam estar em `.dw/intel/` em primeiro lugar, mas defesa em profundidade).
|
|
51
124
|
|
|
52
|
-
|
|
53
|
-
- `.planning/intel/[arquivo].md` — [secao relevante]
|
|
54
|
-
- `.dw/rules/[arquivo].md` — [convencao referenciada]
|
|
55
|
-
- `src/[caminho]:[linha]` — [referencia de codigo]
|
|
125
|
+
## Inspirado em
|
|
56
126
|
|
|
57
|
-
|
|
58
|
-
- [Sugestao de comando dw- para agir com base na informacao]
|
|
127
|
+
O mapeamento de query-patterns (where-is / what-uses / architecture-of / etc.) e o schema JSON do intel sao adaptados do projeto [`get-shit-done-cc`](https://github.com/gsd-build/get-shit-done) (licenca MIT). Convencoes de path mudaram de `.planning/intel/` para `.dw/intel/`.
|
|
59
128
|
|
|
60
129
|
</system_instructions>
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
<system_instructions>
|
|
2
|
+
Voce e um orquestrador de inteligencia de codebase. Sua funcao e spawnar o agente `dw-intel-updater` (da skill bundled `dw-codebase-intel`) para ler os arquivos source do projeto e escrever um indice queryable em `.dw/intel/`. Outros comandos do dev-workflow (`/dw-intel`, `/dw-create-prd`, `/dw-create-techspec`, `/dw-code-review`, etc.) leem esse indice em vez de fazer exploracao cara do codebase em cada invocacao.
|
|
3
|
+
|
|
4
|
+
<critical>Este comando escreve so em `.dw/intel/`. Nunca modifica codigo da aplicacao.</critical>
|
|
5
|
+
<critical>Use o agente `dw-intel-updater` — NAO inline a logica de geracao do intel neste comando. O agente possui o contrato do schema.</critical>
|
|
6
|
+
|
|
7
|
+
## Quando Usar
|
|
8
|
+
|
|
9
|
+
- **Primeira analise**: projeto fresco sem `.dw/intel/`. Roda full scan.
|
|
10
|
+
- **Refresh incremental**: depois de uma branch / PR grande aterrissar e arquivos source mudaram. Roda com `--files <paths>` para atualizar so os entries afetados.
|
|
11
|
+
- **Refresh agendado**: a cada 1-4 semanas para manter o indice fresco; a heuristica de defasagem em `/dw-intel` avisa quando >7 dias.
|
|
12
|
+
- **Apos mudancas de dependencia**: `/dw-deps-audit --execute` atualiza lockfiles e pode tocar deps. Re-rode `/dw-map-codebase` depois para refrescar `deps.json`.
|
|
13
|
+
- NAO use para projetos greenfield sem source ainda — `/dw-new-project` ja semeia `.dw/rules/index.md` minimo; nao tem o que mapear.
|
|
14
|
+
|
|
15
|
+
## Posicao no Pipeline
|
|
16
|
+
|
|
17
|
+
**Antecessor:** qualquer projeto com source (rode apos `/dw-new-project` para greenfield, ou como primeiro comando em repo brownfield) | **Sucessor:** `/dw-intel "<query>"` para perguntas ad-hoc, ou `/dw-analyze-project` para enriquecer `.dw/rules/` com convencoes/anti-patterns derivados do intel
|
|
18
|
+
|
|
19
|
+
## Skills Complementares
|
|
20
|
+
|
|
21
|
+
| Skill | Gatilho |
|
|
22
|
+
|-------|---------|
|
|
23
|
+
| `dw-codebase-intel` | **SEMPRE** — fonte do agente `dw-intel-updater` e dos references (`intel-format.md`, `incremental-update.md`, `query-patterns.md`) |
|
|
24
|
+
|
|
25
|
+
## Variaveis de Entrada
|
|
26
|
+
|
|
27
|
+
| Variavel | Descricao | Exemplo |
|
|
28
|
+
|----------|-----------|---------|
|
|
29
|
+
| `{{FOCUS}}` | Opcional. `full` (default sem `--files`), `partial` (quando `--files` setado) | `partial` |
|
|
30
|
+
| `{{FILES}}` | Opcional. Lista space-separated de paths para refrescar (so com `--files`) | `src/auth/index.ts src/routes/auth.ts` |
|
|
31
|
+
| `{{SINCE}}` | Opcional alternativo a `--files`. Git ref para derivar arquivos mudados | `HEAD~5` ou `origin/main` |
|
|
32
|
+
|
|
33
|
+
## Flags
|
|
34
|
+
|
|
35
|
+
| Flag | Comportamento |
|
|
36
|
+
|------|---------------|
|
|
37
|
+
| (default) | Full scan se `.dw/intel/` faltando OU `.last-refresh.json` >30 dias; senao pergunta full/skip |
|
|
38
|
+
| `--full` | Forca full scan independente do estado |
|
|
39
|
+
| `--files <a> <b> ...` | Update parcial so para os paths listados |
|
|
40
|
+
| `--since <gitref>` | Update parcial para arquivos mudados desde `<gitref>` (usa `git diff --name-only <gitref>...HEAD`) |
|
|
41
|
+
|
|
42
|
+
## Localizacao dos Arquivos
|
|
43
|
+
|
|
44
|
+
- Indice de saida: `.dw/intel/{stack,files,apis,deps}.json` + `.dw/intel/arch.md`
|
|
45
|
+
- Metadados de refresh: `.dw/intel/.last-refresh.json`
|
|
46
|
+
- Fonte da skill: `.agents/skills/dw-codebase-intel/{SKILL.md, agents/intel-updater.md, references/*.md}`
|
|
47
|
+
|
|
48
|
+
## Comportamento Obrigatorio
|
|
49
|
+
|
|
50
|
+
### 1. Deteccao de estado
|
|
51
|
+
|
|
52
|
+
- Cheque `.dw/intel/.last-refresh.json` se existir.
|
|
53
|
+
- Compute estado: greenfield (sem source) → aborta com dica; brownfield sem `.dw/intel/` → primeira analise; com `.dw/intel/` existente → decida path de refresh.
|
|
54
|
+
|
|
55
|
+
### 2. Selecao de modo
|
|
56
|
+
|
|
57
|
+
| Condicao | Modo |
|
|
58
|
+
|----------|------|
|
|
59
|
+
| Sem `.dw/intel/` | full |
|
|
60
|
+
| Flag `--full` | full |
|
|
61
|
+
| Flag `--files <list>` | partial com lista explicita |
|
|
62
|
+
| Flag `--since <ref>` | partial com lista derivada de `git diff --name-only <ref>...HEAD` |
|
|
63
|
+
| `.last-refresh.json` >30 dias | prompt usuario: full / partial / skip |
|
|
64
|
+
| Caso contrario | partial desde ultimo refresh, derivado de `git log --name-only --since=<last_refresh_date>` |
|
|
65
|
+
|
|
66
|
+
### 3. Spawnar `dw-intel-updater`
|
|
67
|
+
|
|
68
|
+
Construa o spawn prompt do agente. Campos obrigatorios:
|
|
69
|
+
|
|
70
|
+
- `focus: full` ou `focus: partial --files <paths space-separated>`
|
|
71
|
+
- `project_root: <path absoluto>`
|
|
72
|
+
- Bloco `required_reading:` opcional listando SKILL.md e references (o agente le esses para contexto)
|
|
73
|
+
|
|
74
|
+
Spawne o agente e aguarde conclusao.
|
|
75
|
+
|
|
76
|
+
### 4. Verificar saida
|
|
77
|
+
|
|
78
|
+
Apos o agente retornar:
|
|
79
|
+
|
|
80
|
+
- Verifique `.dw/intel/{stack,files,apis,deps}.json` existem e parseiam como JSON valido.
|
|
81
|
+
- Verifique `.dw/intel/arch.md` existe.
|
|
82
|
+
- Verifique `.dw/intel/.last-refresh.json` foi escrito e os hashes batem com os arquivos recem-escritos.
|
|
83
|
+
- Se algum falhar, reporte a falha com a saida do agente e aborte com status `MAP-FAILED`.
|
|
84
|
+
|
|
85
|
+
### 5. Relatar
|
|
86
|
+
|
|
87
|
+
Imprima resumo tight:
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
## Mapa do Codebase Refrescado
|
|
91
|
+
|
|
92
|
+
Modo: full | partial (<N> arquivos)
|
|
93
|
+
Arquivos escritos:
|
|
94
|
+
- .dw/intel/stack.json (<bytes>) — <N> linguagens, <N> frameworks
|
|
95
|
+
- .dw/intel/files.json (<bytes>) — <N> entries
|
|
96
|
+
- .dw/intel/apis.json (<bytes>) — <N> endpoints
|
|
97
|
+
- .dw/intel/deps.json (<bytes>) — <N> deps (<producao>/<dev>)
|
|
98
|
+
- .dw/intel/arch.md (<linhas>) — <nome do padrao>
|
|
99
|
+
- .dw/intel/.last-refresh.json
|
|
100
|
+
|
|
101
|
+
Proximos passos:
|
|
102
|
+
- Consultar o indice: /dw-intel "<pergunta>"
|
|
103
|
+
- Construir rules legiveis: /dw-analyze-project
|
|
104
|
+
- Auditar deps: /dw-deps-audit --scan-only
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Regras Criticas
|
|
108
|
+
|
|
109
|
+
- <critical>O agente possui o schema. Se schema precisa mudar, atualize o arquivo do agente em `.agents/skills/dw-codebase-intel/` primeiro; este comando so orquestra.</critical>
|
|
110
|
+
- <critical>NUNCA escreva `.dw/intel/` manualmente deste comando — sempre via o agente.</critical>
|
|
111
|
+
- <critical>Escrita atomica: o agente escreve em `.tmp` e renomeia. Se write parcial, o indice anterior fica preservado.</critical>
|
|
112
|
+
- NAO inclua secrets em saida nenhuma. A lista de forbidden-files do agente (`.env*`, `*.key`, `*.pem`, `id_rsa`, etc.) e enforced; se algo vazar, trate como bug CRITICAL.
|
|
113
|
+
|
|
114
|
+
## Tratamento de Erros
|
|
115
|
+
|
|
116
|
+
- Agente falha → print stdout/stderr, marca `.dw/intel/` como last-known-good (preservado por atomic write), exit nao-zero.
|
|
117
|
+
- Sem source no escopo → aborta: `"Sem arquivos source detectados (TS/JS/Python/C#/Rust). Rode /dw-new-project primeiro ou cheque o project root."`
|
|
118
|
+
- `git diff --since` falha (nao e git repo, ref ruim) → cai para full scan com aviso.
|
|
119
|
+
- Arquivo source referenciado em `.dw/intel/` ja nao existe → o agente remove o entry no proximo update parcial.
|
|
120
|
+
|
|
121
|
+
## Inspirado em
|
|
122
|
+
|
|
123
|
+
`dw-map-codebase` e dev-workflow-native. O padrao de orquestracao (spawn agente, espera, verifica, relata) e as convencoes de escopo de arquivos sao adaptados de [`get-shit-done-cc`](https://github.com/gsd-build/get-shit-done) (`/gsd-map-codebase` + `gsd-intel-updater`) por gsd-build (MIT). Especificos do dev-workflow: escreve em `.dw/intel/` (nao `.planning/intel/`), usa agente unico (intel-updater) em vez de varios mappers paralelos (a analise human-readable vive separada em `/dw-analyze-project`), e integra com `--since <gitref>` para updates parciais git-aware.
|
|
124
|
+
|
|
125
|
+
</system_instructions>
|
|
@@ -188,7 +188,7 @@ Adapte o `dev:db:migrate` por ORM (Prisma: `pnpm prisma migrate dev`; Alembic: `
|
|
|
188
188
|
|
|
189
189
|
Por stack, anexe ao que `create-*` gerou:
|
|
190
190
|
- `.gitignore` deve excluir `.env`.
|
|
191
|
-
-
|
|
191
|
+
- O diretorio `.dw/` e preservado entre updates pelo `/dw-update` (rules, spec, intel sao dados do usuario).
|
|
192
192
|
- `.dockerignore`: exclua `.git`, `node_modules`, `.dw`, `.agents`, `tests`, `*.md` (em imagens prod).
|
|
193
193
|
|
|
194
194
|
#### 3.7 Gerar GitHub Actions CI
|
|
@@ -64,17 +64,13 @@ Utilize ferramentas de diagnóstico conforme o framework do projeto:
|
|
|
64
64
|
7. **VALIDAR**: capture estado depois em AMBAS as resoluções (mobile e desktop), compare antes/depois, verifique acessibilidade (WCAG 2.2 via `ui-ux-pro-max`), rode react-doctor `--diff` se React. Se `webapp-testing` disponível, capture screenshots em viewport 375px (mobile) e 1440px (desktop).
|
|
65
65
|
8. **PERSISTIR CONTRATO**: se o usuário aprovou uma direção, gere `design-contract.md` no diretório do PRD (`.dw/spec/prd-[nome]/design-contract.md`) com: direção aprovada, paleta de cores, par tipográfico, regras de layout, regras de acessibilidade e regras de componentes. Este contrato será lido por `dw-run-task` e `dw-run-plan` para garantir consistência visual.
|
|
66
66
|
|
|
67
|
-
##
|
|
67
|
+
## Inteligência do Codebase
|
|
68
68
|
|
|
69
|
-
<critical>
|
|
69
|
+
<critical>Se `.dw/intel/` existir, a consulta via `/dw-intel` é OBRIGATÓRIA na fase de auditoria para identificar UI patterns existentes.</critical>
|
|
70
70
|
|
|
71
|
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
|
|
75
|
-
Se o GSD NÃO estiver instalado:
|
|
76
|
-
- O design contract funciona normalmente (file-based em `.dw/spec/`)
|
|
77
|
-
- Auditoria usa apenas `.dw/rules/` para contexto
|
|
71
|
+
- Fase de auditoria: execute internamente `/dw-intel "componentes UI, padrões de design, convenções de layout"` antes de propor direções de redesign
|
|
72
|
+
- O design contract (`.dw/spec/prd-[nome]/design-contract.md`) é a fonte única de verdade para consistência visual — lido por `/dw-run-task` e `/dw-run-plan` e persiste cross-sessão naturalmente (sem registro separado)
|
|
73
|
+
- Se `.dw/intel/` NÃO existir, caia para `.dw/rules/` e grep direto sobre `apps/web/src/` (ou frontend root equivalente)
|
|
78
74
|
|
|
79
75
|
## Formato de Resposta Preferido
|
|
80
76
|
|
|
@@ -21,8 +21,9 @@ Pré-requisito: Execute `/dw-analyze-project` primeiro para entender padrões e
|
|
|
21
21
|
Quando disponíveis no projeto em `./.agents/skills/`, use como suporte analítico sem substituir este comando:
|
|
22
22
|
|
|
23
23
|
- `dw-review-rigor`: **SEMPRE** — ao catalogar code smells, aplicar de-duplication (mesmo smell em N arquivos = 1 entrada com affected list), severity ordering nos P0-P3, signal-over-volume (máx ~20 findings; manter críticos, podar marginais). Smell com ADR justificatório baixa para `low` no máximo.
|
|
24
|
+
- `dw-simplification`: **SEMPRE** — todo smell flagueado passa pelo filtro Chesterton's Fence (o que o construto FAZ, por que foi adicionado, o que quebra se removido). Smells sem resposta clara para "por que isso está aqui" caem para `info` com nota de investigação, em vez de virarem proposta de refactor. Métricas de complexidade fundamentam severidade (complexidade cognitiva ≥16 ou nesting depth ≥4 = candidato `high`; <10 = `low` no máximo).
|
|
24
25
|
- `security-review`: delegue preocupações de segurança para este skill — não duplique
|
|
25
|
-
- `vercel-react-best-practices`: delegue padrões de performance React/Next.js para este skill
|
|
26
|
+
- `vercel-react-best-practices`: delegue padrões de performance React/Next.js para este skill — ao sinalizar smells de perf, siga `references/perf-discipline.md` (measure → identify → fix → verify → guard) e cite a métrica + ferramenta, não vibes
|
|
26
27
|
|
|
27
28
|
## Ferramentas de Análise
|
|
28
29
|
|
|
@@ -31,13 +32,14 @@ Para projetos Angular, use `ng lint` como complemento analítico.
|
|
|
31
32
|
|
|
32
33
|
## Inteligência do Codebase
|
|
33
34
|
|
|
34
|
-
<critical>Se `.
|
|
35
|
-
- Execute internamente: `/
|
|
36
|
-
- Contextualize findings com decisões já documentadas
|
|
35
|
+
<critical>Se `.dw/intel/` existir, a consulta via `/dw-intel` é OBRIGATÓRIA antes de sinalizar oportunidades de refactoring. NÃO pule este passo.</critical>
|
|
36
|
+
- Execute internamente: `/dw-intel "tech debt e decisões técnicas conhecidas"`
|
|
37
|
+
- Contextualize findings com decisões já documentadas em `.dw/rules/`
|
|
37
38
|
- Evite sinalizar como smell algo que é uma decisão intencional registrada
|
|
38
39
|
|
|
39
|
-
Se `.
|
|
40
|
-
- Use `.dw/rules/` como contexto
|
|
40
|
+
Se `.dw/intel/` NÃO existir:
|
|
41
|
+
- Use `.dw/rules/` como contexto, caindo para grep
|
|
42
|
+
- Sugira rodar `/dw-map-codebase` para enriquecer contexto downstream
|
|
41
43
|
|
|
42
44
|
## Variáveis de Entrada
|
|
43
45
|
|
|
@@ -313,6 +313,25 @@
|
|
|
313
313
|
|
|
314
314
|
<critical>NÃO APROVE requisitos sem evidência concreta no código</critical>
|
|
315
315
|
<critical>ANALISE o código real, não confie apenas nos checkboxes do tasks.md</critical>
|
|
316
|
-
<critical>Se 100% dos requisitos foram implementados e NÃO há gaps: NÃO entre em plan mode, NÃO crie tasks.
|
|
317
|
-
<critical>Se gaps forem encontrados, entre no loop de fix-review automaticamente. NÃO aguarde instruções do usuário para corrigir gaps. Máximo de 3 ciclos antes de marcar como BLOCKED.</critical>
|
|
316
|
+
<critical>Se 100% dos requisitos foram implementados e NÃO há gaps: NÃO entre em plan mode, NÃO crie tasks. Apresente o relatório Level 2 e siga para Level 3 (próxima seção).</critical>
|
|
317
|
+
<critical>Se gaps forem encontrados, entre no loop de fix-review automaticamente. NÃO aguarde instruções do usuário para corrigir gaps. Máximo de 3 ciclos antes de marcar como BLOCKED. Level 3 só roda após o loop chegar em APPROVED no Level 2.</critical>
|
|
318
|
+
|
|
319
|
+
## Level 3 — Camada de Qualidade (auto-invocada no fim)
|
|
320
|
+
|
|
321
|
+
Após Level 2 (cobertura do PRD) chegar em APPROVED, **invoque automaticamente `/dw-code-review`** para adicionar a camada formal de qualidade (best practices, SOLID, DRY, complexity, security, convenções). Resolve a expectativa do usuário de que um review único cubra tanto "entregamos tudo?" (Level 2) quanto "o que entregamos está bem feito?" (Level 3).
|
|
322
|
+
|
|
323
|
+
Pipeline:
|
|
324
|
+
|
|
325
|
+
1. Após Level 2 APPROVED, rode `/dw-code-review {{PRD_PATH}}` com o mesmo escopo de PRD.
|
|
326
|
+
2. Aguarde `/dw-code-review` produzir veredito (APPROVED / APPROVED WITH CAVEATS / REJECTED).
|
|
327
|
+
3. Escreva resumo consolidado em `{{PRD_PATH}}/QA/review-consolidated.md` referenciando ambos.
|
|
328
|
+
4. Status final combina os dois vereditos:
|
|
329
|
+
- Level 2 APPROVED + Level 3 APPROVED → consolidado APPROVED
|
|
330
|
+
- Level 2 APPROVED + Level 3 APPROVED WITH CAVEATS → consolidado APPROVED WITH CAVEATS
|
|
331
|
+
- Level 2 APPROVED + Level 3 REJECTED → consolidado REJECTED (Level 3 vence)
|
|
332
|
+
|
|
333
|
+
### Flag para pular Level 3
|
|
334
|
+
|
|
335
|
+
`/dw-review-implementation --no-code-review` pula Level 3 e emite só Level 2.
|
|
336
|
+
|
|
318
337
|
</system_instructions>
|
|
@@ -152,36 +152,30 @@ Se uma tarefa FALHAR durante a execução:
|
|
|
152
152
|
4. Aguardar intervenção manual do usuário
|
|
153
153
|
5. **NÃO** continuar automaticamente para próxima task
|
|
154
154
|
|
|
155
|
-
##
|
|
155
|
+
## Verificação de Plano + Execução Paralela
|
|
156
156
|
|
|
157
|
-
<critical>
|
|
157
|
+
<critical>Verificação de plano e execução paralela em waves são OBRIGATÓRIAS, não opcionais. Ambas são agora nativas no dev-workflow via skill bundled `dw-execute-phase`.</critical>
|
|
158
158
|
|
|
159
159
|
### Verificação de Plano (Pré-Execução)
|
|
160
160
|
|
|
161
|
-
|
|
162
|
-
-
|
|
163
|
-
-
|
|
164
|
-
- Se
|
|
165
|
-
- Se
|
|
166
|
-
|
|
167
|
-
Se o GSD NÃO estiver instalado:
|
|
168
|
-
- Pule a verificação e execute diretamente (comportamento atual)
|
|
161
|
+
Antes de iniciar execução, spawne o **agente plan-checker** de `.agents/skills/dw-execute-phase/agents/plan-checker.md`:
|
|
162
|
+
- O agente plan-checker verifica as 6 dimensões (cobertura de requisitos, completude da task, soundness de dependência, wiring de artefatos, budget de contexto, compliance de constraints)
|
|
163
|
+
- Se REVISE: apresente os issues e sugira correções. Máximo 3 ciclos via `/dw-create-tasks --revise`
|
|
164
|
+
- Se BLOCK: suba o conflito para o usuário, NÃO auto-replan
|
|
165
|
+
- Se PASS: prossiga para execução
|
|
169
166
|
|
|
170
167
|
### Execução Paralela (Wave-Based)
|
|
171
168
|
|
|
172
|
-
|
|
173
|
-
-
|
|
174
|
-
-
|
|
175
|
-
- Wave 1: tasks sem dependências (
|
|
176
|
-
- Wave 2: tasks que dependem
|
|
169
|
+
Após PASS do plan-checker, spawne o **agente executor** de `.agents/skills/dw-execute-phase/agents/executor.md`:
|
|
170
|
+
- O agente executor analisa o campo `Depends on:` de cada task para montar o grafo de dependências
|
|
171
|
+
- Agrupa tasks em waves:
|
|
172
|
+
- Wave 1: tasks sem dependências (rodam em paralelo)
|
|
173
|
+
- Wave 2: tasks que dependem das tasks da Wave 1
|
|
177
174
|
- Wave N: assim por diante
|
|
178
|
-
-
|
|
179
|
-
-
|
|
180
|
-
-
|
|
181
|
-
-
|
|
182
|
-
|
|
183
|
-
Se o GSD NÃO estiver instalado:
|
|
184
|
-
- Execute sequencialmente como hoje (comportamento atual)
|
|
175
|
+
- Cada wave dispatcha subagentes em paralelo (um por task)
|
|
176
|
+
- Resultados mergeados após a wave completar
|
|
177
|
+
- Se qualquer task em uma wave falha permanentemente (deviation Rule 3): pausa a wave, reporta, aguarda decisão do usuário
|
|
178
|
+
- O executor commita atomicamente por task e escreve `SUMMARY.md` após a wave final
|
|
185
179
|
|
|
186
180
|
### Design Contracts
|
|
187
181
|
|
|
@@ -25,15 +25,16 @@ Quando disponíveis no projeto em `./.agents/skills/`, use estas skills como sup
|
|
|
25
25
|
|
|
26
26
|
## Inteligência do Codebase
|
|
27
27
|
|
|
28
|
-
<critical>Se `.
|
|
29
|
-
- Execute internamente: `/
|
|
28
|
+
<critical>Se `.dw/intel/` existir, a consulta via `/dw-intel` é OBRIGATÓRIA antes de codar. NÃO pule este passo.</critical>
|
|
29
|
+
- Execute internamente: `/dw-intel "padrões de implementação em [área alvo da task]"`
|
|
30
30
|
- Siga convenções encontradas para estrutura de arquivos, nomenclatura e tratamento de erros
|
|
31
31
|
|
|
32
32
|
Se `design-contract.md` existir no diretório do PRD:
|
|
33
33
|
- Leia o contrato e garanta que toda implementação frontend siga as regras de design aprovadas
|
|
34
34
|
|
|
35
|
-
Se `.
|
|
36
|
-
- Use `.dw/rules/` como contexto
|
|
35
|
+
Se `.dw/intel/` NÃO existir:
|
|
36
|
+
- Use `.dw/rules/` como contexto, caindo para grep direto se necessário
|
|
37
|
+
- Sugira rodar `/dw-map-codebase` após a task para enriquecer contexto downstream
|
|
37
38
|
|
|
38
39
|
## Localização dos Arquivos
|
|
39
40
|
|
|
@@ -79,7 +79,9 @@ npx -y @brunosps00/dev-workflow@latest update --lang=$DETECTED_LANG
|
|
|
79
79
|
O comando `update` sobrescreve arquivos gerenciados e PRESERVA:
|
|
80
80
|
- `.dw/rules/` (rules do usuário)
|
|
81
81
|
- `.dw/spec/` (PRDs e tasks em andamento)
|
|
82
|
-
- `.
|
|
82
|
+
- `.dw/intel/` (índice de codebase do `/dw-map-codebase`)
|
|
83
|
+
|
|
84
|
+
O comando `update` também roda o passo de migração GSD automaticamente — se o projeto tem `.planning/` legado (de uso prévio do GSD), o conteúdo é migrado para `.dw/intel/`, `.dw/spec/active-session.md`, `.dw/spec/quick/`, etc., e `.planning/` é renomeado para `.planning.gsd-archive-<DATA>/` para inspeção. Os arquivos `.claude/commands/gsd/`, `.claude/agents/gsd-*.md`, `.claude/hooks/gsd-*.js` e `.claude/gsd-file-manifest.json` são removidos durante a migração.
|
|
83
85
|
|
|
84
86
|
Se o update falhar (erro de rede, permissão, pacote indisponível): reporte o erro ao usuário e PARE. NÃO tente workarounds manuais como copiar arquivos.
|
|
85
87
|
|
|
@@ -22,7 +22,7 @@ Foque no problema, não na solução. Evite entrar em "como implementar".]
|
|
|
22
22
|
Fontes:
|
|
23
23
|
- PRDs em `.dw/spec/prd-*/prd.md` (features já entregues ou em desenvolvimento)
|
|
24
24
|
- `.dw/rules/index.md` (overview do produto)
|
|
25
|
-
- `.
|
|
25
|
+
- `.dw/intel/` (indice queryable — construido por `/dw-map-codebase`, consultado via `/dw-intel`)
|
|
26
26
|
|
|
27
27
|
Formato:]
|
|
28
28
|
|
|
@@ -86,5 +86,5 @@ Idealmente 2-4 stories. Se são mais de 5, provavelmente não é MVP.]
|
|
|
86
86
|
Escolha UM:
|
|
87
87
|
|
|
88
88
|
- **`/dw-create-prd`** com este one-pager como input — quando a direção está clara mas precisamos detalhar user stories, acceptance criteria e passar ao techspec
|
|
89
|
-
- **`/dw-
|
|
89
|
+
- **`/dw-run-task`** — quando é um IMPROVES tão pequeno que cabe em task única (até 3 arquivos, sem novo endpoint/tela) — escreva um PRD curto antes
|
|
90
90
|
- **Parar aqui** — se alguma "Open Question" é bloqueante, parar e resolver com stakeholder antes de avançar
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dw-codebase-intel
|
|
3
|
+
description: Codebase intelligence for dev-workflow. The intel-updater agent maintains a queryable index in .dw/intel/ (stack.json, files.json, apis.json, deps.json, arch.md) that other commands read instead of doing expensive codebase exploration. Used by /dw-intel and /dw-map-codebase. Adapted from get-shit-done-cc (MIT).
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Write
|
|
7
|
+
- Bash
|
|
8
|
+
- Glob
|
|
9
|
+
- Grep
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# dw-codebase-intel
|
|
13
|
+
|
|
14
|
+
Bundled skill that gives dev-workflow native **codebase intelligence** — a queryable knowledge base of the project's stack, file graph, API surface, dependencies, and architecture. Other commands (`/dw-create-prd`, `/dw-create-techspec`, `/dw-code-review`, `/dw-refactoring-analysis`, `/dw-brainstorm`, etc.) read from this index instead of re-exploring the codebase on every invocation.
|
|
15
|
+
|
|
16
|
+
## Why a skill (not inline)
|
|
17
|
+
|
|
18
|
+
- Each agent is independently maintainable and reusable.
|
|
19
|
+
- The format of `.dw/intel/` is a contract that downstream commands depend on; codifying it in references makes drift visible.
|
|
20
|
+
- Other commands invoke these agents through the skill, not by duplicating the logic.
|
|
21
|
+
|
|
22
|
+
## When to Use
|
|
23
|
+
|
|
24
|
+
Read this skill when:
|
|
25
|
+
|
|
26
|
+
- `/dw-map-codebase` is invoked (full or partial codebase analysis).
|
|
27
|
+
- `/dw-intel "<query>"` is invoked (query existing intel).
|
|
28
|
+
- `/dw-analyze-project` runs after first commit and wants to enrich `.dw/rules/` with structural facts from `.dw/intel/`.
|
|
29
|
+
- Any other `dw-*` command wants to look up "where is X used", "what frameworks are in this stack", "what's the architecture pattern" without re-scanning files.
|
|
30
|
+
|
|
31
|
+
Do NOT use when:
|
|
32
|
+
|
|
33
|
+
- The user is asking a runtime question (use logs / running app).
|
|
34
|
+
- The intel is fresh (`.dw/intel/.last-refresh.json` is current and the user did not ask for a refresh).
|
|
35
|
+
- The project is greenfield with no source files yet — in that case, fall back to `.dw/rules/` seeded by `/dw-new-project`.
|
|
36
|
+
|
|
37
|
+
## Files in `.dw/intel/`
|
|
38
|
+
|
|
39
|
+
The intel directory is the contract. Every file is machine-parseable and references real file paths.
|
|
40
|
+
|
|
41
|
+
| File | Purpose | Format |
|
|
42
|
+
|------|---------|--------|
|
|
43
|
+
| `stack.json` | Languages, frameworks, build/test tooling, package manager | JSON |
|
|
44
|
+
| `files.json` | File graph: per-file imports/exports/type | JSON |
|
|
45
|
+
| `apis.json` | API surface: routes, methods, params, source file | JSON |
|
|
46
|
+
| `deps.json` | Dependencies: version, type, used_by, invocation | JSON |
|
|
47
|
+
| `arch.md` | Human-readable architecture overview + key components + data flow | Markdown |
|
|
48
|
+
| `.last-refresh.json` | Timestamps + content hashes for incremental detection | JSON |
|
|
49
|
+
|
|
50
|
+
Schemas are documented in `references/intel-format.md`.
|
|
51
|
+
|
|
52
|
+
## Agents
|
|
53
|
+
|
|
54
|
+
| Agent | Responsibility | Spawn from |
|
|
55
|
+
|-------|----------------|------------|
|
|
56
|
+
| `agents/intel-updater.md` | Reads source files, writes structured intel to `.dw/intel/`. Supports `full` or `partial --files <paths>` updates. | `/dw-map-codebase` |
|
|
57
|
+
|
|
58
|
+
This skill ships ONE agent — `intel-updater` — which produces machine-readable JSON for `/dw-intel` queries. Human-readable architecture analysis (per-module conventions, anti-patterns, code smells) lives in `.dw/rules/` and is generated by `/dw-analyze-project`. The two are complementary: `.dw/intel/` answers "what's in this codebase right now?" and `.dw/rules/` answers "how should we write code here?".
|
|
59
|
+
|
|
60
|
+
## How to Compose (the typical flow)
|
|
61
|
+
|
|
62
|
+
1. **`/dw-map-codebase`** is invoked.
|
|
63
|
+
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 5 intel files.
|
|
65
|
+
4. The agent writes `.last-refresh.json` with timestamps + hashes for incremental change detection on the next run.
|
|
66
|
+
5. `/dw-map-codebase` reports completion and invites the user to query via `/dw-intel "<question>"`.
|
|
67
|
+
|
|
68
|
+
For human-readable analysis (architecture overview, module conventions, anti-patterns), run `/dw-analyze-project` after `/dw-map-codebase` — it reads `.dw/intel/` as input and produces `.dw/rules/`.
|
|
69
|
+
|
|
70
|
+
## How `/dw-intel` Reads This
|
|
71
|
+
|
|
72
|
+
`/dw-intel "auth flow"` does:
|
|
73
|
+
|
|
74
|
+
1. Check `.dw/intel/.last-refresh.json` — is the index fresh (within last 7 days)? If stale, suggest re-running `/dw-map-codebase`.
|
|
75
|
+
2. Search `apis.json` for matching paths/descriptions.
|
|
76
|
+
3. Search `files.json` for matching exports.
|
|
77
|
+
4. Search `arch.md` (full-text) for the keyword.
|
|
78
|
+
5. Cross-reference with `deps.json` if the query is about a library.
|
|
79
|
+
6. Return a structured answer with file paths cited.
|
|
80
|
+
|
|
81
|
+
If no `.dw/intel/` exists at all, `/dw-intel` falls back to `.dw/rules/` (seeded by `/dw-new-project` or `/dw-analyze-project`) and direct grep over the codebase.
|
|
82
|
+
|
|
83
|
+
## Rules
|
|
84
|
+
|
|
85
|
+
- **Always cite file paths.** Every claim in intel must reference an actual file location.
|
|
86
|
+
- **Current state only.** No temporal language ("recently added", "will change"). The index reflects what's there NOW.
|
|
87
|
+
- **Evidence-based.** Read actual files. Never guess from filenames or directory structures.
|
|
88
|
+
- **Cross-platform**: use Glob/Read/Grep; never Bash `ls`/`find`/`cat` (those break on Windows).
|
|
89
|
+
- **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
|
+
- **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.
|
|
92
|
+
|
|
93
|
+
## References
|
|
94
|
+
|
|
95
|
+
- `references/intel-format.md` — schema for each `.dw/intel/` file with examples.
|
|
96
|
+
- `references/incremental-update.md` — how partial updates work (which files to re-read, how to merge with existing entries).
|
|
97
|
+
- `references/query-patterns.md` — how `/dw-intel` answers different question shapes (where-is, what-uses, architecture-of, dependency-of).
|
|
98
|
+
- `references/api-design-discipline.md` — Hyrum's Law, contract-first design, error semantics, boundary validation, versioning. Use when intel feeds techspec authoring (`/dw-create-techspec`) for endpoints — design must respect existing project conventions surfaced in `apis.json`. Adapted from [`addyosmani/agent-skills/api-design`](https://github.com/addyosmani/agent-skills/tree/main/api-design) (MIT).
|
|
99
|
+
|
|
100
|
+
## Inspired by
|
|
101
|
+
|
|
102
|
+
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/`.
|