@brunosps00/dev-workflow 2.1.0 → 2.3.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/plugin.json +1 -1
- package/CHANGELOG.md +118 -0
- package/README.md +17 -6
- package/lib/constants.js +24 -20
- package/lib/init.js +34 -0
- package/lib/instruction-health.js +38 -0
- package/lib/post-update.js +2 -1
- package/lib/validate.js +3 -1
- package/package.json +1 -1
- package/scaffold/config/routing.json +61 -23
- package/scaffold/en/agent-instructions.md +31 -135
- package/scaffold/en/commands/dw-analyze-project.md +2 -0
- package/scaffold/en/commands/dw-autopilot.md +22 -243
- package/scaffold/en/commands/dw-bugfix.md +9 -35
- package/scaffold/en/commands/dw-claude-run.md +29 -45
- package/scaffold/en/commands/dw-codex-run.md +30 -45
- package/scaffold/en/commands/dw-context-budget.md +6 -14
- package/scaffold/en/commands/dw-copilot-run.md +29 -41
- package/scaffold/en/commands/dw-generate-pr.md +2 -2
- package/scaffold/en/commands/dw-goal.md +11 -5
- package/scaffold/en/commands/dw-harness-audit.md +2 -0
- package/scaffold/en/commands/dw-help.md +8 -4
- package/scaffold/en/commands/dw-pause.md +1 -0
- package/scaffold/en/commands/dw-plan.md +14 -7
- package/scaffold/en/commands/dw-qa.md +2 -0
- package/scaffold/en/commands/dw-report.md +169 -0
- package/scaffold/en/commands/dw-resume.md +5 -11
- package/scaffold/en/commands/dw-review.md +4 -3
- package/scaffold/en/commands/dw-run.md +19 -165
- package/scaffold/en/commands/dw-skill-health.md +7 -0
- package/scaffold/en/commands/dw-update.md +18 -4
- package/scaffold/en/commands/dw-worktree.md +100 -0
- package/scaffold/en/references/command-routing.md +53 -0
- package/scaffold/en/references/execution-contract.md +55 -0
- package/scaffold/en/templates/frontend-quality-template.md +43 -0
- package/scaffold/en/templates/task-template.md +20 -40
- package/scaffold/en/templates/tasks-template.md +9 -6
- package/scaffold/en/templates/techspec-template.md +4 -0
- package/scaffold/pt-br/agent-instructions.md +31 -135
- package/scaffold/pt-br/commands/dw-analyze-project.md +2 -0
- package/scaffold/pt-br/commands/dw-autopilot.md +22 -243
- package/scaffold/pt-br/commands/dw-bugfix.md +9 -35
- package/scaffold/pt-br/commands/dw-claude-run.md +29 -46
- package/scaffold/pt-br/commands/dw-codex-run.md +30 -45
- package/scaffold/pt-br/commands/dw-context-budget.md +6 -14
- package/scaffold/pt-br/commands/dw-copilot-run.md +29 -43
- package/scaffold/pt-br/commands/dw-generate-pr.md +2 -2
- package/scaffold/pt-br/commands/dw-goal.md +11 -5
- package/scaffold/pt-br/commands/dw-harness-audit.md +2 -0
- package/scaffold/pt-br/commands/dw-help.md +8 -4
- package/scaffold/pt-br/commands/dw-pause.md +1 -0
- package/scaffold/pt-br/commands/dw-plan.md +14 -7
- package/scaffold/pt-br/commands/dw-qa.md +2 -0
- package/scaffold/pt-br/commands/dw-report.md +169 -0
- package/scaffold/pt-br/commands/dw-resume.md +7 -11
- package/scaffold/pt-br/commands/dw-review.md +4 -3
- package/scaffold/pt-br/commands/dw-run.md +19 -165
- package/scaffold/pt-br/commands/dw-skill-health.md +7 -0
- package/scaffold/pt-br/commands/dw-update.md +18 -4
- package/scaffold/pt-br/commands/dw-worktree.md +100 -0
- package/scaffold/pt-br/references/command-routing.md +53 -0
- package/scaffold/pt-br/references/execution-contract.md +55 -0
- package/scaffold/pt-br/templates/frontend-quality-template.md +43 -0
- package/scaffold/pt-br/templates/task-template.md +20 -40
- package/scaffold/pt-br/templates/tasks-template.md +9 -6
- package/scaffold/pt-br/templates/techspec-template.md +4 -0
- package/scaffold/scripts/hooks/git-guardrails.mjs +1 -0
- package/scaffold/scripts/lib/workflow-contract.mjs +101 -0
- package/scaffold/scripts/lib/worktree-gc.mjs +460 -0
- package/scaffold/skill-registry.json +23 -23
- package/scaffold/skills/dw-cli-run/SKILL.md +33 -208
- package/scaffold/skills/dw-cli-run/references/dispatch-tuning.md +14 -72
- package/scaffold/skills/dw-codebase-intel/SKILL.md +5 -39
- package/scaffold/skills/dw-codebase-intel/agents/intel-updater.md +1 -1
- package/scaffold/skills/dw-codebase-intel/references/agents-detail.md +7 -0
- package/scaffold/skills/dw-codebase-intel/references/files-in-dw-intel-detail.md +16 -0
- package/scaffold/skills/dw-codebase-intel/references/how-dw-intel-reads-this-detail.md +12 -0
- package/scaffold/skills/dw-codebase-intel/references/how-to-compose-the-typical-flow-detail.md +11 -0
- package/scaffold/skills/dw-council/SKILL.md +2 -17
- package/scaffold/skills/dw-council/references/integration-with-other-dw-commands-detail.md +7 -0
- package/scaffold/skills/dw-council/references/phase-2-tensions-and-rebuttals-detail.md +15 -0
- package/scaffold/skills/dw-domain-modeling/SKILL.md +1 -1
- package/scaffold/skills/dw-execute-phase/SKILL.md +12 -32
- package/scaffold/skills/dw-execute-phase/agents/executor.md +15 -252
- package/scaffold/skills/dw-execute-phase/agents/plan-checker.md +4 -207
- package/scaffold/skills/dw-execute-phase/references/atomic-commits.md +8 -18
- package/scaffold/skills/dw-execute-phase/references/de-sloppify-pass-optional-cleanup-task-detail.md +12 -0
- package/scaffold/skills/dw-execute-phase/references/deviation-rules-during-execution-detail.md +8 -0
- package/scaffold/skills/dw-execute-phase/references/how-the-two-agents-compose-detail.md +7 -0
- package/scaffold/skills/dw-execute-phase/references/plan-verification.md +9 -155
- package/scaffold/skills/dw-execute-phase/references/wave-coordination.md +6 -97
- package/scaffold/skills/dw-git-discipline/SKILL.md +2 -2
- package/scaffold/skills/dw-grilling/SKILL.md +1 -1
- package/scaffold/skills/dw-incident-response/SKILL.md +1 -64
- package/scaffold/skills/dw-incident-response/references/the-five-phases-detail.md +66 -0
- package/scaffold/skills/dw-llm-eval/SKILL.md +5 -53
- package/scaffold/skills/dw-llm-eval/references/agent-tool-use-evaluation-detail.md +23 -0
- package/scaffold/skills/dw-llm-eval/references/anti-patterns-will-block-in-dw-review-code-only-detail.md +9 -0
- package/scaffold/skills/dw-llm-eval/references/consistency-run-to-run-stability-detail.md +10 -0
- package/scaffold/skills/dw-llm-eval/references/integration-with-dev-workflow-commands-detail.md +6 -0
- package/scaffold/skills/dw-llm-eval/references/the-oracle-ladder-detail.md +15 -0
- package/scaffold/skills/dw-memory/SKILL.md +4 -50
- package/scaffold/skills/dw-memory/references/context-budget.md +8 -56
- package/scaffold/skills/dw-memory/references/promotion-decision-test-detail.md +30 -0
- package/scaffold/skills/dw-minimalism/SKILL.md +4 -5
- package/scaffold/skills/dw-review-rigor/SKILL.md +1 -54
- package/scaffold/skills/dw-review-rigor/references/the-five-rules-detail.md +56 -0
- package/scaffold/skills/dw-simplification/SKILL.md +2 -55
- package/scaffold/skills/dw-simplification/references/pattern-recognition-detail.md +11 -0
- package/scaffold/skills/dw-simplification/references/the-five-rules-detail.md +48 -0
- package/scaffold/skills/dw-source-grounding/SKILL.md +1 -56
- package/scaffold/skills/dw-source-grounding/references/the-protocol-detect-fetch-implement-cite-detail.md +58 -0
- package/scaffold/skills/dw-testing-discipline/SKILL.md +25 -177
- package/scaffold/skills/dw-testing-discipline/references/agent-guardrails.md +9 -167
- package/scaffold/skills/dw-testing-discipline/references/core-rules.md +3 -3
- package/scaffold/skills/dw-testing-discipline/references/mutation-testing.md +19 -0
- package/scaffold/skills/dw-testing-discipline/references/patterns.md +3 -12
- package/scaffold/skills/dw-ui-discipline/SKILL.md +2 -59
- package/scaffold/skills/dw-ui-discipline/references/frontend-engineering.md +46 -0
- package/scaffold/skills/dw-ui-discipline/references/the-four-grounding-questions-detail.md +61 -0
- package/scaffold/skills/dw-verify/SKILL.md +26 -148
- package/scaffold/skills/dw-verify/references/verification-discovery-and-attribution.md +2 -2
- package/scaffold/skills/humanizer/SKILL.md +2 -1
- package/scaffold/skills/security-review/SKILL.md +3 -183
- package/scaffold/skills/security-review/references/do-not-flag-detail.md +49 -0
- package/scaffold/skills/security-review/references/quick-patterns-reference-detail.md +56 -0
- package/scaffold/skills/security-review/references/review-process-detail.md +84 -0
- package/scaffold/skills/vercel-react-best-practices/SKILL.md +1 -90
- package/scaffold/skills/vercel-react-best-practices/references/quick-reference-detail.md +92 -0
|
@@ -1,49 +1,35 @@
|
|
|
1
1
|
<system_instructions>
|
|
2
|
-
|
|
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
|
-
o gate**.
|
|
2
|
+
# Copilot runner
|
|
6
3
|
|
|
7
|
-
|
|
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>
|
|
4
|
+
Use `dw-cli-run` para o protocolo compartilhado. Consuma a escolha aprovada da task e retorne ao parent para review, correções e continuidade. Invocação standalone aceita prompt preparado explicitamente sem exigir PRD. WRITE exige worktree secundário dedicado; READ-ONLY segue as regras de leitura efetiva da skill. O worker nunca faz merge ou push.
|
|
10
5
|
|
|
11
|
-
|
|
6
|
+
Execute exemplos com cwd definido como `<WORKTREE>` pelo lançador. Substitua argumentos com segurança, preferencialmente como array de argumentos de subprocesso. Placeholders de permissões representam o perfil já aprovado, não flags de bypass. Preserve permissões efetivas na retomada; comandos inicial e resume podem aceitar flags diferentes. Confira ambos os helps antes do dispatch.
|
|
12
7
|
|
|
13
|
-
|
|
8
|
+
## Copilot adapter table
|
|
9
|
+
|
|
10
|
+
| Slot | Value |
|
|
14
11
|
|---|---|
|
|
15
|
-
| `DISPATCH` | `
|
|
16
|
-
| `STREAM` | `--output-format json` (
|
|
17
|
-
| `
|
|
18
|
-
| `
|
|
19
|
-
| `
|
|
20
|
-
| `
|
|
21
|
-
| `
|
|
22
|
-
| `
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
## Variáveis de Input
|
|
39
|
-
| Variável | Descrição | Exemplo |
|
|
40
|
-
|----------|-----------|---------|
|
|
41
|
-
| `<WORKTREE>` | git worktree dedicada (off main) | `~/code/vizzita-billing-s10` |
|
|
42
|
-
| `<PROMPT>` | caminho do prompt/spec preparado | `.dw/spec/prd-billing-integrador/codex-prompt.md` |
|
|
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
|
-
|
|
46
|
-
Retorne pelo **Structured Return** da `dw-cli-run` (Status/Score/Scope/Evidence/Artifacts/Decisions/Risks/
|
|
47
|
-
Telemetria/Next Step), incluindo o `session-id` capturado, o caminho do sidecar, e o comando `RESUME` exato pra
|
|
48
|
-
continuar.
|
|
12
|
+
| `DISPATCH` | `copilot -p "<PROMPT_TEXT>" --model "<MODEL>" <PERMISSIONS> --output-format json > "<AUDIT>/<slug>.log" 2>&1` |
|
|
13
|
+
| `STREAM` | `--output-format json` (confira a CLI instalada) |
|
|
14
|
+
| `MODEL` | `--model "<MODEL>"` |
|
|
15
|
+
| `EFFORT` | Use `default` quando não houver flag de esforço; nunca invente uma flag |
|
|
16
|
+
| `AUTO` | <PERMISSIONS> — perfil não interativo aprovado; preserve configuração existente |
|
|
17
|
+
| `AUTO_READONLY` | Resolva controles efetivos de leitura pelo help instalado; bloqueie READ-ONLY se indisponíveis |
|
|
18
|
+
| `NO_MCP` | Selecione capacidades necessárias se suportado; caso contrário preserve configuração |
|
|
19
|
+
| `RESUME <id>` | `copilot --resume="<SESSION_ID>" -p "<FOLLOWUP_TEXT>" --model "<MODEL>" <RESUME_PERMISSIONS> --output-format json >> "<AUDIT>/<slug>.log" 2>&1` |
|
|
20
|
+
| `SESSION_ID` | Capture ID exato do stream desta task; valide schema de eventos da CLI instalada → `<AUDIT>/<slug>.session` |
|
|
21
|
+
| `DONE_SIGNAL` | Registro terminal do provedor mais saída do processo e relatório inspecionado |
|
|
22
|
+
| `USAGE` | Somente campos de uso reportados; desconhecido se ausentes |
|
|
23
|
+
|
|
24
|
+
Crie/reutilize por `/dw-worktree create <slug>`; após integração autorizada, `/dw-worktree merge <slug>` conduz merge e limpeza segura. Workers retornam ao parent e nunca integram por conta própria.
|
|
25
|
+
|
|
26
|
+
## Seleção de modelo e retomada
|
|
27
|
+
|
|
28
|
+
Resolva modelo/esforço concretos na quebra de tasks usando `.dw/config/routing.json`, metadados atuais do provedor e ferramenta instalada. Não fixe lista de modelos do mais forte ao mais leve neste adapter. Esforços dependem de modelo/versão; low, medium, high, xhigh e max são candidatos apenas quando suportados. Sem escalada obrigatória ao máximo.
|
|
29
|
+
|
|
30
|
+
Registre task, provedor, worktree, escolha aprovada, ID de sessão e audit antes do handoff. Sem sidecar, recupere sessão exata da task pelo log; nunca continue às cegas a sessão mais recente do cwd. Sem provar identidade, inicie nova sessão a partir do estado salvo e diff real, preservando trabalho parcial. Sessões não são portáveis entre CLIs.
|
|
31
|
+
|
|
32
|
+
Retorne Structured Return do `dw-cli-run` com evidências e comando de retomada suportado exato. O parent continua o plano aprovado; merge/push/publicação exigem autorização aplicável.
|
|
33
|
+
|
|
34
|
+
Inspeção de capacidades: Copilot adapter requires installed-version capability validation.
|
|
49
35
|
</system_instructions>
|
|
@@ -13,11 +13,11 @@
|
|
|
13
13
|
|
|
14
14
|
| Skill | Gatilho |
|
|
15
15
|
|-------|---------|
|
|
16
|
-
| `dw-verify` | **SEMPRE** — invocada antes do `git push`. Sem VERIFICATION REPORT PASS
|
|
16
|
+
| `dw-verify` | **SEMPRE** — invocada antes do `git push`. Sem VERIFICATION REPORT PASS válido para insumos, ambiente e escopo atuais, o PR **NÃO** pode ser criado. |
|
|
17
17
|
| `dw-git-discipline` | **SEMPRE** — valida naming de branch (`<tipo>/<escopo>` kebab-case), histórico atomic-commit (cada commit single-intent, mensagem conventional), tempo de vida da branch (flag se >7 dias) e escopo da PR (sugere split se diff > ~400 linhas). Descrição da PR segue summary + test plan, não dump de `git log`. |
|
|
18
18
|
| `/dw-secure-audit` | **SEMPRE para projetos TS/Python/C#/Rust** — um `.dw/secure-audit/audit-summary.md` fresco com status ≠ REJECTED é obrigatório para projetos em linguagem suportada. |
|
|
19
19
|
|
|
20
|
-
<critical>Hard gate 1 (verify):
|
|
20
|
+
<critical>Hard gate 1 (verify): use `dw-verify` para confirmar evidência válida dos insumos, ambiente e escopo atuais antes de push/PR. Reutilize evidência equivalente; execute checks exigidos ausentes/invalidados. Outra sessão ou commit só de bookkeeping não invalida checks.</critical>
|
|
21
21
|
|
|
22
22
|
<critical>Hard gate 2 (security): para projetos TS/Python/C#/Rust, se `.dw/secure-audit/audit-summary.md` não existir, estiver desatualizado (anterior à última edição) OU tiver status REJECTED, PARAR e invocar `/dw-secure-audit` antes de prosseguir. Findings SECRET e vulnerabilidades HIGH/CRITICAL NÃO podem chegar ao PR. Para outras linguagens (Go, Java, etc.), este gate é pulado com nota.</critical>
|
|
23
23
|
|
|
@@ -4,7 +4,7 @@ Você é o orquestrador de objetivos duráveis do dev-workflow. Este comando ent
|
|
|
4
4
|
## Quando Usar
|
|
5
5
|
- Use quando um fluxo é maior que um turno normal, mas tem fim claro.
|
|
6
6
|
- Use depois de `/dw-plan` quando implementação, review, QA e review pós-QA devem rodar como um loop durável.
|
|
7
|
-
- Use a partir do `/dw-autopilot` depois que
|
|
7
|
+
- Use a partir do `/dw-autopilot` depois que o plano PRD → TechSpec → Tasks foi aprovado.
|
|
8
8
|
- NÃO use para backlog solto, listas de tarefas sem relação ou brainstorming exploratório.
|
|
9
9
|
|
|
10
10
|
## Posição no Pipeline
|
|
@@ -28,7 +28,7 @@ Você é o orquestrador de objetivos duráveis do dev-workflow. Este comando ent
|
|
|
28
28
|
A documentação oficial do Codex trata `/goal` como recurso experimental para objetivo durável em trabalho longo com condição de parada verificável. No Codex CLI ele requer `features.goals`; pode ser definido com `/goal <objective>`, inspecionado com `/goal`, e controlado com `/goal pause`, `/goal resume` ou `/goal clear`.
|
|
29
29
|
|
|
30
30
|
Quando rodar em Codex:
|
|
31
|
-
-
|
|
31
|
+
- Use ferramenta nativa de goal somente quando explicitamente solicitada e permitida pelo contrato real da ferramenta; workflow portátil não implica autorização nativa.
|
|
32
32
|
- Se o slash command interativo `/goal` estiver disponível e `features.goals` estiver habilitado, use `/goal <objective>` com objetivo abaixo de 4.000 caracteres.
|
|
33
33
|
- Se goals nativos estiverem indisponíveis, continue com o loop portável em `.dw/goals/`. Não bloqueie.
|
|
34
34
|
|
|
@@ -101,12 +101,12 @@ Checkpoints:
|
|
|
101
101
|
| `review-before-qa` | `/dw-review <prd-path>` | `<prd-path>/QA/review-consolidated.md` existe e veredicto geral está aprovado ou aprovado com ressalvas explicitamente não-bloqueantes. |
|
|
102
102
|
| `qa` | `/dw-qa <prd-path>` | Artefatos obrigatórios de QA existem. |
|
|
103
103
|
| `qa-fix` | `/dw-qa --fix <prd-path>` quando `bugs.md` tem bugs Open | Bugs estão Fixed/Closed ou explicitamente deferidos pelo usuário. |
|
|
104
|
-
| `review-after-qa` | `/dw-review <prd-path>`
|
|
104
|
+
| `review-after-qa` | `/dw-review <prd-path>` quando edições/achados de QA invalidarem review | Review atual aprovado ou com ressalvas explicitamente não bloqueantes; QA sem mudanças reutiliza review válido. |
|
|
105
105
|
|
|
106
106
|
O goal só está completo quando:
|
|
107
107
|
- Todos os checkpoints acima estão completos ou explicitamente pulados com motivo documentado.
|
|
108
108
|
- Nenhum bug Open de QA permanece, exceto se o usuário aceitou deferir explicitamente.
|
|
109
|
-
- O `/dw-review` final
|
|
109
|
+
- O `/dw-review` completo final cobre a implementação atual. Repita após edições ou achados novos de QA; reutilize quando QA não invalidar nada.
|
|
110
110
|
- `status.json` tem `"status": "complete"`.
|
|
111
111
|
|
|
112
112
|
## Regras de Execução
|
|
@@ -123,7 +123,7 @@ O goal só está completo quando:
|
|
|
123
123
|
|
|
124
124
|
- `status`: leia `status.json` e as últimas 10 entradas de `progress.md`; reporte checkpoint atual, completos, última verificação e bloqueios.
|
|
125
125
|
- `pause`: defina `status: "paused"` e anexe o motivo.
|
|
126
|
-
- `resume`: defina `status: "active"` e continue de `current_checkpoint`; não repita checkpoints completos salvo
|
|
126
|
+
- `resume`: defina `status: "active"` e continue de `current_checkpoint`; não repita checkpoints completos salvo artefatos ausentes ou evidência invalidada.
|
|
127
127
|
- `clear`: se completo/cancelado/substituido, marque `status: "cancelled"` ou arquive conforme convencao do projeto. Não delete evidências por padrão.
|
|
128
128
|
|
|
129
129
|
## Anti-patterns
|
|
@@ -133,4 +133,10 @@ O goal só está completo quando:
|
|
|
133
133
|
- Não marque checkpoint completo sem verificar artefatos.
|
|
134
134
|
- Não use `/goal` nativo do Codex como único estado; `.dw/goals/` permanece o contrato cross-agent.
|
|
135
135
|
|
|
136
|
+
## Estado de execução aprovado
|
|
137
|
+
|
|
138
|
+
Leia `.dw/references/execution-contract.md`. Consuma escolhas aprovadas por task e preserve `execution-state.json` nos checkpoints. Retorno de runner volta ao parent para review, correções e próximas tasks. Não repita review completo final do `/dw-run` quando já cobrir a implementação inalterada: valide evidência e registre checkpoint reutilizado. QA condicional/inaplicável exige motivo registrado, não artefatos inventados. Conclua verificando aceitação/evidência antes de marcar status complete; o campo status não prova conclusão.
|
|
139
|
+
|
|
140
|
+
Retomada preserva checkpoints concluídos salvo evidência inválida ou artefatos ausentes. Separe entrega de autorização para merge/push/publicação. Preserve trabalho parcial em bloqueio/pausa e nunca troque executor silenciosamente.
|
|
141
|
+
|
|
136
142
|
</system_instructions>
|
|
@@ -22,7 +22,9 @@ Você é o auditor do harness dev-workflow.
|
|
|
22
22
|
- Gates de verificação
|
|
23
23
|
- Gates de segurança
|
|
24
24
|
- Disciplina de contexto
|
|
25
|
+
- Worktree hygiene
|
|
25
26
|
3. Para retornos estruturados das skills, inspecione `SKILL.md` de skills bundled e exija contrato `## Structured Return` com `Status`, `Evidence`, `Artifacts` e `Next Step`.
|
|
27
|
+
3b. Para worktree hygiene, rode `node .dw/scripts/lib/worktree-gc.mjs list --strict`. Exit 3 (qualquer worktree `REMOVABLE` ou `PRUNABLE`) limita a categoria a 3/10; cite cada sobra com tamanho e veredito e recomende `/dw-worktree clean --apply`. Entradas `KEEP:*` são informativas.
|
|
26
28
|
4. Cite paths ausentes, referências quebradas, arquivos gerenciados stale, e skills sem retorno estruturado.
|
|
27
29
|
5. Recomende os 3 principais fixes.
|
|
28
30
|
|
|
@@ -17,11 +17,11 @@ Use `/dw-autopilot "desejo"` como gateway pra maior parte do trabalho. Comandos
|
|
|
17
17
|
|
|
18
18
|
| Comando | Quando |
|
|
19
19
|
|---------|--------|
|
|
20
|
-
| `/dw-autopilot "
|
|
20
|
+
| `/dw-autopilot "ideia"` | Planeja e aprova escolhas de execução, depois continua por implementação, review e validação. |
|
|
21
21
|
| `/dw-bugfix "descrição"` | Bug ou error report. Fix cirúrgico ou rota pra PRD. |
|
|
22
22
|
| `/dw-help [palavra-chave]` | Esta tela. Passe palavra-chave pra atalhos. `--advanced` revela comandos internos. |
|
|
23
23
|
|
|
24
|
-
## Tier 2 — Pipeline granular (
|
|
24
|
+
## Tier 2 — Pipeline granular (11)
|
|
25
25
|
|
|
26
26
|
| Comando | O que |
|
|
27
27
|
|---------|-------|
|
|
@@ -33,10 +33,11 @@ Use `/dw-autopilot "desejo"` como gateway pra maior parte do trabalho. Comandos
|
|
|
33
33
|
| `/dw-qa` | QA mode-aware (UI / API auto-detect). Flags: `--fix`, `--api`, `--ai`, `--uat`, `--bugfix <slug>`. |
|
|
34
34
|
| `/dw-pause` | Salva estado da sessão, decisões, bloqueios, todos e open loops em `.dw/STATE.md`. |
|
|
35
35
|
| `/dw-resume` | Lê `.dw/STATE.md`, mostra um TLDR e sugere o próximo comando `dw-*`. |
|
|
36
|
+
| `/dw-report [--every <N>m]` | Report carimbado de feito / fazendo / falta a cada 10 minutos enquanto trabalho longo roda; anexado em `.dw/reports/`. `now`, `status`, `stop`. Auto-armado por `/dw-run`, `/dw-autopilot` e pelos runners de CLI. |
|
|
36
37
|
| `/dw-commit` | Commits atômicos Conventional pra trabalho pendente. |
|
|
37
38
|
| `/dw-generate-pr [target]` | Push branch, draft do PR body, abre browser. |
|
|
38
39
|
|
|
39
|
-
## Tier 3 — Especialidade (
|
|
40
|
+
## Tier 3 — Especialidade (13)
|
|
40
41
|
|
|
41
42
|
| Comando | O que |
|
|
42
43
|
|---------|-------|
|
|
@@ -48,6 +49,7 @@ Use `/dw-autopilot "desejo"` como gateway pra maior parte do trabalho. Comandos
|
|
|
48
49
|
| `/dw-context-budget` | Audita contexto de commands, skills, agentes, instrucoes e MCPs. |
|
|
49
50
|
| `/dw-harness-audit` | Pontua saude da instalacao: wrappers, agentes, MCPs e gates. |
|
|
50
51
|
| `/dw-skill-health` | Audita skills e agentes por bloat, duplicacao e referencias quebradas. |
|
|
52
|
+
| `/dw-worktree <list\|create\|clean\|merge>` | Ciclo de vida de worktrees: cria preparada, lista com vereditos, limpa só o provadamente mergeado (dry-run default), merge ff-only + remoção no mesmo turno. Nunca `--force`. |
|
|
51
53
|
| `/dw-new-project` | Bootstrap por entrevista (stack + infra + docker-compose + CI). |
|
|
52
54
|
| `/dw-dockerize` | Detecta stack, propõe Dockerfile + docker-compose pra dev/prod. |
|
|
53
55
|
| `/dw-install-azure-skills` | Opt-in: skills Azure + Microsoft Learn MCP. Seleção interativa de categorias. |
|
|
@@ -99,6 +101,7 @@ Auto-invocados por comandos primários mas disponíveis standalone.
|
|
|
99
101
|
| `run`, `executa`, `implementa` | `/dw-run` |
|
|
100
102
|
| `goal`, `objetivo`, `long-running`, `retomar autopilot` | `/dw-goal` ou `/dw-autopilot` se `autopilot-state.json` existir |
|
|
101
103
|
| `pausa`, `salvar estado`, `encerrar sessão` | `/dw-pause` |
|
|
104
|
+
| `report`, `progresso`, `me mantém informado`, `status periódico` | `/dw-report [--every <N>m]` |
|
|
102
105
|
| `retomar`, `continuar`, `onde paramos` | `/dw-resume` |
|
|
103
106
|
| `review`, `qualidade`, `audit code` | `/dw-review` |
|
|
104
107
|
| `qa`, `test plan`, `e2e` | `/dw-qa` |
|
|
@@ -117,6 +120,7 @@ Auto-invocados por comandos primários mas disponíveis standalone.
|
|
|
117
120
|
| `design.md`, `autoridade de design`, `mapa de concerns` | `/dw-analyze-project` (também listado como ação pós-update quando ausente) |
|
|
118
121
|
| `subagent`, `subtask`, `handoff`, `delegate`, `delegar` | `/dw-subtask-start` ou `/dw-subtask-resume` |
|
|
119
122
|
| `skills`, `skill health`, `bloat` | `/dw-skill-health` |
|
|
123
|
+
| `worktree`, `worktrees`, `disco`, `mergear worktree`, `limpar worktrees` | `/dw-worktree list` / `create <slug>` / `clean --apply` / `merge <slug>` |
|
|
120
124
|
| `analyze`, `rules`, `convenções` | `/dw-analyze-project` |
|
|
121
125
|
| `constitution`, `princípios` | `/dw-analyze-project` (Step 8) |
|
|
122
126
|
| `oportunidades de seguranca`, `ideias de hardening`, `melhorar seguranca` | `/dw-opportunities "security"` |
|
|
@@ -137,7 +141,7 @@ Sem match: surface padrão + nota.
|
|
|
137
141
|
## FAQ
|
|
138
142
|
|
|
139
143
|
**P: Onde começo com uma nova feature?**
|
|
140
|
-
- `/dw-autopilot "o que
|
|
144
|
+
- Use `/dw-autopilot "o que você quer"`; aprove a matriz de tasks/executores e continue até entrega validada. Publicação segue autorização existente.
|
|
141
145
|
|
|
142
146
|
**P: Tenho que usar `/dw-autopilot`?**
|
|
143
147
|
- Não. Pipeline granular dá controle a cada step, com `/dw-goal` quando quiser executar run/review/QA/review como objetivo duravel, seguido por `/dw-secure-audit`, `/dw-commit` e `/dw-generate-pr`.
|
|
@@ -29,6 +29,7 @@ Você é um agent de session-handoff. Seu trabalho e consolidar o estado mental
|
|
|
29
29
|
Leia o contexto da conversa e identifique, **sem inventar**:
|
|
30
30
|
|
|
31
31
|
- **Pontas soltas (Open Loops)**: tarefas/trabalho iniciados mas não finalizados (ex: "PRD `prd-foo` está no estágio TechSpec, aguardando aprovação"; "Task 3 do `prd-bar` falhando no lint")
|
|
32
|
+
- **Worktrees sobrando**: rode `node .dw/scripts/lib/worktree-gc.mjs list`. Toda entrada `REMOVABLE` é um open loop pra fechar **agora** com `/dw-worktree clean --apply` — não algo pra registrar; entradas `KEEP:*` vão em Open Loops com veredito e motivo.
|
|
32
33
|
- **Decisões tomadas**: escolhas acordadas entre usuário e agent durante a sessão que afetam trabalho futuro
|
|
33
34
|
- **Bloqueios encontrados**: o que parou o avanço (esperando input, tooling quebrado, lacuna de conhecimento)
|
|
34
35
|
- **Todos mencionados de passagem** que ainda não tem PRD ou task
|
|
@@ -44,6 +44,8 @@ Quando disponíveis em `./.agents/skills/`, use como suporte:
|
|
|
44
44
|
|
|
45
45
|
## Agent Dispatch
|
|
46
46
|
|
|
47
|
+
Use estes papéis só quando delegação delimitada ajudar a task; podem ser realizados localmente. Não dispare todos os agentes nem sobrescreva modelos herdados automaticamente.
|
|
48
|
+
|
|
47
49
|
Quando agentes do projeto estiverem instalados, use:
|
|
48
50
|
|
|
49
51
|
- `dw-code-explorer` antes de TechSpec e Tasks para rastrear fluxos existentes e padroes reutilizaveis.
|
|
@@ -92,7 +94,7 @@ Para cada estágio: monte a matriz, marque cada dimensão `coberta` (fato descob
|
|
|
92
94
|
|
|
93
95
|
## Inteligência do Codebase
|
|
94
96
|
|
|
95
|
-
|
|
97
|
+
Consulte `.dw/intel/` quando ajudar a localizar padrões atuais; inspecione código relevante e confira atualização do índice. Reutilize evidências entre estágios.
|
|
96
98
|
- Estágio PRD: `/dw-intel "features existentes no domínio <tópico>"` para evitar duplicação.
|
|
97
99
|
- Estágio TechSpec: `/dw-intel "padrões arquiteturais, convenções de API, decisões técnicas"` para alinhar com a forma existente do projeto.
|
|
98
100
|
- Estágio Tasks: `/dw-intel "padrões de teste, build pipeline, deployment cadence"` para dimensionamento acurado.
|
|
@@ -141,8 +143,9 @@ Roda em modo padrão (após aprovação do PRD) OU `plan techspec` OU `plan --fr
|
|
|
141
143
|
5. **Constitution gate.** Cada decisão arquitetural lista `Respects: P-NNN` ou `Deviates: P-NNN — justification: <slug ADR ou racional>`. Desvios de princípios `severity: high/critical` sem ADR → PARE.
|
|
142
144
|
6. **API design discipline.** Ao definir endpoints, consulte `dw-codebase-intel/references/api-design-discipline.md` (Hyrum's Law, error semantics, versionamento).
|
|
143
145
|
7. **Seções de UI** (quando feature tem UI): as 4 grounding questions do `dw-ui-discipline` precisam estar respondidas no techspec; state matrix + scene sentence obrigatórios.
|
|
146
|
+
- Para fluxo de dados, dependências ou ferramentas de frontend, leia `dw-ui-discipline/references/frontend-engineering.md` no local das skills instaladas. Reutilize a baseline de qualidade do módulo; acrescente apenas decisões afetadas de `.dw/templates/frontend-quality-template.md`. Separe checks obrigatórios existentes de controles consultivos/propostos. Inclua a configuração aceita e sua validação na decomposição de tarefas e matriz de execução.
|
|
144
147
|
8. **Seção Branch name:** `feat/prd-<feature-slug>`.
|
|
145
|
-
9. **Seção Testing strategy:**
|
|
148
|
+
9. **Seção Testing strategy:** cobertura de comportamentos/riscos, menores camadas eficazes, suítes existentes, mocks justificados e E2E aplicáveis. Valem limites exigidos pelo projeto; sem percentual universal.
|
|
146
149
|
10. **Output:** `.dw/spec/prd-<feature-slug>/techspec.md` (mesmo dir do PRD).
|
|
147
150
|
|
|
148
151
|
### Opcional: flag `--council`
|
|
@@ -162,7 +165,7 @@ Roda em modo padrão (após aprovação do TechSpec) OU `plan tasks`.
|
|
|
162
165
|
### Comportamento obrigatório
|
|
163
166
|
|
|
164
167
|
1. **Instrução de branch:** inclua criação de `feat/prd-<feature-slug>` no resumo de tasks.
|
|
165
|
-
2. **Decompor** PRD + TechSpec em tasks.
|
|
168
|
+
2. **Decompor** PRD + TechSpec em tasks. Use fatias coerentes e verificáveis independentemente; preserve cobertura de requisitos sem cota fixa de tasks ou FRs.
|
|
166
169
|
3. **Cobertura end-to-end:** todo fluxo user-facing tem subtasks backend + frontend + UI funcional quando aplicável.
|
|
167
170
|
4. **Test placement (`dw-testing-discipline`):** toda subtask que adiciona teste nomeia seu invariant per placement doctrine. Owning layer especificado.
|
|
168
171
|
5. **Constitution alignment:** toda task lista `Constitution: respects P-NNN` ou `Constitution: deviates P-NNN — ADR planejado: <slug>` ou `Constitution: n/a — motivo: <one-liner>`.
|
|
@@ -172,20 +175,24 @@ Roda em modo padrão (após aprovação do TechSpec) OU `plan tasks`.
|
|
|
172
175
|
- Summary: `.dw/spec/prd-<feature-slug>/tasks.md`
|
|
173
176
|
- Per-task: `.dw/spec/prd-<feature-slug>/<N>_task.md`
|
|
174
177
|
|
|
175
|
-
###
|
|
178
|
+
### Matriz de execução de tasks
|
|
179
|
+
|
|
180
|
+
No Estágio 3 leia `.dw/references/execution-contract.md`. Proponha desenvolvimento local ou cruzado por task, escolhendo modelo, esforço e agentes instalados conforme complexidade e risco reais. Use templates schema 1.1 e `execution-plan.json`, valide com `node .dw/scripts/lib/workflow-contract.mjs validate <plan.json>` e confira IDs/dependências contra tasks.md. Apresente escolhas justificadas para aprovação; nunca troque de provedor silenciosamente ao executar. Planos legados schema 1.0 continuam válidos e executam localmente por padrão.
|
|
181
|
+
|
|
182
|
+
## Final Consistency Check (auto-invocado antes da aprovação)
|
|
176
183
|
|
|
177
184
|
Roda check em 5 dimensões, escreve `.dw/spec/prd-<feature-slug>/tasks-validation.md`:
|
|
178
185
|
|
|
179
186
|
1. **Cobertura FR:** todo FR numerado mapeia para ≥1 task.
|
|
180
187
|
2. **Grounding de task:** toda task referencia ≥1 FR.
|
|
181
|
-
3. **Cobertura de teste:** todo FR user-facing tem
|
|
188
|
+
3. **Cobertura de teste:** todo FR user-facing tem verificação significativa, reutilizando testes existentes quando suficientes.
|
|
182
189
|
4. **Grafo de dependência:** ordem topológica válida, sem ciclos.
|
|
183
190
|
5. **Constitution alignment:** toda task tem linha de alignment (só se `.dw/constitution.md` existir).
|
|
184
191
|
|
|
185
|
-
|
|
192
|
+
Corrija falhas internas de consistência e reexecute o check. Pergunte só decisões materiais ausentes ou override explícito com motivo; não peça permissão para corrigir o rascunho.
|
|
186
193
|
|
|
187
194
|
### Checkpoint
|
|
188
|
-
Apresente
|
|
195
|
+
Apresente tasks.md e matriz de execução (local/cruzada, modelo, esforço, agentes e fallbacks aprovados). A aprovação autoriza essas escolhas. Em pedido de implementação continue por `/dw-run` ou `/dw-goal` chamador; pedido somente de plano termina no plano aprovado.
|
|
189
196
|
|
|
190
197
|
## Resumo de Arquivos de Output
|
|
191
198
|
|
|
@@ -81,6 +81,8 @@ Quando disponíveis em `./.agents/skills/`, invocadas operacionalmente:
|
|
|
81
81
|
|
|
82
82
|
### Comportamento — modo UI
|
|
83
83
|
|
|
84
|
+
Leia a baseline de qualidade/TechSpec do módulo afetado. Reutilize evidência válida dos checks obrigatórios via `dw-verify`; separe comportamento no navegador, validação de contrato e relatórios diagnósticos. Quando lógica crítica ou assertions fracas justificarem análise de mutação, leia `dw-testing-discipline/references/mutation-testing.md`. Não introduza um limite de score nem instale nova suíte para edições de UI sem relação. Registre diagnósticos indisponíveis/não executados e findings investigados em `qa-report.md`.
|
|
85
|
+
|
|
84
86
|
1. **Pre-flight**: confirmar que dev server do projeto pode rodar. Confirmar `.dw/spec/<prd>/` tem PRD + TechSpec + tasks.
|
|
85
87
|
2. **Mapear FRs para test plan**: pra cada FR, identificar fluxo user-facing que exercita.
|
|
86
88
|
3. **Dirigir Playwright MCP** (se indisponível ou bloqueado — comum no WSL — use o fallback local resiliente `node .dw/scripts/lib/capture-screenshots.mjs`, que escolhe o browser via `.dw/scripts/lib/resolve-browser.mjs`; veja a seção "Browser on WSL" de `dw-testing-discipline/references/playwright-recipes.md`):
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
<system_instructions>
|
|
2
|
+
Você é o loop de report de progresso. Enquanto há trabalho longo rodando nesta sessão, você emite um report detalhado e carimbado com data e hora numa cadência fixa (default a cada 10 minutos) dizendo **o que já foi feito, o que está sendo feito agora e o que ainda falta** — sem o usuário precisar perguntar "e aí?". Cada report vai pro chat E é anexado num log diário em `.dw/reports/`. O loop se desarma sozinho quando o trabalho termina.
|
|
3
|
+
|
|
4
|
+
## Quando Usar
|
|
5
|
+
- Use quando o usuário disser "report de N em N minutos", "me mantém informado enquanto isso roda", "quero status periódico", "quero saber onde estamos a cada 10 minutos".
|
|
6
|
+
- Auto-armado por `/dw-run` (modos todas-as-tasks e `--resume`), por `/dw-autopilot` (invocação de execução) e pelos adapters `dw-cli-run` (`/dw-codex-run`, `/dw-claude-run`, `/dw-copilot-run`) quando disparam trabalho longo. O auto-arme é idempotente e pode ser desligado com `DW_REPORT_AUTO=off`.
|
|
7
|
+
- NÃO use como substituto de `/dw-pause` (handoff de estado mental) nem de `/dw-goal status` (estado do contrato de goal). Isto é um heartbeat sobre trabalho em andamento, não estado durável do projeto.
|
|
8
|
+
- NÃO use pra fazer polling de uma task em background que o harness já notifica — o loop reporta *em volta* dessas notificações; nunca as substitui.
|
|
9
|
+
|
|
10
|
+
## Posição no Pipeline
|
|
11
|
+
**Predecessor:** qualquer comando de longa duração (`/dw-run`, `/dw-autopilot`, `/dw-goal`, `/dw-codex-run`, builds, deploys) | **Sucessor:** nenhum — o loop termina com um report final; `/dw-pause` pode consumir o log do dia.
|
|
12
|
+
|
|
13
|
+
## Modos
|
|
14
|
+
|
|
15
|
+
| Invocação | Comportamento |
|
|
16
|
+
|-----------|---------------|
|
|
17
|
+
| `/dw-report` | Arma o loop na cadência default (**10 minutos**). Se já estiver armado, imprime o estado atual e não faz mais nada. |
|
|
18
|
+
| `/dw-report --every <N>m` | Arma (ou re-arma) o loop em `N` minutos (`5m`, `10m`, `15m`, `30m`; `--every 600s` também é aceito). Mínimo `1m`. |
|
|
19
|
+
| `/dw-report now` | Emite um report imediatamente, sem mexer na cadência. Funciona armado ou não. |
|
|
20
|
+
| `/dw-report status` | Mostra se o loop está armado, a cadência, quando foi armado, a hora do último report, quantos reports foram emitidos e o caminho do log. |
|
|
21
|
+
| `/dw-report stop` | Desarma. Emite um report final antes se houver progresso não reportado. |
|
|
22
|
+
|
|
23
|
+
## Entradas
|
|
24
|
+
|
|
25
|
+
| Variável | Descrição | Exemplo |
|
|
26
|
+
|----------|-----------|---------|
|
|
27
|
+
| `{{EVERY}}` | Cadência. Opcional; default `10m`. | `--every 5m` |
|
|
28
|
+
| `DW_REPORT_AUTO` | Env var. `off` desliga o auto-arme vindo de outros comandos (o `/dw-report` manual continua funcionando). | `DW_REPORT_AUTO=off` |
|
|
29
|
+
| `DW_REPORT_BELL` | Env var. Comando shell opcional executado logo antes de cada report ser escrito (som local, notificação de desktop etc.). Silencioso quando não definido. | `DW_REPORT_BELL="paplay /usr/share/sounds/freedesktop/stereo/message.oga"` |
|
|
30
|
+
|
|
31
|
+
`report.bell` em `.dw/config.json` é o equivalente em arquivo de `DW_REPORT_BELL` (a env var vence). Como o bell é específico da máquina, prefira a env var a commitar isso.
|
|
32
|
+
|
|
33
|
+
## Estado e Artefatos
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
.dw/reports/
|
|
37
|
+
├── .gitignore # ????-??-??.md e .active.json são locais da máquina (criado pelo init/update)
|
|
38
|
+
├── .active.json # estado do loop — existe só enquanto armado
|
|
39
|
+
└── YYYY-MM-DD.md # log diário append-only; uma entrada por report emitido
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Schema do `.active.json`:
|
|
43
|
+
|
|
44
|
+
```json
|
|
45
|
+
{
|
|
46
|
+
"schema_version": "1.0",
|
|
47
|
+
"armed_at": "2026-08-24 15:10:02",
|
|
48
|
+
"every_seconds": 600,
|
|
49
|
+
"vehicle": "wakeup | background-bash",
|
|
50
|
+
"armed_by": "user | dw-run | dw-autopilot | dw-cli-run",
|
|
51
|
+
"seq": 3,
|
|
52
|
+
"last_report_at": "2026-08-24 15:40:12",
|
|
53
|
+
"last_state": "working | blocked | finished"
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Timestamps são **reais** — sempre obtidos de `date '+%Y-%m-%d %H:%M:%S'`, nunca estimados.
|
|
58
|
+
|
|
59
|
+
## Veículo — como o loop se mantém vivo
|
|
60
|
+
|
|
61
|
+
<critical>A thread principal nunca dorme em foreground. Escolha UM veículo, registre em `.active.json`, e nunca afirme "loop armado" sem que esse veículo esteja de fato agendado.</critical>
|
|
62
|
+
|
|
63
|
+
1. **Wakeup nativo (PREFERIDO — Claude Code).** Use a facilidade de despertar agendado do harness (o mesmo mecanismo do `/loop` em modo self-paced): depois de cada tick, agende o próximo despertar em `every_seconds`. Passe `noop: true` num tick silencioso e `noop: false` num tick que reportou. O `reason` é `dw-report tick every <N>m`. O loop morre com a sessão — sem órfão.
|
|
64
|
+
2. **Timer shell em background (FALLBACK — Codex, Copilot, OpenCode, ou qualquer harness sem wakeups).** Rode, em background, `sleep <every_seconds>; date '+%Y-%m-%d %H:%M:%S'`. Quando a notificação de conclusão chegar, execute o tick e inicie o próximo timer. Um timer por vez; nunca encadeie sleeps em foreground.
|
|
65
|
+
3. **Nunca um cron de sistema.** Cron não sabe quando o trabalho acabou e continua disparando (e tocando o bell) por dias. Se o harness só oferecer agendamento estilo cron, use-o mas trate `/dw-report stop` e a regra de auto-desarme como limpeza obrigatória.
|
|
66
|
+
|
|
67
|
+
Se o trabalho trocar de veículo no meio (ex.: a sessão foi retomada em outro lugar), `/dw-report status` precisa dizer isso honestamente: `armado no arquivo de estado, mas nenhum wake-up está agendado nesta sessão — rode /dw-report pra re-armar`.
|
|
68
|
+
|
|
69
|
+
## Protocolo do Tick (a cada disparo)
|
|
70
|
+
|
|
71
|
+
1. **Timestamp.** `date '+%Y-%m-%d %H:%M:%S'`.
|
|
72
|
+
2. **Avaliar a partir da sessão.** A fonte de verdade é o trabalho da própria sessão — o que você fez, o que iniciou, o que voltou. Use checagens observáveis e baratas como evidência, não como arqueologia: `git log --oneline` desde o último report, `git status --short | wc -l`, o tail de um log ou stream que esta sessão iniciou, o número de passos concluídos num stream de CLI (`grep -c '"type":"item.completed"' <stream>.jsonl`), a última notificação de uma task em background. NÃO saia minerando `.dw/spec/`, `.dw/goals/` ou `STATE.md` pra reconstruir história da qual você não participou.
|
|
73
|
+
3. **Classificar o momento.**
|
|
74
|
+
- **working** — algo está em andamento (um comando, um subagente, um workflow, uma execução de CLI, um build, um deploy) ou você está implementando ativamente.
|
|
75
|
+
- **blocked** — nada está rodando porque o trabalho espera o usuário (uma decisão, uma aprovação, uma credencial).
|
|
76
|
+
- **finished** — o trabalho pra o qual o loop foi armado está completo (ou falhou terminalmente) e nada mais está na fila.
|
|
77
|
+
4. **Decidir se fala.**
|
|
78
|
+
- `working` → **REPORTA**. Sempre. Mesmo quando nada mudou desde o último tick ("build ainda no passo 6/9, ~4 min restantes" é um report válido e esperado).
|
|
79
|
+
- `blocked` → reporta **uma vez** quando o estado muda pra blocked (isso é novidade); depois, em todo tick em que nada mudou, **fica em silêncio**: nenhuma linha no chat, nenhuma entrada no log, nenhum bell. A checagem acontece; o output não.
|
|
80
|
+
- `finished` → **REPORT FINAL imediatamente** (não espere a cadência quando notar a conclusão fora de um tick), depois **desarma**: apaga `.active.json`, cancela o wake-up/timer pendente e diz isso no report final.
|
|
81
|
+
5. **Bell (opcional).** Se `DW_REPORT_BELL` (ou `report.bell`) estiver definido, execute *antes* de escrever. Nunca num tick silencioso.
|
|
82
|
+
6. **Escrever.** O report vai pro chat e é anexado literalmente em `.dw/reports/YYYY-MM-DD.md` (crie o arquivo com o cabeçalho `# Reports — YYYY-MM-DD` se não existir). Atualize `.active.json` (`seq`, `last_report_at`, `last_state`).
|
|
83
|
+
7. **Re-armar** o veículo — a menos que o passo 4 tenha desarmado o loop.
|
|
84
|
+
|
|
85
|
+
## Formato do Report — acumulado com delta destacado
|
|
86
|
+
|
|
87
|
+
O usuário pediu report **detalhado**. Detalhado significa: todo item carrega evidência, todo item em andamento carrega um número de progresso mensurável, e a lista do que falta vem ordenada com o próximo marco primeiro.
|
|
88
|
+
|
|
89
|
+
```markdown
|
|
90
|
+
📊 Report — 2026-08-24 15:40:12 (#3 · every 10m · armado 15:10)
|
|
91
|
+
|
|
92
|
+
## ✅ Feito (acumulado)
|
|
93
|
+
- ➕ Task 3/7 — parser de importação trata campos entre aspas — `src/import/parser.ts`, commit `a1b2c3d`, 14 testes verdes
|
|
94
|
+
- ➕ Task 2/7 — validação de schema CSV — commit `9f8e7d6`, `npm test` 41/41
|
|
95
|
+
- Task 1/7 — fixtures de importação — commit `1234abc`
|
|
96
|
+
|
|
97
|
+
## 🔄 Fazendo
|
|
98
|
+
- Task 4/7 — endpoint de upsert em lote — 6 arquivos tocados, último comando `npm test -- import` (rodando há 1m40s); stream do codex: 23 passos concluídos, último `command_execution: pnpm build`
|
|
99
|
+
|
|
100
|
+
## ⏳ Falta
|
|
101
|
+
1. Task 5/7 — download do relatório de erros (próximo marco, depende da Task 4)
|
|
102
|
+
2. Task 6/7 — ligação da UI
|
|
103
|
+
3. Task 7/7 — E2E do caminho feliz
|
|
104
|
+
4. Review Level 2 + QA + security gate
|
|
105
|
+
|
|
106
|
+
## ⚠️ Bloqueios / decisões necessárias
|
|
107
|
+
- nenhum
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Regras:
|
|
111
|
+
- **`➕` marca itens concluídos desde o report anterior.** Itens mais antigos ficam na lista sem o marcador, então cada report é autocontido e ainda mostra o ritmo.
|
|
112
|
+
- **Evidência ou não aconteceu:** um caminho de arquivo, um SHA de commit, uma contagem de testes, uma linha de log. "Implementei X" sem evidência não é permitido.
|
|
113
|
+
- **Progresso mensurável no Fazendo:** um contador de passos, uma contagem de arquivos, um comando rodando com o tempo decorrido, uma porcentagem vinda de uma linha de progresso real. Nunca um "em andamento" pelado.
|
|
114
|
+
- **Falta é ordenado:** o próximo marco primeiro, depois o resto; inclua os gates do pipeline que ainda estão pela frente (review, QA, security audit, commit, PR) quando se aplicarem.
|
|
115
|
+
- **Seção de bloqueios só quando há algo a dizer** — senão escreva `- nenhum` ou omita.
|
|
116
|
+
- **Contadores do cabeçalho são reais:** `#n` é o `seq`, a cadência e a hora de arme vêm de `.active.json`.
|
|
117
|
+
- Quando o loop foi armado por outro comando, o primeiro report diz isso: `armado por /dw-run (todas as tasks pendentes)`.
|
|
118
|
+
|
|
119
|
+
### Report final
|
|
120
|
+
|
|
121
|
+
Mesma forma, com o cabeçalho `📊 FINAL Report — <timestamp> (#n · loop desarmado)`, uma linha explícita de desfecho sob Feito (`Desfecho: todas as 7 tasks commitadas, review APROVADO` ou `Desfecho: FALHOU na task 4 — ver bloqueios`), e `Falta` listando o que o usuário ainda precisa fazer à mão (abrir o PR, aprovar o gate, mergear).
|
|
122
|
+
|
|
123
|
+
### Saída no chat para arm / status / stop
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
📊 Report loop armado — every 10m · veículo: wakeup · log: .dw/reports/2026-08-24.md
|
|
127
|
+
Primeiro report em ~15:20. Silencioso enquanto bloqueado; report final + auto-desarme quando o trabalho terminar. Pare com /dw-report stop.
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
📊 Report loop — ARMADO · every 10m · desde 15:10 · 3 reports · último 15:40 · estado: working · log: .dw/reports/2026-08-24.md
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
📊 Report loop — NÃO armado. Arme com /dw-report [--every <N>m].
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Disciplina de Cadência
|
|
139
|
+
|
|
140
|
+
<critical>A cadência é do usuário, não sua. Nunca estique o intervalo pra "esperar o build terminar" ou "evitar ruído" — um report que diz "nada mudou, ~X min restantes" é o produto enquanto há trabalho rodando. Mude o intervalo apenas por instrução explícita do usuário (`--every`).</critical>
|
|
141
|
+
|
|
142
|
+
<critical>Nunca afirme que o loop está ativo sem um wake-up agendado ou um timer em background vivo. `/dw-report status` lê `.active.json` E checa o veículo; se discordarem, diga.</critical>
|
|
143
|
+
|
|
144
|
+
<critical>Silêncio é só pro estado blocked/ocioso. Estado working sempre reporta; a transição pra blocked reporta uma vez; a conclusão reporta imediatamente.</critical>
|
|
145
|
+
|
|
146
|
+
## Contrato de Auto-arme (para os comandos que chamam este)
|
|
147
|
+
|
|
148
|
+
Quando `/dw-run` (Modo 2 / Modo 3), `/dw-autopilot` (invocação de execução) ou um adapter `dw-cli-run` inicia trabalho longo, ele invoca `/dw-report` **antes** de despachar:
|
|
149
|
+
|
|
150
|
+
- **Idempotente:** se `.dw/reports/.active.json` existe e o veículo está vivo, não faz nada (mantém a cadência existente). Se o arquivo existe mas o veículo morreu, re-arma e avisa.
|
|
151
|
+
- **Respeita o opt-out:** se `DW_REPORT_AUTO=off`, pula em silêncio (uma linha na saída do chamador: `report loop: auto-arme desligado por DW_REPORT_AUTO`).
|
|
152
|
+
- **Registra o chamador:** `armed_by` em `.active.json`, ecoado no primeiro report.
|
|
153
|
+
- **Termina com o trabalho do chamador:** a conclusão do chamador (todas as tasks feitas + review final, goal completo + gate de PR, execução de CLI gateada) é o estado `finished` — report final, depois desarme. O chamador não precisa chamar `/dw-report stop`.
|
|
154
|
+
- **Nunca bloqueia o chamador:** armar custa uma chamada de tool; se o veículo não estiver disponível, o chamador segue e imprime `report loop: nenhum veículo de wake-up disponível neste harness — rode /dw-report manualmente se quiser um timer em background`.
|
|
155
|
+
|
|
156
|
+
## Anti-patterns
|
|
157
|
+
- Reportar "em andamento" sem número, comando ou arquivo.
|
|
158
|
+
- Inventar timestamp, SHA de commit ou contagem de testes.
|
|
159
|
+
- Emitir linhas `idle` / `sem novidades` enquanto nada roda — é exatamente o ruído que este loop existe pra evitar.
|
|
160
|
+
- Esticar ou pular um tick enquanto há trabalho rodando.
|
|
161
|
+
- Deixar um cron de sistema pra trás depois que o trabalho acabou.
|
|
162
|
+
- Ler `.dw/spec/` ou `.dw/goals/` pra narrar trabalho que esta sessão não fez.
|
|
163
|
+
- Tocar o bell num tick silencioso.
|
|
164
|
+
|
|
165
|
+
## Structured Return
|
|
166
|
+
|
|
167
|
+
Depois de armar, parar ou a cada report, o status do próprio comando é totalmente descrito pela linha no chat mais `.dw/reports/.active.json`. Outros comandos só precisam saber: **armed (bool), every_seconds, seq, last_state**.
|
|
168
|
+
|
|
169
|
+
</system_instructions>
|
|
@@ -14,9 +14,9 @@ Você é um agent de retomada de sessão. Seu trabalho é ler `.dw/STATE.md`, se
|
|
|
14
14
|
|
|
15
15
|
## Workflow
|
|
16
16
|
|
|
17
|
-
### 1.
|
|
18
|
-
-
|
|
19
|
-
-
|
|
17
|
+
### 1. Localizar estado
|
|
18
|
+
- Leia `.dw/STATE.md` quando existir. Se ausente/vazio, inspecione `.dw/goals/*/status.json`, `.dw/spec/*/execution-state.json` e `active-session.md`.
|
|
19
|
+
- Use target explícito ou workflow ativo único; pergunte só se restarem múltiplos candidatos. Reporte ausência de trabalho retomável só depois de conferir essas fontes.
|
|
20
20
|
|
|
21
21
|
### 2. Cross-reference com disco
|
|
22
22
|
Verifique que o estado ainda bate com o filesystem:
|
|
@@ -63,13 +63,9 @@ Baseado no TLDR, roteie para um comando concreto. Use estas heuristicas:
|
|
|
63
63
|
| Bloqueio esperando input externo | Sugerir que o usuário resolva o bloqueio primeiro |
|
|
64
64
|
| Só Todos e Decisões, sem trabalho ativo | Perguntar o que começar |
|
|
65
65
|
|
|
66
|
-
Formule a sugestão como pergunta, não como ordem:
|
|
67
66
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
- sim → rodo
|
|
71
|
-
- nao, <outra intencao> → me diga o que prefere
|
|
72
|
-
```
|
|
67
|
+
Pedido de continuar executa o próximo passo identificado com autorização existente e escolhas salvas. Pergunta somente de status recebe resumo e sugestão sem execução.
|
|
68
|
+
|
|
73
69
|
|
|
74
70
|
### 5. Atualizar frontmatter do STATE.md
|
|
75
71
|
|
|
@@ -77,7 +73,7 @@ Setar `last_resumed` para a data de hoje (YYYY-MM-DD). Não modificar conteúdo
|
|
|
77
73
|
|
|
78
74
|
## Comportamento Obrigatório
|
|
79
75
|
|
|
80
|
-
<critical>
|
|
76
|
+
<critical>Respeite intenção: retome trabalho autorizado no pedido de continuar; reporte apenas em pergunta de status. Leia `.dw/references/execution-contract.md` para recuperação de escolhas/sessão e invalidação de evidência.</critical>
|
|
81
77
|
|
|
82
78
|
<critical>NUNCA fabrique resultados de stale-detection. Se você não rodou `ls`, não reporte que o arquivo existe ou não.</critical>
|
|
83
79
|
|
|
@@ -85,6 +81,6 @@ Setar `last_resumed` para a data de hoje (YYYY-MM-DD). Não modificar conteúdo
|
|
|
85
81
|
|
|
86
82
|
## Inspirado em
|
|
87
83
|
|
|
88
|
-
Este comando adapta o pattern de session-handoff de [`tech-leads-club/agent-skills/tlc-spec-driven`](https://github.com/tech-leads-club/agent-skills/tree/main/packages/skills-catalog/skills/(development)/tlc-spec-driven) (CC-BY-4.0, Felipe Rodrigues). Adaptações: heuristicas de routing mapeiam conteúdo do STATE.md para comandos `dw-*` específicos; cross-reference com `.dw/spec/` e `.dw/bugfixes/` para detectar staleness;
|
|
84
|
+
Este comando adapta o pattern de session-handoff de [`tech-leads-club/agent-skills/tlc-spec-driven`](https://github.com/tech-leads-club/agent-skills/tree/main/packages/skills-catalog/skills/(development)/tlc-spec-driven) (CC-BY-4.0, Felipe Rodrigues). Adaptações: heuristicas de routing mapeiam conteúdo do STATE.md para comandos `dw-*` específicos; cross-reference com `.dw/spec/` e `.dw/bugfixes/` para detectar staleness; continua conforme intenção e autorização de retomada.
|
|
89
85
|
|
|
90
86
|
</system_instructions>
|
|
@@ -173,10 +173,11 @@ Se FALTANDO > 0, o veredicto sugere revisitar `/dw-plan tasks` pra escopar ou `/
|
|
|
173
173
|
- Complexidade ciclomática / cognitiva (com thresholds `dw-simplification`).
|
|
174
174
|
- Violações DRY (apenas com impacto significativo — não dedup prematuro).
|
|
175
175
|
- Code smells (taxonomia Fowler).
|
|
176
|
+
- Para mudanças em fluxo de dados, dependências ou ferramentas de qualidade do frontend, leia `dw-ui-discipline/references/frontend-engineering.md` e a baseline de qualidade/TechSpec do módulo. Inspecione geração/validação de API, limites de imports, regras de negócio duplicadas, código inalcançável e novas exclusões abrangentes. Execute checks adotados via `dw-verify`; ferramenta opcional ausente é proposta, não reprovação automática. Investigue mutantes sobreviventes quando a análise estiver no escopo; não aprove apenas por score. Relate mudanças na obrigatoriedade do CI separadamente dos resultados locais.
|
|
176
177
|
|
|
177
178
|
5. **Execução de testes:**
|
|
178
|
-
-
|
|
179
|
-
- Verificar
|
|
179
|
+
- Use `dw-verify` para inspecionar evidência válida; rode checks exigidos ausentes/invalidados.
|
|
180
|
+
- Verificar estratégia aprovada e limites exigidos pelo projeto; sem percentual universal de cobertura.
|
|
180
181
|
|
|
181
182
|
6. **Aplicar `dw-review-rigor`:**
|
|
182
183
|
- De-duplicar findings.
|
|
@@ -184,7 +185,7 @@ Se FALTANDO > 0, o veredicto sugere revisitar `/dw-plan tasks` pra escopar ou `/
|
|
|
184
185
|
- Verificar intent antes de flagar (linter já pega alguns — não repete).
|
|
185
186
|
|
|
186
187
|
7. **Verificação final (`dw-verify`):**
|
|
187
|
-
-
|
|
188
|
+
- Use dw-verify para produzir VERIFICATION REPORT dos checks obrigatórios aplicáveis, reutilizando evidência equivalente.
|
|
188
189
|
- Sem PASS, verdict não pode ser APROVADO.
|
|
189
190
|
|
|
190
191
|
8. **Security Gate (`dw-secure-audit` para TS/Python/C#/Rust):**
|