@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.
Files changed (114) hide show
  1. package/.claude-plugin/marketplace.json +1 -0
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +305 -0
  4. package/README.md +7 -5
  5. package/lib/agents.js +6 -1
  6. package/lib/build-plugin.js +4 -1
  7. package/lib/constants.js +4 -2
  8. package/lib/init.js +14 -0
  9. package/lib/install-state.js +8 -4
  10. package/lib/validate.js +21 -0
  11. package/package.json +2 -1
  12. package/scaffold/agents/core/dw-build-fixer.md +0 -1
  13. package/scaffold/agents/core/dw-code-explorer.md +0 -1
  14. package/scaffold/agents/core/dw-code-reviewer.md +0 -1
  15. package/scaffold/agents/core/dw-planner.md +0 -1
  16. package/scaffold/agents/core/dw-test-author.md +0 -1
  17. package/scaffold/agents/csharp/dw-csharp-reviewer.md +0 -1
  18. package/scaffold/agents/csharp/dw-dotnet-build-fixer.md +0 -1
  19. package/scaffold/agents/frontend/dw-qa-runner.md +0 -1
  20. package/scaffold/agents/python/dw-python-build-fixer.md +0 -1
  21. package/scaffold/agents/python/dw-python-reviewer.md +0 -1
  22. package/scaffold/agents/rust/dw-rust-build-fixer.md +0 -1
  23. package/scaffold/agents/rust/dw-rust-reviewer.md +0 -1
  24. package/scaffold/agents/security/dw-security-reviewer.md +0 -1
  25. package/scaffold/agents/security/dw-silent-failure-hunter.md +0 -1
  26. package/scaffold/agents/typescript/dw-typescript-build-fixer.md +0 -1
  27. package/scaffold/agents/typescript/dw-typescript-reviewer.md +0 -1
  28. package/scaffold/config/routing.json +60 -0
  29. package/scaffold/en/commands/dw-brainstorm.md +12 -8
  30. package/scaffold/en/commands/dw-bugfix.md +4 -2
  31. package/scaffold/en/commands/dw-claude-run.md +5 -1
  32. package/scaffold/en/commands/dw-codex-run.md +5 -1
  33. package/scaffold/en/commands/dw-dockerize.md +14 -7
  34. package/scaffold/en/commands/dw-generate-pr.md +13 -0
  35. package/scaffold/en/commands/dw-new-project.md +14 -13
  36. package/scaffold/en/commands/dw-plan.md +2 -2
  37. package/scaffold/en/commands/dw-refactor.md +1 -0
  38. package/scaffold/en/commands/dw-review.md +33 -2
  39. package/scaffold/en/commands/dw-run.md +2 -1
  40. package/scaffold/en/commands/dw-triage.md +220 -0
  41. package/scaffold/en/templates/idea-onepager.md +28 -0
  42. package/scaffold/en/templates/project-onepager.md +6 -5
  43. package/scaffold/en/templates/task-template.md +2 -1
  44. package/scaffold/en/templates/tasks-template.md +11 -8
  45. package/scaffold/en/templates/triage-needs-info-template.md +23 -0
  46. package/scaffold/en/templates/triage-out-of-scope-template.md +36 -0
  47. package/scaffold/en/templates/triage-record-template.md +88 -0
  48. package/scaffold/pt-br/commands/dw-autopilot.md +81 -81
  49. package/scaffold/pt-br/commands/dw-brainstorm.md +12 -9
  50. package/scaffold/pt-br/commands/dw-bugfix.md +4 -2
  51. package/scaffold/pt-br/commands/dw-claude-run.md +23 -19
  52. package/scaffold/pt-br/commands/dw-codex-run.md +22 -18
  53. package/scaffold/pt-br/commands/dw-context-budget.md +10 -10
  54. package/scaffold/pt-br/commands/dw-copilot-run.md +20 -20
  55. package/scaffold/pt-br/commands/dw-dockerize.md +106 -99
  56. package/scaffold/pt-br/commands/dw-find-skills.md +52 -52
  57. package/scaffold/pt-br/commands/dw-generate-pr.md +13 -0
  58. package/scaffold/pt-br/commands/dw-goal.md +41 -41
  59. package/scaffold/pt-br/commands/dw-harness-audit.md +11 -11
  60. package/scaffold/pt-br/commands/dw-intel.md +70 -70
  61. package/scaffold/pt-br/commands/dw-learn.md +24 -24
  62. package/scaffold/pt-br/commands/dw-new-project.md +93 -92
  63. package/scaffold/pt-br/commands/dw-open-design.md +53 -53
  64. package/scaffold/pt-br/commands/dw-opportunities.md +45 -45
  65. package/scaffold/pt-br/commands/dw-pause.md +39 -39
  66. package/scaffold/pt-br/commands/dw-plan.md +3 -3
  67. package/scaffold/pt-br/commands/dw-refactor.md +31 -30
  68. package/scaffold/pt-br/commands/dw-resume.md +22 -22
  69. package/scaffold/pt-br/commands/dw-review.md +33 -2
  70. package/scaffold/pt-br/commands/dw-run.md +2 -1
  71. package/scaffold/pt-br/commands/dw-skill-health.md +10 -10
  72. package/scaffold/pt-br/commands/dw-subtask-complete.md +4 -4
  73. package/scaffold/pt-br/commands/dw-subtask-start.md +4 -4
  74. package/scaffold/pt-br/commands/dw-triage.md +220 -0
  75. package/scaffold/pt-br/templates/bugfix-summary-template.md +20 -20
  76. package/scaffold/pt-br/templates/concerns-template.md +20 -20
  77. package/scaffold/pt-br/templates/idea-onepager.md +28 -0
  78. package/scaffold/pt-br/templates/project-onepager.md +35 -34
  79. package/scaffold/pt-br/templates/state-template.md +13 -13
  80. package/scaffold/pt-br/templates/task-template.md +2 -1
  81. package/scaffold/pt-br/templates/tasks-template.md +11 -8
  82. package/scaffold/pt-br/templates/triage-needs-info-template.md +23 -0
  83. package/scaffold/pt-br/templates/triage-out-of-scope-template.md +36 -0
  84. package/scaffold/pt-br/templates/triage-record-template.md +88 -0
  85. package/scaffold/scripts/hooks/git-guardrails.mjs +41 -24
  86. package/scaffold/skills/docker-compose-recipes/SKILL.md +2 -4
  87. package/scaffold/skills/docker-compose-recipes/references/compose-composition.md +2 -2
  88. package/scaffold/skills/docker-compose-recipes/references/env-conventions.md +16 -9
  89. package/scaffold/skills/docker-compose-recipes/references/healthcheck-patterns.md +0 -1
  90. package/scaffold/skills/docker-compose-recipes/references/prod-vs-dev.md +7 -2
  91. package/scaffold/skills/docker-compose-recipes/services/elasticsearch.yml +3 -3
  92. package/scaffold/skills/docker-compose-recipes/services/meilisearch.yml +2 -2
  93. package/scaffold/skills/docker-compose-recipes/services/minio.yml +8 -4
  94. package/scaffold/skills/docker-compose-recipes/services/mysql.yml +4 -4
  95. package/scaffold/skills/docker-compose-recipes/services/postgres.yml +2 -2
  96. package/scaffold/skills/docker-compose-recipes/services/rabbitmq.yml +3 -3
  97. package/scaffold/skills/docker-compose-recipes/services/typesense.yml +3 -3
  98. package/scaffold/skills/dw-cli-run/SKILL.md +42 -38
  99. package/scaffold/skills/dw-cli-run/references/dispatch-tuning.md +85 -0
  100. package/scaffold/skills/dw-debug-protocol/SKILL.md +2 -0
  101. package/scaffold/skills/dw-debug-protocol/references/six-step-triage.md +60 -1
  102. package/scaffold/skills/dw-execute-phase/SKILL.md +4 -2
  103. package/scaffold/skills/dw-execute-phase/agents/executor.md +4 -2
  104. package/scaffold/skills/dw-execute-phase/agents/plan-checker.md +9 -7
  105. package/scaffold/skills/dw-execute-phase/references/atomic-commits.md +12 -8
  106. package/scaffold/skills/dw-execute-phase/references/plan-verification.md +6 -4
  107. package/scaffold/skills/dw-execute-phase/references/wave-coordination.md +14 -14
  108. package/scaffold/skills/dw-grilling/SKILL.md +17 -7
  109. package/scaffold/skills/dw-grilling/references/decision-tree.md +30 -7
  110. package/scaffold/skills/dw-simplification/references/deep-modules.md +50 -0
  111. package/scaffold/skills/dw-testing-discipline/SKILL.md +3 -1
  112. package/scaffold/skills/dw-testing-discipline/references/tdd-loop.md +83 -0
  113. package/scaffold/skills/docker-compose-recipes/services/mailhog.yml +0 -23
  114. package/scaffold/skills/docker-compose-recipes/services/postgres-pgvector.yml +0 -31
