@dewtech/dare-cli 2.4.1 → 2.6.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 (41) hide show
  1. package/README.md +68 -2
  2. package/dist/__tests__/dag-runner/ralph-loop.test.d.ts +2 -0
  3. package/dist/__tests__/dag-runner/ralph-loop.test.d.ts.map +1 -0
  4. package/dist/__tests__/dag-runner/ralph-loop.test.js +109 -0
  5. package/dist/__tests__/dag-runner/ralph-loop.test.js.map +1 -0
  6. package/dist/bin/dare.js +2 -0
  7. package/dist/bin/dare.js.map +1 -1
  8. package/dist/commands/blueprint.d.ts.map +1 -1
  9. package/dist/commands/blueprint.js +31 -23
  10. package/dist/commands/blueprint.js.map +1 -1
  11. package/dist/commands/bootstrap.d.ts +14 -0
  12. package/dist/commands/bootstrap.d.ts.map +1 -0
  13. package/dist/commands/bootstrap.js +103 -0
  14. package/dist/commands/bootstrap.js.map +1 -0
  15. package/dist/commands/execute.d.ts.map +1 -1
  16. package/dist/commands/execute.js +59 -5
  17. package/dist/commands/execute.js.map +1 -1
  18. package/dist/commands/init.d.ts.map +1 -1
  19. package/dist/commands/init.js +1 -0
  20. package/dist/commands/init.js.map +1 -1
  21. package/dist/dag-runner/ralph-loop.d.ts +42 -0
  22. package/dist/dag-runner/ralph-loop.d.ts.map +1 -0
  23. package/dist/dag-runner/ralph-loop.js +185 -0
  24. package/dist/dag-runner/ralph-loop.js.map +1 -0
  25. package/dist/index.d.ts +5 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +4 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/utils/project-generator.d.ts +6 -0
  30. package/dist/utils/project-generator.d.ts.map +1 -1
  31. package/dist/utils/project-generator.js +112 -16
  32. package/dist/utils/project-generator.js.map +1 -1
  33. package/dist/utils/stack-bootstrap.d.ts +22 -0
  34. package/dist/utils/stack-bootstrap.d.ts.map +1 -0
  35. package/dist/utils/stack-bootstrap.js +468 -0
  36. package/dist/utils/stack-bootstrap.js.map +1 -0
  37. package/package.json +1 -1
  38. package/templates/ide/antigravity/.agents/skills/dare-dag-runner/SKILL.md +30 -2
  39. package/templates/ide/claude/.claude/commands/dare-blueprint.md +6 -0
  40. package/templates/ide/cursor/.cursor/commands/generate-tasks.md +13 -0
  41. package/templates/ide/cursor/.cursor/rules/skill-dag-runner.mdc +37 -2
@@ -81,12 +81,20 @@ tasks:
81
81
  2. Para cada prompt:
82
82
  - leia spec_file se houver
83
83
  - implemente
84
- - rode build/test/lint (Ralph Loop)
85
84
  3. dare execute --complete <id> --output "<resumo + arquivos tocados>"
86
- (ou --fail <id> --reason "..." se falhou)
85
+ o CLI roda o RALPH LOOP automático (build → test → lint)
86
+ ↓ se passar: task vira DONE
87
+ ↓ se falhar: task vira FAILED com stderr capturado; corrija e retente
87
88
  4. Volte ao passo 1 até não haver mais tasks ready
88
89
  ```
89
90
 
91
+ > **Ralph Loop é AUTOMÁTICO e OBRIGATÓRIO.** Você NÃO roda build/test/lint
92
+ > manualmente — o `dare execute --complete` faz isso. Se algum gate falhar,
93
+ > a task NÃO vai para DONE; vai para FAILED. Corrija e retente.
94
+ >
95
+ > **Não existe flag para pular o Ralph Loop.** Toda task passa pelos 3 gates
96
+ > da stack do projeto.
97
+
90
98
  Comandos úteis:
91
99
 
92
100
  ```bash
