@brunosps00/dev-workflow 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -9
- package/lib/constants.js +10 -6
- package/lib/init.js +28 -0
- package/package.json +1 -1
- package/scaffold/en/agent-instructions.md +28 -3
- package/scaffold/en/commands/dw-analyze-project.md +64 -0
- package/scaffold/en/commands/dw-autopilot.md +64 -5
- package/scaffold/en/commands/dw-brainstorm.md +166 -23
- package/scaffold/en/commands/dw-bugfix.md +124 -26
- package/scaffold/en/commands/dw-intel.md +30 -3
- package/scaffold/en/commands/dw-pause.md +92 -0
- package/scaffold/en/commands/dw-qa.md +87 -11
- package/scaffold/en/commands/dw-resume.md +90 -0
- package/scaffold/en/commands/dw-review.md +22 -12
- package/scaffold/en/templates/bugfix-summary-template.md +66 -0
- package/scaffold/en/templates/concerns-template.md +59 -0
- package/scaffold/en/templates/state-template.md +59 -0
- package/scaffold/pt-br/agent-instructions.md +28 -3
- package/scaffold/pt-br/commands/dw-analyze-project.md +64 -0
- package/scaffold/pt-br/commands/dw-autopilot.md +64 -5
- package/scaffold/pt-br/commands/dw-brainstorm.md +166 -23
- package/scaffold/pt-br/commands/dw-bugfix.md +134 -18
- package/scaffold/pt-br/commands/dw-intel.md +30 -3
- package/scaffold/pt-br/commands/dw-pause.md +92 -0
- package/scaffold/pt-br/commands/dw-qa.md +87 -11
- package/scaffold/pt-br/commands/dw-resume.md +90 -0
- package/scaffold/pt-br/commands/dw-review.md +22 -12
- package/scaffold/pt-br/templates/bugfix-summary-template.md +66 -0
- package/scaffold/pt-br/templates/concerns-template.md +59 -0
- package/scaffold/pt-br/templates/state-template.md +59 -0
- package/scaffold/skills/dw-codebase-intel/SKILL.md +9 -5
- package/scaffold/skills/dw-codebase-intel/references/query-patterns.md +52 -0
- package/scaffold/skills/dw-memory/SKILL.md +26 -1
- package/scaffold/skills/dw-memory/references/context-budget.md +63 -0
- package/scaffold/skills/dw-simplification/SKILL.md +10 -5
- package/scaffold/skills/dw-simplification/references/deep-modules.md +105 -0
|
@@ -706,6 +706,67 @@ Três opções:
|
|
|
706
706
|
- Nunca escrever `.dw/constitution.md` sem aprovação explícita (opção A) ou escolha explícita (opções B/C).
|
|
707
707
|
- Constitution é commitada ao repositório como qualquer outro artefato do projeto — nunca gitignored.
|
|
708
708
|
|
|
709
|
+
### Step 9: Geração do Mapa de Concerns (Risk Map)
|
|
710
|
+
|
|
711
|
+
Depois do passo de constitution, gerar `.dw/rules/concerns.md` — o **mapa de riscos** do projeto. Enquanto `.dw/rules/` descreve como o código É e `.dw/constitution.md` descreve o que ele DEVE SER, o mapa de concerns responde uma terceira pergunta: **onde é perigoso mexer?**
|
|
712
|
+
|
|
713
|
+
**Diferença dos outros dois:**
|
|
714
|
+
- `.dw/rules/*.md` — analítico (padrões observados).
|
|
715
|
+
- `.dw/constitution.md` — declarativo (princípios comprometidos).
|
|
716
|
+
- `.dw/rules/concerns.md` — risco operacional (fragilidade load-bearing, hot spots, código hostil).
|
|
717
|
+
|
|
718
|
+
**Comportamento:**
|
|
719
|
+
|
|
720
|
+
Se `.dw/rules/concerns.md` já existir com entradas escritas a mão entre `<!-- preserved:start -->` e `<!-- preserved:end -->`, preserve essas entradas. Atualize as seções auto-geradas (dados de churn de Hot Spots, Histórico de Bugs Conhecidos a partir de `.dw/bugfixes/`).
|
|
721
|
+
|
|
722
|
+
Caso contrário (primeira execução), construa o arquivo do zero usando `.dw/templates/concerns-template.md` como base.
|
|
723
|
+
|
|
724
|
+
**Dados a coletar:**
|
|
725
|
+
|
|
726
|
+
1. **Hot Spots — análise de churn.** Para cada módulo descoberto no Passo 5, compute a contagem de commits tocando arquivos do módulo nos últimos 90 dias (`git log --since="90 days ago" --name-only -- <module-path> | wc -l`). Módulos no top 20% por churn são candidatos. Cruze com `.dw/bugfixes/` (próximo item) — módulos que também aparecem lá são Hot Spots confirmados; o resto fica como "churn alto — verificar com o time."
|
|
727
|
+
|
|
728
|
+
2. **Histórico de Bugs Conhecidos — agregação de bugfixes.** Se `.dw/bugfixes/` existir, escaneie todo `SUMMARY.md` dentro. Para cada um, parseie a tabela `Arquivos Tocados`; agregue paths de arquivos pelo módulo top-level (ex: `src/auth/session.ts` -> `src/auth/`). Qualquer módulo com `>= 2` fixes históricos entra na seção Histórico de Bugs Conhecidos com contagem e slugs recentes.
|
|
729
|
+
|
|
730
|
+
3. **Integrações Frágeis.** Procure padrões delatores no código e config:
|
|
731
|
+
- Clientes SDK externos com scaffolding de retry/backoff (sugere falhas anteriores).
|
|
732
|
+
- Comentários como `// FIXME: vendor retorna 200 com body vazio às vezes`, `// HACK: workaround para API legada`, `// TODO: tratar edge case do vendor X`.
|
|
733
|
+
- Loops de retry artesanais ao redor de fetch/axios/HTTP clients.
|
|
734
|
+
- Diretório `.dw/incidents/` — todo postmortem de incidente que nomeie um sistema externo entra aqui.
|
|
735
|
+
Liste esses candidatos. Não fabrique — apenas o que você observar.
|
|
736
|
+
|
|
737
|
+
4. **Código Hostil.** Heurísticas para código que precisa de entendimento completo antes de modificar:
|
|
738
|
+
- Regex literais com mais de 80 caracteres sem comentário explicativo.
|
|
739
|
+
- Funções acima de 100 linhas com complexidade ciclomática que resiste à leitura rápida (heurística aproximada: muitos `if`/`switch`/loops aninhados).
|
|
740
|
+
- Código manual de transação/locking fora da camada idiomática de um ORM.
|
|
741
|
+
- Serializadores/parsers custom (ex: JSON, CSV, formatos binários escritos a mão) sem arquivo de teste correspondente.
|
|
742
|
+
Sinalize candidatos e deixe o usuário confirmar.
|
|
743
|
+
|
|
744
|
+
5. **Tech Debt — Reconhecida.** Escaneie README, CONTRIBUTING, docs/, e comentários no código por marcadores `TODO`, `FIXME`, `XXX`, `HACK`, `DEPRECATED` com mais de 90 dias (use `git blame` para datar). Agrupe por área. Apresente como candidatos; o usuário decide quais merecem reconhecimento (alguns são comentários velhos, alguns são debt real).
|
|
745
|
+
|
|
746
|
+
**Procedimento:**
|
|
747
|
+
|
|
748
|
+
1. **Mostre os candidatos no chat primeiro** (NÃO escreva o arquivo ainda). Formate como tabela markdown por seção com contagem e a evidência mais forte para cada entrada. Limite cada seção a 10 entradas — se mais, liste "+N mais (peça expansão)" e deixe o usuário pedir.
|
|
749
|
+
|
|
750
|
+
2. Pergunte: "Aprovar como está, descartar entradas específicas (passe os labels das linhas), ou pular esse passo inteiro?" Aguarde resposta explícita.
|
|
751
|
+
|
|
752
|
+
3. Em caso de aprovação, escreva `.dw/rules/concerns.md` usando `.dw/templates/concerns-template.md`. Preencha:
|
|
753
|
+
- Frontmatter `last_refreshed: <data ISO de hoje>`.
|
|
754
|
+
- Tabela de Hot Spots.
|
|
755
|
+
- Tabela de Integrações Frágeis.
|
|
756
|
+
- Tabela de Código Hostil.
|
|
757
|
+
- Tabela de Histórico de Bugs Conhecidos.
|
|
758
|
+
- Tabela de Tech Debt — Reconhecida.
|
|
759
|
+
|
|
760
|
+
4. Se existia um bloco `<!-- preserved:start --> ... <!-- preserved:end -->` numa versão anterior, anexe-o de volta ao final do arquivo (as entradas curadas a mão pelo time).
|
|
761
|
+
|
|
762
|
+
5. Imprima: "Escrito `.dw/rules/concerns.md`. Carregado on-demand por `/dw-plan`, `/dw-run` e `/dw-bugfix` quando o alvo deles tocar uma área listada. Nunca bloqueia — informa, sinaliza e sugere ADR para desvios."
|
|
763
|
+
|
|
764
|
+
**Caso especial — nenhum sinal encontrado:**
|
|
765
|
+
|
|
766
|
+
Se após as heurísticas nada cruzar a barra (codebase pequeno, churn baixo, sem incidents, sem histórico de bugfix), escreva um `concerns.md` mínimo com todas as seções vazias (apenas headers) e uma nota: "Nenhum sinal de risco no momento. Re-execute depois que o projeto acumular mais histórico."
|
|
767
|
+
|
|
768
|
+
**Cadência de refresh:** usuários re-rodam `/dw-analyze-project` quando rules ficam desatualizadas. O Passo 9 atualiza seções auto mantendo entradas preservadas. Não existe comando separado só de refresh.
|
|
769
|
+
|
|
709
770
|
## Checklist de Qualidade
|
|
710
771
|
|
|
711
772
|
- [ ] Estrutura do repositório escaneada
|
|
@@ -734,6 +795,9 @@ Três opções:
|
|
|
734
795
|
- [ ] Exemplos de código reais incluídos
|
|
735
796
|
- [ ] Nenhum secret exposto
|
|
736
797
|
- [ ] Convenções de teste documentadas (framework, padrões, cobertura)
|
|
798
|
+
- [ ] Step 8 (constitution) oferecido e resolvido (A/B/C)
|
|
799
|
+
- [ ] Step 9 (mapa de concerns) apresentou candidatos, aguardou aprovação, escreveu `.dw/rules/concerns.md` (ou anotou que não há sinais)
|
|
800
|
+
- [ ] Blocos com marker preserved em concerns.md mantidos verbatim no refresh
|
|
737
801
|
|
|
738
802
|
## Exemplo de Uso
|
|
739
803
|
|
|
@@ -44,13 +44,22 @@ Uma etapa que invoca um comando `/dw-xxx` SO e considerada completa quando os ar
|
|
|
44
44
|
|
|
45
45
|
| Variavel | Descricao | Exemplo |
|
|
46
46
|
|----------|-----------|---------|
|
|
47
|
-
| `{{WISH}}` | Descricao do que o usuario quer construir | "sistema de notificacoes push com preferencias por canal" |
|
|
47
|
+
| `{{WISH}}` | Descricao do que o usuario quer construir (modo padrao) | "sistema de notificacoes push com preferencias por canal" |
|
|
48
|
+
| `{{PRD_SLUG}}` | Slug do PRD existente para autopilotar a partir dele (quando `--from-prd` e usado) | `prd-bugfix-stripe-webhook-retry` |
|
|
49
|
+
| `{{MODE}}` | Flag opcional de invocacao | `--from-prd <slug>` |
|
|
50
|
+
|
|
51
|
+
## Modos de Invocacao
|
|
52
|
+
|
|
53
|
+
| Invocacao | Comportamento |
|
|
54
|
+
|-----------|---------------|
|
|
55
|
+
| `/dw-autopilot "<wish>"` | **Padrao.** Pipeline completo do zero: Codebase Intelligence → Pesquisa → Brainstorm → PRD → TechSpec → Tasks → Run → QA → Review → Commit → PR. |
|
|
56
|
+
| `/dw-autopilot --from-prd <slug>` | **Modo retomada-a-partir-do-PRD.** Pula Etapas 1–4 (Intel, Pesquisa, Brainstorm, PRD). Comeca no GATE 1 (apresenta o PRD existente para aprovacao), depois segue por TechSpec → Tasks → Run → QA → Review → Commit → PR. Usado quando `/dw-bugfix` escalou via seu safety valve e escreveu um PRD em `.dw/spec/<slug>/`, ou quando o usuario redigiu um PRD a mao antes e quer o resto automatizado. |
|
|
48
57
|
|
|
49
58
|
## Gates de Aprovacao
|
|
50
59
|
|
|
51
60
|
O autopilot para APENAS nestes 3 momentos:
|
|
52
61
|
|
|
53
|
-
1. **GATE 1 — PRD**: Apresenta o PRD gerado e aguarda aprovacao do usuario antes de gerar techspec/tasks
|
|
62
|
+
1. **GATE 1 — PRD**: Apresenta o PRD gerado (modo padrao) ou o PRD existente (modo --from-prd) e aguarda aprovacao do usuario antes de gerar techspec/tasks
|
|
54
63
|
2. **GATE 2 — Tasks**: Apresenta a lista de tasks e aguarda aprovacao antes de iniciar a execucao
|
|
55
64
|
3. **GATE 3 — PR**: Apos commit automatico, pergunta se o usuario quer gerar o Pull Request
|
|
56
65
|
|
|
@@ -66,6 +75,22 @@ Se este comando for re-invocado no mesmo PRD apos interrupcao:
|
|
|
66
75
|
|
|
67
76
|
## Pipeline Completo
|
|
68
77
|
|
|
78
|
+
### Etapa 0: Resolver modo de invocacao (PRIMEIRA acao obrigatoria)
|
|
79
|
+
|
|
80
|
+
Antes da Etapa 1, decida qual modo esta em efeito:
|
|
81
|
+
|
|
82
|
+
1. **Se `--from-prd <slug>` aparece na invocacao:**
|
|
83
|
+
- Resolva `{{PRD_SLUG}}` para `.dw/spec/<slug>/`.
|
|
84
|
+
- Verifique que o diretorio existe e contem `prd.md`. Se algum faltar, PARE e reporte: `Alvo de --from-prd .dw/spec/<slug>/prd.md nao encontrado. Rode /dw-plan prd ou corrija o slug.`
|
|
85
|
+
- Cheque se algum `.dw/bugfixes/*/escalated.md` referencia esse slug. Se sim, anote no bloco de progresso: `Retomando de escalacao de bugfix: <NNN-bugfix-slug> → <slug>`.
|
|
86
|
+
- Defina `mode: "from-prd"` em `autopilot-state.json` e `skipped_steps: [1, 2, 3, 4]` com `skip_reason: "from-prd-mode"`.
|
|
87
|
+
- Pule direto para o **GATE 1** (aprovacao do PRD) usando o `prd.md` existente.
|
|
88
|
+
|
|
89
|
+
2. **Caso contrario (modo padrao):**
|
|
90
|
+
- Defina `mode: "autopilot"` e prossiga para Etapa 1 normalmente.
|
|
91
|
+
|
|
92
|
+
<critical>Em modo `--from-prd`, as Etapas 1–4 DEVEM ser marcadas como `skipped_steps` com `skip_reason: "from-prd-mode"`. A auditoria de pre-commit (Etapa 14) DEVE honrar isso — etapa pulada nao e o mesmo que etapa faltando.</critical>
|
|
93
|
+
|
|
69
94
|
### Etapa 1: Inteligencia do Codebase
|
|
70
95
|
|
|
71
96
|
<critical>Se `.dw/intel/` existir, a consulta via `/dw-intel` e OBRIGATORIA antes de iniciar. Cai para `.dw/rules/` e grep direto se ausente.</critical>
|
|
@@ -104,12 +129,15 @@ Execute `/dw-plan prd` usando os findings do brainstorm.
|
|
|
104
129
|
|
|
105
130
|
### ═══ GATE 1: Aprovacao do PRD ═══
|
|
106
131
|
|
|
132
|
+
**Em modo padrao:** o PRD acabou de ser escrito na Etapa 4.
|
|
133
|
+
**Em modo `--from-prd`:** o PRD ja existia em disco antes deste run de autopilot comecar (tipicamente redigido por `/dw-bugfix --analise` ou por uma escalacao via safety valve, ou editado a mao).
|
|
134
|
+
|
|
107
135
|
Apresente ao usuario:
|
|
108
136
|
- Resumo dos requisitos funcionais
|
|
109
|
-
- Decisoes tomadas automaticamente
|
|
137
|
+
- Decisoes tomadas automaticamente (modo padrao) OU nota de origem: "PRD redigido por escalacao do /dw-bugfix em <data>" / "PRD ja existia em disco" (modo --from-prd)
|
|
110
138
|
- Questoes em aberto (se houver)
|
|
111
139
|
|
|
112
|
-
**Aguarde aprovacao explicita.** Se o usuario pedir mudancas, ajuste e reapresente.
|
|
140
|
+
**Aguarde aprovacao explicita.** Se o usuario pedir mudancas, ajuste e reapresente. Em modo `--from-prd`, edits vao direto para o `.dw/spec/<slug>/prd.md` existente — nao existe rascunho separado.
|
|
113
141
|
|
|
114
142
|
### Etapa 5: TechSpec (Interativo — 7+ Perguntas)
|
|
115
143
|
|
|
@@ -216,6 +244,34 @@ Execute `/dw-review --coverage-only` novamente para confirmar que as correcoes d
|
|
|
216
244
|
Execute `/dw-review --code-only` (Level 3) para review formal.
|
|
217
245
|
- Gere relatorio persistido
|
|
218
246
|
|
|
247
|
+
### Etapa 13.5: Fechar o loop do bugfix (Condicional)
|
|
248
|
+
|
|
249
|
+
<critical>Esta etapa roda apenas quando `mode == "from-prd"` E o `prd_path` casa com `.dw/spec/prd-bugfix-*`. Caso contrário pule com `skip_reason: "nao e escalacao de bugfix"`.</critical>
|
|
250
|
+
|
|
251
|
+
Quando o autopilot está terminando um bugfix que foi escalado por `/dw-bugfix`, a entrada de índice em `.dw/bugfixes/NNN-<slug>/` ainda tem apenas `TASK.md` e `escalated.md` — nenhum `SUMMARY.md` foi escrito porque o fluxo cirúrgico do bugfix nunca chegou ao step 5.5 (o fluxo spec-driven fez o trabalho no lugar). Sem `SUMMARY.md`, o `/dw-intel --build` pula este bugfix para sempre, e queries `bugfix-history` nunca trazem a lição aprendida.
|
|
252
|
+
|
|
253
|
+
Esta etapa fecha esse loop **antes** da Etapa 14 (Commit) para o SUMMARY cair no mesmo commit do fix.
|
|
254
|
+
|
|
255
|
+
**Procedimento:**
|
|
256
|
+
|
|
257
|
+
1. **Encontre a entrada de índice.** Glob em `.dw/bugfixes/*/escalated.md`. Para cada um, leia o conteúdo de uma linha e cheque se referencia o slug do PRD atual (ex: `→ see .dw/spec/prd-bugfix-stripe-webhook-retry/` casa com o PRD ativo `prd-bugfix-stripe-webhook-retry`). O match é o diretório-alvo `NNN-<slug>/`.
|
|
258
|
+
2. **Se nenhum match for encontrado:** o índice de bugfix não espera write-back. Pule silenciosamente e continue para Etapa 14.
|
|
259
|
+
3. **Se `SUMMARY.md` já existir no diretório:** não sobrescreva. Continue para Etapa 14 — humano ou run anterior já fechou o loop.
|
|
260
|
+
4. **Caso contrário, escreva `SUMMARY.md`** usando `.dw/templates/bugfix-summary-template.md`. Origem dos campos:
|
|
261
|
+
- **Sintoma (verbatim):** seção `Sintoma` de `<prd_path>/prd.md`, ou o primeiro parágrafo do `TASK.md` original se o PRD não carregar.
|
|
262
|
+
- **Causa Raiz:** seção Causa Raiz do `TASK.md` original.
|
|
263
|
+
- **Resolução (2–4 bullets):** destilada das decisões em `<prd_path>/techspec.md` + resumo de `git diff <base>...HEAD --stat`.
|
|
264
|
+
- **Arquivos Tocados:** parseado de `git diff <base>...HEAD --name-only` (exclua paths em `.dw/`). Se >5 arquivos, é esperado para bugfix escalado — liste todos e adicione nota "escalado de bugfix por causa do escopo".
|
|
265
|
+
- **Verificação:** aponte para `<prd_path>/QA/qa-report.md` e o relatório verify referenciado na saída de sessão da Etapa 9.
|
|
266
|
+
- **Relacionado — Concerns tocados:** copie das entradas correspondentes em `.dw/rules/concerns.md` se alguma row referenciar módulos em Arquivos Tocados.
|
|
267
|
+
- **Frontmatter:** `slug: NNN-<slug>`, `created: <data ISO de hoje>`, `status: Fixed`, `severity: <inferida da prioridade do PRD ou Medium default>`, `related_concerns: [lista de cima]`.
|
|
268
|
+
5. **Anexe uma linha final** ao `escalated.md`: `Closed by /dw-autopilot --from-prd on <YYYY-MM-DD>; SUMMARY.md written.` Preserve a linha original da escalação acima.
|
|
269
|
+
6. **Registre o artefato** em `autopilot-state.json` `step_artifacts["13.5"] = [".dw/bugfixes/NNN-<slug>/SUMMARY.md", ".dw/bugfixes/NNN-<slug>/escalated.md"]`.
|
|
270
|
+
|
|
271
|
+
<critical>NUNCA fabrique evidência de verificação. Se o QA report estiver vazio ou o diff vazio, não invente arquivos em Arquivos Tocados. Escreva as seções do SUMMARY.md que tenham embasamento e marque o resto como `_(não disponível — veja <prd_path>/QA/ para detalhes)_`.</critical>
|
|
272
|
+
|
|
273
|
+
Após esta etapa, o bugfix se torna visível para `/dw-intel "bugfix history in <module>"` na próxima run de `/dw-intel --build`.
|
|
274
|
+
|
|
219
275
|
### Etapa 14: Commit
|
|
220
276
|
|
|
221
277
|
<critical>AUDITORIA PRE-COMMIT OBRIGATORIA — execute ANTES de invocar `/dw-commit`:
|
|
@@ -230,7 +286,7 @@ Rode `ls` em cada caminho abaixo e confirme existencia. Se QUALQUER um faltar, N
|
|
|
230
286
|
- Evidencia do ultimo `/dw-review --coverage-only` com matriz RF-by-RF (output da sessao ou referencia em `autopilot-state.json`)
|
|
231
287
|
|
|
232
288
|
Verifique tambem `autopilot-state.json`:
|
|
233
|
-
- Toda etapa de 1 a 13 que NAO esta em `skipped_steps` deve estar em `completed_steps`
|
|
289
|
+
- Toda etapa de 1 a 13 (e 13.5 quando em modo `--from-prd` contra um PRD `prd-bugfix-*`) que NAO esta em `skipped_steps` deve estar em `completed_steps`
|
|
234
290
|
- Cada etapa completada deve ter seus artefatos listados em `step_artifacts`
|
|
235
291
|
|
|
236
292
|
Se faltar qualquer artefato ou etapa: PARE imediatamente. Reporte ao usuario: `Etapa N nao produziu artefato X — re-executando /dw-[comando]`. Re-execute o comando. Verifique novamente. Soh entao prossiga para `/dw-commit`.
|
|
@@ -263,9 +319,11 @@ Salve o arquivo `.dw/spec/prd-[nome]/autopilot-state.json` com o seguinte format
|
|
|
263
319
|
"mode": "autopilot",
|
|
264
320
|
"wish": "descricao original do usuario",
|
|
265
321
|
"prd_path": ".dw/spec/prd-[nome]",
|
|
322
|
+
"from_prd_slug": null,
|
|
266
323
|
"current_step": 8,
|
|
267
324
|
"completed_steps": [1, 2, 3, 4, 5, 6, 7],
|
|
268
325
|
"skipped_steps": [2],
|
|
326
|
+
"skip_reasons": {"2": "dominio ja mapeado em .dw/rules/auth.md"},
|
|
269
327
|
"gates_passed": ["prd", "tasks"],
|
|
270
328
|
"step_artifacts": {
|
|
271
329
|
"9": ["review-matrix-shown-in-session"],
|
|
@@ -288,6 +346,7 @@ Salve o arquivo `.dw/spec/prd-[nome]/autopilot-state.json` com o seguinte format
|
|
|
288
346
|
- Uma etapa SO vai para `completed_steps` apos verificar que seus artefatos existem no disco
|
|
289
347
|
- Se a sessao cair, re-invoque `/dw-autopilot` no mesmo PRD; o comando le `autopilot-state.json` e continua da etapa correta, revalidando artefatos antes de confiar em `completed_steps`
|
|
290
348
|
- Ao finalizar o pipeline (apos commit ou PR), remova o arquivo ou marque `"status": "completed"`
|
|
349
|
+
- Em modo `--from-prd`, defina `from_prd_slug: "<slug>"`, `mode: "from-prd"` e inclua as etapas 1–4 em `skipped_steps` com `skip_reason: "from-prd-mode"` — e isso que a auditoria de pre-commit checa (Etapa 14 verifica que toda etapa NAO listada em `skipped_steps` esta em `completed_steps`)
|
|
291
350
|
|
|
292
351
|
<critical>Apos CADA etapa completada, exiba o bloco de progresso atualizado ao usuario. Isso e OBRIGATORIO — o usuario DEVE ver o que foi feito e o que vem a seguir. Se uma etapa foi pulada, o motivo DEVE aparecer no bloco de progresso.</critical>
|
|
293
352
|
|
|
@@ -11,14 +11,34 @@ Você é um facilitador de brainstorming para o workspace atual. Este comando ex
|
|
|
11
11
|
## Posição no Pipeline
|
|
12
12
|
**Antecessor:** (ideia do usuário) | **Sucessor:** `/dw-plan prd`
|
|
13
13
|
|
|
14
|
-
##
|
|
14
|
+
## Como este comando funciona (auto-dispatch, não switchboard de flags)
|
|
15
15
|
|
|
16
|
-
- **
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
`/dw-brainstorm` roda **FULL** por padrão. Abre com uma fase de **Signal Reading** que inspeciona o pedido do usuário, o estado do projeto (PRDs, rules, intel, commits recentes) e a conversa até agora, e então **dispara um ou mais modos internos**. O usuário não escolhe o modo — o comando escolhe.
|
|
17
|
+
|
|
18
|
+
Modos internos (o dispatcher seleciona 1+):
|
|
19
|
+
|
|
20
|
+
| Modo | Dispara automaticamente quando |
|
|
21
|
+
|------|--------------------------------|
|
|
22
|
+
| **option-matrix** (default sempre ativo) | Surface padrão: 3-7 opções (conservadora / equilibrada / ousada) com tags `[IMPROVES] / [CONSOLIDATES] / [NEW]`. Sempre roda salvo override explícito. |
|
|
23
|
+
| **grill** | Vocabulário está instável — termos do usuário divergem de `.dw/rules/` / `.dw/constitution.md`, ou dois sinônimos competem na mesma conversa, ou alguém propõe um nome que conflita com o glossário. |
|
|
24
|
+
| **prototype** | Usuário pergunta "esse modelo de estado faz sentido?" / "como isso deveria parecer?" sem resposta clara; ou o próximo passo razoável é RODAR código, não escrever palavras. |
|
|
25
|
+
| **council** | Duas ou mais abordagens competem sem vencedor óbvio; ou o consenso se forma rápido demais (sinal de false-consensus). |
|
|
26
|
+
| **research** | A pergunta depende de state-of-the-art externo ("qual é a best practice atual para X", comparações multi-fonte, landscape regulatório ou de framework). |
|
|
27
|
+
| **refactor-audit** | Usuário aponta um diretório ou descreve uma área como "bagunçada", "precisa de limpeza", "tech debt"; ou pede health-check trimestral. |
|
|
28
|
+
| **onepager** | A conversa convergiu o suficiente para merecer um artefato durável (`.dw/spec/ideas/<slug>.md`); ou o usuário sinaliza que vai chamar `/dw-plan prd` em seguida. |
|
|
29
|
+
|
|
30
|
+
Modos podem encadear numa sessão — grill pode revelar uma pergunta de design que o dispatcher manda para prototype; refactor-audit pode produzir findings que o dispatcher manda para council pra stress-test.
|
|
31
|
+
|
|
32
|
+
### Overrides opcionais (raramente necessários)
|
|
33
|
+
|
|
34
|
+
- **`--mode=<nome>`** — força um dispatch específico e pula Signal Reading. Nomes: `option-matrix`, `grill`, `prototype`, `council`, `research`, `refactor-audit`, `onepager`. Combine com `+` para encadear explicitamente: `--mode=grill+onepager`.
|
|
35
|
+
- **`--quiet`** — pula Signal Reading inteiramente e roda apenas `option-matrix` como facilitador mínimo.
|
|
36
|
+
|
|
37
|
+
Power users que já sabem o que querem podem passar `--mode=`. Todo mundo mais ganha auto-dispatch por padrão — o comando lê a situação e age.
|
|
38
|
+
|
|
39
|
+
### Nota de migração (transitória)
|
|
40
|
+
|
|
41
|
+
Invocações antigas com flags (`--onepager`, `--council`, `--research`, `--refactor`, `--grill`, `--prototype`) continuam aceitas por um ciclo minor e mapeiam para o `--mode=` equivalente. Código novo deve usar `--mode=` ou confiar no auto-dispatch.
|
|
22
42
|
|
|
23
43
|
## Fluxograma de Decisão: Brainstorm vs PRD Direto
|
|
24
44
|
|
|
@@ -42,15 +62,16 @@ digraph brainstorm_decision {
|
|
|
42
62
|
|
|
43
63
|
Quando disponíveis no projeto em `./.agents/skills/`, use para enriquecer a ideação:
|
|
44
64
|
|
|
45
|
-
- `dw-council
|
|
46
|
-
- `dw-
|
|
47
|
-
- `
|
|
48
|
-
- `
|
|
65
|
+
- `dw-council`: invocada pelo modo **council** do dispatcher — stress-test multi-advisor das opções mais promissoras com steel-manning obrigatório e concession tracking. O dispatcher dispara quando 2+ caminhos empatam OU consenso se forma rápido demais (sinal de false-consensus). Não roda em todo brainstorm — só quando os sinais justificam.
|
|
66
|
+
- `dw-simplification`: invocada pelo modo **refactor-audit** — aplica Chesterton's Fence + métricas de complexidade + a nova referência **deep-modules** (deletion test, locality, leverage, interface depth) em todo smell flagueado.
|
|
67
|
+
- `dw-ui-discipline`: use quando o brainstorm envolver frontend ou direção de UI — o hard-gate (scene sentence, surface job) é forcing function generativa durante ideação, não só check de review. Também usado pelo branch UI do modo **prototype**.
|
|
68
|
+
- `vercel-react-best-practices`: use quando explorar arquitetura React/Next.js ou trade-offs de performance.
|
|
69
|
+
- `security-review`: use quando o brainstorm tocar auth, manipulação de dados ou features sensíveis à segurança.
|
|
49
70
|
|
|
50
71
|
## Referência do Template
|
|
51
72
|
|
|
52
73
|
- Template da matriz de brainstorm: `.dw/templates/brainstorm-matrix.md` (relativo ao workspace root)
|
|
53
|
-
- Template do one-pager durável: `.dw/templates/idea-onepager.md` (usado
|
|
74
|
+
- Template do one-pager durável: `.dw/templates/idea-onepager.md` (usado pelo modo **onepager**)
|
|
54
75
|
|
|
55
76
|
Use este comando quando o usuario quiser:
|
|
56
77
|
- gerar ideias para produto, UX, arquitetura ou automacao
|
|
@@ -63,6 +84,19 @@ Use este comando quando o usuario quiser:
|
|
|
63
84
|
|
|
64
85
|
<critical>O brainstorm é fase **nível de produto**, não técnica. NÃO entre em arquitetura, stack, endpoints, schemas. Isso é trabalho do techspec. Aqui trabalhamos jornada do usuário, valor, features e fronteiras.</critical>
|
|
65
86
|
|
|
87
|
+
### 0. Signal Reading (sempre primeiro, exceto com `--quiet` ou `--mode=` explícito)
|
|
88
|
+
|
|
89
|
+
Antes de produzir qualquer output, **leia a situação**:
|
|
90
|
+
|
|
91
|
+
1. Inspecione `.dw/spec/prd-*/`, `.dw/rules/`, `.dw/constitution.md`, `.dw/intel/` se existirem. Anote vocabulário atual e PRDs recentes.
|
|
92
|
+
2. Inspecione git recente (`git log --oneline -20`) pra detectar trabalho em andamento.
|
|
93
|
+
3. Releia o pedido do usuário contra a tabela de Auto-Dispatch no topo desse arquivo. Casa sinais com modos.
|
|
94
|
+
4. Decida o dispatch: **option-matrix** sempre roda salvo override que pule. Outros modos (grill, prototype, council, research, refactor-audit, onepager) disparam **aditivamente** quando seus sinais estão presentes.
|
|
95
|
+
5. Diga ao usuário em uma linha curta qual o dispatch decidido: ex. "Dispatch: option-matrix + onepager (PRD está um passo à frente)" ou "Dispatch: grill (vocabulário instável no PRD atual)". Não esconda — surface antes de rodar.
|
|
96
|
+
6. Depois, execute os modos nessa ordem (quando encadeados): grill → research → option-matrix → council → refactor-audit → prototype → onepager. Pule modos fora do dispatch.
|
|
97
|
+
|
|
98
|
+
### Fluxo padrão (modo option-matrix)
|
|
99
|
+
|
|
66
100
|
1. Comece resumindo o problema em 1 a 3 frases.
|
|
67
101
|
2. **Reformule como "How Might We"**: transforme a ideia bruta em `How might we [verbo] para [usuário] de forma que [resultado]?`. Isso tira o time de "solution mode" prematuro.
|
|
68
102
|
3. **Product Inventory (obrigatório se o produto existe)**:
|
|
@@ -80,7 +114,7 @@ Use este comando quando o usuario quiser:
|
|
|
80
114
|
- nível de esforço aproximado
|
|
81
115
|
7. Sempre que fizer sentido, inclua alternativas conservadora, equilibrada e ousada.
|
|
82
116
|
8. Feche com recomendação pragmática e próximos passos claros.
|
|
83
|
-
9. **Se
|
|
117
|
+
9. **Se o dispatcher selecionou o modo `onepager`** (auto-dispara quando a conversa converge ou usuário sinaliza que vai pra `/dw-plan prd`): ao final, gerar `.dw/spec/ideas/<slug>.md` usando `.dw/templates/idea-onepager.md`, preenchendo Feature Inventory, Classification & Rationale, Recommended Direction (linguagem de produto), MVP Scope (user stories), Not Doing, Key Assumptions e Open Questions. Apresentar path ao usuário ao final.
|
|
84
118
|
|
|
85
119
|
## Formato de resposta preferido
|
|
86
120
|
|
|
@@ -104,7 +138,7 @@ Use este comando quando o usuario quiser:
|
|
|
104
138
|
- recomende 1 ou 2 caminhos
|
|
105
139
|
- diga por que eles vencem no contexto atual
|
|
106
140
|
|
|
107
|
-
### 6. One-pager (se
|
|
141
|
+
### 6. One-pager (se modo `onepager` disparou)
|
|
108
142
|
- path do arquivo criado em `.dw/spec/ideas/<slug>.md`
|
|
109
143
|
|
|
110
144
|
### 7. Próximos passos
|
|
@@ -141,13 +175,15 @@ Ao final, sempre deixe o usuario em uma destas situacoes:
|
|
|
141
175
|
- com uma recomendacao clara (incluindo classificação IMPROVES/CONSOLIDATES/NEW)
|
|
142
176
|
- com perguntas melhores para decidir
|
|
143
177
|
- com um proximo comando do workspace para seguir
|
|
144
|
-
- com o one-pager em `.dw/spec/ideas/<slug>.md` (se
|
|
145
|
-
- com o relatório de research em `~/Documents/<Tópico>_Research_<data>/` (se
|
|
146
|
-
- com o plano de refactor em `<target>/refactor-plan.md` (se
|
|
178
|
+
- com o one-pager em `.dw/spec/ideas/<slug>.md` (se modo **onepager** disparou)
|
|
179
|
+
- com o relatório de research em `~/Documents/<Tópico>_Research_<data>/` (se modo **research** disparou)
|
|
180
|
+
- com o plano de refactor em `<target>/refactor-plan.md` (se modo **refactor-audit** disparou)
|
|
181
|
+
- com entradas de glossário sharpened em `.dw/rules/` (se modo **grill** disparou)
|
|
182
|
+
- com um protótipo throwaway rodável + template de verdict (se modo **prototype** disparou)
|
|
147
183
|
|
|
148
|
-
## Modo:
|
|
184
|
+
## Modo: research (research multi-fonte)
|
|
149
185
|
|
|
150
|
-
|
|
186
|
+
Dispara quando a pergunta depende de state-of-the-art externo (comparações multi-fonte, framework/regulatory landscape, decisões precisando de evidência citada). Override: `--mode=research`. Substitui o option-matrix padrão por um pipeline estruturado de research que produz documento citado com claims verificados.
|
|
151
187
|
|
|
152
188
|
<critical>Cada afirmação factual DEVE ser citada imediatamente com [N] na mesma frase</critical>
|
|
153
189
|
<critical>NUNCA fabrique citações — se não encontrar fonte, diga explicitamente</critical>
|
|
@@ -165,7 +201,7 @@ Ativado pela flag `--research`. Substitui o brainstorm padrão por um pipeline e
|
|
|
165
201
|
```
|
|
166
202
|
Seleção
|
|
167
203
|
├── Exploração inicial → quick (3 fases, 2-5 min)
|
|
168
|
-
├── Research padrão → standard (6 fases, 5-10 min) [DEFAULT pra
|
|
204
|
+
├── Research padrão → standard (6 fases, 5-10 min) [DEFAULT pra research]
|
|
169
205
|
├── Decisão crítica → deep (8 fases, 10-20 min)
|
|
170
206
|
└── Review abrangente → ultradeep (8+ fases, 20-45 min)
|
|
171
207
|
```
|
|
@@ -216,9 +252,9 @@ Tamanhos-alvo: quick 2-4k palavras; standard 4-8k; deep 8-15k; ultradeep 15-20k+
|
|
|
216
252
|
- Rotular especulação explicitamente.
|
|
217
253
|
- Admitir incerteza: "Sem fontes encontradas para X."
|
|
218
254
|
|
|
219
|
-
## Modo:
|
|
255
|
+
## Modo: refactor-audit (catálogo de code smells + deep-modules)
|
|
220
256
|
|
|
221
|
-
|
|
257
|
+
Dispara quando o usuário aponta um diretório ou descreve uma área como "bagunçada" / "precisa de limpeza" / "tech debt", ou pede health-check trimestral. Override: `--mode=refactor-audit`. Audita a área-alvo por oportunidades de refactoring usando a taxonomia de smells de Martin Fowler combinada com a análise deep-modules (deletion test, locality, leverage, interface depth) embutida na skill `dw-simplification`.
|
|
222
258
|
|
|
223
259
|
<critical>FAÇA EXATAMENTE 3 PERGUNTAS DE CLARIFICAÇÃO ANTES DE INICIAR ANÁLISE</critical>
|
|
224
260
|
|
|
@@ -292,6 +328,111 @@ Salvo em `<target>/refactor-plan.md`:
|
|
|
292
328
|
- Propor refactors sem teste ou não-testáveis → alto risco, não shippa.
|
|
293
329
|
- Ignorar decisões arquiteturais documentadas em `.dw/rules/` → flagar design intencional como smell.
|
|
294
330
|
|
|
331
|
+
## Modo: grill (domain-grilling)
|
|
332
|
+
|
|
333
|
+
Dispara quando o vocabulário está instável — termos do usuário divergem de `.dw/rules/` / `.dw/constitution.md`, dois sinônimos competem, ou alguém propõe um nome que conflita com o glossário. Override: `--mode=grill`. Substitui o option-matrix por um **stress-test estilo entrevista** do plan/PRD contra o vocabulário do projeto. Cada rodada sharpens um pedaço. Atualiza `.dw/rules/` (ou `.dw/constitution.md`) inline conforme termos cristalizam — nunca adia pra "depois da conversa".
|
|
334
|
+
|
|
335
|
+
<critical>Pergunte UMA pergunta de cada vez. Espere a resposta. Não despeje 5 perguntas e torça pelo melhor.</critical>
|
|
336
|
+
|
|
337
|
+
### Quando usar grill mode
|
|
338
|
+
|
|
339
|
+
- Antes de `/dw-plan prd` quando o domínio parece instável ou o time usa termos competindo.
|
|
340
|
+
- Depois de `/dw-plan prd` quando reviewers flagam linguagem ambígua no PRD.
|
|
341
|
+
- Durante discussão de arquitetura quando "módulo", "serviço", "componente" são usados de forma intercambiável e precisa fixar o termo canônico.
|
|
342
|
+
- Quando alguém propõe um nome que não combina com o glossário existente do projeto.
|
|
343
|
+
|
|
344
|
+
### Disciplinas durante a sessão
|
|
345
|
+
|
|
346
|
+
1. **Desafie contra o glossário.** Leia `.dw/rules/index.md` + `.dw/rules/<modulo>.md` + `.dw/constitution.md`. Flague conflitos de terminologia no instante em que o usuário usa um termo que diverge do que já está documentado.
|
|
347
|
+
|
|
348
|
+
2. **Sharpen linguagem vaga.** Quando o usuário disser "a coisa do user" ou "aquele lance de pedidos", proponha um termo canônico preciso. Não finja que entendeu — empurre de volta.
|
|
349
|
+
|
|
350
|
+
3. **Discuta cenários concretos.** Force precisão com edge cases específicos: "O que acontece com a Order no estado X quando o evento Y chega durante o retry Z?" Respostas vagas voltam como mais perguntas.
|
|
351
|
+
|
|
352
|
+
4. **Cross-reference o código.** Quando o usuário afirmar um comportamento, olhe rápido no codebase pra confirmar. Surface contradições: "Você disse que a API retorna `OrderId` mas `src/api/orders.ts:42` retorna `{ order_id, status }`." Não argumente em generalidades.
|
|
353
|
+
|
|
354
|
+
5. **Atualize `.dw/rules/` inline.** Quando um termo cristaliza, escreva no arquivo de rules apropriado no mesmo turn da conversa. Lazy file creation: se o arquivo não existir, crie. Formato segue a disciplina de glossário do projeto (ver `.dw/rules/index.md`).
|
|
355
|
+
|
|
356
|
+
6. **Pule detalhe de implementação no glossário.** `.dw/rules/` e `.dw/constitution.md` descrevem vocabulário e princípios — não implementação. "Order: pedido de um cliente para comprar itens, em um destes estados: pending, paid, shipped, delivered, refunded" é bom. "Order: uma classe TypeScript em `src/orders/`" é vazamento de implementação.
|
|
357
|
+
|
|
358
|
+
### Disciplina de criação de ADR
|
|
359
|
+
|
|
360
|
+
Só proponha um ADR via `/dw-adr` quando **todos os três** valem:
|
|
361
|
+
|
|
362
|
+
| Critério | Teste |
|
|
363
|
+
|----------|-------|
|
|
364
|
+
| **Difícil de reverter** | Se mudarmos em 6 meses, custa >1 semana de trabalho? |
|
|
365
|
+
| **Surpreendente sem contexto** | Um novo contribuinte chegaria razoavelmente a uma decisão diferente? |
|
|
366
|
+
| **Trade-off real** | Havia uma alternativa real considerada e descartada? |
|
|
367
|
+
|
|
368
|
+
Se algum falta, pule o ADR. Não ADR toda decisão casual — vira ruído na pasta de ADRs.
|
|
369
|
+
|
|
370
|
+
### Output
|
|
371
|
+
|
|
372
|
+
O modo grill produz:
|
|
373
|
+
- **`.dw/rules/<modulo>.md` ou `.dw/constitution.md` atualizado** com termos cristalizados.
|
|
374
|
+
- **PRD / TechSpec atualizado** se grill rodou no meio do planejamento (termos alinhados com o glossário).
|
|
375
|
+
- **`.dw/spec/<prd>/adrs/adr-NNN.md` opcional** se os critérios acima valem.
|
|
376
|
+
- **NÃO** produz option matrix ou recomendação (esse é o option-matrix; grill é só sharpening). Se o dispatcher encadeou grill+option-matrix, o option matrix roda em fase separada.
|
|
377
|
+
|
|
378
|
+
### Quando a disciplina dobra
|
|
379
|
+
|
|
380
|
+
- **Projeto greenfield sem `.dw/rules/`**: grille mesmo assim; a conversa produz as PRIMEIRAS entradas em `.dw/rules/index.md`. Isso é o valor.
|
|
381
|
+
- **Discordância cosmética de terminologia** ("usamos `userId` ou `user_id`?"): pule grill mode; use ADR de convenção de código ou seção Naming em `.dw/rules/index.md`.
|
|
382
|
+
|
|
383
|
+
## Modo: prototype (protótipo descartável)
|
|
384
|
+
|
|
385
|
+
Dispara quando o usuário pergunta "esse modelo de estado faz sentido?" / "como isso deveria parecer?" sem resposta clara — i.e., o próximo passo razoável é RODAR código, não escrever palavras. Override: `--mode=prototype`. Constrói um **protótipo descartável que responde a uma única pergunta**. A pergunta decide a forma — escolha um branch.
|
|
386
|
+
|
|
387
|
+
<critical>O protótipo é descartável desde o dia um. Não polir. Não adicionar testes. Não extrair abstrações. O ponto é APRENDER algo rápido e depois DELETAR ou absorver.</critical>
|
|
388
|
+
|
|
389
|
+
### Escolha um branch
|
|
390
|
+
|
|
391
|
+
| Pergunta do usuário | Branch |
|
|
392
|
+
|---------------------|--------|
|
|
393
|
+
| "Esse modelo de state/logic faz sentido?" | **LOGIC** — terminal app interativo que empurra a máquina de estado por edge cases difíceis de raciocinar no papel. |
|
|
394
|
+
| "Como isso deveria parecer?" | **UI** — várias variações radicalmente diferentes de UI num único route, toggleable por search param e bottom bar flutuante. |
|
|
395
|
+
|
|
396
|
+
Se a pergunta é ambígua, pergunte ao usuário. Se não puder alcançar: default pelo contexto (módulo backend → LOGIC; página/componente → UI) e declare a suposição no topo do protótipo.
|
|
397
|
+
|
|
398
|
+
### Regras (valem para os dois branches)
|
|
399
|
+
|
|
400
|
+
1. **Descartável desde o dia um, claramente marcado.** Coloque o protótipo perto do módulo/página que ele está prototipando (pra contexto) mas nomeie pra que um leitor casual veja que é protótipo (`prototype-<slug>.ts`, `prototype-route.tsx`, etc.).
|
|
401
|
+
|
|
402
|
+
2. **Um comando pra rodar.** Qualquer que seja o task runner do projeto — `pnpm <nome>`, `python <path>`, `bun <path>`, etc. O usuário tem que rodar sem pensar.
|
|
403
|
+
|
|
404
|
+
3. **Sem persistência por padrão.** Estado vive em memória. Persistência é o que o protótipo está VERIFICANDO, não algo do qual depende. Se a pergunta envolve banco, use um DB scratch ou arquivo local com nome claro `PROTOTYPE — wipe me`.
|
|
405
|
+
|
|
406
|
+
4. **Pule o polish.** Sem testes, sem error handling além do mínimo pro protótipo rodar, sem abstrações.
|
|
407
|
+
|
|
408
|
+
5. **Surface o estado.** Depois de cada ação (LOGIC) ou troca de variante (UI), imprima ou renderize o estado relevante completo pro usuário ver o que mudou.
|
|
409
|
+
|
|
410
|
+
6. **Delete ou absorva quando terminar.** Quando o protótipo respondeu sua pergunta, ou delete ou dobre a decisão validada em código real. Não deixe apodrecendo no repo.
|
|
411
|
+
|
|
412
|
+
### Quando terminar
|
|
413
|
+
|
|
414
|
+
A **resposta** é a única coisa que vale guardar. Capture duravelmente:
|
|
415
|
+
- Commit message fechando o protótipo: "removed prototype X; decided <resposta> based on <observação>"
|
|
416
|
+
- Ou um ADR (se os critérios do grill valem)
|
|
417
|
+
- Ou `.dw/spec/<prd>/NOTES.md` se mid-PRD
|
|
418
|
+
- Ou comentário em issue se user-driven
|
|
419
|
+
|
|
420
|
+
Se o usuário não está por perto, deixe um placeholder `PROTOTYPE VERDICT: <pending>` pro próximo pass preencher antes da deleção.
|
|
421
|
+
|
|
422
|
+
### Output
|
|
423
|
+
|
|
424
|
+
O modo prototype produz:
|
|
425
|
+
- **Arquivo(s) de código descartável** na localização apropriada.
|
|
426
|
+
- Um `NOTES.md` ao lado do protótipo com a PERGUNTA que está respondendo.
|
|
427
|
+
- Depois do usuário rodar e responder a pergunta, instruções pra remover o protótipo + capturar o verdict.
|
|
428
|
+
|
|
429
|
+
### Anti-patterns
|
|
430
|
+
|
|
431
|
+
- Construir protótipo que é feature disfarçada — código production-quality, testes, deploy config. Isso não é protótipo; é primeiro draft.
|
|
432
|
+
- Deixar o protótipo no repo "por via das dúvidas" — seis meses depois é load-bearing.
|
|
433
|
+
- Não capturar o verdict — protótipo respondeu a pergunta e a resposta evaporou.
|
|
434
|
+
- Múltiplos protótipos empilhados — escolha uma pergunta, responda, mova.
|
|
435
|
+
|
|
295
436
|
## Inspired by
|
|
296
437
|
|
|
297
438
|
O padrão de codebase-grounded idea refinement é inspirado em [`addyosmani/agent-skills@idea-refine`](https://skills.sh/addyosmani/agent-skills/idea-refine) (Addy Osmani, Google — 1.4K+ installs). Adaptações para o dev-workflow:
|
|
@@ -301,6 +442,8 @@ O padrão de codebase-grounded idea refinement é inspirado em [`addyosmani/agen
|
|
|
301
442
|
- Output em `.dw/spec/ideas/<slug>.md` (irmão de `prd-<slug>/`) em vez de `docs/ideas/` — mantém a convenção de paths do dev-workflow.
|
|
302
443
|
- Integração com o pipeline existente: `/dw-plan prd` aceita o one-pager como input, reduzindo perguntas de clarificação.
|
|
303
444
|
|
|
304
|
-
|
|
445
|
+
Os modos **grill** e **prototype** são adaptados de [`mattpocock/skills/grill-with-docs`](https://github.com/mattpocock/skills/tree/main/grill-with-docs) e [`mattpocock/skills/prototype`](https://github.com/mattpocock/skills/tree/main/prototype) (Matt Pocock, MIT). Adaptação dev-workflow: integrados como modos INTERNOS auto-dispatchados em vez de skills separadas, paths rebaseados em `.dw/rules/` + `.dw/spec/<prd>/`, criação de ADR gated no teste 3-critérios (difícil de reverter + surpreendente + trade-off real).
|
|
446
|
+
|
|
447
|
+
Crédito: Addy Osmani (idea-refine) e Matt Pocock (grill-with-docs, prototype).
|
|
305
448
|
|
|
306
449
|
</system_instructions>
|