@@ -9,28 +9,28 @@ related_concerns: []
9
9
 
10
10
  # Bugfix Summary — {{NNN}}-{{slug}}
11
11
 
12
- Registro de uma pagina de um bugfix. Arquivos irmaos neste diretorio:
12
+ Registro de uma página de um bugfix. Arquivos irmãos neste diretório:
13
13
 
14
- - `TASK.md` — a triagem original, respostas das perguntas de clarificacao e o plano de fix que rodou
15
- - `fix-report.md` — evidencia de verificacao (saida do `dw-verify` PASS, prova de reproducao, execucao do teste de regressao)
14
+ - `TASK.md` — a triagem original, respostas das perguntas de clarificação e o plano de fix que rodou
15
+ - `fix-report.md` — evidência de verificação (saída do `dw-verify` PASS, prova de reprodução, execução do teste de regressão)
16
16
  - `review/` — populado por `/dw-review --bugfix {{NNN}}-{{slug}}`
17
- - `QA/` — populado por `/dw-qa --bugfix {{NNN}}-{{slug}}` (quando aplicavel)
17
+ - `QA/` — populado por `/dw-qa --bugfix {{NNN}}-{{slug}}` (quando aplicável)
18
18
 
19
19
  ## Sintoma
20
20
 
21
- O que o usuario observou. Cite a descricao original do bug verbatim; nao parafraseie.
21
+ O que o usuário observou. Cite a descrição original do bug verbatim; não parafraseie.
22
22
 
23
23
  > _"…"_
24
24
 
25
25
  ## Causa Raiz
26
26
 
27
- O que estava de fato quebrado, em uma frase. Nao o sintoma — a causa.
27
+ O que estava de fato quebrado, em uma frase. Não o sintoma — a causa.
28
28
 
29
29
  _…_
30
30
 
31
- ## Resolucao
31
+ ## Resolução
32
32
 
33
- O que mudou, em 2-4 bullets. Paths de arquivos, nao snippets.
33
+ O que mudou, em 2-4 bullets. Paths de arquivos, não snippets.
34
34
 
35
35
  - _mudanca 1_
36
36
  - _mudanca 2_
@@ -39,28 +39,28 @@ O que mudou, em 2-4 bullets. Paths de arquivos, nao snippets.
39
39
 
40
40
  Lista completa, incluindo testes. <=5 — se mais, o safety valve deveria ter escalado para `/dw-plan`.
41
41
 
42
- | Path | Mudanca |
42
+ | Path | Mudança |
43
43
  |------|---------|
44
- | `src/foo/bar.ts` | _fix cirurgico em X_ |
45
- | `src/foo/bar.test.ts` | _teste de regressao adicionado_ |
44
+ | `src/foo/bar.ts` | _fix cirúrgico em X_ |
45
+ | `src/foo/bar.test.ts` | _teste de regressão adicionado_ |
46
46
 
