@brunosps00/dev-workflow 2.0.0 → 2.2.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 +176 -0
- package/README.md +10 -5
- package/lib/build-plugin.js +4 -1
- package/lib/constants.js +8 -2
- package/lib/init.js +26 -0
- package/lib/validate.js +21 -0
- package/package.json +1 -1
- package/scaffold/en/agent-instructions.md +2 -0
- package/scaffold/en/commands/dw-autopilot.md +2 -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 +1 -1
- package/scaffold/en/commands/dw-codex-run.md +1 -1
- package/scaffold/en/commands/dw-copilot-run.md +1 -1
- package/scaffold/en/commands/dw-harness-audit.md +2 -0
- package/scaffold/en/commands/dw-help.md +6 -2
- package/scaffold/en/commands/dw-pause.md +1 -0
- package/scaffold/en/commands/dw-plan.md +2 -2
- package/scaffold/en/commands/dw-refactor.md +1 -0
- package/scaffold/en/commands/dw-report.md +169 -0
- package/scaffold/en/commands/dw-review.md +33 -2
- package/scaffold/en/commands/dw-run.md +3 -1
- package/scaffold/en/commands/dw-triage.md +220 -0
- package/scaffold/en/commands/dw-worktree.md +100 -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/agent-instructions.md +2 -0
- package/scaffold/pt-br/commands/dw-autopilot.md +83 -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 +20 -20
- package/scaffold/pt-br/commands/dw-codex-run.md +20 -20
- package/scaffold/pt-br/commands/dw-context-budget.md +10 -10
- package/scaffold/pt-br/commands/dw-copilot-run.md +21 -21
- 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 +13 -11
- package/scaffold/pt-br/commands/dw-help.md +6 -2
- 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 +40 -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-report.md +169 -0
- 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 +3 -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/commands/dw-worktree.md +100 -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 +42 -24
- package/scaffold/scripts/lib/worktree-gc.mjs +460 -0
- package/scaffold/skill-registry.json +1 -1
- package/scaffold/skills/dw-cli-run/SKILL.md +10 -1
- 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,50 +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 **
|
|
15
|
+
| `STREAM` | `--output-format stream-json --include-partial-messages --verbose` (`--verbose` e **obrigatório** com `stream-json` no modo `-p`) |
|
|
16
16
|
| `MODEL` | `--model <MODEL>` — `opus` · `sonnet` · `haiku` · `fable`, ou um id completo (`claude-opus-5`) |
|
|
17
17
|
| `EFFORT` | `--effort <EFFORT>` — `low` · `medium` · `high` · `xhigh` · `max` |
|
|
18
|
-
| `AUTO` | `--dangerously-skip-permissions` (auto-
|
|
18
|
+
| `AUTO` | `--dangerously-skip-permissions` (auto-aprovação headless para dispatch **WRITE**; justificável porque a worktree é isolada) |
|
|
19
19
|
| `AUTO_READONLY` | `--permission-mode plan` (opcionalmente `--allowedTools <lista>`). Nunca combine com `AUTO`. |
|
|
20
20
|
| `NO_MCP` | `--strict-mcp-config` sem nenhum `--mcp-config` → sobe zero MCP servers |
|
|
21
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` |
|
|
22
22
|
| `RESUME_LAST` | `claude -c -p …` (continua a conversa mais recente nesta cwd) |
|
|
23
|
-
| `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. |
|
|
24
24
|
| `DONE_SIGNAL` | a mensagem final `{"type":"result"}` no stream (traz `subtype`, `usage`, `total_cost_usd`, `num_turns`) |
|
|
25
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` |
|
|
26
26
|
|
|
27
27
|
**Modelo + effort:** `--model` escolhe o tier (`opus` · `sonnet` · `haiku`, ou um id completo). `--effort` escolhe
|
|
28
|
-
o budget de
|
|
28
|
+
o budget de raciocínio: `low` · `medium` · `high` · `xhigh` · `max` (suportado pelo Claude CLI ≥ 2.1.206). Escale
|
|
29
29
|
conforme a `dw-cli-run`: suba `--effort` primeiro (low→medium→high→xhigh→max), depois suba `--model` um tier e
|
|
30
30
|
resete o effort. Comece um notch abaixo do teto.
|
|
31
31
|
|
|
32
|
-
## Resume de
|
|
33
|
-
Como
|
|
34
|
-
`<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
|
|
35
35
|
**mesmo contexto**, leia o id e re-rode `RESUME <id>` (`claude --resume "$UUID" -p …`) com o prompt de follow-up —
|
|
36
|
-
o Claude recarrega a mesma conversa (
|
|
36
|
+
o Claude recarrega a mesma conversa (raciocínio + arquivos já tocados). Fallback se o sidecar sumiu:
|
|
37
37
|
`claude -c -p …` da mesma worktree.
|
|
38
38
|
|
|
39
|
-
##
|
|
40
|
-
|
|
|
39
|
+
## Variáveis de Input
|
|
40
|
+
| Variável | Descrição | Exemplo |
|
|
41
41
|
|----------|-----------|---------|
|
|
42
|
-
| `<WORKTREE>` | git worktree dedicada (off main) | `~/code/vizzita-billing-s10` |
|
|
42
|
+
| `<WORKTREE>` | git worktree dedicada (off main) — crie com `/dw-worktree create <slug>` (prep incluído); após o gate e o merge, remova no mesmo turno com `/dw-worktree merge <slug>` | `~/code/vizzita-billing-s10` |
|
|
43
43
|
| `<PROMPT>` | caminho do prompt/spec preparado | `.dw/spec/prd-billing-integrador/codex-prompt.md` |
|
|
44
|
-
| `<slug>` | chave da tarefa p/ arquivos de audit/
|
|
45
|
-
| `<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` |
|
|
46
46
|
| `<MODEL>` | tier do Claude ou id completo do modelo | `opus` / `sonnet` / `haiku` |
|
|
47
|
-
| `<EFFORT>` | budget de
|
|
47
|
+
| `<EFFORT>` | budget de raciocínio (Claude CLI ≥ 2.1.206) | `low` / `medium` / `high` / `xhigh` / `max` |
|
|
48
48
|
|
|
49
49
|
Retorne pelo **Structured Return** da `dw-cli-run` (Status/Score/Scope/Evidence/Artifacts/Decisions/Risks/
|
|
50
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
|
|
|
@@ -15,35 +15,35 @@ implementar um prompt/spec ja preparado, captura a execucao inteira num log de a
|
|
|
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
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**,
|
|
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
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` (
|
|
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). |
|
|
21
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` |
|
|
22
22
|
| `RESUME_LAST` | `codex exec resume --last …` (filtra por cwd = a worktree) |
|
|
23
|
-
| `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`. |
|
|
24
24
|
| `DONE_SIGNAL` | `{"type":"turn.completed"}` no stream log |
|
|
25
25
|
| `USAGE` | `turn.completed.usage` → `input_tokens` / `cached_input_tokens` / `output_tokens` / `reasoning_output_tokens`. Extrair: `grep -oE '"usage":\{[^}]*\}' <AUDIT>/<slug>.log \| tail -1` |
|
|
26
26
|
|
|
27
27
|
**Modelos (forte→leve):** `gpt-5.5` · `gpt-5.3-codex` · `gpt-5.4` · `gpt-5.3-codex-spark` · `gpt-5.4-mini`.
|
|
28
28
|
**Effort:** `low` · `medium` · `high` · `xhigh`. Comece um degrau abaixo do teto; escale conforme a `dw-cli-run`.
|
|
29
29
|
|
|
30
|
-
**
|
|
31
|
-
(`summary`/`tasks`/`filesChanged`/`gate`/`fenceViolations`/`uncommitted`/`blockers`/`nextSteps`) —
|
|
32
|
-
"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).
|
|
33
33
|
|
|
34
|
-
## Resume de
|
|
35
|
-
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
|
|
36
36
|
`git worktree remove`). Pra voltar com o **mesmo contexto**, leia o id e re-rode `RESUME <id>` com o prompt de
|
|
37
|
-
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:
|
|
38
38
|
`codex exec resume --last` da mesma worktree.
|
|
39
39
|
|
|
40
|
-
##
|
|
41
|
-
|
|
|
40
|
+
## Variáveis de Input
|
|
41
|
+
| Variável | Descrição | Exemplo |
|
|
42
42
|
|----------|-----------|---------|
|
|
43
|
-
| `<WORKTREE>` | git worktree dedicada (off main) | `~/code/vizzita-billing-s10` |
|
|
43
|
+
| `<WORKTREE>` | git worktree dedicada (off main) — crie com `/dw-worktree create <slug>` (prep incluído); após o gate e o merge, remova no mesmo turno com `/dw-worktree merge <slug>` | `~/code/vizzita-billing-s10` |
|
|
44
44
|
| `<PROMPT>` | caminho do prompt/spec preparado | `.dw/spec/prd-billing-integrador/codex-prompt.md` |
|
|
45
|
-
| `<slug>` | chave da tarefa p/ arquivos de audit/
|
|
46
|
-
| `<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` |
|
|
47
47
|
|
|
48
48
|
Retorne pelo **Structured Return** da `dw-cli-run` (Status/Score/Scope/Evidence/Artifacts/Decisions/Risks/
|
|
49
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>
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
<system_instructions>
|
|
2
|
-
|
|
3
|
-
worktree dedicada** para implementar um prompt/spec
|
|
4
|
-
|
|
2
|
+
Você é o **adapter runner do Copilot**. Você dispara o GitHub Copilot CLI (`copilot -p`) dentro de uma **git
|
|
3
|
+
worktree dedicada** para implementar um prompt/spec já preparado, captura a execução inteira num log de auditoria
|
|
4
|
+
durável, mantem uma **sessão resumivel por tarefa**, da nota 0–10 a entrega, escala em caso de falha e **PARA para
|
|
5
5
|
o gate**.
|
|
6
6
|
|
|
7
|
-
<critical>Carregue e siga a skill `dw-cli-run` — ela tem o protocolo completo
|
|
8
|
-
<critical>NUNCA rode no checkout principal do repo —
|
|
9
|
-
<critical>NUNCA mergeie nem de push. Merge e
|
|
7
|
+
<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 Copilot**; substitua-a naquele protocolo.</critical>
|
|
8
|
+
<critical>NUNCA rode no checkout principal do repo — só worktree dedicada off main. ABORTE (`BLOCKED`) caso contrário.</critical>
|
|
9
|
+
<critical>NUNCA mergeie nem de push. Merge e decisão do dono, depois do gate.</critical>
|
|
10
10
|
|
|
11
11
|
## Tabela de adapter do Copilot (substituir na `dw-cli-run`)
|
|
12
12
|
|
|
@@ -14,34 +14,34 @@ o gate**.
|
|
|
14
14
|
|---|---|
|
|
15
15
|
| `DISPATCH` | `cd <WORKTREE> && copilot -p "$(cat <PROMPT>)" --allow-all --model <MODEL> --output-format json </dev/null > <AUDIT>/<slug>.log 2>&1` |
|
|
16
16
|
| `STREAM` | `--output-format json` (registros JSONL) |
|
|
17
|
-
| `AUTO` | `--allow-all` (auto-
|
|
18
|
-
| `RESUME <id>` | `cd <WORKTREE> && copilot --resume="<SESSION_ID>" -p "$(cat <FOLLOWUP_PROMPT>)" --allow-all --output-format json </dev/null >> <AUDIT>/<slug>.log 2>&1` (
|
|
19
|
-
| `RESUME_LAST` | `copilot --continue -p …` (continua a
|
|
20
|
-
| `SESSION_ID` | O `--resume`/`--session-id` do Copilot **RESUMEM** uma
|
|
17
|
+
| `AUTO` | `--allow-all` (auto-aprovação de todo uso de tool/comando; justificável porque a worktree é isolada). Somente leitura/análise: tire-o e deixe negar no prompt, ou escope com `--allow-tool`/`--deny-tool`. |
|
|
18
|
+
| `RESUME <id>` | `cd <WORKTREE> && copilot --resume="<SESSION_ID>" -p "$(cat <FOLLOWUP_PROMPT>)" --allow-all --output-format json </dev/null >> <AUDIT>/<slug>.log 2>&1` (também: `--connect=<SESSION_ID>`) |
|
|
19
|
+
| `RESUME_LAST` | `copilot --continue -p …` (continua a sessão mais recente nesta cwd) |
|
|
20
|
+
| `SESSION_ID` | O `--resume`/`--session-id` do Copilot **RESUMEM** uma sessão existente (não fixam uma nova) → **capture** o id da 1a run: varra o stream/log pelo registro do session id, ou leia o dir mais novo em `~/.copilot/logs` / `~/.copilot/history-session-state`. Grave em `<AUDIT>/<slug>.session`. **Confirme o campo exato do id no smoke test.** |
|
|
21
21
|
| `DONE_SIGNAL` | o registro JSON final do stream (fim de turno) |
|
|
22
22
|
| `USAGE` | o uso de tokens do registro final (confirme os nomes exatos dos campos no smoke test) |
|
|
23
23
|
|
|
24
|
-
**Modelo:** `--model` escolhe a engine (ex.: `claude-sonnet-4.5`, `gpt-5`). O Copilot
|
|
24
|
+
**Modelo:** `--model` escolhe a engine (ex.: `claude-sonnet-4.5`, `gpt-5`). O Copilot não tem flag numérica de
|
|
25
25
|
effort; mapeie "escalonamento" para o tier do modelo. Comece um tier abaixo do teto; escale conforme a `dw-cli-run`.
|
|
26
26
|
|
|
27
|
-
## Resume de
|
|
28
|
-
O Copilot
|
|
29
|
-
grave em `<AUDIT>/<slug>.session` (
|
|
27
|
+
## Resume de sessão (o coração)
|
|
28
|
+
O Copilot não deixa fixar o id, então na 1a run **capture** o session id (do stream/log ou `~/.copilot/logs`) e
|
|
29
|
+
grave em `<AUDIT>/<slug>.session` (durável, fora da worktree → sobrevive ao `git worktree remove`). Pra voltar com
|
|
30
30
|
o **mesmo contexto**, leia o id e re-rode `RESUME <id>` (`copilot --resume="<id>" -p …` ou `--connect=<id>`) com o
|
|
31
|
-
prompt de follow-up — o Copilot recarrega a mesma
|
|
31
|
+
prompt de follow-up — o Copilot recarrega a mesma sessão. Fallback se o sidecar sumiu: `copilot --continue -p …`
|
|
32
32
|
da mesma worktree.
|
|
33
33
|
|
|
34
|
-
> **
|
|
34
|
+
> **Confirmações no smoke test (conforme o plano):** o campo exato do session-id no JSONL, os nomes dos campos de
|
|
35
35
|
> usage, e que `--resume=<id>` de fato continua o mesmo contexto — verifique numa worktree descartavel antes de
|
|
36
36
|
> confiar, e atualize esta tabela com o que achar.
|
|
37
37
|
|
|
38
|
-
##
|
|
39
|
-
|
|
|
38
|
+
## Variáveis de Input
|
|
39
|
+
| Variável | Descrição | Exemplo |
|
|
40
40
|
|----------|-----------|---------|
|
|
41
|
-
| `<WORKTREE>` | git worktree dedicada (off main) | `~/code/vizzita-billing-s10` |
|
|
41
|
+
| `<WORKTREE>` | git worktree dedicada (off main) — crie com `/dw-worktree create <slug>` (prep incluído); após o gate e o merge, remova no mesmo turno com `/dw-worktree merge <slug>` | `~/code/vizzita-billing-s10` |
|
|
42
42
|
| `<PROMPT>` | caminho do prompt/spec preparado | `.dw/spec/prd-billing-integrador/codex-prompt.md` |
|
|
43
|
-
| `<slug>` | chave da tarefa p/ arquivos de audit/
|
|
44
|
-
| `<AUDIT>` | dir de auditoria
|
|
43
|
+
| `<slug>` | chave da tarefa p/ arquivos de audit/sessão | `prd-billing-integrador` |
|
|
44
|
+
| `<AUDIT>` | dir de auditoria durável FORA da worktree | `~/code/vizzita/.dw/cli-run` |
|
|
45
45
|
|
|
46
46
|
Retorne pelo **Structured Return** da `dw-cli-run` (Status/Score/Scope/Evidence/Artifacts/Decisions/Risks/
|
|
47
47
|
Telemetria/Next Step), incluindo o `session-id` capturado, o caminho do sidecar, e o comando `RESUME` exato pra
|