@@ -164,6 +172,23 @@ O CLI reescreve a cada `--complete`/`--fail`:
164
172
  | Tudo em rank 0 | Adicione deps reais quando há contenção |
165
173
  | Cadeia linear | Reveja se as deps são necessárias |
166
174
 
175
+ ## Antipatterns que você NÃO deve criar
176
+
177
+ - ❌ Task **"Ralph Loop final"** / **"Hardening"** / **"QA"** — gate é por task
178
+ - ❌ Tests com `assertTrue(true)` — o gate `test` roda de verdade
179
+ - ❌ "Setup project structure" antes de containerizar o app
180
+
181
+ ## Ordem recomendada das primeiras tasks
182
+
183
+ 1. **Containerize app** (Dockerfile + docker-compose + healthcheck)
184
+ 2. **Database schema** (migrations + factories)
185
+ 3. **Core endpoints / componentes**
186
+ 4. **Auth / autorização**
187
+ 5. **Test suite real** (assertions de verdade)
188
+
189
+ A task de container/compose pode estar em outra ordem para projetos sem
190
+ DB ou em monorepo já containerizado. Mas quase sempre é uma das primeiras.
191
+
167
192
  ## Checklist antes de aprovar
168
193
 
169
194
  - [ ] Pelo menos 2 tasks no rank 0
@@ -172,4 +197,7 @@ O CLI reescreve a cada `--complete`/`--fail`:
172
197
  - [ ] `complexity` reflete o esforço real
173
198
  - [ ] `id` em kebab-case e único
174
199
  - [ ] Sem ciclos
200
+ - [ ] **Sem task de "Ralph Loop final"** — gate é por task
201
+ - [ ] **Tests com assertions reais** — placeholder quebra o gate
202
+ - [ ] Container/runtime resolvido cedo
175
203
  - [ ] Os 3 artefatos consistentes
@@ -71,6 +71,12 @@ tasks:
71
71
  - `complexity` honesta: `HIGH` só para lógica crítica/segurança
72
72
  - Output cap de 4000 chars: se a task gera muito, escreva em arquivo e
73
73
  retorne só resumo + caminhos
74
+ - **A primeira task deve containerizar a aplicação** (Dockerfile + compose
75
+ + healthcheck) — sem isso o Ralph Loop automático não tem onde rodar
76
+ - **NÃO crie task "Ralph Loop final" / "Hardening" / "QA final"** — o
77
+ Ralph Loop roda em CADA `dare execute --complete`, automaticamente
78
+ - **Tests com assertions reais** — `assertTrue(true)` quebra o gate `test`
79
+ e a task vai para FAILED
74
80
 
75
81
  ### 4. Gerar `DARE/TASKS.md` (visão humana)
76
82
 
@@ -29,6 +29,19 @@ executável pelo CLI) e `EXECUTION/task-<id>.md` (specs detalhadas por task).
29
29
  ter tasks específicas ou estar explícitas nas tasks relevantes.
30
30
  - Atribua `complexity` a cada task: LOW / MED / HIGH.
31
31
 
32
+ #### Regras inegociáveis de ordenação
33
+
34
+ 1. **A primeira task deve preparar o ambiente local** — Dockerfile +
35
+ `docker-compose.yml` + healthcheck. Sem isso o Ralph Loop não tem onde
36
+ rodar build/test/lint. Exceção: projeto que já vive em monorepo
37
+ containerizado.
38
+ 2. **Não crie task "Ralph Loop final" / "Hardening final"** — o Ralph Loop
39
+ roda automático em cada `dare execute --complete`. Não é uma task; é um
40
+ gate por task.
41
+ 3. **Tests devem ter assertions reais** desde a task que os escreve.
42
+ Placeholders (`assertTrue(true)` etc.) fazem o gate `test` falhar e a
43
+ task vai para FAILED.
44
+
32
45
  ### 3. Gerar `DARE/TASKS.md` (visão humana)