47
- ## Verificacao
47
+ ## Verificação
48
48
 
49
- Como o fix foi provado, alem de "os testes passam".
49
+ Como o fix foi provado, além de "os testes passam".
50
50
 
51
- - **Reproducao antes do fix:** _passo que disparava o bug, capturado_
52
- - **Reproducao depois do fix:** _mesmo passo, agora passa_
53
- - **Teste de regressao:** _nome + path_
54
- - **Relatorio de verify:** `fix-report.md`
51
+ - **Reprodução antes do fix:** _passo que disparava o bug, capturado_
52
+ - **Reprodução depois do fix:** _mesmo passo, agora passa_
53
+ - **Teste de regressão:** _nome + path_
54
+ - **Relatório de verify:** `fix-report.md`
55
55
 
56
56
  ## Relacionado
57
57
 
58
- - **Concerns tocados:** _refs de `.dw/rules/concerns.md` se o fix caiu em area flagada_
59
- - **Bugfixes adjacentes:** _slugs de fixes anteriores no mesmo modulo, se houver_
58
+ - **Concerns tocados:** _refs de `.dw/rules/concerns.md` se o fix caiu em área flagada_
59
+ - **Bugfixes adjacentes:** _slugs de fixes anteriores no mesmo módulo, se houver_
60
60
  - **Contexto de PRD:** _se o bug apareceu dentro de uma feature em andamento, link para o path do PRD_
61
61
 
62
62
  ## Followups
63
63
 
64
- Pontas soltas que este fix descobriu mas nao resolveu. Adicione ao `.dw/STATE.md` Open-Loops ao fechar.
64
+ Pontas soltas que este fix descobriu mas não resolveu. Adicione ao `.dw/STATE.md` Open-Loops ao fechar.
65
65
 
66
66
  - _nenhum_
@@ -6,54 +6,54 @@ last_refreshed: ""
6
6
 
7
7
  # Concerns — Mapa de Riscos
8
8
 
9
- Mapa de riscos deste codebase. Nao sao convencoes ("como fazemos as coisas" — isso e `.dw/rules/`), nao e arquitetura ("como esta construido" — isso e `.dw/intel/arch.md`). Este arquivo responde uma unica pergunta: **onde e perigoso mexer?**
9
+ Mapa de riscos deste codebase. Não são convenções ("como fazemos as coisas" — isso e `.dw/rules/`), não é arquitetura ("como está construído" — isso e `.dw/intel/arch.md`). Este arquivo responde uma única pergunta: **onde é perigoso mexer?**
10
10
 
11
- Carregado on-demand por `/dw-plan`, `/dw-run` e `/dw-bugfix` quando o alvo deles toca uma entrada abaixo. Auto-instalado pelo `/dw-analyze-project` Step 9; nunca bloqueia (ausencia = nenhuma area flagada ainda).
11
+ Carregado on-demand por `/dw-plan`, `/dw-run` e `/dw-bugfix` quando o alvo deles toca uma entrada abaixo. Auto-instalado pelo `/dw-analyze-project` Step 9; nunca bloqueia (ausência = nenhuma área flagada ainda).
12
12
 
13
13
  ## Hot Spots
14
14
 
15
- Arquivos ou modulos com churn alto, reports frequentes de bug ou historico repetido de "mexi aqui e quebrou algo". Mencione em PRDs que toquem a mesma area; adicione revisor extra ou passada extra de teste.
15
+ Arquivos ou módulos com churn alto, reports frequentes de bug ou histórico repetido de "mexi aqui e quebrou algo". Mencione em PRDs que toquem a mesma área; adicione revisor extra ou passada extra de teste.
16
16
 
17
- | Path | Por que e quente | Primeiro flag | Ultimo incidente |
17
+ | Path | Por que é quente | Primeiro flag | Último incidente |
18
18
  |------|------------------|---------------|------------------|
19
19
  | _ex. `src/auth/session.ts`_ | _3 fixes de token em 60d_ | _YYYY-MM-DD_ | _YYYY-MM-DD_ |
20
20
 
21
- ## Integracoes Fragis
21
+ ## Integrações Fragis
22
22
 
23
- Sistemas externos (APIs, filas, vendors, bancos legados) com historico de falhas silenciosas, drift de schema, surpresas de rate-limit ou comportamento nao-documentado. Codigo novo que toque eles precisa de tratamento explicito de retry/timeout/idempotencia.
23
+ Sistemas externos (APIs, filas, vendors, bancos legados) com histórico de falhas silenciosas, drift de schema, surpresas de rate-limit ou comportamento não-documentado. Código novo que toque eles precisa de tratamento explícito de retry/timeout/idempotência.
24
24
 
25
- | Integracao | Modo de falha | Mitigacao esperada |
25
+ | Integração | Modo de falha | Mitigação esperada |
26
26
  |------------|---------------|--------------------|
27
- | _ex. export SAP legado_ | _200 OK silencioso com body vazio quando source esta lockado_ | _checar tamanho do body; logar e alertar_ |
27
+ | _ex. export SAP legado_ | _200 OK silencioso com body vazio quando source está lockado_ | _checar tamanho do body; logar e alertar_ |
28
28
 
29
- ## Codigo Hostil
29
+ ## Código Hostil
30
30
 
31
- Funcoes especificas, regexes, parsers ou algoritmos dificeis de raciocinar — quem toca precisa entender 100% primeiro (ou reescrever, nao remendar). Suspeitos comuns: regex artesanal, parsers de string ad-hoc, serializadores custom, async com race condition, codigo de transacao manual.
31
+ Funções específicas, regexes, parsers ou algoritmos difíceis de raciocinar — quem toca precisa entender 100% primeiro (ou reescrever, não remendar). Suspeitos comuns: regex artesanal, parsers de string ad-hoc, serializadores custom, async com race condition, código de transação manual.
32
32
 
