@brunosps00/dev-workflow 2.0.0 → 2.1.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/.claude-plugin/marketplace.json +1 -0
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +104 -0
- package/README.md +6 -4
- package/lib/build-plugin.js +4 -1
- package/lib/constants.js +4 -2
- package/lib/validate.js +21 -0
- package/package.json +1 -1
- package/scaffold/en/commands/dw-brainstorm.md +12 -8
- package/scaffold/en/commands/dw-bugfix.md +4 -2
- package/scaffold/en/commands/dw-plan.md +2 -2
- package/scaffold/en/commands/dw-refactor.md +1 -0
- package/scaffold/en/commands/dw-review.md +33 -2
- package/scaffold/en/commands/dw-run.md +1 -0
- package/scaffold/en/commands/dw-triage.md +220 -0
- package/scaffold/en/templates/idea-onepager.md +28 -0
- package/scaffold/en/templates/task-template.md +1 -0
- package/scaffold/en/templates/tasks-template.md +9 -8
- package/scaffold/en/templates/triage-needs-info-template.md +23 -0
- package/scaffold/en/templates/triage-out-of-scope-template.md +36 -0
- package/scaffold/en/templates/triage-record-template.md +88 -0
- package/scaffold/pt-br/commands/dw-autopilot.md +81 -81
- package/scaffold/pt-br/commands/dw-brainstorm.md +12 -9
- package/scaffold/pt-br/commands/dw-bugfix.md +4 -2
- package/scaffold/pt-br/commands/dw-claude-run.md +19 -19
- package/scaffold/pt-br/commands/dw-codex-run.md +19 -19
- package/scaffold/pt-br/commands/dw-context-budget.md +10 -10
- package/scaffold/pt-br/commands/dw-copilot-run.md +20 -20
- package/scaffold/pt-br/commands/dw-dockerize.md +102 -102
- package/scaffold/pt-br/commands/dw-find-skills.md +52 -52
- package/scaffold/pt-br/commands/dw-goal.md +41 -41
- package/scaffold/pt-br/commands/dw-harness-audit.md +11 -11
- package/scaffold/pt-br/commands/dw-intel.md +70 -70
- package/scaffold/pt-br/commands/dw-learn.md +24 -24
- package/scaffold/pt-br/commands/dw-new-project.md +88 -88
- package/scaffold/pt-br/commands/dw-open-design.md +53 -53
- package/scaffold/pt-br/commands/dw-opportunities.md +45 -45
- package/scaffold/pt-br/commands/dw-pause.md +39 -39
- package/scaffold/pt-br/commands/dw-plan.md +2 -2
- package/scaffold/pt-br/commands/dw-refactor.md +31 -30
- package/scaffold/pt-br/commands/dw-resume.md +22 -22
- package/scaffold/pt-br/commands/dw-review.md +33 -2
- package/scaffold/pt-br/commands/dw-run.md +1 -0
- package/scaffold/pt-br/commands/dw-skill-health.md +10 -10
- package/scaffold/pt-br/commands/dw-subtask-complete.md +4 -4
- package/scaffold/pt-br/commands/dw-subtask-start.md +4 -4
- package/scaffold/pt-br/commands/dw-triage.md +220 -0
- package/scaffold/pt-br/templates/bugfix-summary-template.md +20 -20
- package/scaffold/pt-br/templates/concerns-template.md +20 -20
- package/scaffold/pt-br/templates/idea-onepager.md +28 -0
- package/scaffold/pt-br/templates/project-onepager.md +32 -32
- package/scaffold/pt-br/templates/state-template.md +13 -13
- package/scaffold/pt-br/templates/task-template.md +1 -0
- package/scaffold/pt-br/templates/tasks-template.md +9 -8
- package/scaffold/pt-br/templates/triage-needs-info-template.md +23 -0
- package/scaffold/pt-br/templates/triage-out-of-scope-template.md +36 -0
- package/scaffold/pt-br/templates/triage-record-template.md +88 -0
- package/scaffold/scripts/hooks/git-guardrails.mjs +41 -24
- package/scaffold/skills/dw-debug-protocol/SKILL.md +2 -0
- package/scaffold/skills/dw-debug-protocol/references/six-step-triage.md +60 -1
- package/scaffold/skills/dw-execute-phase/references/wave-coordination.md +14 -14
- package/scaffold/skills/dw-grilling/SKILL.md +17 -7
- package/scaffold/skills/dw-grilling/references/decision-tree.md +30 -7
- package/scaffold/skills/dw-simplification/references/deep-modules.md +50 -0
- package/scaffold/skills/dw-testing-discipline/SKILL.md +3 -1
- package/scaffold/skills/dw-testing-discipline/references/tdd-loop.md +83 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<system_instructions>
|
|
2
|
-
|
|
2
|
+
Você é o auditor de saúde de skills e agentes do dev-workflow.
|
|
3
3
|
|
|
4
4
|
## Quando Usar
|
|
5
|
-
- Use depois de adicionar skills de
|
|
5
|
+
- Use depois de adicionar skills de catálogos externos.
|
|
6
6
|
- Use quando o contexto estiver pesado ou skills se sobrepuserem.
|
|
7
7
|
- Use antes de promover um aprendizado para skill reutilizavel.
|
|
8
8
|
|
|
@@ -11,21 +11,21 @@ Voce e o auditor de saude de skills e agentes do dev-workflow.
|
|
|
11
11
|
2. Agrupe skills por `kind`: `protocol`, `domain-pack`, `recipe-pack`, `asset-pack`.
|
|
12
12
|
3. Valide que toda skill tem trigger, output esperado, owner, load policy e limite de contexto.
|
|
13
13
|
4. Valide que todo `SKILL.md` bundled tem contrato `## Structured Return` com `Status`, `Scope`, `Evidence`, `Artifacts`, `Decisions`, `Risks` e `Next Step`.
|
|
14
|
-
5. Confirme que o vocabulario de `Status`
|
|
15
|
-
6. Aponte nomes duplicados, `SKILL.md` ausente, frontmatter ausente, `SKILL.md` grande demais, metadata de output esperado desatualizada, e references/assets lidos sem trigger
|
|
14
|
+
5. Confirme que o vocabulario de `Status` está explícito: `PASS`, `FINDINGS`, `BLOCKED`, `NOT_APPLICABLE`.
|
|
15
|
+
6. Aponte nomes duplicados, `SKILL.md` ausente, frontmatter ausente, `SKILL.md` grande demais, metadata de output esperado desatualizada, e references/assets lidos sem trigger específico.
|
|
16
16
|
7. Recomende manter, compactar entrypoint, mesclar, reclassificar, adicionar retorno estruturado, ou remover da visibilidade core.
|
|
17
17
|
|
|
18
18
|
## Taxonomia
|
|
19
19
|
|
|
20
|
-
- `protocol`: workflow/gate/checklist acionavel que muda a
|
|
21
|
-
- `domain-pack`: expertise de
|
|
20
|
+
- `protocol`: workflow/gate/checklist acionavel que muda a execução.
|
|
21
|
+
- `domain-pack`: expertise de domínio usada só quando a tarefa entra naquele domínio.
|
|
22
22
|
- `recipe-pack`: receitas/snippets curados carregados por stack ou modo.
|
|
23
|
-
- `asset-pack`:
|
|
23
|
+
- `asset-pack`: mídia/exemplos/assets carregados só para tasks correspondentes.
|
|
24
24
|
|
|
25
|
-
`SKILL.md` deve ser um roteador/protocolo curto. Regras longas, exemplos, paletas, receitas, services e assets ficam em references/assets/rules/recipes e
|
|
25
|
+
`SKILL.md` deve ser um roteador/protocolo curto. Regras longas, exemplos, paletas, receitas, services e assets ficam em references/assets/rules/recipes e são carregados sob demanda.
|
|
26
26
|
|
|
27
|
-
##
|
|
28
|
-
Retorne um
|
|
27
|
+
## Saída
|
|
28
|
+
Retorne um relatório conciso com uma seção de retorno estruturado. Não delete arquivos.
|
|
29
29
|
|
|
30
30
|
Inclua:
|
|
31
31
|
- Status geral: `PASS`, `FINDINGS` ou `BLOCKED`.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
<system_instructions>
|
|
2
|
-
|
|
2
|
+
Você registra um handoff estruturado de subagente.
|
|
3
3
|
|
|
4
4
|
## Quando Usar
|
|
5
|
-
- Use dentro da
|
|
5
|
+
- Use dentro da sessão child/subagente quando a subtarefa atribuída estiver completa, bloqueada ou fora de budget.
|
|
6
6
|
|
|
7
|
-
## Formato
|
|
7
|
+
## Formato Obrigatório
|
|
8
8
|
|
|
9
9
|
```markdown
|
|
10
10
|
## Objective
|
|
@@ -34,7 +34,7 @@ Voce registra um handoff estruturado de subagente.
|
|
|
34
34
|
npx @brunosps00/dev-workflow subtask complete --slug=<slug> --file=<handoff.md>
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
Retorne apenas
|
|
37
|
+
Retorne apenas evidência resumida. Não inclua logs completos nem dumps de transcript.
|
|
38
38
|
|
|
39
39
|
Final marker: `## SUBTASK HANDOFF RECORDED`
|
|
40
40
|
</system_instructions>
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<system_instructions>
|
|
2
|
-
|
|
2
|
+
Você cria input packets minimos para subagentes.
|
|
3
3
|
|
|
4
4
|
## Quando Usar
|
|
5
5
|
- Use quando uma subtarefa read-only, QA, review ou build-fix puder rodar separada do contexto principal.
|
|
6
|
-
- Use quando o output seria volumoso: logs, grep amplo,
|
|
6
|
+
- Use quando o output seria volumoso: logs, grep amplo, evidência de teste, QA em browser, review de segurança.
|
|
7
7
|
|
|
8
8
|
## Processo
|
|
9
|
-
1. Escolha o agente instalado mais
|
|
10
|
-
2. Escreva objetivo estreito, arquivos/fontes permitidos, constraints, output esperado, budget de contexto e
|
|
9
|
+
1. Escolha o agente instalado mais específico em `.agents/agents/README.md` ou `scaffold/agent-registry.json`.
|
|
10
|
+
2. Escreva objetivo estreito, arquivos/fontes permitidos, constraints, output esperado, budget de contexto e critério de parada.
|
|
11
11
|
3. Rode:
|
|
12
12
|
|
|
13
13
|
```bash
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
<system_instructions>
|
|
2
|
+
Você é a borda de triagem de intake do workspace atual. Sua função é receber pedidos externos, verificá-los contra o codebase, decidir o desfecho com o dono, persistir o estado de triagem em `.dw/`, e só então rotear para o pipeline dev-workflow existente.
|
|
3
|
+
|
|
4
|
+
<critical>`/dw-triage` fica ANTES de `/dw-bugfix`, `/dw-brainstorm`, `/dw-plan` e `/dw-run`. Ele não substitui nenhum deles.</critical>
|
|
5
|
+
<critical>Local-first: `.dw/triage/**` é a fonte durável da verdade. Acesso ao GitHub via `gh` é apenas enriquecimento opcional.</critical>
|
|
6
|
+
<critical>Nunca escreva um brief downstream a partir de uma alegação não verificada. Verificação é o ponto deste comando.</critical>
|
|
7
|
+
|
|
8
|
+
## Quando Usar
|
|
9
|
+
- Use quando um bug report, feature request, escalonamento de suporte, issue ou PR externo chega e precisa de uma decisão de intake antes do planejamento ou da execução normal
|
|
10
|
+
- Use quando o pedido pode ser redundante, já rejeitado, subespecificado, ou precisa de decisão humana antes de entrar no pipeline
|
|
11
|
+
- NÃO use para corrigir diretamente um bug já aceito; use `/dw-bugfix`
|
|
12
|
+
- NÃO use para planejar diretamente uma melhoria já aceita; use `/dw-plan prd`
|
|
13
|
+
- NÃO use para ideação vaga sem item de intake; use `/dw-brainstorm`
|
|
14
|
+
|
|
15
|
+
## Posição no Pipeline
|
|
16
|
+
**Antecessor:** pedido externo (paste, arquivo, issue, PR) | **Sucessor:** `/dw-brainstorm --mode=grill`, `/dw-bugfix`, `/dw-plan prd`, `/dw-run`, ou nenhuma ação downstream
|
|
17
|
+
|
|
18
|
+
## Entradas
|
|
19
|
+
|
|
20
|
+
| Variável | Descrição | Exemplo |
|
|
21
|
+
|----------|-----------|---------|
|
|
22
|
+
| `{{SOURCE}}` | Fonte do pedido: texto colado, caminho local, URL de issue/PR, número de issue/PR, ou branch/ref | `.dw/inbox/relato.md`, `#123`, `https://github.com/org/repo/pull/42` |
|
|
23
|
+
| `{{MODE}}` | Intenção opcional do dono | `--bug`, `--enhancement`, `--pr`, `--offline`, `--no-github-write` |
|
|
24
|
+
|
|
25
|
+
## Localização dos Arquivos
|
|
26
|
+
|
|
27
|
+
**Registro de triagem — sempre criado depois do desfecho aprovado pelo dono:**
|
|
28
|
+
|
|
29
|
+
- `.dw/triage/NNN-<slug>.md`
|
|
30
|
+
- `NNN` tem 3 dígitos, sequencial entre todos os registros de triagem já criados
|
|
31
|
+
- `<slug>` vem em kebab-case do conceito de domínio, não apenas da redação do pedido
|
|
32
|
+
- Use `.dw/templates/triage-record-template.md`
|
|
33
|
+
|
|
34
|
+
Isto segue o precedente de índice de `.dw/bugfixes/NNN-<slug>/`: registros de intake são registros cronológicos de workflow, então precisam de ordenação estável. Um único arquivo markdown basta porque a triagem tem um documento de estado; o trabalho downstream possui seus próprios diretórios.
|
|
35
|
+
|
|
36
|
+
**Notas de needs-info:**
|
|
37
|
+
|
|
38
|
+
- Guardadas no mesmo registro `.dw/triage/NNN-<slug>.md`, sob `## Needs Info`
|
|
39
|
+
- Use `.dw/templates/triage-needs-info-template.md` como corpo da seção quando houver perguntas em aberto
|
|
40
|
+
|
|
41
|
+
**Memória de out-of-scope — apenas para conceitos rejeitados:**
|
|
42
|
+
|
|
43
|
+
- `.dw/out-of-scope/<concept>.md`
|
|
44
|
+
- `<concept>` é um slug estável do conceito de domínio, não uma citação do pedido
|
|
45
|
+
- Use `.dw/templates/triage-out-of-scope-template.md`
|
|
46
|
+
- NÃO escreva `.dw/out-of-scope/**` para "já implementado"; aponte para a implementação existente
|
|
47
|
+
|
|
48
|
+
**Descoberta do próximo NNN:** liste `.dw/triage/`, parseie o prefixo inicial de 3 dígitos de cada `*.md`, tome `max + 1` ou `1` se estiver vazio.
|
|
49
|
+
|
|
50
|
+
## Modelo de Estado
|
|
51
|
+
|
|
52
|
+
Todo item de triagem carrega exatamente uma categoria e exatamente um estado.
|
|
53
|
+
|
|
54
|
+
Categorias:
|
|
55
|
+
- `bug`
|
|
56
|
+
- `enhancement`
|
|
57
|
+
|
|
58
|
+
Estados:
|
|
59
|
+
- `needs-triage`
|
|
60
|
+
- `needs-info`
|
|
61
|
+
- `ready-for-work`
|
|
62
|
+
- `needs-human`
|
|
63
|
+
- `wontfix`
|
|
64
|
+
|
|
65
|
+
Transições:
|
|
66
|
+
- `needs-triage` -> `needs-info`
|
|
67
|
+
- `needs-triage` -> `ready-for-work`
|
|
68
|
+
- `needs-triage` -> `needs-human`
|
|
69
|
+
- `needs-triage` -> `wontfix`
|
|
70
|
+
- `needs-info` -> `needs-triage` quando o autor responde
|
|
71
|
+
|
|
72
|
+
Se o registro atual, labels da fonte ou input do dono indicarem estados conflitantes, PARE e pergunte ao dono qual estado único é autoritativo antes de escrever ou rotear.
|
|
73
|
+
|
|
74
|
+
Nota de vocabulário: o upstream usa `ready-for-agent` / `ready-for-human`. No dev-workflow, a via de implementação aceita é `/dw-run`, alimentada por `/dw-bugfix` ou `/dw-plan`, então este comando usa `ready-for-work` para "pronto para o pipeline" e `needs-human` para trabalho que não pode ser delegado com segurança.
|
|
75
|
+
|
|
76
|
+
## Integração com GitHub
|
|
77
|
+
|
|
78
|
+
`gh` é permitido porque este repo já o usa em `/dw-generate-pr`, mas nunca é obrigatório.
|
|
79
|
+
|
|
80
|
+
1. Se `{{SOURCE}}` for uma URL ou número de issue/PR do GitHub, verifique se `gh` existe e se `git remote -v` aponta para GitHub.
|
|
81
|
+
2. Se os dois checks passarem, você pode ler a issue/PR com `gh issue view` ou `gh pr view`, e para PRs ler o diff com `gh pr diff`.
|
|
82
|
+
3. Se `gh` estiver ausente, sem autenticação, offline, ou o remote não for GitHub, continue a partir do texto colado, arquivo local ou argumento explícito. Se o texto necessário da issue ou o diff do PR não estiver disponível localmente, peça ao dono para colar ou fornecer um caminho de arquivo.
|
|
83
|
+
4. Não mencione Linear, Jira, GitLab ou qualquer comportamento específico de tracker como integração suportada. A fonte pode ser plugável depois; este comando define apenas arquivos locais mais leitura opcional do GitHub.
|
|
84
|
+
5. Nunca comente, feche, rotule ou escreva de volta no GitHub sem opt-in explícito do dono para aquela escrita exata. A persistência em `.dw/triage/**` é a saída padrão e suficiente.
|
|
85
|
+
|
|
86
|
+
## Fluxo de Trabalho
|
|
87
|
+
|
|
88
|
+
### 1. Ler o Pedido Completo
|
|
89
|
+
|
|
90
|
+
- Leia o texto colado ou arquivo local por inteiro.
|
|
91
|
+
- Se a fonte for uma issue e `gh` estiver disponível, leia título, corpo, comentários, labels, autor e URL.
|
|
92
|
+
- Se a fonte for um PR e `gh` estiver disponível, leia título, corpo, comentários, arquivos alterados e diff.
|
|
93
|
+
- Preserve a origem no registro de triagem: `source_type`, `source_ref`, `author`, `reported_at` e método de recuperação.
|
|
94
|
+
|
|
95
|
+
### 2. Checar Redundância Antes de Recomendar
|
|
96
|
+
|
|
97
|
+
Procure por conceito de domínio, não por redação:
|
|
98
|
+
|
|
99
|
+
- `.dw/domain/**` quando existir
|
|
100
|
+
- `.dw/spec/**`
|
|
101
|
+
- `.dw/bugfixes/**`
|
|
102
|
+
- `.dw/rules/**`
|
|
103
|
+
- caminhos de código provavelmente donos do conceito
|
|
104
|
+
- docs e testes que nomeiam o comportamento
|
|
105
|
+
|
|
106
|
+
Se comportamento equivalente já existir, recomende `wontfix` com motivo `already implemented`, reporte exatamente onde procurou e onde a implementação vive, escreva o registro de triagem, e NÃO escreva `.dw/out-of-scope/**`.
|
|
107
|
+
|
|
108
|
+
### 3. Checar Rejeições Anteriores
|
|
109
|
+
|
|
110
|
+
Leia `.dw/out-of-scope/**` quando existir. Traga qualquer conceito de domínio parecido antes de recomendar um estado:
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
## Prior Rejection Found
|
|
114
|
+
|
|
115
|
+
- Concept: `<concept>`
|
|
116
|
+
- Record: `.dw/out-of-scope/<concept>.md`
|
|
117
|
+
- Why it matters: <comparação em uma linha>
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Se a rejeição anterior claramente se aplicar, recomende `wontfix` a menos que o dono reabra explicitamente a decisão.
|
|
121
|
+
|
|
122
|
+
### 4. Recomendar Categoria e Estado, Depois Esperar
|
|
123
|
+
|
|
124
|
+
Apresente:
|
|
125
|
+
|
|
126
|
+
- resumo conciso do pedido
|
|
127
|
+
- resumo da busca no codebase, incluindo onde a redundância foi checada
|
|
128
|
+
- resumo de rejeição anterior
|
|
129
|
+
- categoria recomendada: `bug` ou `enhancement`
|
|
130
|
+
- estado recomendado: `needs-info`, `ready-for-work`, `needs-human` ou `wontfix`
|
|
131
|
+
- raciocínio e próximo roteamento
|
|
132
|
+
|
|
133
|
+
Então peça ao dono para aprovar ou corrigir categoria/estado. Não escreva arquivos nem roteie downstream até o dono responder, exceto ao retomar um registro de triagem já aprovado.
|
|
134
|
+
|
|
135
|
+
### 5. Verificar Antes do Brief
|
|
136
|
+
|
|
137
|
+
Depois da aprovação do dono e antes de qualquer brief downstream:
|
|
138
|
+
|
|
139
|
+
**Para bugs:**
|
|
140
|
+
- Reproduza a partir dos passos do autor quando possível.
|
|
141
|
+
- Registre o comando exato, ambiente, fixture ou caminho manual usado.
|
|
142
|
+
- Reporte um resultado: `confirmed`, `failed-to-reproduce` ou `insufficient-detail`.
|
|
143
|
+
- Trate `insufficient-detail` como sinal forte de `needs-info`.
|
|
144
|
+
|
|
145
|
+
**Para PRs:**
|
|
146
|
+
- Confirme que o diff faz o que o PR afirma.
|
|
147
|
+
- Rode testes ou checks relevantes para a área tocada.
|
|
148
|
+
- Registre os arquivos alterados inspecionados e comandos rodados.
|
|
149
|
+
- Se a alegação e o diff divergirem, pare e recomende `needs-human` ou `needs-info`.
|
|
150
|
+
|
|
151
|
+
**Para enhancements:**
|
|
152
|
+
- Verifique que a capacidade ainda não existe e que o pedido tem forma de produto suficiente para intake de PRD.
|
|
153
|
+
- Se o vocabulário de produto ou o resultado desejado estiver instável, roteie para `/dw-brainstorm --mode=grill` em vez de inventar uma entrevista aqui.
|
|
154
|
+
|
|
155
|
+
### 6. Aplicar o Desfecho
|
|
156
|
+
|
|
157
|
+
Use `.dw/templates/triage-record-template.md` para todo item de triagem escrito. Registre entradas de histórico como `YYYY-MM-DD — <from> -> <to> — <actor> — <reason>`.
|
|
158
|
+
|
|
159
|
+
Desfechos:
|
|
160
|
+
|
|
161
|
+
- `ready-for-work` + `bug` -> escreva `.dw/triage/NNN-<slug>.md`, depois roteie para `/dw-bugfix` com o resumo de reprodução verificada e o caminho do registro de triagem
|
|
162
|
+
- `ready-for-work` + `enhancement` -> escreva `.dw/triage/NNN-<slug>.md`, depois roteie para `/dw-plan prd` com o resumo de produto verificado e o caminho do registro de triagem
|
|
163
|
+
- `needs-human` -> escreva `.dw/triage/NNN-<slug>.md` e registre por que delegar é inseguro: decisão de design, acesso externo, julgamento, teste manual ou ownership indefinido
|
|
164
|
+
- `needs-info` -> escreva `.dw/triage/NNN-<slug>.md` e inclua a seção de `.dw/templates/triage-needs-info-template.md` com perguntas em aberto
|
|
165
|
+
- `wontfix` rejeitado -> escreva `.dw/triage/NNN-<slug>.md`, depois escreva ou atualize `.dw/out-of-scope/<concept>.md` com motivo, evidência e condição de reabertura
|
|
166
|
+
- `wontfix` already implemented -> escreva `.dw/triage/NNN-<slug>.md`, aponte para a implementação, e NÃO escreva `.dw/out-of-scope/**`
|
|
167
|
+
|
|
168
|
+
### 7. Grill Para Pedidos Malformados
|
|
169
|
+
|
|
170
|
+
Se o pedido não tiver problema, ator, conceito de domínio, resultado desejado ou fronteira de aceite estáveis, não reimplemente uma entrevista dentro de `/dw-triage`.
|
|
171
|
+
|
|
172
|
+
Recomende:
|
|
173
|
+
|
|
174
|
+
```
|
|
175
|
+
Este item de intake não está pronto para categorização. Roteie para `/dw-brainstorm --mode=grill` para estabilizar vocabulário e fronteiras de produto, depois retorne para `/dw-triage` quando o autor responder.
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Se o dono aprovar o roteamento, persista o registro de triagem como `needs-info`, a menos que exista motivo mais claro para `needs-human`.
|
|
179
|
+
|
|
180
|
+
## Formato Preferido de Resposta
|
|
181
|
+
|
|
182
|
+
### Resumo de Intake
|
|
183
|
+
- Fonte:
|
|
184
|
+
- Pedido:
|
|
185
|
+
- Autor:
|
|
186
|
+
- Recuperação:
|
|
187
|
+
|
|
188
|
+
### Checks do Codebase
|
|
189
|
+
- Busca de redundância:
|
|
190
|
+
- Busca de rejeição anterior:
|
|
191
|
+
- Evidência:
|
|
192
|
+
|
|
193
|
+
### Recomendação
|
|
194
|
+
- Categoria: `bug` | `enhancement`
|
|
195
|
+
- Estado: `needs-info` | `ready-for-work` | `needs-human` | `wontfix`
|
|
196
|
+
- Motivo:
|
|
197
|
+
- Roteamento proposto:
|
|
198
|
+
|
|
199
|
+
### Checkpoint do Dono
|
|
200
|
+
- Peça ao dono para aprovar ou corrigir categoria/estado antes de escrever e rotear.
|
|
201
|
+
|
|
202
|
+
### Resultado da Verificação
|
|
203
|
+
- Status: `confirmed` | `failed-to-reproduce` | `insufficient-detail`
|
|
204
|
+
- Comandos/arquivos inspecionados:
|
|
205
|
+
- O que isso prova:
|
|
206
|
+
|
|
207
|
+
### Desfecho Persistido
|
|
208
|
+
- Registro de triagem:
|
|
209
|
+
- Registro out-of-scope, se houver:
|
|
210
|
+
- Próximo comando:
|
|
211
|
+
|
|
212
|
+
## Anti-patterns
|
|
213
|
+
|
|
214
|
+
- Tratar labels ou comentários do GitHub como fonte da verdade
|
|
215
|
+
- Criar `.dw/out-of-scope/**` para um pedido já implementado
|
|
216
|
+
- Comparar redundância apenas pela redação do pedido
|
|
217
|
+
- Rotear para `/dw-bugfix` ou `/dw-plan prd` antes da aprovação do dono
|
|
218
|
+
- Escrever bugfix ou PRD brief a partir de alegação não verificada
|
|
219
|
+
- Prometer integrações com trackers que este comando não consegue ler ou escrever
|
|
220
|
+
</system_instructions>
|
|
@@ -9,28 +9,28 @@ related_concerns: []
|
|
|
9
9
|
|
|
10
10
|
# Bugfix Summary — {{NNN}}-{{slug}}
|
|
11
11
|
|
|
12
|
-
Registro de uma
|
|
12
|
+
Registro de uma página de um bugfix. Arquivos irmãos neste diretório:
|
|
13
13
|
|
|
14
|
-
- `TASK.md` — a triagem original, respostas das perguntas de
|
|
15
|
-
- `fix-report.md` —
|
|
14
|
+
- `TASK.md` — a triagem original, respostas das perguntas de clarificação e o plano de fix que rodou
|
|
15
|
+
- `fix-report.md` — evidência de verificação (saída do `dw-verify` PASS, prova de reprodução, execução do teste de regressão)
|
|
16
16
|
- `review/` — populado por `/dw-review --bugfix {{NNN}}-{{slug}}`
|
|
17
|
-
- `QA/` — populado por `/dw-qa --bugfix {{NNN}}-{{slug}}` (quando
|
|
17
|
+
- `QA/` — populado por `/dw-qa --bugfix {{NNN}}-{{slug}}` (quando aplicável)
|
|
18
18
|
|
|
19
19
|
## Sintoma
|
|
20
20
|
|
|
21
|
-
O que o
|
|
21
|
+
O que o usuário observou. Cite a descrição original do bug verbatim; não parafraseie.
|
|
22
22
|
|
|
23
23
|
> _"…"_
|
|
24
24
|
|
|
25
25
|
## Causa Raiz
|
|
26
26
|
|
|
27
|
-
O que estava de fato quebrado, em uma frase.
|
|
27
|
+
O que estava de fato quebrado, em uma frase. Não o sintoma — a causa.
|
|
28
28
|
|
|
29
29
|
_…_
|
|
30
30
|
|
|
31
|
-
##
|
|
31
|
+
## Resolução
|
|
32
32
|
|
|
33
|
-
O que mudou, em 2-4 bullets. Paths de arquivos,
|
|
33
|
+
O que mudou, em 2-4 bullets. Paths de arquivos, não snippets.
|
|
34
34
|
|
|
35
35
|
- _mudanca 1_
|
|
36
36
|
- _mudanca 2_
|
|
@@ -39,28 +39,28 @@ O que mudou, em 2-4 bullets. Paths de arquivos, nao snippets.
|
|
|
39
39
|
|
|
40
40
|
Lista completa, incluindo testes. <=5 — se mais, o safety valve deveria ter escalado para `/dw-plan`.
|
|
41
41
|
|
|
42
|
-
| Path |
|
|
42
|
+
| Path | Mudança |
|
|
43
43
|
|------|---------|
|
|
44
|
-
| `src/foo/bar.ts` | _fix
|
|
45
|
-
| `src/foo/bar.test.ts` | _teste de
|
|
44
|
+
| `src/foo/bar.ts` | _fix cirúrgico em X_ |
|
|
45
|
+
| `src/foo/bar.test.ts` | _teste de regressão adicionado_ |
|
|
46
46
|
|
|
47
|
-
##
|
|
47
|
+
## Verificação
|
|
48
48
|
|
|
49
|
-
Como o fix foi provado,
|
|
49
|
+
Como o fix foi provado, além de "os testes passam".
|
|
50
50
|
|
|
51
|
-
- **
|
|
52
|
-
- **
|
|
53
|
-
- **Teste de
|
|
54
|
-
- **
|
|
51
|
+
- **Reprodução antes do fix:** _passo que disparava o bug, capturado_
|
|
52
|
+
- **Reprodução depois do fix:** _mesmo passo, agora passa_
|
|
53
|
+
- **Teste de regressão:** _nome + path_
|
|
54
|
+
- **Relatório de verify:** `fix-report.md`
|
|
55
55
|
|
|
56
56
|
## Relacionado
|
|
57
57
|
|
|
58
|
-
- **Concerns tocados:** _refs de `.dw/rules/concerns.md` se o fix caiu em
|
|
59
|
-
- **Bugfixes adjacentes:** _slugs de fixes anteriores no mesmo
|
|
58
|
+
- **Concerns tocados:** _refs de `.dw/rules/concerns.md` se o fix caiu em área flagada_
|
|
59
|
+
- **Bugfixes adjacentes:** _slugs de fixes anteriores no mesmo módulo, se houver_
|
|
60
60
|
- **Contexto de PRD:** _se o bug apareceu dentro de uma feature em andamento, link para o path do PRD_
|
|
61
61
|
|
|
62
62
|
## Followups
|
|
63
63
|
|
|
64
|
-
Pontas soltas que este fix descobriu mas
|
|
64
|
+
Pontas soltas que este fix descobriu mas não resolveu. Adicione ao `.dw/STATE.md` Open-Loops ao fechar.
|
|
65
65
|
|
|
66
66
|
- _nenhum_
|
|
@@ -6,54 +6,54 @@ last_refreshed: ""
|
|
|
6
6
|
|
|
7
7
|
# Concerns — Mapa de Riscos
|
|
8
8
|
|
|
9
|
-
Mapa de riscos deste codebase.
|
|
9
|
+
Mapa de riscos deste codebase. Não são convenções ("como fazemos as coisas" — isso e `.dw/rules/`), não é arquitetura ("como está construído" — isso e `.dw/intel/arch.md`). Este arquivo responde uma única pergunta: **onde é perigoso mexer?**
|
|
10
10
|
|
|
11
|
-
Carregado on-demand por `/dw-plan`, `/dw-run` e `/dw-bugfix` quando o alvo deles toca uma entrada abaixo. Auto-instalado pelo `/dw-analyze-project` Step 9; nunca bloqueia (
|
|
11
|
+
Carregado on-demand por `/dw-plan`, `/dw-run` e `/dw-bugfix` quando o alvo deles toca uma entrada abaixo. Auto-instalado pelo `/dw-analyze-project` Step 9; nunca bloqueia (ausência = nenhuma área flagada ainda).
|
|
12
12
|
|
|
13
13
|
## Hot Spots
|
|
14
14
|
|
|
15
|
-
Arquivos ou
|
|
15
|
+
Arquivos ou módulos com churn alto, reports frequentes de bug ou histórico repetido de "mexi aqui e quebrou algo". Mencione em PRDs que toquem a mesma área; adicione revisor extra ou passada extra de teste.
|
|
16
16
|
|
|
17
|
-
| Path | Por que
|
|
17
|
+
| Path | Por que é quente | Primeiro flag | Último incidente |
|
|
18
18
|
|------|------------------|---------------|------------------|
|
|
19
19
|
| _ex. `src/auth/session.ts`_ | _3 fixes de token em 60d_ | _YYYY-MM-DD_ | _YYYY-MM-DD_ |
|
|
20
20
|
|
|
21
|
-
##
|
|
21
|
+
## Integrações Fragis
|
|
22
22
|
|
|
23
|
-
Sistemas externos (APIs, filas, vendors, bancos legados) com
|
|
23
|
+
Sistemas externos (APIs, filas, vendors, bancos legados) com histórico de falhas silenciosas, drift de schema, surpresas de rate-limit ou comportamento não-documentado. Código novo que toque eles precisa de tratamento explícito de retry/timeout/idempotência.
|
|
24
24
|
|
|
25
|
-
|
|
|
25
|
+
| Integração | Modo de falha | Mitigação esperada |
|
|
26
26
|
|------------|---------------|--------------------|
|
|
27
|
-
| _ex. export SAP legado_ | _200 OK silencioso com body vazio quando source
|
|
27
|
+
| _ex. export SAP legado_ | _200 OK silencioso com body vazio quando source está lockado_ | _checar tamanho do body; logar e alertar_ |
|
|
28
28
|
|
|
29
|
-
##
|
|
29
|
+
## Código Hostil
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
Funções específicas, regexes, parsers ou algoritmos difíceis de raciocinar — quem toca precisa entender 100% primeiro (ou reescrever, não remendar). Suspeitos comuns: regex artesanal, parsers de string ad-hoc, serializadores custom, async com race condition, código de transação manual.
|
|
32
32
|
|
|
33
|
-
| Path /
|
|
33
|
+
| Path / função | Por que é hostil | Owner / contexto |
|
|
34
34
|
|---------------|------------------|------------------|
|
|
35
35
|
| _ex. `src/billing/parseInvoice.ts:parseLine`_ | _regex de 900 chars com 12 alternativas, sem comentarios_ | _Bruno escreveu em 2024; reescrever se quebrar_ |
|
|
36
36
|
|
|
37
|
-
##
|
|
37
|
+
## Histórico de Bugs Conhecidos
|
|
38
38
|
|
|
39
|
-
Agregado de `.dw/bugfixes/*/SUMMARY.md` pelo `/dw-intel --build`. Lista
|
|
39
|
+
Agregado de `.dw/bugfixes/*/SUMMARY.md` pelo `/dw-intel --build`. Lista módulos com >=2 fixes historicos. Leia junto com Hot Spots ao planejar trabalho relacionado.
|
|
40
40
|
|
|
41
|
-
|
|
|
41
|
+
| Módulo | Contagem de bugs | Slugs recentes |
|
|
42
42
|
|--------|------------------|----------------|
|
|
43
43
|
| _ex. `src/payments/`_ | _4_ | _002-stripe-webhook-retry, 007-refund-rounding_ |
|
|
44
44
|
|
|
45
45
|
## Tech Debt — Reconhecida
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
Pedaços de debt que o time concorda que existem. Não são para limpar oportunisticamente sem coordenação — podem ser load-bearing de formas não óbvias.
|
|
48
48
|
|
|
49
|
-
|
|
|
49
|
+
| Área | Descrição do debt | Por que fica | Trigger de cleanup |
|
|
50
50
|
|------|-------------------|--------------|--------------------|
|
|
51
|
-
| _ex. `src/legacy/userMapper.ts`_ | _Dois codepaths paralelos de field-mapping_ | _Esperando
|
|
51
|
+
| _ex. `src/legacy/userMapper.ts`_ | _Dois codepaths paralelos de field-mapping_ | _Esperando migração v3 da API_ | _Q3 2026 após cutover do vendor_ |
|
|
52
52
|
|
|
53
53
|
---
|
|
54
54
|
|
|
55
55
|
**Como manter este arquivo:**
|
|
56
56
|
|
|
57
|
-
- `/dw-analyze-project` reescreve a cada
|
|
58
|
-
- Quando um bugfix descobrir uma nova
|
|
59
|
-
- Promova entradas para `.dw/constitution.md` quando virarem regras
|
|
57
|
+
- `/dw-analyze-project` reescreve a cada execução. Entradas escritas a mão entre `<!-- preserved:start -->` e `<!-- preserved:end -->` são mantidas.
|
|
58
|
+
- Quando um bugfix descobrir uma nova área perigosa, adicione manualmente em Hot Spots e deixe a próxima análise confirmar.
|
|
59
|
+
- Promova entradas para `.dw/constitution.md` quando virarem regras não-negociáveis ("nunca toque X sem ADR").
|
|
@@ -93,6 +93,34 @@ Idealmente 2-4 stories. Se são mais de 5, provavelmente não é MVP.]
|
|
|
93
93
|
|
|
94
94
|
_(schema 1.1 — preenchido por uma sessão de grill do `/dw-brainstorm`; consumido pelo `/dw-plan`, que NÃO re-pergunta decisões resolvidas. Deixe vazio para um one-pager sem grill.)_
|
|
95
95
|
|
|
96
|
+
### Decision Map
|
|
97
|
+
|
|
98
|
+
[Árvore durável do Grill. Registra apenas estrutura e estado de retomada; mantenha resultado da decisão,
|
|
99
|
+
recomendação, alternativa e evidência em **Resolved Decisions** abaixo.]
|
|
100
|
+
|
|
101
|
+
**Frontier:** [IDs de nós com `State: open-ready`, separados por vírgula, ou `none`]
|
|
102
|
+
|
|
103
|
+
| ID | Nó de decisão | State | Depends on: | Frontier? | Notas |
|
|
104
|
+
|----|---------------|-------|-------------|-----------|-------|
|
|
105
|
+
| D1 | [decisão upstream] | resolved | none | no | [nota estrutural; resultado fica em Resolved Decisions] |
|
|
106
|
+
| D2 | [decisão aberta que pode ser perguntada agora] | open-ready | D1 | yes | [por que está pronta] |
|
|
107
|
+
| D3 | [decisão aberta ainda bloqueada] | open-blocked | D2 | no | [o que bloqueia] |
|
|
108
|
+
|
|
109
|
+
`State` é a fonte da verdade. `Frontier?` e a linha `**Frontier:**` são derivados dele por
|
|
110
|
+
legibilidade — se algum dia discordarem do `State`, o `State` vence e os derivados são reescritos.
|
|
111
|
+
|
|
112
|
+
Valores permitidos de `State`:
|
|
113
|
+
- `resolved` — o usuário resolveu o nó; detalhes ficam em **Resolved Decisions**.
|
|
114
|
+
- `open-ready` — aberto e decidível agora; este nó está na **Frontier**.
|
|
115
|
+
- `open-blocked` — aberto, mas aguardando um ou mais nós em `Depends on:`.
|
|
116
|
+
|
|
117
|
+
#### Decision Fog
|
|
118
|
+
|
|
119
|
+
[Áreas conhecidas não resolvidas que ainda não estão nítidas o suficiente para virar nós de decisão. Mantenha
|
|
120
|
+
curto; cada item gradua para **Decision Map** quando virar uma decisão concreta.]
|
|
121
|
+
|
|
122
|
+
- [área desconhecida] — [por que ainda não dá para formular como decisão]
|
|
123
|
+
|
|
96
124
|
### Resolved Decisions
|
|
97
125
|
|
|
98
126
|
| Decisão | Recomendado | Escolhido | Alternativa rejeitada | Evidência |
|
|
@@ -13,40 +13,40 @@ services: []
|
|
|
13
13
|
|
|
14
14
|
# Projeto: [Nome do projeto]
|
|
15
15
|
|
|
16
|
-
##
|
|
16
|
+
## Propósito
|
|
17
17
|
|
|
18
|
-
[Um
|
|
18
|
+
[Um parágrafo em linguagem de produto. Quem vai usar, qual problema resolve, como o sucesso se parece em 6-12 semanas. Evite linguagem de implementação.]
|
|
19
19
|
|
|
20
20
|
## Stack Selecionado
|
|
21
21
|
|
|
22
22
|
| Camada | Escolha | Justificativa |
|
|
23
23
|
|--------|---------|---------------|
|
|
24
|
-
| Forma | frontend / backend / fullstack | [por que essa forma —
|
|
24
|
+
| Forma | frontend / backend / fullstack | [por que essa forma — superfície única, API para parceiros, etc.] |
|
|
25
25
|
| Frontend | Next.js / Vite+React / n/a | [por que esse framework — SSR, simplicidade SPA, etc.] |
|
|
26
|
-
| Backend | NestJS / Fastify / FastAPI / ASP.NET Core minimal / Axum / n/a | [por que — expertise do time, ecosystem, alvo de
|
|
27
|
-
| Database | Postgres / MySQL / SQLite / MongoDB / nenhum | [por que esse DB — relacional, transacional, etc. Busca vetorial
|
|
28
|
-
| Cache | Redis / Memcached / nenhum | [por que ou por que
|
|
29
|
-
| Fila | pg-boss / BullMQ / Celery / RabbitMQ / LocalStack SQS / nenhum | [por que ou
|
|
26
|
+
| Backend | NestJS / Fastify / FastAPI / ASP.NET Core minimal / Axum / n/a | [por que — expertise do time, ecosystem, alvo de latência] |
|
|
27
|
+
| Database | Postgres / MySQL / SQLite / MongoDB / nenhum | [por que esse DB — relacional, transacional, etc. Busca vetorial não tem recipe bundled; nomeie a imagem revisada ou serviço gerenciado se o projeto precisar] |
|
|
28
|
+
| Cache | Redis / Memcached / nenhum | [por que ou por que não] |
|
|
29
|
+
| Fila | pg-boss / BullMQ / Celery / RabbitMQ / LocalStack SQS / nenhum | [por que ou não + sync vs async workers] |
|
|
30
30
|
| Email — dev | Mailpit (default) / smtp4dev / nenhum | [normalmente Mailpit — captura only, nunca envia real] |
|
|
31
31
|
| Email — prod | SMTP / SendGrid / Resend / Postmark / SES / nenhum | [por que esse provider — volume, deliverability, custo] |
|
|
32
|
-
| Object storage | S3 / MinIO (dev) / GCS / nenhum | [por que ou
|
|
32
|
+
| Object storage | S3 / MinIO (dev) / GCS / nenhum | [por que ou não] |
|
|
33
33
|
| Search | Meilisearch / Typesense / Elasticsearch / nenhum | [por que esse engine — features, escala, simplicidade] |
|
|
34
|
-
| Observability | Sentry / OTel + Jaeger / nenhum | [por que essa abordagem —
|
|
35
|
-
| Reverse proxy | Traefik / Caddy / nenhum | [normalmente
|
|
36
|
-
| Auth | Auth.js / OIDC
|
|
37
|
-
| Linter / formatter | Biome / ESLint+Prettier / Ruff+Black / dotnet format / cargo fmt+clippy | [
|
|
38
|
-
| Package manager | pnpm / npm / yarn / poetry / uv / cargo / dotnet | [
|
|
39
|
-
| Workspace + task runner | pnpm workspaces + Turborepo / npm workspaces / Nx / n/a | [
|
|
34
|
+
| Observability | Sentry / OTel + Jaeger / nenhum | [por que essa abordagem — só error tracking, tracing completo, etc.] |
|
|
35
|
+
| Reverse proxy | Traefik / Caddy / nenhum | [normalmente só multi-host dev ou prod] |
|
|
36
|
+
| Auth | Auth.js / OIDC genérico / Clerk / fastapi-users / dotnet Identity / JWT custom / nenhum | [por que — social login, B2B, etc.] |
|
|
37
|
+
| Linter / formatter | Biome / ESLint+Prettier / Ruff+Black / dotnet format / cargo fmt+clippy | [preferência do time] |
|
|
38
|
+
| Package manager | pnpm / npm / yarn / poetry / uv / cargo / dotnet | [preferência do time] |
|
|
39
|
+
| Workspace + task runner | pnpm workspaces + Turborepo / npm workspaces / Nx / n/a | [só para fullstack — caching/build] |
|
|
40
40
|
| Topologia de dev | apps no host / tudo no Compose | [trade-off de hot reload e paridade] |
|
|
41
|
-
| CI | GitHub Actions / nenhum | [normalmente GitHub Actions; pular
|
|
41
|
+
| CI | GitHub Actions / nenhum | [normalmente GitHub Actions; pular só para repos não-públicos] |
|
|
42
42
|
|
|
43
|
-
##
|
|
43
|
+
## Serviços & Infra
|
|
44
44
|
|
|
45
|
-
[
|
|
45
|
+
[Serviços gerados a partir da skill docker-compose-recipes. Preenchido pelo /dw-new-project.]
|
|
46
46
|
|
|
47
|
-
|
|
|
47
|
+
| Serviço | Porta (host) | UI | Credenciais |
|
|
48
48
|
|---------|--------------|----|-------------|
|
|
49
|
-
| postgres | 127.0.0.1:5432 | — | POSTGRES_USER=app, POSTGRES_PASSWORD
|
|
49
|
+
| postgres | 127.0.0.1:5432 | — | POSTGRES_USER=app, POSTGRES_PASSWORD obrigatória no `.env` (sem default), POSTGRES_DB=app |
|
|
50
50
|
| redis | 6379 | — | (sem auth em dev) |
|
|
51
51
|
| mailpit | 1025 (smtp), 8025 (UI) | http://localhost:8025 | (sem auth) |
|
|
52
52
|
| ... | ... | ... | ... |
|
|
@@ -71,7 +71,7 @@ services: []
|
|
|
71
71
|
|
|
72
72
|
## Arquivos Gerados
|
|
73
73
|
|
|
74
|
-
[Preenchido pelo /dw-new-project
|
|
74
|
+
[Preenchido pelo /dw-new-project após Fase 3 — lista de arquivos criados com origem.]
|
|
75
75
|
|
|
76
76
|
```
|
|
77
77
|
{{TARGET_DIR}}/
|
|
@@ -96,16 +96,16 @@ services: []
|
|
|
96
96
|
|
|
97
97
|
## Escopo MVP
|
|
98
98
|
|
|
99
|
-
[A primeira feature menor que
|
|
99
|
+
[A primeira feature menor que você vai entregar. Pensada como user stories — vai dirigir a primeira rodada de /dw-plan prd.]
|
|
100
100
|
|
|
101
|
-
- Como [persona], eu posso [
|
|
102
|
-
- Como [persona], eu posso [
|
|
101
|
+
- Como [persona], eu posso [ação] para que [benefício]
|
|
102
|
+
- Como [persona], eu posso [ação] para que [benefício]
|
|
103
103
|
|
|
104
|
-
Se
|
|
104
|
+
Se você ainda não tem a primeira feature em mente, tudo bem — deixa placeholder e roda o /dw-plan prd quando tiver.
|
|
105
105
|
|
|
106
|
-
##
|
|
106
|
+
## Não Estou Fazendo (explícito)
|
|
107
107
|
|
|
108
|
-
[Itens tentadores adiados.
|
|
108
|
+
[Itens tentadores adiados. Força disciplina de escopo.]
|
|
109
109
|
|
|
110
110
|
- **[item 1]** — motivo: [fora do v1 porque...]
|
|
111
111
|
- **[item 2]** — motivo: [pode virar v2 se a hipotese X validar]
|
|
@@ -113,19 +113,19 @@ Se voce ainda nao tem a primeira feature em mente, tudo bem — deixa placeholde
|
|
|
113
113
|
## Premissas-Chave
|
|
114
114
|
|
|
115
115
|
- **[premissa sobre usuarios / mercado / escala]** — teste: [como validar]
|
|
116
|
-
- **[premissa sobre
|
|
116
|
+
- **[premissa sobre latência / volume / SLAs]** — teste: [load profile, métrica alvo]
|
|
117
117
|
|
|
118
118
|
## Perguntas em Aberto
|
|
119
119
|
|
|
120
|
-
[O que este one-pager
|
|
120
|
+
[O que este one-pager não consegue responder sozinho. Resolva antes do /dw-plan prd ou escale para um stakeholder.]
|
|
121
121
|
|
|
122
122
|
- [pergunta 1]
|
|
123
123
|
- [pergunta 2]
|
|
124
124
|
|
|
125
|
-
##
|
|
125
|
+
## Próximo Passo
|
|
126
126
|
|
|
127
127
|
Escolha UM:
|
|
128
128
|
|
|
129
|
-
- **`/dw-plan prd`** — quando
|
|
130
|
-
- **`/dw-analyze-project`** —
|
|
131
|
-
- **`/dw-secure-audit --plan --scan-only`** — para confirmar que nenhuma dep
|
|
129
|
+
- **`/dw-plan prd`** — quando você tem a primeira feature em mente e quer rascunhar o PRD em cima deste stack
|
|
130
|
+
- **`/dw-analyze-project`** — após primeiro commit substancial, para enriquecer `.dw/rules/` com convenções por módulo
|
|
131
|
+
- **`/dw-secure-audit --plan --scan-only`** — para confirmar que nenhuma dep vulnerável veio dos templates `create-*`
|