@brunosps00/dev-workflow 1.7.1 → 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 +305 -0
- package/README.md +7 -5
- package/lib/agents.js +6 -1
- package/lib/build-plugin.js +4 -1
- package/lib/constants.js +4 -2
- package/lib/init.js +14 -0
- package/lib/install-state.js +8 -4
- package/lib/validate.js +21 -0
- package/package.json +2 -1
- package/scaffold/agents/core/dw-build-fixer.md +0 -1
- package/scaffold/agents/core/dw-code-explorer.md +0 -1
- package/scaffold/agents/core/dw-code-reviewer.md +0 -1
- package/scaffold/agents/core/dw-planner.md +0 -1
- package/scaffold/agents/core/dw-test-author.md +0 -1
- package/scaffold/agents/csharp/dw-csharp-reviewer.md +0 -1
- package/scaffold/agents/csharp/dw-dotnet-build-fixer.md +0 -1
- package/scaffold/agents/frontend/dw-qa-runner.md +0 -1
- package/scaffold/agents/python/dw-python-build-fixer.md +0 -1
- package/scaffold/agents/python/dw-python-reviewer.md +0 -1
- package/scaffold/agents/rust/dw-rust-build-fixer.md +0 -1
- package/scaffold/agents/rust/dw-rust-reviewer.md +0 -1
- package/scaffold/agents/security/dw-security-reviewer.md +0 -1
- package/scaffold/agents/security/dw-silent-failure-hunter.md +0 -1
- package/scaffold/agents/typescript/dw-typescript-build-fixer.md +0 -1
- package/scaffold/agents/typescript/dw-typescript-reviewer.md +0 -1
- package/scaffold/config/routing.json +60 -0
- package/scaffold/en/commands/dw-brainstorm.md +12 -8
- package/scaffold/en/commands/dw-bugfix.md +4 -2
- package/scaffold/en/commands/dw-claude-run.md +5 -1
- package/scaffold/en/commands/dw-codex-run.md +5 -1
- package/scaffold/en/commands/dw-dockerize.md +14 -7
- package/scaffold/en/commands/dw-generate-pr.md +13 -0
- package/scaffold/en/commands/dw-new-project.md +14 -13
- 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 +2 -1
- package/scaffold/en/commands/dw-triage.md +220 -0
- package/scaffold/en/templates/idea-onepager.md +28 -0
- package/scaffold/en/templates/project-onepager.md +6 -5
- package/scaffold/en/templates/task-template.md +2 -1
- package/scaffold/en/templates/tasks-template.md +11 -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 +23 -19
- package/scaffold/pt-br/commands/dw-codex-run.md +22 -18
- 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 +106 -99
- package/scaffold/pt-br/commands/dw-find-skills.md +52 -52
- package/scaffold/pt-br/commands/dw-generate-pr.md +13 -0
- 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 +93 -92
- 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 +3 -3
- 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 +2 -1
- 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 +35 -34
- package/scaffold/pt-br/templates/state-template.md +13 -13
- package/scaffold/pt-br/templates/task-template.md +2 -1
- package/scaffold/pt-br/templates/tasks-template.md +11 -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/docker-compose-recipes/SKILL.md +2 -4
- package/scaffold/skills/docker-compose-recipes/references/compose-composition.md +2 -2
- package/scaffold/skills/docker-compose-recipes/references/env-conventions.md +16 -9
- package/scaffold/skills/docker-compose-recipes/references/healthcheck-patterns.md +0 -1
- package/scaffold/skills/docker-compose-recipes/references/prod-vs-dev.md +7 -2
- package/scaffold/skills/docker-compose-recipes/services/elasticsearch.yml +3 -3
- package/scaffold/skills/docker-compose-recipes/services/meilisearch.yml +2 -2
- package/scaffold/skills/docker-compose-recipes/services/minio.yml +8 -4
- package/scaffold/skills/docker-compose-recipes/services/mysql.yml +4 -4
- package/scaffold/skills/docker-compose-recipes/services/postgres.yml +2 -2
- package/scaffold/skills/docker-compose-recipes/services/rabbitmq.yml +3 -3
- package/scaffold/skills/docker-compose-recipes/services/typesense.yml +3 -3
- package/scaffold/skills/dw-cli-run/SKILL.md +42 -38
- package/scaffold/skills/dw-cli-run/references/dispatch-tuning.md +85 -0
- 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/SKILL.md +4 -2
- package/scaffold/skills/dw-execute-phase/agents/executor.md +4 -2
- package/scaffold/skills/dw-execute-phase/agents/plan-checker.md +9 -7
- package/scaffold/skills/dw-execute-phase/references/atomic-commits.md +12 -8
- package/scaffold/skills/dw-execute-phase/references/plan-verification.md +6 -4
- 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
- package/scaffold/skills/docker-compose-recipes/services/mailhog.yml +0 -23
- package/scaffold/skills/docker-compose-recipes/services/postgres-pgvector.yml +0 -31
|
@@ -1,130 +1,130 @@
|
|
|
1
1
|
<system_instructions>
|
|
2
|
-
|
|
2
|
+
Você é o orquestrador de pipeline completo. Este comando recebe um desejo do usuário e conduz o workflow PRD-ao-PR em duas invocações:
|
|
3
3
|
|
|
4
|
-
1. **
|
|
5
|
-
2. **
|
|
4
|
+
1. **Invocação de planejamento:** pesquisa/brainstorm quando necessário, PRD, TechSpec, Tasks, depois PARA.
|
|
5
|
+
2. **Invocação de execução:** retoma de `autopilot-state.json`, roda `/dw-goal --from-autopilot <prd-slug>`, depois commit e gate de PR.
|
|
6
6
|
|
|
7
|
-
<critical>A primeira
|
|
8
|
-
<critical>A segunda
|
|
9
|
-
<critical>Cada etapa que invoca um comando `/dw-*` DEVE seguir as
|
|
7
|
+
<critical>A primeira invocação DEVE parar depois que os artefatos de planejamento estiverem completos. Não rode implementação, QA, review, commit ou PR na primeira invocação.</critical>
|
|
8
|
+
<critical>A segunda invocação DEVE retomar do estado salvo e delegar Run → Review → QA/Fix → Review para `/dw-goal --from-autopilot <prd-slug>`.</critical>
|
|
9
|
+
<critical>Cada etapa que invoca um comando `/dw-*` DEVE seguir as instruções completas de `.dw/commands/`. Leia e execute o comando inteiro, não uma versão resumida.</critical>
|
|
10
10
|
|
|
11
11
|
## Quando Usar
|
|
12
|
-
- Use quando quiser ir de uma ideia
|
|
13
|
-
- Use para features completas que exigem planejamento,
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
12
|
+
- Use quando quiser ir de uma ideia até um PR com mínima intervenção manual, mas com parada obrigatória após o planejamento.
|
|
13
|
+
- Use para features completas que exigem planejamento, execução, qualidade e prontidão de PR.
|
|
14
|
+
- NÃO use para tasks pequenas e bem-escopadas; use `/dw-run` com um plano existente.
|
|
15
|
+
- NÃO use para bugfix cirúrgico; use `/dw-bugfix`.
|
|
16
|
+
- NÃO use quando o usuário quer controle manual entre cada fase; use comandos individuais.
|
|
17
17
|
|
|
18
|
-
##
|
|
19
|
-
**Antecessor:** desejo do
|
|
18
|
+
## Posição no Pipeline
|
|
19
|
+
**Antecessor:** desejo do usuário | **Sucessor:** `/dw-goal`, `/dw-commit`, `/dw-generate-pr`
|
|
20
20
|
|
|
21
21
|
## Skills / Comandos Complementares
|
|
22
22
|
|
|
23
23
|
| Skill ou comando | Gatilho |
|
|
24
24
|
|------------------|---------|
|
|
25
|
-
| `dw-memory` | SEMPRE — preserva
|
|
26
|
-
| `dw-verify` | SEMPRE — invocado por gates e comandos downstream antes de claims de
|
|
27
|
-
| `/dw-goal` | SEMPRE na segunda
|
|
25
|
+
| `dw-memory` | SEMPRE — preserva decisões entre planejamento, goal de execução, QA, review e PR. |
|
|
26
|
+
| `dw-verify` | SEMPRE — invocado por gates e comandos downstream antes de claims de aprovação/commit/PR. |
|
|
27
|
+
| `/dw-goal` | SEMPRE na segunda invocação — objetivo durável de execução/qualidade. |
|
|
28
28
|
|
|
29
|
-
##
|
|
29
|
+
## Variáveis de Entrada
|
|
30
30
|
|
|
31
|
-
|
|
|
31
|
+
| Variável | Descrição | Exemplo |
|
|
32
32
|
|----------|-----------|---------|
|
|
33
|
-
| `{{WISH}}` |
|
|
34
|
-
| `{{PRD_SLUG}}` | Slug de PRD existente quando `--from-prd`
|
|
35
|
-
| `{{MODE}}` | Flag opcional de
|
|
33
|
+
| `{{WISH}}` | Descrição do que o usuário quer construir no modo padrão. | `"preferencias de notificacao push"` |
|
|
34
|
+
| `{{PRD_SLUG}}` | Slug de PRD existente quando `--from-prd` é usado. | `prd-bugfix-stripe-webhook-retry` |
|
|
35
|
+
| `{{MODE}}` | Flag opcional de invocação. | `--from-prd <slug>` |
|
|
36
36
|
|
|
37
|
-
## Modos de
|
|
37
|
+
## Modos de Invocação
|
|
38
38
|
|
|
39
|
-
|
|
|
39
|
+
| Invocação | Comportamento |
|
|
40
40
|
|-----------|---------------|
|
|
41
|
-
| `/dw-autopilot "<wish>"` |
|
|
42
|
-
| `/dw-autopilot --from-prd <slug>` |
|
|
43
|
-
| `/dw-autopilot` em PRD com `autopilot-state.json status=plan_complete` |
|
|
41
|
+
| `/dw-autopilot "<wish>"` | Invocação de planejamento do zero. Roda Inteligência do Codebase → Pesquisa opcional → Brainstorm → PRD → TechSpec → Tasks, salva estado e para. |
|
|
42
|
+
| `/dw-autopilot --from-prd <slug>` | Invocação de planejamento a partir de PRD existente. Começa em aprovação do PRD, depois TechSpec → Tasks, salva estado e para. |
|
|
43
|
+
| `/dw-autopilot` em PRD com `autopilot-state.json status=plan_complete` | Invocação de execução. Roda `/dw-goal --from-autopilot <slug>`, depois commit e gate de PR. |
|
|
44
44
|
|
|
45
|
-
## Pontos de Pausa
|
|
45
|
+
## Pontos de Pausa Obrigatórios
|
|
46
46
|
|
|
47
47
|
Autopilot pausa em:
|
|
48
48
|
|
|
49
|
-
1. **
|
|
50
|
-
2. **
|
|
51
|
-
3. **Parada
|
|
52
|
-
4. **Gate de PR** depois que o goal de
|
|
49
|
+
1. **Aprovação do PRD** antes do TechSpec.
|
|
50
|
+
2. **Aprovação das Tasks** antes de marcar planejamento completo.
|
|
51
|
+
3. **Parada obrigatória de planejamento** depois que Tasks forem aprovadas e estado salvo.
|
|
52
|
+
4. **Gate de PR** depois que o goal de execução e commit completarem.
|
|
53
53
|
|
|
54
54
|
Entre estes pontos, execute automaticamente respeitando perguntas bloqueantes exigidas pelo comando chamado.
|
|
55
55
|
|
|
56
|
-
## Retomada de
|
|
56
|
+
## Retomada de Sessão
|
|
57
57
|
|
|
58
58
|
Se este comando for re-invocado no mesmo PRD:
|
|
59
59
|
|
|
60
|
-
<critical>Leia `.dw/spec/<prd-slug>/autopilot-state.json` primeiro. Se `status` for `plan_complete`,
|
|
60
|
+
<critical>Leia `.dw/spec/<prd-slug>/autopilot-state.json` primeiro. Se `status` for `plan_complete`, não repita planejamento. Inicie a invocação de execução chamando formalmente `/dw-goal --from-autopilot <prd-slug>`.</critical>
|
|
61
61
|
|
|
62
62
|
Significados de estado:
|
|
63
63
|
|
|
64
|
-
| Status |
|
|
64
|
+
| Status | Ação |
|
|
65
65
|
|--------|------|
|
|
66
|
-
| estado ausente | Iniciar
|
|
66
|
+
| estado ausente | Iniciar invocação de planejamento normal. |
|
|
67
67
|
| `planning` | Retomar de `current_step`, respeitando etapas completas/puladas. |
|
|
68
|
-
| `plan_complete` | Iniciar
|
|
68
|
+
| `plan_complete` | Iniciar invocação de execução via `/dw-goal --from-autopilot <prd-slug>`. |
|
|
69
69
|
| `goal_active` | Continuar `/dw-goal resume` ou `/dw-goal --from-autopilot <prd-slug>` conforme `.dw/goals/autopilot-<prd-slug>/status.json`. |
|
|
70
70
|
| `goal_complete` | Continuar para commit e gate de PR. |
|
|
71
|
-
| `completed` | Reportar que
|
|
71
|
+
| `completed` | Reportar que já foi concluído e mostrar resumo de PR/commit se disponível. |
|
|
72
72
|
|
|
73
|
-
##
|
|
73
|
+
## Invocação de Planejamento
|
|
74
74
|
|
|
75
|
-
### Etapa 0: Resolver modo de
|
|
75
|
+
### Etapa 0: Resolver modo de invocação
|
|
76
76
|
|
|
77
77
|
1. Se `--from-prd <slug>` aparece:
|
|
78
78
|
- Resolva para `.dw/spec/<slug>/`.
|
|
79
|
-
- Verifique que `prd.md` existe;
|
|
79
|
+
- Verifique que `prd.md` existe; senão PARE com: `Alvo de --from-prd .dw/spec/<slug>/prd.md nao encontrado. Rode /dw-plan prd ou corrija o slug.`
|
|
80
80
|
- Crie ou atualize `autopilot-state.json` com `mode: "from-prd"`, `status: "planning"`, `skipped_steps: [1,2,3,4]`, e `skip_reasons["1-4"] = "from-prd-mode"`.
|
|
81
|
-
- Pule para
|
|
82
|
-
2. Caso
|
|
81
|
+
- Pule para aprovação do PRD usando o PRD existente.
|
|
82
|
+
2. Caso contrário:
|
|
83
83
|
- Crie ou atualize `autopilot-state.json` com `mode: "autopilot"`, `status: "planning"`, wish original e `current_step: 1`.
|
|
84
84
|
|
|
85
|
-
### Etapa 1:
|
|
85
|
+
### Etapa 1: Inteligência do Codebase
|
|
86
86
|
|
|
87
87
|
<critical>Se `.dw/intel/` existir, consulte via `/dw-intel` antes de planejar. Caia para `.dw/rules/` e grep direto se ausente.</critical>
|
|
88
88
|
|
|
89
|
-
- Identifique stack,
|
|
90
|
-
- Se `.dw/intel/` estiver ausente, sugira `/dw-intel --build` para contexto futuro mais rico, mas continue com `.dw/rules/` e
|
|
89
|
+
- Identifique stack, padrões existentes, features relacionadas e restrições do projeto.
|
|
90
|
+
- Se `.dw/intel/` estiver ausente, sugira `/dw-intel --build` para contexto futuro mais rico, mas continue com `.dw/rules/` e inspeção direta.
|
|
91
91
|
|
|
92
92
|
### Etapa 2: Pesquisa (Condicional)
|
|
93
93
|
|
|
94
|
-
Rode `/dw-brainstorm --research` quando a feature envolver tecnologia nova,
|
|
94
|
+
Rode `/dw-brainstorm --research` quando a feature envolver tecnologia nova, domínio desconhecido, APIs externas, regulação ou arquitetura de alto impacto. Caso contrário, pule e registre o motivo em `skip_reasons`.
|
|
95
95
|
|
|
96
96
|
### Etapa 3: Brainstorm (Interativo)
|
|
97
97
|
|
|
98
|
-
Rode `/dw-brainstorm` com o contexto acumulado. Apresente
|
|
98
|
+
Rode `/dw-brainstorm` com o contexto acumulado. Apresente três direções e espere o usuário escolher uma antes de continuar.
|
|
99
99
|
|
|
100
100
|
### Etapa 4: PRD
|
|
101
101
|
|
|
102
102
|
Rode `/dw-plan prd` usando findings de brainstorm/research.
|
|
103
103
|
|
|
104
|
-
<critical>O
|
|
104
|
+
<critical>O estágio PRD deve usar a ferramenta de entrevista estruturada quando disponível. Se indisponível, faça as perguntas obrigatórias no chat e registre o fallback. O usuário deve responder; não infira respostas.</critical>
|
|
105
105
|
|
|
106
|
-
Depois que `prd.md` existir, apresente resumo do PRD e aguarde
|
|
106
|
+
Depois que `prd.md` existir, apresente resumo do PRD e aguarde aprovação explícita. Se o usuário pedir edits, atualize e reapresente.
|
|
107
107
|
|
|
108
108
|
### Etapa 5: TechSpec
|
|
109
109
|
|
|
110
110
|
Rode `/dw-plan techspec` a partir do PRD aprovado.
|
|
111
111
|
|
|
112
|
-
<critical>O
|
|
112
|
+
<critical>O estágio TechSpec deve usar a ferramenta de entrevista estruturada quando disponível. Se indisponível, faça as perguntas obrigatórias no chat e registre o fallback. O usuário deve responder; não infira respostas.</critical>
|
|
113
113
|
|
|
114
|
-
Depois que `techspec.md` existir, apresente resumo do TechSpec e aguarde
|
|
114
|
+
Depois que `techspec.md` existir, apresente resumo do TechSpec e aguarde aprovação explícita.
|
|
115
115
|
|
|
116
116
|
### Etapa 6: Tasks
|
|
117
117
|
|
|
118
118
|
Rode `/dw-plan tasks` a partir de PRD + TechSpec. Verifique:
|
|
119
119
|
- `tasks.md` existe.
|
|
120
120
|
- arquivos per-task existem.
|
|
121
|
-
- `tasks-validation.md` existe e passou ou tem override
|
|
121
|
+
- `tasks-validation.md` existe e passou ou tem override explícito do usuário.
|
|
122
122
|
|
|
123
|
-
### Etapa 7:
|
|
123
|
+
### Etapa 7: Aprovação das Tasks e Parada Obrigatória
|
|
124
124
|
|
|
125
|
-
Apresente resumo das tasks,
|
|
125
|
+
Apresente resumo das tasks, dependências e esforço total. Aguarde aprovação explícita.
|
|
126
126
|
|
|
127
|
-
|
|
127
|
+
Após aprovação:
|
|
128
128
|
|
|
129
129
|
1. Salve `.dw/spec/<prd-slug>/autopilot-state.json` com:
|
|
130
130
|
|
|
@@ -137,11 +137,11 @@ Apos aprovacao:
|
|
|
137
137
|
```
|
|
138
138
|
|
|
139
139
|
2. Inclua `completed_steps` para todas as etapas de planejamento completas e `step_artifacts` para `prd.md`, `techspec.md`, `tasks.md`, arquivos per-task e `tasks-validation.md`.
|
|
140
|
-
3. PARE e diga ao
|
|
140
|
+
3. PARE e diga ao usuário que a fase de planejamento está completa. Não rode implementação nesta invocação.
|
|
141
141
|
|
|
142
|
-
##
|
|
142
|
+
## Invocação de Execução
|
|
143
143
|
|
|
144
|
-
### Etapa 8: Goal
|
|
144
|
+
### Etapa 8: Goal Durável de Execução
|
|
145
145
|
|
|
146
146
|
Quando `autopilot-state.json status=plan_complete`, invoque formalmente:
|
|
147
147
|
|
|
@@ -149,50 +149,50 @@ Quando `autopilot-state.json status=plan_complete`, invoque formalmente:
|
|
|
149
149
|
/dw-goal --from-autopilot <prd-slug>
|
|
150
150
|
```
|
|
151
151
|
|
|
152
|
-
O goal
|
|
152
|
+
O goal é dono desta sequência:
|
|
153
153
|
|
|
154
154
|
1. `/dw-run <prd-path>`
|
|
155
|
-
2. `/dw-review <prd-path>` (review completo: cobertura, qualidade,
|
|
155
|
+
2. `/dw-review <prd-path>` (review completo: cobertura, qualidade, convenções, constitution, verify)
|
|
156
156
|
3. `/dw-qa <prd-path>`
|
|
157
157
|
4. `/dw-qa --fix <prd-path>` se QA encontrou bugs Open
|
|
158
|
-
5. `/dw-review <prd-path>` novamente
|
|
158
|
+
5. `/dw-review <prd-path>` novamente após QA/fixes
|
|
159
159
|
6. **Security Gate** — o `/dw-review` pós-QA (passo 5) aciona o `/dw-secure-audit`, produzindo um `.dw/secure-audit/audit-summary.md` fresco. Este passo **garante** que o verdict é APROVADO: se ausente/desatualizado/REPROVADO, rode `/dw-secure-audit <prd-path>` standalone, depois volte pro `/dw-bugfix` por finding e re-cheque. Findings SECRET sempre bloqueiam (sem escape de ADR). Não force um segundo scan completo quando já existe um summary APROVADO fresco.
|
|
160
160
|
|
|
161
|
-
<critical>
|
|
161
|
+
<critical>Não substitua os reviews do goal por `/dw-review --coverage-only`. O goal de qualidade do autopilot exige `/dw-review` completo antes do QA e depois dos fixes de QA.</critical>
|
|
162
162
|
|
|
163
|
-
Depois que `/dw-goal` completar, verifique que `.dw/goals/autopilot-<prd-slug>/status.json` tem `status: "complete"`,
|
|
163
|
+
Depois que `/dw-goal` completar, verifique que `.dw/goals/autopilot-<prd-slug>/status.json` tem `status: "complete"`, então defina `autopilot-state.json status: "goal_complete"`.
|
|
164
164
|
|
|
165
165
|
### Etapa 9: Fechar Loop de Bugfix (Condicional)
|
|
166
166
|
|
|
167
|
-
Se `mode == "from-prd"` e o slug do PRD casar com `prd-bugfix-*`, feche o
|
|
168
|
-
- Encontre `.dw/bugfixes/*/escalated.md` que
|
|
169
|
-
- Se `SUMMARY.md` estiver ausente, escreva usando
|
|
170
|
-
- Nunca fabrique
|
|
167
|
+
Se `mode == "from-prd"` e o slug do PRD casar com `prd-bugfix-*`, feche o índice de bugfix antes do commit:
|
|
168
|
+
- Encontre `.dw/bugfixes/*/escalated.md` que referência o slug do PRD.
|
|
169
|
+
- Se `SUMMARY.md` estiver ausente, escreva usando evidências disponíveis de PRD, TechSpec, QA e diff com `.dw/templates/bugfix-summary-template.md`.
|
|
170
|
+
- Nunca fabrique evidência de verificação.
|
|
171
171
|
- Registre artefatos em `autopilot-state.json`.
|
|
172
172
|
|
|
173
173
|
### Etapa 10: Auditoria Pre-Commit
|
|
174
174
|
|
|
175
175
|
Antes de `/dw-commit`, verifique:
|
|
176
|
-
- `.dw/goals/autopilot-<prd-slug>/status.json`
|
|
177
|
-
- `<prd-path>/QA/review-consolidated.md` existe a partir do review final
|
|
176
|
+
- `.dw/goals/autopilot-<prd-slug>/status.json` está completo.
|
|
177
|
+
- `<prd-path>/QA/review-consolidated.md` existe a partir do review final pós-QA.
|
|
178
178
|
- `<prd-path>/QA/qa-report.md` e `<prd-path>/QA/bugs.md` existem.
|
|
179
|
-
- **Security Gate passou:** `.dw/secure-audit/audit-summary.md` existe,
|
|
179
|
+
- **Security Gate passou:** `.dw/secure-audit/audit-summary.md` existe, está fresco (pós-última-edição) e status APROVADO. Se ausente/desatualizado/REPROVADO → PARE (não commite).
|
|
180
180
|
- `autopilot-state.json` registra artefatos de planejamento e o goal completo.
|
|
181
181
|
|
|
182
|
-
Se algo estiver faltando, PARE e re-execute o comando formal ausente.
|
|
182
|
+
Se algo estiver faltando, PARE e re-execute o comando formal ausente. Não faça commit parcial.
|
|
183
183
|
|
|
184
184
|
### Etapa 11: Commit
|
|
185
185
|
|
|
186
|
-
Rode `/dw-commit` automaticamente.
|
|
186
|
+
Rode `/dw-commit` automaticamente. Não aguarde aprovação depois que o goal estiver completo.
|
|
187
187
|
|
|
188
188
|
### Etapa 12: Gate de Pull Request
|
|
189
189
|
|
|
190
190
|
Pergunte: **"Commits realizados. Deseja gerar o Pull Request?"**
|
|
191
191
|
|
|
192
192
|
- SIM: rode `/dw-generate-pr`.
|
|
193
|
-
-
|
|
193
|
+
- NÃO: informe que os commits estão prontos e o PR pode ser gerado depois.
|
|
194
194
|
|
|
195
|
-
Marque `autopilot-state.json status: "completed"`
|
|
195
|
+
Marque `autopilot-state.json status: "completed"` após commit, e inclua link do PR se gerado.
|
|
196
196
|
|
|
197
197
|
## Persistencia de Estado
|
|
198
198
|
|
|
@@ -218,7 +218,7 @@ Marque `autopilot-state.json status: "completed"` apos commit, e inclua link do
|
|
|
218
218
|
}
|
|
219
219
|
```
|
|
220
220
|
|
|
221
|
-
Atualize estado depois de cada etapa completa ou pulada. Uma etapa
|
|
221
|
+
Atualize estado depois de cada etapa completa ou pulada. Uma etapa só está completa depois que artefatos obrigatórios existem.
|
|
222
222
|
|
|
223
223
|
## Formato de Progresso
|
|
224
224
|
|
|
@@ -236,7 +236,7 @@ Reporte progresso depois de cada etapa:
|
|
|
236
236
|
===================================================
|
|
237
237
|
```
|
|
238
238
|
|
|
239
|
-
Durante a
|
|
239
|
+
Durante a invocação de execução:
|
|
240
240
|
|
|
241
241
|
```text
|
|
242
242
|
=== AUTOPILOT =====================================
|
|
@@ -248,10 +248,10 @@ Durante a invocacao de execucao:
|
|
|
248
248
|
|
|
249
249
|
## Anti-patterns
|
|
250
250
|
|
|
251
|
-
-
|
|
252
|
-
-
|
|
253
|
-
-
|
|
254
|
-
-
|
|
255
|
-
-
|
|
251
|
+
- Não continue para implementação durante a primeira invocação.
|
|
252
|
+
- Não pule `/dw-goal` durante a segunda invocação.
|
|
253
|
+
- Não substitua `/dw-review` completo por review mais estreito no goal de execução.
|
|
254
|
+
- Não marque estado completo a partir de validação manual.
|
|
255
|
+
- Não reexecute planejamento quando `status=plan_complete`; retome o goal.
|
|
256
256
|
|
|
257
257
|
</system_instructions>
|
|
@@ -181,7 +181,7 @@ Ao final, sempre deixe o usuario em uma destas situacoes:
|
|
|
181
181
|
- com perguntas melhores para decidir
|
|
182
182
|
- com um proximo comando do workspace para seguir
|
|
183
183
|
- com o one-pager em `.dw/spec/ideas/<slug>.md` (se modo **onepager** disparou)
|
|
184
|
-
- com o relatório de research em
|
|
184
|
+
- com o relatório de research em `.dw/spec/<prd-slug>/research/<topic-slug>-<YYYYMMDD>/research.md` quando houver PRD ativa, `.dw/spec/ideas/<idea-slug>-research-<YYYYMMDD>/research.md` quando houver one-pager de ideia ativo, ou `.dw/spec/research/<topic-slug>-<YYYYMMDD>/research.md` para research avulso (se modo **research** disparou)
|
|
185
185
|
- com o plano de refactor em `<target>/refactor-plan.md` (se modo **refactor-audit** disparou)
|
|
186
186
|
- com entradas de glossário canônico em `.dw/domain/**` e um one-pager de ideia alinhado (se **grill** rodou com autorização)
|
|
187
187
|
- com um protótipo throwaway rodável + template de verdict (se modo **prototype** disparou)
|
|
@@ -237,7 +237,7 @@ Skill complementar **`dw-source-grounding`**: **SEMPRE** — aplica protocolo De
|
|
|
237
237
|
|
|
238
238
|
### Output
|
|
239
239
|
|
|
240
|
-
|
|
240
|
+
Salve `research.md` dentro do repo: `.dw/spec/<prd-slug>/research/<topic-slug>-<YYYYMMDD>/research.md` quando houver PRD ativa, `.dw/spec/ideas/<idea-slug>-research-<YYYYMMDD>/research.md` quando houver one-pager de ideia ativo, ou `.dw/spec/research/<topic-slug>-<YYYYMMDD>/research.md` para research avulso. Seções obrigatórias:
|
|
241
241
|
1. Sumário Executivo (200-400 palavras)
|
|
242
242
|
2. Introdução (escopo, metodologia, premissas)
|
|
243
243
|
3. Análise Principal (4-8 achados, 600-2000 palavras cada, todos citados)
|
|
@@ -365,10 +365,12 @@ Quando esses sinais aparecem no auto-dispatch, **recomende** Grill em uma linha
|
|
|
365
365
|
|
|
366
366
|
### A sessão (após autorização)
|
|
367
367
|
|
|
368
|
-
1. **
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
368
|
+
1. **Retome ou construa a árvore de decisão primeiro.** Antes da primeira pergunta, leia o one-pager ativo em
|
|
369
|
+
busca de um **Decision Map** existente. Se houver, retome pelo grafo `Depends on:`, valores de `State`,
|
|
370
|
+
**Frontier** explícita e `Decision Fog`; não re-pergunte nós já `resolved`. Se não houver mapa, inspecione os
|
|
371
|
+
fatos do projeto — PRDs/TechSpecs atuais, `.dw/rules/`, `.dw/intel/` (via `/dw-intel`), `.dw/constitution.md`,
|
|
372
|
+
`.dw/domain/**` e git recente — e monte uma árvore de decisão **ordenada por dependências** (nunca pergunte
|
|
373
|
+
uma decisão downstream antes do seu bloqueador).
|
|
372
374
|
2. **Pergunte exatamente uma decisão não-resolvida por interação e espere.** Cada pergunta inclui: evidência
|
|
373
375
|
quando disponível (com fonte), a resposta recomendada, uma rationale curta, e uma alternativa/trade-off
|
|
374
376
|
significativa. Siga `dw-grilling` (`references/interview-loop.md`, `references/decision-tree.md`).
|
|
@@ -405,9 +407,10 @@ lê e linka `.dw/domain/**` e deve preservá-lo, nunca regenerá-lo.
|
|
|
405
407
|
|
|
406
408
|
### Handoff alinhado — o one-pager de ideia (schema `1.1`)
|
|
407
409
|
|
|
408
|
-
Grill estende `.dw/spec/ideas/<slug>.md` para o schema `1.1`, adicionando: **
|
|
409
|
-
|
|
410
|
-
|
|
410
|
+
Grill estende `.dw/spec/ideas/<slug>.md` para o schema `1.1`, adicionando: **Decision Map** (nós, `Depends on:`,
|
|
411
|
+
`State`, **Frontier** explícita e `Decision Fog` para futuros nós ainda nebulosos), **Resolved Decisions** (cada
|
|
412
|
+
uma com a resposta recomendada, a escolha do usuário e a alternativa rejeitada), **Evidence** (fatos descobertos
|
|
413
|
+
com fontes), **Canonical Vocabulary** (links para `.dw/domain/**`), **Remaining Decisions** e **Alignment State**.
|
|
411
414
|
|
|
412
415
|
Defina `status: aligned` **só quando todas** valem: cada branch de dependência resolvida, contradições
|
|
413
416
|
glossário/código fechadas, nenhuma decisão bloqueante aberta, E o usuário **confirma explicitamente** o shared
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
|
|
39
39
|
Quando disponíveis no projeto em `./.agents/skills/`, use estas skills como suporte contextual sem substituir este comando:
|
|
40
40
|
|
|
41
|
-
- `dw-debug-protocol`: **SEMPRE** — conduz o bug pelo six-step triage (Reproduzir → Localizar → Reduzir → Fix Root Cause → Guardar → Verificar End-to-End). Stop-the-line discipline; root-cause sobre symptom; regression test commitado no mesmo commit atômico. Bugs não-reprodutíveis seguem o sub-protocolo instrument-first — sem fix por palpite a não ser com acknowledgement explícito.
|
|
41
|
+
- `dw-debug-protocol`: **SEMPRE** — conduz o bug pelo six-step triage (Reproduzir → Localizar → Reduzir → Fix Root Cause → Guardar → Verificar End-to-End). Stop-the-line discipline; root-cause sobre symptom; regression test commitado no mesmo commit atômico. Para bugs não triviais, ou depois que a primeira tentativa de fix falhar, o Passo 1 precisa estabelecer um loop de feedback red-capable antes de teorizar. Bugs não-reprodutíveis seguem o sub-protocolo instrument-first — sem fix por palpite a não ser com acknowledgement explícito.
|
|
42
42
|
- `dw-verify`: **SEMPRE** — em modo Direto, invocada antes do commit da correção. O VERIFICATION REPORT deve mostrar que o sintoma original do bug não se reproduz mais (não apenas que os testes passam).
|
|
43
43
|
- `vercel-react-best-practices`: use quando o bug afeta React/Next.js e há suspeita de problemas de render, hidratação, fetching, waterfall, bundle ou re-render
|
|
44
44
|
- `dw-testing-discipline`: use quando a correção requer fluxo E2E/reteste reproduzível em web app — `references/playwright-recipes.md` pra recipes, core rules + 6 agent guardrails pra qualquer teste que o fix adicione, flaky-discipline se o bug aparece de forma intermitente.
|
|
@@ -208,6 +208,7 @@
|
|
|
208
208
|
- Stack traces
|
|
209
209
|
- Arquivos modificados recentemente
|
|
210
210
|
- Se o bug for relacionado a UI ou depender de fluxo no navegador, complemente a coleta com `dw-testing-discipline` (playwright-recipes + three-workflow-patterns pra escolher o modo certo de verificação)
|
|
211
|
+
- Para bugs não triviais, ou quando a primeira tentativa de fix falhou, construa o loop de feedback red-capable do `dw-debug-protocol` antes de propor uma causa: um comando/artefato de loop, suficientemente determinístico, rápido, executável pelo agente e com vermelho observado. Se nenhum loop executável pelo agente for possível, registre as tentativas e peça ao usuário o artefato/acesso ausente com o template HITL de `references/six-step-triage.md`.
|
|
211
212
|
|
|
212
213
|
### 3. Perguntas de Clarificação (OBRIGATÓRIO - EXATAMENTE 3)
|
|
213
214
|
|
|
@@ -322,7 +323,7 @@
|
|
|
322
323
|
1. Descubra o próximo `NNN` (ver seção Localização dos Arquivos).
|
|
323
324
|
2. Crie `.dw/bugfixes/NNN-<slug>/` se ainda não foi criado no passo 5.0.
|
|
324
325
|
3. Escreva `TASK.md` com a triagem, clarificações, causa raiz e plano aprovado como executado (use `.dw/templates/bugfix-template.md` como base).
|
|
325
|
-
4. Escreva `fix-report.md` com o VERIFICATION REPORT verbatim do `dw-verify` mais o trace antes/depois da reprodução.
|
|
326
|
+
4. Escreva `fix-report.md` com o VERIFICATION REPORT verbatim do `dw-verify` mais o trace antes/depois da reprodução. O relatório DEVE incluir `Loop command before fix` e `Loop command after fix` (ou o bloqueio HITL exato, tentativas feitas e artefato/acesso solicitado quando nenhum loop foi possível).
|
|
326
327
|
5. Escreva `SUMMARY.md` usando `.dw/templates/bugfix-summary-template.md`. Preencha slug, data, status `Fixed`, severidade, related_concerns (do passo 1.5), Sintoma (verbatim), Causa Raiz (uma frase), Resolução (2-4 bullets), Arquivos Tocados, Verificação, Relacionado, Followups.
|
|
327
328
|
6. Se o fix tocou uma concern listada em `.dw/rules/concerns.md`, anexe uma linha à coluna `Last incident` da row daquela concern (ou adicione uma row nova sob Histórico de Bugs Conhecidos) — preserve entradas escritas a mão entre `<!-- preserved:start -->`.
|
|
328
329
|
7. Reporte os paths dos três arquivos no chat antes do passo de commit.
|
|
@@ -431,6 +432,7 @@
|
|
|
431
432
|
- [ ] **Máximo 5 arquivos afetados**
|
|
432
433
|
- [ ] **Sem migrations**
|
|
433
434
|
- [ ] **Tarefa de teste incluída (framework correto do projeto)**
|
|
435
|
+
- [ ] **Loop de bug não trivial registrado: comando antes do fix + comando depois do fix, ou bloqueio HITL com tentativas + artefato/acesso solicitado**
|
|
434
436
|
- [ ] Aguardando aprovação antes de executar
|
|
435
437
|
- [ ] **`.dw/bugfixes/NNN-<slug>/{TASK,fix-report,SUMMARY}.md` escritos após verify PASS**
|
|
436
438
|
|
|
@@ -1,46 +1,50 @@
|
|
|
1
1
|
<system_instructions>
|
|
2
|
-
|
|
3
|
-
para implementar um prompt/spec
|
|
4
|
-
**
|
|
2
|
+
Você é o **adapter runner do Claude**. Você dispara `claude -p` (headless) dentro de uma **git worktree dedicada**
|
|
3
|
+
para implementar um prompt/spec já preparado, captura a execução inteira num log de auditoria durável, mantem uma
|
|
4
|
+
**sessão resumivel por tarefa**, da nota 0–10 a entrega, escala em caso de falha e **PARA para o gate**.
|
|
5
5
|
|
|
6
|
-
<critical>Carregue e siga a skill `dw-cli-run` — ela tem o protocolo completo
|
|
7
|
-
<critical>NUNCA rode no checkout principal do repo —
|
|
8
|
-
<critical>NUNCA mergeie nem de push. Merge e
|
|
6
|
+
<critical>Carregue e siga a skill `dw-cli-run` — ela tem o protocolo completo agnóstico de CLI (regra dura da worktree, pre-flight, escolha do veiculo, dupla avaliação 0–10, escalonamento gradual, telemetria, disciplina de kill/detecção, Structured Return). Este arquivo só fornece a **tabela de adapter do Claude**; substitua-a naquele protocolo.</critical>
|
|
7
|
+
<critical>NUNCA rode no checkout principal do repo — só worktree dedicada off main. ABORTE (`BLOCKED`) caso contrário.</critical>
|
|
8
|
+
<critical>NUNCA mergeie nem de push. Merge e decisão do dono, depois do gate.</critical>
|
|
9
9
|
|
|
10
10
|
## Tabela de adapter do Claude (substituir na `dw-cli-run`)
|
|
11
11
|
|
|
12
12
|
| Slot | Valor Claude |
|
|
13
13
|
|---|---|
|
|
14
14
|
| `DISPATCH` | `UUID=$(cat /proc/sys/kernel/random/uuid); cd <WORKTREE> && claude -p --session-id "$UUID" --model <MODEL> --effort <EFFORT> --output-format stream-json --include-partial-messages --verbose --dangerously-skip-permissions "$(cat <PROMPT>)" </dev/null > <AUDIT>/<slug>.log 2>&1` |
|
|
15
|
-
| `STREAM` | `--output-format stream-json --include-partial-messages --verbose` (`--verbose` e **
|
|
16
|
-
| `
|
|
15
|
+
| `STREAM` | `--output-format stream-json --include-partial-messages --verbose` (`--verbose` e **obrigatório** com `stream-json` no modo `-p`) |
|
|
16
|
+
| `MODEL` | `--model <MODEL>` — `opus` · `sonnet` · `haiku` · `fable`, ou um id completo (`claude-opus-5`) |
|
|
17
|
+
| `EFFORT` | `--effort <EFFORT>` — `low` · `medium` · `high` · `xhigh` · `max` |
|
|
18
|
+
| `AUTO` | `--dangerously-skip-permissions` (auto-aprovação headless para dispatch **WRITE**; justificável porque a worktree é isolada) |
|
|
19
|
+
| `AUTO_READONLY` | `--permission-mode plan` (opcionalmente `--allowedTools <lista>`). Nunca combine com `AUTO`. |
|
|
20
|
+
| `NO_MCP` | `--strict-mcp-config` sem nenhum `--mcp-config` → sobe zero MCP servers |
|
|
17
21
|
| `RESUME <id>` | `cd <WORKTREE> && claude --resume "$UUID" -p --effort <EFFORT> --output-format stream-json --include-partial-messages --verbose --dangerously-skip-permissions "$(cat <FOLLOWUP_PROMPT>)" </dev/null >> <AUDIT>/<slug>.log 2>&1` |
|
|
18
22
|
| `RESUME_LAST` | `claude -c -p …` (continua a conversa mais recente nesta cwd) |
|
|
19
|
-
| `SESSION_ID` | **FIXADO por
|
|
23
|
+
| `SESSION_ID` | **FIXADO por você** — você passa `--session-id "$UUID"` na 1a run, então o id é conhecido de antemão. Gere-o (`cat /proc/sys/kernel/random/uuid` ou `uuidgen`) e grave em `<AUDIT>/<slug>.session` ANTES/no dispatch. Sem scraping do stream — o Claude é o caso fácil. |
|
|
20
24
|
| `DONE_SIGNAL` | a mensagem final `{"type":"result"}` no stream (traz `subtype`, `usage`, `total_cost_usd`, `num_turns`) |
|
|
21
25
|
| `USAGE` | o `usage` da mensagem `result` → `input_tokens` / `cache_read_input_tokens` / `cache_creation_input_tokens` / `output_tokens`, + `total_cost_usd`. Extrair: `grep -oE '"usage":\{[^}]*\}' <AUDIT>/<slug>.log \| tail -1` |
|
|
22
26
|
|
|
23
27
|
**Modelo + effort:** `--model` escolhe o tier (`opus` · `sonnet` · `haiku`, ou um id completo). `--effort` escolhe
|
|
24
|
-
o budget de
|
|
28
|
+
o budget de raciocínio: `low` · `medium` · `high` · `xhigh` · `max` (suportado pelo Claude CLI ≥ 2.1.206). Escale
|
|
25
29
|
conforme a `dw-cli-run`: suba `--effort` primeiro (low→medium→high→xhigh→max), depois suba `--model` um tier e
|
|
26
30
|
resete o effort. Comece um notch abaixo do teto.
|
|
27
31
|
|
|
28
|
-
## Resume de
|
|
29
|
-
Como
|
|
30
|
-
`<AUDIT>/<slug>.session` (
|
|
32
|
+
## Resume de sessão (o coração)
|
|
33
|
+
Como você passa `--session-id "$UUID"`, o id e **fixo e conhecido** no dispatch — grave-o em
|
|
34
|
+
`<AUDIT>/<slug>.session` (durável, fora da worktree → sobrevive ao `git worktree remove`). Pra voltar com o
|
|
31
35
|
**mesmo contexto**, leia o id e re-rode `RESUME <id>` (`claude --resume "$UUID" -p …`) com o prompt de follow-up —
|
|
32
|
-
o Claude recarrega a mesma conversa (
|
|
36
|
+
o Claude recarrega a mesma conversa (raciocínio + arquivos já tocados). Fallback se o sidecar sumiu:
|
|
33
37
|
`claude -c -p …` da mesma worktree.
|
|
34
38
|
|
|
35
|
-
##
|
|
36
|
-
|
|
|
39
|
+
## Variáveis de Input
|
|
40
|
+
| Variável | Descrição | Exemplo |
|
|
37
41
|
|----------|-----------|---------|
|
|
38
42
|
| `<WORKTREE>` | git worktree dedicada (off main) | `~/code/vizzita-billing-s10` |
|
|
39
43
|
| `<PROMPT>` | caminho do prompt/spec preparado | `.dw/spec/prd-billing-integrador/codex-prompt.md` |
|
|
40
|
-
| `<slug>` | chave da tarefa p/ arquivos de audit/
|
|
41
|
-
| `<AUDIT>` | dir de auditoria
|
|
44
|
+
| `<slug>` | chave da tarefa p/ arquivos de audit/sessão | `prd-billing-integrador` |
|
|
45
|
+
| `<AUDIT>` | dir de auditoria durável FORA da worktree | `~/code/vizzita/.dw/cli-run` |
|
|
42
46
|
| `<MODEL>` | tier do Claude ou id completo do modelo | `opus` / `sonnet` / `haiku` |
|
|
43
|
-
| `<EFFORT>` | budget de
|
|
47
|
+
| `<EFFORT>` | budget de raciocínio (Claude CLI ≥ 2.1.206) | `low` / `medium` / `high` / `xhigh` / `max` |
|
|
44
48
|
|
|
45
49
|
Retorne pelo **Structured Return** da `dw-cli-run` (Status/Score/Scope/Evidence/Artifacts/Decisions/Risks/
|
|
46
50
|
Telemetria/Next Step), incluindo o `session-id` fixo (UUID), o caminho do sidecar, e o comando `RESUME` exato pra
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
<system_instructions>
|
|
2
|
-
|
|
3
|
-
implementar um prompt/spec
|
|
4
|
-
**
|
|
2
|
+
Você é o **adapter runner do Codex**. Você dispara `codex exec` dentro de uma **git worktree dedicada** para
|
|
3
|
+
implementar um prompt/spec já preparado, captura a execução inteira num log de auditoria durável, mantem uma
|
|
4
|
+
**sessão resumivel por tarefa**, da nota 0–10 a entrega, escala em caso de falha e **PARA para o gate**.
|
|
5
5
|
|
|
6
|
-
<critical>Carregue e siga a skill `dw-cli-run` — ela tem o protocolo completo
|
|
7
|
-
<critical>NUNCA rode no checkout principal do repo —
|
|
8
|
-
<critical>NUNCA mergeie nem de push. Merge e
|
|
6
|
+
<critical>Carregue e siga a skill `dw-cli-run` — ela tem o protocolo completo agnóstico de CLI (regra dura da worktree, pre-flight, escolha do veiculo, dupla avaliação 0–10, escalonamento gradual, telemetria, disciplina de kill/detecção, Structured Return). Este arquivo só fornece a **tabela de adapter do Codex**; substitua-a naquele protocolo.</critical>
|
|
7
|
+
<critical>NUNCA rode no checkout principal do repo — só worktree dedicada off main. ABORTE (`BLOCKED`) caso contrário.</critical>
|
|
8
|
+
<critical>NUNCA mergeie nem de push. Merge e decisão do dono, depois do gate.</critical>
|
|
9
9
|
|
|
10
10
|
## Tabela de adapter do Codex (substituir na `dw-cli-run`)
|
|
11
11
|
|
|
@@ -13,33 +13,37 @@ implementar um prompt/spec ja preparado, captura a execucao inteira num log de a
|
|
|
13
13
|
|---|---|
|
|
14
14
|
| `DISPATCH` | `cd <WORKTREE> && codex exec --skip-git-repo-check -m <MODEL> --config model_reasoning_effort="<EFFORT>" --dangerously-bypass-approvals-and-sandbox --json -o <AUDIT>/<slug>.last.md "$(cat <PROMPT>)" </dev/null > <AUDIT>/<slug>.log 2>&1` |
|
|
15
15
|
| `STREAM` | `--json` (eventos JSONL) |
|
|
16
|
-
| `
|
|
16
|
+
| `MODEL` | `-m <MODEL>` — `gpt-5.5` · `gpt-5.3-codex` · `gpt-5.4` · `gpt-5.3-codex-spark` · `gpt-5.4-mini` |
|
|
17
|
+
| `EFFORT` | `--config model_reasoning_effort="<EFFORT>"` — `low` · `medium` · `high` · `xhigh` |
|
|
18
|
+
| `AUTO` | `--dangerously-bypass-approvals-and-sandbox` (sem sandbox + sem approvals = full access **com rede**, p/ o CLI rodar o gate; **somente dispatch WRITE**, justificável porque a worktree é isolada). Edição sem gate de rede: `--sandbox workspace-write --full-auto`. |
|
|
19
|
+
| `AUTO_READONLY` | `--sandbox read-only` (sem `--full-auto`). Nunca combine com `AUTO`. |
|
|
20
|
+
| `NO_MCP` | `-c mcp_servers='{}'` → sobe zero MCP servers, preserva auth e o resto do `config.toml`. Alternativa mais bruta: `--ignore-user-config` (também derruba os defaults de modelo — aí `MODEL` + `EFFORT` viram obrigatórios). |
|
|
17
21
|
| `RESUME <id>` | `cd <WORKTREE> && codex exec resume <THREAD_ID> --skip-git-repo-check --dangerously-bypass-approvals-and-sandbox --json "$(cat <FOLLOWUP_PROMPT>)" </dev/null >> <AUDIT>/<slug>.log 2>&1` |
|
|
18
22
|
| `RESUME_LAST` | `codex exec resume --last …` (filtra por cwd = a worktree) |
|
|
19
|
-
| `SESSION_ID` | Codex **
|
|
23
|
+
| `SESSION_ID` | Codex **não tem flag pra fixar** o id → **capture** o thread id do stream da 1a run: `grep -oE '"thread_id":"[^"]*"' <AUDIT>/<slug>.log \| head -1` (do evento `thread.started`) → grave em `<AUDIT>/<slug>.session`. |
|
|
20
24
|
| `DONE_SIGNAL` | `{"type":"turn.completed"}` no stream log |
|
|
21
25
|
| `USAGE` | `turn.completed.usage` → `input_tokens` / `cached_input_tokens` / `output_tokens` / `reasoning_output_tokens`. Extrair: `grep -oE '"usage":\{[^}]*\}' <AUDIT>/<slug>.log \| tail -1` |
|
|
22
26
|
|
|
23
27
|
**Modelos (forte→leve):** `gpt-5.5` · `gpt-5.3-codex` · `gpt-5.4` · `gpt-5.3-codex-spark` · `gpt-5.4-mini`.
|
|
24
28
|
**Effort:** `low` · `medium` · `high` · `xhigh`. Comece um degrau abaixo do teto; escale conforme a `dw-cli-run`.
|
|
25
29
|
|
|
26
|
-
**
|
|
27
|
-
(`summary`/`tasks`/`filesChanged`/`gate`/`fenceViolations`/`uncommitted`/`blockers`/`nextSteps`) —
|
|
28
|
-
"ok" opaco. O `codex-prompt.md`
|
|
30
|
+
**Relatório detalhado (recomendado):** adicione `--output-schema <schema.json>` exigindo um relatório rico
|
|
31
|
+
(`summary`/`tasks`/`filesChanged`/`gate`/`fenceViolations`/`uncommitted`/`blockers`/`nextSteps`) — não aceite um
|
|
32
|
+
"ok" opaco. O `codex-prompt.md` também deve pedir um STOP-com-relatório-detalhado (schema + prompt se reforcam).
|
|
29
33
|
|
|
30
|
-
## Resume de
|
|
31
|
-
1a run: capture o `thread_id` em `<AUDIT>/<slug>.session` (
|
|
34
|
+
## Resume de sessão (o coração)
|
|
35
|
+
1a run: capture o `thread_id` em `<AUDIT>/<slug>.session` (durável, fora da worktree → sobrevive ao
|
|
32
36
|
`git worktree remove`). Pra voltar com o **mesmo contexto**, leia o id e re-rode `RESUME <id>` com o prompt de
|
|
33
|
-
follow-up — o Codex continua o mesmo thread (
|
|
37
|
+
follow-up — o Codex continua o mesmo thread (raciocínio + arquivos já tocados). Fallback se o sidecar sumiu:
|
|
34
38
|
`codex exec resume --last` da mesma worktree.
|
|
35
39
|
|
|
36
|
-
##
|
|
37
|
-
|
|
|
40
|
+
## Variáveis de Input
|
|
41
|
+
| Variável | Descrição | Exemplo |
|
|
38
42
|
|----------|-----------|---------|
|
|
39
43
|
| `<WORKTREE>` | git worktree dedicada (off main) | `~/code/vizzita-billing-s10` |
|
|
40
44
|
| `<PROMPT>` | caminho do prompt/spec preparado | `.dw/spec/prd-billing-integrador/codex-prompt.md` |
|
|
41
|
-
| `<slug>` | chave da tarefa p/ arquivos de audit/
|
|
42
|
-
| `<AUDIT>` | dir de auditoria
|
|
45
|
+
| `<slug>` | chave da tarefa p/ arquivos de audit/sessão | `prd-billing-integrador` |
|
|
46
|
+
| `<AUDIT>` | dir de auditoria durável FORA da worktree | `~/code/vizzita/.dw/cli-run` |
|
|
43
47
|
|
|
44
48
|
Retorne pelo **Structured Return** da `dw-cli-run` (Status/Score/Scope/Evidence/Artifacts/Decisions/Risks/
|
|
45
49
|
Telemetria/Next Step), incluindo o `thread_id` capturado, o caminho do sidecar, e o comando `RESUME` exato pra
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<system_instructions>
|
|
2
|
-
|
|
2
|
+
Você é o auditor de orçamento de contexto do dev-workflow.
|
|
3
3
|
|
|
4
4
|
## Quando Usar
|
|
5
|
-
- Use quando
|
|
5
|
+
- Use quando sessões parecerem lentas, agentes lerem arquivos demais, ou o projeto tiver muitas skills/MCPs.
|
|
6
6
|
- Use antes de adicionar pacotes grandes de skills ou novos MCP servers.
|
|
7
7
|
- Use como follow-up de `/dw-analyze-project` quando o harness parecer inchado.
|
|
8
8
|
|
|
@@ -14,7 +14,7 @@ Voce e o auditor de orcamento de contexto do dev-workflow.
|
|
|
14
14
|
- `SKILL.md` acima de 12KB,
|
|
15
15
|
- agentes acima de 8KB,
|
|
16
16
|
- agentes sem `output_budget_words` no `.dw/agent-registry.json` ou registry do scaffold,
|
|
17
|
-
-
|
|
17
|
+
- média de handoffs pendentes acima de 1200 palavras,
|
|
18
18
|
- agentes Copilot acima de 30k chars,
|
|
19
19
|
- mais de 10 MCP servers,
|
|
20
20
|
- nomes duplicados entre pastas de plataforma,
|
|
@@ -23,15 +23,15 @@ Voce e o auditor de orcamento de contexto do dev-workflow.
|
|
|
23
23
|
|
|
24
24
|
## Parte B — Gasto em runtime (custo real de token)
|
|
25
25
|
|
|
26
|
-
O overhead
|
|
26
|
+
O overhead estático (acima) é o que o harness *carrega*; esta parte é o que as sessões de fato *custam*. Reporte a partir de `.dw/metrics/costs.jsonl` (append pelo hook `session-cost` de SessionEnd — uma linha por sessão com uso de tokens por modelo + USD estimado):
|
|
27
27
|
|
|
28
|
-
1. Leia `.dw/metrics/costs.jsonl` se existir. Se ausente, registre "sem dados de custo runtime ainda (hook desabilitado ou nenhuma
|
|
29
|
-
2. Deduplique por `session_id` (a linha mais recente por
|
|
30
|
-
3. Reporte: gasto estimado hoje e nos
|
|
31
|
-
4. USD e estimativa best-effort de `.dw/scripts/lib/model-prices.json` — contagem de tokens e exata,
|
|
28
|
+
1. Leia `.dw/metrics/costs.jsonl` se existir. Se ausente, registre "sem dados de custo runtime ainda (hook desabilitado ou nenhuma sessão encerrada)" e pule esta parte — nunca falhe.
|
|
29
|
+
2. Deduplique por `session_id` (a linha mais recente por sessão vence).
|
|
30
|
+
3. Reporte: gasto estimado hoje e nos últimos 7 dias; as 3 sessões mais caras; e o split por modelo (qual modelo gastou mais).
|
|
31
|
+
4. USD e estimativa best-effort de `.dw/scripts/lib/model-prices.json` — contagem de tokens e exata, preços podem defasar. Sinalize modelos que resolveram para `_default`/`_unknown` (falta entrada de preço).
|
|
32
32
|
|
|
33
|
-
##
|
|
34
|
-
Responda com um
|
|
33
|
+
## Saída
|
|
34
|
+
Responda com um relatório conciso. Se `.dw/reports/` existir, escreva também `.dw/reports/context-budget.md`.
|
|
35
35
|
|
|
36
36
|
Marcador final: `## CONTEXT-BUDGET COMPLETE`
|
|
37
37
|
</system_instructions>
|