33
- | Path / funcao | Por que e hostil | Owner / contexto |
33
+ | Path / função | Por que é hostil | Owner / contexto |
34
34
  |---------------|------------------|------------------|
35
35
  | _ex. `src/billing/parseInvoice.ts:parseLine`_ | _regex de 900 chars com 12 alternativas, sem comentarios_ | _Bruno escreveu em 2024; reescrever se quebrar_ |
36
36
 
37
- ## Historico de Bugs Conhecidos
37
+ ## Histórico de Bugs Conhecidos
38
38
 
39
- Agregado de `.dw/bugfixes/*/SUMMARY.md` pelo `/dw-intel --build`. Lista modulos com >=2 fixes historicos. Leia junto com Hot Spots ao planejar trabalho relacionado.
39
+ Agregado de `.dw/bugfixes/*/SUMMARY.md` pelo `/dw-intel --build`. Lista módulos com >=2 fixes historicos. Leia junto com Hot Spots ao planejar trabalho relacionado.
40
40
 
41
- | Modulo | Contagem de bugs | Slugs recentes |
41
+ | Módulo | Contagem de bugs | Slugs recentes |
42
42
  |--------|------------------|----------------|
43
43
  | _ex. `src/payments/`_ | _4_ | _002-stripe-webhook-retry, 007-refund-rounding_ |
44
44
 
45
45
  ## Tech Debt — Reconhecida
46
46
 
47
- Pedacos de debt que o time concorda que existem. Nao sao para limpar oportunisticamente sem coordenacao — podem ser load-bearing de formas nao obvias.
47
+ Pedaços de debt que o time concorda que existem. Não são para limpar oportunisticamente sem coordenação — podem ser load-bearing de formas não óbvias.
48
48
 
49
- | Area | Descricao do debt | Por que fica | Trigger de cleanup |
49
+ | Área | Descrição do debt | Por que fica | Trigger de cleanup |
50
50
  |------|-------------------|--------------|--------------------|
51
- | _ex. `src/legacy/userMapper.ts`_ | _Dois codepaths paralelos de field-mapping_ | _Esperando migracao v3 da API_ | _Q3 2026 apos cutover do vendor_ |
51
+ | _ex. `src/legacy/userMapper.ts`_ | _Dois codepaths paralelos de field-mapping_ | _Esperando migração v3 da API_ | _Q3 2026 após cutover do vendor_ |
52
52
 
53
53
  ---
54
54
 
55
55
  **Como manter este arquivo:**
56
56
 
57
- - `/dw-analyze-project` reescreve a cada execucao. Entradas escritas a mao entre `<!-- preserved:start -->` e `<!-- preserved:end -->` sao mantidas.
58
- - Quando um bugfix descobrir uma nova area perigosa, adicione manualmente em Hot Spots e deixe a proxima analise confirmar.
59
- - Promova entradas para `.dw/constitution.md` quando virarem regras nao-negociaveis ("nunca toque X sem ADR").
57
+ - `/dw-analyze-project` reescreve a cada execução. Entradas escritas a mão entre `<!-- preserved:start -->` e `<!-- preserved:end -->` são mantidas.
58
+ - Quando um bugfix descobrir uma nova área perigosa, adicione manualmente em Hot Spots e deixe a próxima análise confirmar.
59
+ - Promova entradas para `.dw/constitution.md` quando virarem regras não-negociáveis ("nunca toque X sem ADR").
@@ -93,6 +93,34 @@ Idealmente 2-4 stories. Se são mais de 5, provavelmente não é MVP.]
93
93
 
94
94
  _(schema 1.1 — preenchido por uma sessão de grill do `/dw-brainstorm`; consumido pelo `/dw-plan`, que NÃO re-pergunta decisões resolvidas. Deixe vazio para um one-pager sem grill.)_
95
95
 
96
+ ### Decision Map
97
+
98
+ [Árvore durável do Grill. Registra apenas estrutura e estado de retomada; mantenha resultado da decisão,
99
+ recomendação, alternativa e evidência em **Resolved Decisions** abaixo.]
100
+
101
+ **Frontier:** [IDs de nós com `State: open-ready`, separados por vírgula, ou `none`]
102
+
103
+ | ID | Nó de decisão | State | Depends on: | Frontier? | Notas |
104
+ |----|---------------|-------|-------------|-----------|-------|
105
+ | D1 | [decisão upstream] | resolved | none | no | [nota estrutural; resultado fica em Resolved Decisions] |
106
+ | D2 | [decisão aberta que pode ser perguntada agora] | open-ready | D1 | yes | [por que está pronta] |
107
+ | D3 | [decisão aberta ainda bloqueada] | open-blocked | D2 | no | [o que bloqueia] |
108
+
109
+ `State` é a fonte da verdade. `Frontier?` e a linha `**Frontier:**` são derivados dele por
110
+ legibilidade — se algum dia discordarem do `State`, o `State` vence e os derivados são reescritos.
111
+
112
+ Valores permitidos de `State`:
113
+ - `resolved` — o usuário resolveu o nó; detalhes ficam em **Resolved Decisions**.
114
+ - `open-ready` — aberto e decidível agora; este nó está na **Frontier**.
115
+ - `open-blocked` — aberto, mas aguardando um ou mais nós em `Depends on:`.
116
+
117
+ #### Decision Fog
118
+
119
+ [Áreas conhecidas não resolvidas que ainda não estão nítidas o suficiente para virar nós de decisão. Mantenha
120
+ curto; cada item gradua para **Decision Map** quando virar uma decisão concreta.]
121
+
122
+ - [área desconhecida] — [por que ainda não dá para formular como decisão]
123
+
96
124
  ### Resolved Decisions
97
125
 
98
126
  | Decisão | Recomendado | Escolhido | Alternativa rejeitada | Evidência |