33
46
 
34
47
  Tabela com todas as tasks e dependências em formato legível:
@@ -76,12 +76,22 @@ tasks:
76
76
  2. Para cada prompt:
77
77
  - leia spec_file se houver
78
78
  - implemente
79
- - rode build/test/lint (Ralph Loop)
80
79
  3. dare execute --complete <id> --output "<resumo + arquivos tocados>"
81
- (ou --fail <id> --reason "..." se falhou)
80
+ o CLI roda o RALPH LOOP automático (build → test → lint)
81
+ ↓ se passar: task vira DONE
82
+ ↓ se falhar: task vira FAILED com stderr capturado; corrija e retente
82
83
  4. Volte ao passo 1 até não haver mais tasks ready
83
84
  ```
84
85
 
86
+ > **Ralph Loop é AUTOMÁTICO e OBRIGATÓRIO.** Você NÃO roda build/test/lint
87
+ > manualmente — o `dare execute --complete` faz isso. Se algum gate falhar,
88
+ > a task NÃO vai para DONE; vai para FAILED. Você corrige o código e tenta
89
+ > de novo (`dare execute --complete <id>` outra vez, ou `--reset` antes se
90
+ > precisar zerar histórico).
91
+ >
92
+ > **Não existe flag para pular o Ralph Loop.** Toda task passa pelos 3 gates
93
+ > da stack do projeto.
94
+
85
95
  Comandos úteis:
86
96
 
87
97
  ```bash
@@ -175,6 +185,28 @@ nada; o CLI cuida do cascade.
175
185
  | Tudo em rank 0 | Conflito de escrita no mesmo arquivo | Adicione `depends_on` quando há contenção |
176
186
  | Cadeia linear longa | Sem ganho de paralelismo | Reveja se as deps são reais |
177
187
 
188
+ ## Antipatterns que você NÃO deve criar
189
+
190
+ - ❌ Task chamada **"Ralph Loop final"**, **"Hardening final"**, **"QA final"**
191
+ — Ralph Loop roda automaticamente em cada `--complete`. Não é uma task.
192
+ - ❌ Tests com `assertTrue(true)` ou equivalentes — o gate `test` vai rodar
193
+ de verdade. Placeholder não engana o CLI; só atrasa o ciclo.
194
+ - ❌ "Setup project structure" como primeira task quando o ambiente ainda
195
+ não foi containerizado — sem container/runtime, o Ralph Loop não roda.
196
+
197
+ ## Ordem recomendada das primeiras tasks
198
+
199
+ 1. **Containerize app** (Dockerfile + docker-compose + healthcheck) — sem
200
+ isso o Ralph Loop não tem onde rodar
201
+ 2. **Database schema** (migrations + factories)
202
+ 3. **Core endpoints / componentes**
203
+ 4. **Auth / autorização**
204
+ 5. **Test suite real** (com assertions de verdade)
205
+
206
+ A task de container/compose pode estar em **outra ordem** se o projeto já
207
+ vive em um container do monorepo, ou se a stack não precisa de DB. Mas
208
+ quase sempre é uma das primeiras — nunca a última.
209
+
178
210
  ## Checklist antes de aprovar um DAG
179
211
 
180
212
  - [ ] Pelo menos 2 tasks no rank 0
@@ -183,4 +215,7 @@ nada; o CLI cuida do cascade.
183
215
  - [ ] `complexity` reflete o esforço real (não tudo HIGH)
184
216
  - [ ] `id` em kebab-case e único
185
217
  - [ ] Sem ciclos
218
+ - [ ] **Sem task de "Ralph Loop final"** — Ralph Loop é gate por task
219
+ - [ ] **Tests com assertions reais** — placeholder quebra o gate `test`
220
+ - [ ] Container/runtime resolvido cedo, não na última task
186
221
  - [ ] `TASKS.md` + `dare-dag.yaml` + `EXECUTION/task-*.md` consistentes