@@ -13,44 +13,45 @@ services: []
13
13
 
14
14
  # Projeto: [Nome do projeto]
15
15
 
16
- ## Proposito
16
+ ## Propósito
17
17
 
18
- [Um paragrafo em linguagem de produto. Quem vai usar, qual problema resolve, como o sucesso se parece em 6-12 semanas. Evite linguagem de implementacao.]
18
+ [Um parágrafo em linguagem de produto. Quem vai usar, qual problema resolve, como o sucesso se parece em 6-12 semanas. Evite linguagem de implementação.]
19
19
 
20
20
  ## Stack Selecionado
21
21
 
22
22
  | Camada | Escolha | Justificativa |
23
23
  |--------|---------|---------------|
24
- | Forma | frontend / backend / fullstack | [por que essa forma — superficie unica, API para parceiros, etc.] |
24
+ | Forma | frontend / backend / fullstack | [por que essa forma — superfície única, API para parceiros, etc.] |
25
25
  | Frontend | Next.js / Vite+React / n/a | [por que esse framework — SSR, simplicidade SPA, etc.] |
26
- | Backend | NestJS / Fastify / FastAPI / ASP.NET Core minimal / Axum / n/a | [por que — expertise do time, ecosystem, alvo de latencia] |
27
- | Database | Postgres / Postgres+pgvector / MySQL / SQLite / MongoDB / nenhum | [por que esse DB — relacional, vetorial, transacional, etc.] |
28
- | Cache | Redis / Memcached / nenhum | [por que ou por que nao] |
29
- | Fila | pg-boss / BullMQ / Celery / RabbitMQ / LocalStack SQS / nenhum | [por que ou nao + sync vs async workers] |
30
- | Email — dev | Mailpit (default) / MailHog / smtp4dev / nenhum | [normalmente Mailpit — captura only, nunca envia real] |
26
+ | Backend | NestJS / Fastify / FastAPI / ASP.NET Core minimal / Axum / n/a | [por que — expertise do time, ecosystem, alvo de latência] |
27
+ | Database | Postgres / MySQL / SQLite / MongoDB / nenhum | [por que esse DB — relacional, transacional, etc. Busca vetorial não tem recipe bundled; nomeie a imagem revisada ou serviço gerenciado se o projeto precisar] |
28
+ | Cache | Redis / Memcached / nenhum | [por que ou por que não] |
29
+ | Fila | pg-boss / BullMQ / Celery / RabbitMQ / LocalStack SQS / nenhum | [por que ou não + sync vs async workers] |
30
+ | Email — dev | Mailpit (default) / smtp4dev / nenhum | [normalmente Mailpit — captura only, nunca envia real] |
31
31
  | Email — prod | SMTP / SendGrid / Resend / Postmark / SES / nenhum | [por que esse provider — volume, deliverability, custo] |
32
- | Object storage | S3 / MinIO (dev) / GCS / nenhum | [por que ou nao] |
32
+ | Object storage | S3 / MinIO (dev) / GCS / nenhum | [por que ou não] |
33
33
  | Search | Meilisearch / Typesense / Elasticsearch / nenhum | [por que esse engine — features, escala, simplicidade] |
34
- | Observability | Sentry / OTel + Jaeger / nenhum | [por que essa abordagem — so error tracking, tracing completo, etc.] |
35
- | Reverse proxy | Traefik / Caddy / nenhum | [normalmente so multi-host dev ou prod] |
36
- | Auth | Auth.js / OIDC generico / Clerk / fastapi-users / dotnet Identity / JWT custom / nenhum | [por que — social login, B2B, etc.] |
37
- | Linter / formatter | Biome / ESLint+Prettier / Ruff+Black / dotnet format / cargo fmt+clippy | [preferencia do time] |
38
- | Package manager | pnpm / npm / yarn / poetry / uv / cargo / dotnet | [preferencia do time] |
39
- | Workspace + task runner | pnpm workspaces + Turborepo / npm workspaces / Nx / n/a | [so para fullstack — caching/build] |
34
+ | Observability | Sentry / OTel + Jaeger / nenhum | [por que essa abordagem — só error tracking, tracing completo, etc.] |
35
+ | Reverse proxy | Traefik / Caddy / nenhum | [normalmente só multi-host dev ou prod] |
36
+ | Auth | Auth.js / OIDC genérico / Clerk / fastapi-users / dotnet Identity / JWT custom / nenhum | [por que — social login, B2B, etc.] |
37
+ | Linter / formatter | Biome / ESLint+Prettier / Ruff+Black / dotnet format / cargo fmt+clippy | [preferência do time] |
38
+ | Package manager | pnpm / npm / yarn / poetry / uv / cargo / dotnet | [preferência do time] |
39
+ | Workspace + task runner | pnpm workspaces + Turborepo / npm workspaces / Nx / n/a | [só para fullstack — caching/build] |
40
40
  | Topologia de dev | apps no host / tudo no Compose | [trade-off de hot reload e paridade] |
41
- | CI | GitHub Actions / nenhum | [normalmente GitHub Actions; pular so para repos nao-publicos] |
41
+ | CI | GitHub Actions / nenhum | [normalmente GitHub Actions; pular só para repos não-públicos] |
42
42
 
43
- ## Servicos & Infra
43
+ ## Serviços & Infra
44
44
 
45
- [Servicos gerados a partir da skill docker-compose-recipes. Preenchido pelo /dw-new-project.]
45
+ [Serviços gerados a partir da skill docker-compose-recipes. Preenchido pelo /dw-new-project.]
46
46
 
47
- | Servico | Porta (host) | UI | Credenciais default |
48
- |---------|--------------|----|--------------------|
49
- | postgres | 5432 | — | POSTGRES_USER=app, POSTGRES_PASSWORD=app, POSTGRES_DB=app |
47
+ | Serviço | Porta (host) | UI | Credenciais |
48
+ |---------|--------------|----|-------------|
49
+ | postgres | 127.0.0.1:5432 | — | POSTGRES_USER=app, POSTGRES_PASSWORD obrigatória no `.env` (sem default), POSTGRES_DB=app |
50
50
  | redis | 6379 | — | (sem auth em dev) |
51
51
  | mailpit | 1025 (smtp), 8025 (UI) | http://localhost:8025 | (sem auth) |
52
52
  | ... | ... | ... | ... |
53
53
 
54
+
54
55
  ## Diagrama da Arquitetura
55
56
 
56
57
  ```
@@ -70,7 +71,7 @@ services: []
70
71
 
71
72
  ## Arquivos Gerados
72
73
 
73
- [Preenchido pelo /dw-new-project apos Fase 3 — lista de arquivos criados com origem.]
74
+ [Preenchido pelo /dw-new-project após Fase 3 — lista de arquivos criados com origem.]
74
75
 
75
76
  ```
76
77
  {{TARGET_DIR}}/
@@ -95,16 +96,16 @@ services: []
95
96
 
96
97
  ## Escopo MVP
97
98
 
98
- [A primeira feature menor que voce vai entregar. Pensada como user stories — vai dirigir a primeira rodada de /dw-plan prd.]
99
+ [A primeira feature menor que você vai entregar. Pensada como user stories — vai dirigir a primeira rodada de /dw-plan prd.]
99
100
 
100
- - Como [persona], eu posso [acao] para que [beneficio]
101
- - Como [persona], eu posso [acao] para que [beneficio]
101
+ - Como [persona], eu posso [ação] para que [benefício]
102
+ - Como [persona], eu posso [ação] para que [benefício]
102
103
 
103
- Se voce ainda nao tem a primeira feature em mente, tudo bem — deixa placeholder e roda o /dw-plan prd quando tiver.
104
+ Se você ainda não tem a primeira feature em mente, tudo bem — deixa placeholder e roda o /dw-plan prd quando tiver.
104
105
 
105
- ## Nao Estou Fazendo (explicito)
106
+ ## Não Estou Fazendo (explícito)
106
107
 
107
- [Itens tentadores adiados. Forca disciplina de escopo.]
108
+ [Itens tentadores adiados. Força disciplina de escopo.]
108
109
 
109
110
  - **[item 1]** — motivo: [fora do v1 porque...]
110
111
  - **[item 2]** — motivo: [pode virar v2 se a hipotese X validar]
@@ -112,19 +113,19 @@ Se voce ainda nao tem a primeira feature em mente, tudo bem — deixa placeholde
112
113
  ## Premissas-Chave
113
114
 
114
115
  - **[premissa sobre usuarios / mercado / escala]** — teste: [como validar]
115
- - **[premissa sobre latencia / volume / SLAs]** — teste: [load profile, metrica alvo]
116
+ - **[premissa sobre latência / volume / SLAs]** — teste: [load profile, métrica alvo]
116
117
 
117
118
  ## Perguntas em Aberto
118
119
 
119
- [O que este one-pager nao consegue responder sozinho. Resolva antes do /dw-plan prd ou escale para um stakeholder.]
120
+ [O que este one-pager não consegue responder sozinho. Resolva antes do /dw-plan prd ou escale para um stakeholder.]
120
121
 
121
122
  - [pergunta 1]
122
123
  - [pergunta 2]
123
124
 
124
- ## Proximo Passo
125
+ ## Próximo Passo
125
126
 
126
127
  Escolha UM:
127
128
 
128
- - **`/dw-plan prd`** — quando voce tem a primeira feature em mente e quer rascunhar o PRD em cima deste stack
129
- - **`/dw-analyze-project`** — apos primeiro commit substancial, para enriquecer `.dw/rules/` com convencoes por modulo
130
- - **`/dw-secure-audit --plan --scan-only`** — para confirmar que nenhuma dep vulneravel veio dos templates `create-*`
129
+ - **`/dw-plan prd`** — quando você tem a primeira feature em mente e quer rascunhar o PRD em cima deste stack
130
+ - **`/dw-analyze-project`** — após primeiro commit substancial, para enriquecer `.dw/rules/` com convenções por módulo
131
+ - **`/dw-secure-audit --plan --scan-only`** — para confirmar que nenhuma dep vulnerável veio dos templates `create-*`
@@ -4,51 +4,51 @@ last_paused: ""
4
4
  last_resumed: ""
5
5
  ---
6
6
 
7
- # Estado da Sessao
7
+ # Estado da Sessão
8
8
 
9
- Memoria de trabalho entre sessoes. Indice leve do que esta em andamento, do que foi decidido, do que ficou parado. Atualizado por `/dw-pause` (consolida) e lido por `/dw-resume` (orienta).
9
+ Memória de trabalho entre sessões. Índice leve do que está em andamento, do que foi decidido, do que ficou parado. Atualizado por `/dw-pause` (consolida) e lido por `/dw-resume` (orienta).
10
10
 
11
- Diferente do `MEMORY.md` por-PRD (memoria de workflow para uma feature) ou dos ADRs (decisoes arquiteturais duraveis), este arquivo vive no nivel do projeto e sobrevive entre PRDs, branches e sessoes. Edite livremente entre pausas.
11
+ Diferente do `MEMORY.md` por-PRD (memória de workflow para uma feature) ou dos ADRs (decisões arquiteturais duráveis), este arquivo vive no nível do projeto e sobrevive entre PRDs, branches e sessões. Edite livremente entre pausas.
12
12
 
13
13
  ## Open Loops (Pontas Soltas)
14
14
 
15
- O que esta em andamento — trabalho comecado mas nao terminado. Cada entrada: label curto + path/alvo + proxima acao concreta.
15
+ O que está em andamento — trabalho começado mas não terminado. Cada entrada: label curto + path/alvo + próxima ação concreta.
16
16
 
17
17
  - _nenhum_
18
18
 
19
- ## Decisoes
19
+ ## Decisões
20
20
 
21
- Decisoes transversais que ainda nao viraram ADR (porque nao justificam um, ou porque a formalizacao foi adiada). Formato: `YYYY-MM-DD — decisao — contexto (1 linha)`.
21
+ Decisões transversais que ainda não viraram ADR (porque não justificam um, ou porque a formalização foi adiada). Formato: `YYYY-MM-DD — decisao — contexto (1 linha)`.
22
22
 
23
23
  - _nenhuma_
24
24
 
25
25
  ## Bloqueios
26
26
 
27
- O que esta impedindo o avanco. Externo (esperando alguem), interno (lacuna de conhecimento) ou tecnico (tooling quebrado). Cada entrada: label curto + o que esta bloqueado + dono / condicao de desbloqueio.
27
+ O que está impedindo o avanço. Externo (esperando alguém), interno (lacuna de conhecimento) ou técnico (tooling quebrado). Cada entrada: label curto + o que está bloqueado + dono / condição de desbloqueio.
28
28
 
29
29
  - _nenhum_
30
30
 
31
31
  ## Todos
32
32
 
33
- Pequenos follow-ups que nao justificam um PRD ou task. Uma linha cada. Limpe conforme forem feitos ou migrados para um PRD.
33
+ Pequenos follow-ups que não justificam um PRD ou task. Uma linha cada. Limpe conforme forem feitos ou migrados para um PRD.
34
34
 
35
35
  - _nenhum_
36
36
 
37
37
  ## Ideias Adiadas
38
38
 
39
- Ideias consideradas mas parqueadas. Capture para nao perder; revisite quando o escopo mudar. Cada entrada: ideia + motivo do park + trigger de revisita (se conhecido).
39
+ Ideias consideradas mas parqueadas. Capture para não perder; revisite quando o escopo mudar. Cada entrada: ideia + motivo do park + trigger de revisita (se conhecido).
40
40
 
41
41
  - _nenhuma_
42
42
 
43
- ## Licoes
43
+ ## Lições
44
44
 
45
- Pequenas licoes aprendidas no trabalho recente — padroes que funcionaram, pegadinhas, "da proxima vez eu...". Nao sao arquiteturais (essas vao para ADRs); sao operacionais.
45
+ Pequenas lições aprendidas no trabalho recente — padrões que funcionaram, pegadinhas, "da próxima vez eu...". Não são arquiteturais (essas vão para ADRs); são operacionais.
46
46
 
47
47
  - _nenhuma_
48
48
 
49
- ## Preferencias
49
+ ## Preferências
50
50
 
51
- Convencoes acordadas durante o trabalho que afetam como o agent deve se comportar dali em diante. Exemplos: "sempre rodar `pnpm typecheck` antes do commit", "preferir named exports a default exports em utils".
51
+ Convenções acordadas durante o trabalho que afetam como o agent deve se comportar dali em diante. Exemplos: "sempre rodar `pnpm typecheck` antes do commit", "preferir named exports a default exports em utils".
52
52
 
53
53
  - _nenhuma_
54
54
 
@@ -12,7 +12,8 @@ status: pending
12
12
 
13
13
  [Breve descrição da tarefa]
14
14
 
15
- **Requisitos Funcionais cobertos**: RF[X.Y], RF[X.Z] (máximo 2 por task)
15
+ **Requisitos Funcionais cobertos**: RF-X.Y, RF-X.Z (máximo 2 por task)
16
+ Depends on: none
16
17
 
17
18
  <requirements>
18
19
  [Lista de requisitos obrigatórios]
@@ -19,17 +19,20 @@ feat/prd-[nome-funcionalidade]
19
19
 
20
20
  ## Tarefas
21
21
 
22
- | Task | Descrição | RFs | Status |
23
- |------|-----------|-----|--------|
24
- | 1.0 | [Título] | RF1.1, RF1.2 | Pendente |
25
- | 2.0 | [Título] | RF2.1 | Pendente |
26
- | 3.0 | [Título] | RF3.1, RF3.2 | Pendente |
22
+ | Task | Descrição | Depends on | RFs | Status | Commit |
23
+ |------|-----------|------------|-----|--------|--------|
24
+ | 1.0 | [Título] | none | RF-1.1, RF-1.2 | Pendente | — |
25
+ | 2.0 | [Título] | 1.0 | RF-2.1 | Pendente | — |
26
+ | 3.0 | [Título] | 1.0, 2.0 | RF-3.1, RF-3.2 | Pendente | — |
27
+
28
+ `Commit` guarda o SHA curto escrito de volta pelo `/dw-run` quando a task fecha (passo 6). É o que torna o diff da task localizável depois — deixe `—` até a task commitar.
29
+ `Depends on` é o grafo de dependência consumido pelo `/dw-run`; escreva `none` quando uma task não tiver dependência.
27
30
 
28
31
  ## Progresso
29
32
 
30
- - [ ] 1.0 Título da Tarefa Principal
31
- - [ ] 2.0 Título da Tarefa Principal
32
- - [ ] 3.0 Título da Tarefa Principal
33
+ - [ ] 1.0 Título da Tarefa Principal Depends on: none
34
+ - [ ] 2.0 Título da Tarefa Principal Depends on: 1.0
35
+ - [ ] 3.0 Título da Tarefa Principal Depends on: 1.0, 2.0
33
36
 
34
37
  ## Workflow
35
38
 
@@ -0,0 +1,23 @@
1
+ # Needs Info: <título>
2
+
3
+ ## Perguntas Bloqueantes
4
+
5
+ - [ ] <pergunta 1>
6
+ - [ ] <pergunta 2>
7
+ - [ ] <pergunta 3>
8
+
9
+ ## Por Que Isto Bloqueia a Triagem
10
+
11
+ <Explique por que a informação ausente impede confiança na categoria/estado ou na verificação.>
12
+
13
+ ## Resposta do Autor
14
+
15
+ <Cole ou resuma a resposta do autor. Quando o autor responder, mova o estado de triagem de `needs-info` para `needs-triage` e rode novamente a etapa de recomendação.>
16
+
17
+ ## Evidência Solicitada
18
+
19
+ - Passos de reprodução:
20
+ - Comportamento esperado vs atual:
21
+ - Ambiente ou massa de teste:
22
+ - PR diff ou branch/ref:
23
+ - Screenshots/logs/traces:
@@ -0,0 +1,36 @@
1
+ ---
2
+ type: out-of-scope
3
+ schema_version: "1.0"
4
+ concept: "<concept-slug>"
5
+ created_at: "YYYY-MM-DD"
6
+ updated_at: "YYYY-MM-DD"
7
+ ---
8
+
9
+ # Fora de Escopo: <Nome do Conceito>
10
+
11
+ ## Decisão
12
+
13
+ Rejeitado em YYYY-MM-DD.
14
+
15
+ ## Motivo
16
+
17
+ <Registre o motivo durável. Não escreva apenas "wontfix"; explique a fronteira de produto, técnica, operacional ou de política.>
18
+
19
+ ## Aplica-se A
20
+
21
+ - <Formulação de domínio dos pedidos que esta decisão cobre>
22
+ - <Redações alternativas conhecidas que mapeiam para o mesmo conceito>
23
+
24
+ ## Evidência
25
+
26
+ - Registro de triagem: `.dw/triage/NNN-<slug>.md`
27
+ - Busca no codebase:
28
+ - Decisões anteriores:
29
+
30
+ ## Condições de Reabertura
31
+
32
+ <O que precisaria mudar para este conceito ser reconsiderado?>
33
+
34
+ ## Histórico
35
+
36
+ - YYYY-MM-DD — rejected — <actor> — <reason>
@@ -0,0 +1,88 @@
1
+ ---
2
+ type: triage-record
3
+ schema_version: "1.0"
4
+ id: "NNN-<slug>"
5
+ category: "bug | enhancement"
6
+ state: "needs-triage | needs-info | ready-for-work | needs-human | wontfix"
7
+ created_at: "YYYY-MM-DD"
8
+ updated_at: "YYYY-MM-DD"
9
+ ---
10
+
11
+ # Triagem: <título>
12
+
13
+ ## Fonte
14
+
15
+ | Campo | Valor |
16
+ |-------|-------|
17
+ | Tipo de Fonte | paste / file / github-issue / github-pr / other |
18
+ | Referência da Fonte | <caminho, URL, número de issue, número de PR, ou marcador de sessão colada> |
19
+ | Autor | <nome ou desconhecido> |
20
+ | Reportado em | <data ou desconhecida> |
21
+ | Recuperado por | local / gh / pasted / owner-provided |
22
+
23
+ ## Resumo de Intake
24
+
25
+ <Resumo curto do pedido em linguagem de domínio.>
26
+
27
+ ## Classificação
28
+
29
+ | Campo | Valor |
30
+ |-------|-------|
31
+ | Categoria | bug / enhancement |
32
+ | Estado | needs-triage / needs-info / ready-for-work / needs-human / wontfix |
33
+ | Conceito de Domínio | <slug do conceito e nome humano> |
34
+ | Motivo do Desfecho | <por que este estado foi escolhido> |
35
+
36
+ ## Checks do Codebase
37
+
38
+ ### Busca de Redundância
39
+
40
+ | Área Pesquisada | Query / Conceito | Resultado |
41
+ |-----------------|------------------|-----------|
42
+ | `.dw/domain/**` | <concept> | <match / no match / missing> |
43
+ | `.dw/spec/**` | <concept> | <match / no match / missing> |
44
+ | `.dw/bugfixes/**` | <concept> | <match / no match / missing> |
45
+ | `.dw/rules/**` | <concept> | <match / no match / missing> |
46
+ | Código / testes / docs | <concept> | <match / no match> |
47
+
48
+ ### Busca de Rejeição Anterior
49
+
50
+ | Registro | Similaridade | Decisão |
51
+ |----------|--------------|---------|
52
+ | `.dw/out-of-scope/<concept>.md` | <por que é similar> | aplica / não aplica / reaberta |
53
+
54
+ ## Verificação
55
+
56
+ | Campo | Valor |
57
+ |-------|-------|
58
+ | Status da Verificação | confirmed / failed-to-reproduce / insufficient-detail |
59
+ | Método de Verificação | passos de reprodução / revisão do diff do PR / testes relevantes / check de inventário de produto |
60
+ | Comandos Rodados | <comandos ou n/a> |
61
+ | Arquivos Inspecionados | <caminhos> |
62
+ | Evidência | <o que foi observado> |
63
+
64
+ ## Needs Info
65
+
66
+ <!-- Se o estado for needs-info, cole aqui o corpo de triage-needs-info-template.md. Caso contrário, escreva "n/a". -->
67
+
68
+ n/a
69
+
70
+ ## Roteamento
71
+
72
+ | Condição | Rota |
73
+ |----------|------|
74
+ | ready-for-work + bug | `/dw-bugfix` |
75
+ | ready-for-work + enhancement | `/dw-plan prd` |
76
+ | pedido malformado | `/dw-brainstorm --mode=grill` |
77
+ | needs-human | ação do dono |
78
+ | wontfix | sem trabalho downstream |
79
+
80
+ Rota selecionada: <rota ou n/a>
81
+
82
+ ## Link Out-of-Scope
83
+
84
+ <Se rejeitado, linke `.dw/out-of-scope/<concept>.md`. Se já implementado, linke a implementação e declare que nenhum registro out-of-scope foi escrito.>
85
+
86
+ ## Histórico
87
+
88
+ - YYYY-MM-DD — needs-triage -> <state> — <actor> — <reason>