@dewtech/dare-cli 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -28
- package/dist/__tests__/dag-converter.test.js +114 -0
- package/dist/__tests__/dag-converter.test.js.map +1 -1
- package/dist/commands/blueprint.d.ts +14 -0
- package/dist/commands/blueprint.d.ts.map +1 -1
- package/dist/commands/blueprint.js +249 -116
- package/dist/commands/blueprint.js.map +1 -1
- package/dist/dag-runner/run_dag.d.ts +32 -3
- package/dist/dag-runner/run_dag.d.ts.map +1 -1
- package/dist/dag-runner/run_dag.js +6 -0
- package/dist/dag-runner/run_dag.js.map +1 -1
- package/dist/index.d.ts +11 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -4
- package/dist/index.js.map +1 -1
- package/dist/utils/dag-converter.d.ts +8 -2
- package/dist/utils/dag-converter.d.ts.map +1 -1
- package/dist/utils/dag-converter.js +116 -21
- package/dist/utils/dag-converter.js.map +1 -1
- package/package.json +1 -17
- package/templates/ide/antigravity/.agents/skills/dare-dag-runner/SKILL.md +172 -0
- package/templates/ide/antigravity/.agents/skills/dare-tasks/SKILL.md +210 -229
- package/templates/ide/claude/.claude/commands/dare-blueprint.md +126 -42
- package/templates/ide/claude/.claude/commands/dare-dag-build.md +110 -0
- package/templates/ide/claude/.claude/commands/dare-dag-run.md +110 -0
- package/templates/ide/claude/CLAUDE.md +2 -1
- package/templates/ide/cursor/.cursor/commands/generate-tasks.md +117 -20
- package/templates/ide/cursor/.cursor/commands/run-dag.md +87 -0
- package/templates/ide/cursor/.cursor/rules/skill-dag-runner.mdc +176 -0
|
@@ -1,229 +1,210 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: dare-tasks
|
|
3
|
-
description:
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# DARE Tasks Skill
|
|
7
|
-
|
|
8
|
-
Você é
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
## Tarefas por Fase
|
|
75
|
-
|
|
76
|
-
### Phase 1: Setup
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
-
|
|
131
|
-
-
|
|
132
|
-
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
- `
|
|
180
|
-
- `
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
- [ ]
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
- Peça ao usuário revisar
|
|
212
|
-
- Confirme dependências
|
|
213
|
-
- Aprove antes de executar
|
|
214
|
-
|
|
215
|
-
## Boas Práticas
|
|
216
|
-
|
|
217
|
-
1. **Atômicas:** Cada task é independente
|
|
218
|
-
2. **Testáveis:** Inclua validation gates
|
|
219
|
-
3. **Documentadas:** Especificações claras
|
|
220
|
-
4. **Seguras:** Integre requisitos OWASP
|
|
221
|
-
5. **Sequenciadas:** Respeite dependências
|
|
222
|
-
|
|
223
|
-
## Dicas para Melhor Resultado
|
|
224
|
-
|
|
225
|
-
- **Tamanho:** Tasks devem levar 15-60 minutos
|
|
226
|
-
- **Testes:** Sempre inclua validation gates
|
|
227
|
-
- **Segurança:** Consulte `skill-security` para cada task
|
|
228
|
-
- **Exemplos:** Use `examples/` como referência
|
|
229
|
-
- **Templates:** Use `templates/TASK-SPEC-template.md`
|
|
1
|
+
---
|
|
2
|
+
name: dare-tasks
|
|
3
|
+
description: Decompõe o BLUEPRINT aprovado em tasks atômicas e gera os 3 artefatos da fase de execução do DARE (TASKS.md, dare-dag.yaml, EXECUTION/task-*.md). Use quando o usuário aprovar o BLUEPRINT.md. A construção do grafo segue rigorosamente a skill dare-dag-runner.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# DARE Tasks Skill
|
|
7
|
+
|
|
8
|
+
Você é o especialista em decomposição de projetos do método DARE. Seu papel é
|
|
9
|
+
quebrar o BLUEPRINT aprovado em tasks atômicas e gerar simultaneamente os
|
|
10
|
+
**três artefatos** da fase de execução, garantindo consistência entre eles.
|
|
11
|
+
|
|
12
|
+
## Quando usar esta skill
|
|
13
|
+
|
|
14
|
+
- BLUEPRINT.md foi aprovado pelo usuário
|
|
15
|
+
- Necessário criar o plano de execução (tasks + grafo + specs)
|
|
16
|
+
- Terceira fase do Método DARE (transição A → E)
|
|
17
|
+
|
|
18
|
+
## Pré-requisitos
|
|
19
|
+
|
|
20
|
+
Antes de gerar, leia também a skill `dare-dag-runner` — ela contém as regras
|
|
21
|
+
inegociáveis do grafo (`depends_on` mínimo, complexity, prompt self-contained,
|
|
22
|
+
limites de 2000/4000 chars, ranks paralelos).
|
|
23
|
+
|
|
24
|
+
## Os 3 artefatos sempre juntos
|
|
25
|
+
|
|
26
|
+
| Arquivo | Para quê | Lido por |
|
|
27
|
+
|---------|----------|----------|
|
|
28
|
+
| `DARE/TASKS.md` | Visão humana com tabela e progresso | Humano |
|
|
29
|
+
| `DARE/dare-dag.yaml` | Grafo executável | CLI `dare execute` |
|
|
30
|
+
| `DARE/EXECUTION/task-<id>.md` | Spec detalhada por task | Subagente ao executar |
|
|
31
|
+
|
|
32
|
+
Os três precisam estar **consistentes**: mesmos `id`s, mesmas `depends_on`,
|
|
33
|
+
mesmas `complexity`. Inconsistência aqui quebra a execução.
|
|
34
|
+
|
|
35
|
+
## Como usar
|
|
36
|
+
|
|
37
|
+
### Passo 1: Ler o BLUEPRINT aprovado
|
|
38
|
+
|
|
39
|
+
Leia `DARE/BLUEPRINT.md`. Extraia:
|
|
40
|
+
- Fases do plano de execução
|
|
41
|
+
- Endpoints, modelos de dados, schemas
|
|
42
|
+
- Estrutura de diretórios
|
|
43
|
+
- Decisões arquiteturais
|
|
44
|
+
- Estratégia de testes
|
|
45
|
+
|
|
46
|
+
### Passo 2: Decompor em tasks atômicas
|
|
47
|
+
|
|
48
|
+
Cada task deve:
|
|
49
|
+
- Ser pequena o suficiente para uma conversa única (15–60 min de trabalho)
|
|
50
|
+
- Ter dependências reais e mínimas (não falsas)
|
|
51
|
+
- Ser testável isoladamente
|
|
52
|
+
- Incluir validações de segurança apropriadas
|
|
53
|
+
- Ter `complexity` honesta (LOW/MED/HIGH)
|
|
54
|
+
|
|
55
|
+
### Passo 3: Gerar `DARE/TASKS.md` (visão humana)
|
|
56
|
+
|
|
57
|
+
```markdown
|
|
58
|
+
# Tasks: [Nome do Projeto]
|
|
59
|
+
|
|
60
|
+
## Visão Geral
|
|
61
|
+
- Total de Tasks: [N]
|
|
62
|
+
- Ranks paralelos: [N]
|
|
63
|
+
- Tempo estimado: [horas]
|
|
64
|
+
|
|
65
|
+
## Tabela de Status
|
|
66
|
+
|
|
67
|
+
| ID | Título | Status | Depends On | Complexity |
|
|
68
|
+
|----------|-----------------------------|-------------|------------------|------------|
|
|
69
|
+
| task-001 | Setup project structure | ⏳ PENDING | — | LOW |
|
|
70
|
+
| task-002 | DB migrations | ⏳ PENDING | — | MED |
|
|
71
|
+
| task-003 | Auth controllers | ⏳ PENDING | task-001, 002 | HIGH |
|
|
72
|
+
| ... | ... | ... | ... | ... |
|
|
73
|
+
|
|
74
|
+
## Tarefas por Fase
|
|
75
|
+
|
|
76
|
+
### Phase 1: Setup
|
|
77
|
+
- task-001: Setup project structure
|
|
78
|
+
- task-002: DB migrations
|
|
79
|
+
|
|
80
|
+
### Phase 2: Auth
|
|
81
|
+
- task-003: Auth controllers (deps: 001, 002)
|
|
82
|
+
- ...
|
|
83
|
+
|
|
84
|
+
## Próximas Etapas
|
|
85
|
+
1. Revisar e aprovar este TASKS.md
|
|
86
|
+
2. Executar paralelo: `dare execute --parallel`
|
|
87
|
+
3. Ou task isolada: `/dare-execute task-001`
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Passo 4: Gerar `DARE/dare-dag.yaml` (grafo executável)
|
|
91
|
+
|
|
92
|
+
Schema canônico:
|
|
93
|
+
|
|
94
|
+
```yaml
|
|
95
|
+
title: "[Nome do Projeto] - Development Tasks"
|
|
96
|
+
version: "1.0.0"
|
|
97
|
+
|
|
98
|
+
limits:
|
|
99
|
+
parent_context_chars: 2000
|
|
100
|
+
task_output_chars: 4000
|
|
101
|
+
timeout_seconds: 600
|
|
102
|
+
|
|
103
|
+
models:
|
|
104
|
+
cursor: { HIGH: gpt-5.3-codex, MED: composer-2, LOW: auto-low }
|
|
105
|
+
claude: { HIGH: claude-sonnet-4-5, MED: claude-haiku-4, LOW: claude-haiku-4 }
|
|
106
|
+
antigravity: { HIGH: gemini-2.5-pro, MED: gemini-2.5-flash, LOW: gemini-2.5-flash }
|
|
107
|
+
|
|
108
|
+
tasks:
|
|
109
|
+
- id: task-001
|
|
110
|
+
title: "Setup project structure"
|
|
111
|
+
depends_on: []
|
|
112
|
+
complexity: LOW
|
|
113
|
+
spec_file: EXECUTION/task-001.md
|
|
114
|
+
subtask_prompt: |
|
|
115
|
+
Setup base project structure following DARE/BLUEPRINT.md.
|
|
116
|
+
Create directories, initialize package files. No business logic yet.
|
|
117
|
+
Validation gate: project builds.
|
|
118
|
+
|
|
119
|
+
- id: task-002
|
|
120
|
+
title: "DB migrations"
|
|
121
|
+
depends_on: []
|
|
122
|
+
complexity: MED
|
|
123
|
+
spec_file: EXECUTION/task-002.md
|
|
124
|
+
subtask_prompt: |
|
|
125
|
+
Create migrations for users and refresh_tokens tables per BLUEPRINT.
|
|
126
|
+
Include indexes and FKs. Validation gate: migrate runs cleanly.
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**Regras inegociáveis (da skill dare-dag-runner):**
|
|
130
|
+
- `id` em kebab-case e único
|
|
131
|
+
- `depends_on` mínimo — só quando filha **literalmente** precisa do output
|
|
132
|
+
- `subtask_prompt` self-contained (subagente recebe só ele + 2000 chars de pais)
|
|
133
|
+
- Pelo menos 2 tasks no rank 0 (`depends_on: []`)
|
|
134
|
+
- Cadeia linear é antipattern — reveja
|
|
135
|
+
|
|
136
|
+
### Passo 5: Gerar `DARE/EXECUTION/task-<id>.md` (specs detalhadas)
|
|
137
|
+
|
|
138
|
+
Para CADA task no YAML, crie a spec usando `templates/TASK-SPEC-template.md`:
|
|
139
|
+
|
|
140
|
+
```markdown
|
|
141
|
+
# Task 001: Setup project structure
|
|
142
|
+
|
|
143
|
+
## Objetivo
|
|
144
|
+
Criar a estrutura base do projeto seguindo o BLUEPRINT.
|
|
145
|
+
|
|
146
|
+
## Descrição
|
|
147
|
+
Inicializar diretórios, package files e configuração mínima.
|
|
148
|
+
Sem lógica de negócio — apenas scaffolding.
|
|
149
|
+
|
|
150
|
+
## Arquivos a Criar
|
|
151
|
+
- `src/` (diretório)
|
|
152
|
+
- `tests/` (diretório)
|
|
153
|
+
- `package.json` (ou equivalente da stack)
|
|
154
|
+
- `.gitignore`
|
|
155
|
+
|
|
156
|
+
## Validation Gates
|
|
157
|
+
- [ ] Estrutura criada
|
|
158
|
+
- [ ] Build passa sem erros
|
|
159
|
+
- [ ] Lint sem warnings
|
|
160
|
+
- [ ] `package.json` (ou Cargo.toml, composer.json) válido
|
|
161
|
+
|
|
162
|
+
## Testes
|
|
163
|
+
```bash
|
|
164
|
+
npm run build # ou cargo build, composer install, etc.
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Segurança
|
|
168
|
+
- `.env` no `.gitignore`
|
|
169
|
+
- Nenhum secret commitado
|
|
170
|
+
|
|
171
|
+
## Próxima Task
|
|
172
|
+
Task 002: DB migrations
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Passo 6: Validar consistência
|
|
176
|
+
|
|
177
|
+
Antes de entregar, confirme:
|
|
178
|
+
- [ ] Mesmos `id`s em `TASKS.md`, `dare-dag.yaml` e `EXECUTION/task-*.md`
|
|
179
|
+
- [ ] Mesmas `depends_on` nos três
|
|
180
|
+
- [ ] Mesmas `complexity`
|
|
181
|
+
- [ ] Sem ciclos no grafo
|
|
182
|
+
- [ ] Pelo menos 2 tasks no rank 0
|
|
183
|
+
- [ ] Cada `subtask_prompt` é executável sem contexto adicional
|
|
184
|
+
|
|
185
|
+
### Passo 7: Pedir aprovação
|
|
186
|
+
|
|
187
|
+
> Gerados os 3 artefatos da fase de execução:
|
|
188
|
+
> - `DARE/TASKS.md` ([N] tasks)
|
|
189
|
+
> - `DARE/dare-dag.yaml` ([N] ranks paralelos)
|
|
190
|
+
> - `DARE/EXECUTION/task-*.md` ([N] specs)
|
|
191
|
+
>
|
|
192
|
+
> Revise. Quando aprovar, execute: `dare execute --parallel --runner antigravity`.
|
|
193
|
+
|
|
194
|
+
## Boas práticas
|
|
195
|
+
|
|
196
|
+
1. **Atômicas:** cada task é independente o suficiente para uma conversa
|
|
197
|
+
2. **Testáveis:** validation gates específicos da stack
|
|
198
|
+
3. **Documentadas:** specs claras e auto-contidas
|
|
199
|
+
4. **Seguras:** integre OWASP nos pontos sensíveis
|
|
200
|
+
5. **Paralelizáveis:** maximize rank 0; minimize cadeias lineares
|
|
201
|
+
|
|
202
|
+
## Erros comuns a evitar
|
|
203
|
+
|
|
204
|
+
| Erro | Como corrigir |
|
|
205
|
+
|------|---------------|
|
|
206
|
+
| Cadeia linear `001→002→003→...` | Adicione paralelismo onde a dependência é falsa |
|
|
207
|
+
| `subtask_prompt` referenciando "como combinamos" | Coloque tudo no prompt explicitamente |
|
|
208
|
+
| Tudo em `complexity: HIGH` | Avalie honestamente — HIGH só para lógica crítica |
|
|
209
|
+
| `id` duplicado ou com espaços | Use kebab-case e únicos |
|
|
210
|
+
| Inconsistência entre os 3 artefatos | Revise antes de aprovar |
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
# /dare-blueprint
|
|
2
2
|
|
|
3
|
-
Gera
|
|
3
|
+
Gera os 4 artefatos a partir do `DARE/DESIGN.md`:
|
|
4
|
+
|
|
5
|
+
1. `DARE/BLUEPRINT.md` — arquitetura técnica
|
|
6
|
+
2. `DARE/TASKS.md` — visão humana das tasks
|
|
7
|
+
3. `DARE/dare-dag.yaml` — grafo executável pelo CLI
|
|
8
|
+
4. `DARE/EXECUTION/task-<id>.md` — uma spec detalhada por task
|
|
4
9
|
|
|
5
10
|
## Como usar
|
|
6
11
|
|
|
@@ -11,55 +16,134 @@ Gera o `DARE/BLUEPRINT.md`, `DARE/dare-dag.yaml` e `DARE/TASKS.md` a partir do D
|
|
|
11
16
|
|
|
12
17
|
## O que fazer
|
|
13
18
|
|
|
14
|
-
1.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
19
|
+
### 1. Ler `DARE/DESIGN.md`
|
|
20
|
+
|
|
21
|
+
Obrigatório. Se não existir, peça para rodar `/dare-design` primeiro.
|
|
22
|
+
|
|
23
|
+
### 2. Gerar `DARE/BLUEPRINT.md`
|
|
24
|
+
|
|
25
|
+
- Stack tecnológico detalhado (versões, libs)
|
|
26
|
+
- Módulos e responsabilidades
|
|
27
|
+
- Contratos de API (endpoints, schemas em OpenAPI)
|
|
28
|
+
- Modelo de dados (tabelas, índices, relações)
|
|
29
|
+
- Decisões arquiteturais com justificativa
|
|
30
|
+
- Estratégia de testes
|
|
31
|
+
- Estratégia de deploy
|
|
32
|
+
|
|
33
|
+
### 3. Gerar `DARE/dare-dag.yaml` (grafo executável)
|
|
34
|
+
|
|
35
|
+
Schema canônico:
|
|
36
|
+
|
|
37
|
+
```yaml
|
|
38
|
+
title: "<Nome do Projeto> - Development Tasks"
|
|
39
|
+
version: "1.0.0"
|
|
40
|
+
|
|
41
|
+
limits:
|
|
42
|
+
parent_context_chars: 2000 # snippet de output de cada pai injetado no filho
|
|
43
|
+
task_output_chars: 4000 # cap do output capturado por task
|
|
44
|
+
timeout_seconds: 600 # AbortController por task
|
|
45
|
+
|
|
46
|
+
models:
|
|
47
|
+
cursor: { HIGH: gpt-5.3-codex, MED: composer-2, LOW: auto-low }
|
|
48
|
+
claude: { HIGH: claude-sonnet-4-5, MED: claude-haiku-4, LOW: claude-haiku-4 }
|
|
49
|
+
antigravity: { HIGH: gemini-2.5-pro, MED: gemini-2.5-flash, LOW: gemini-2.5-flash }
|
|
50
|
+
|
|
51
|
+
tasks:
|
|
52
|
+
- id: task-001
|
|
53
|
+
title: "Setup project structure"
|
|
54
|
+
depends_on: []
|
|
55
|
+
complexity: LOW
|
|
56
|
+
spec_file: EXECUTION/task-001.md
|
|
57
|
+
subtask_prompt: |
|
|
58
|
+
<prompt completamente self-contained — o subagente vê só este texto
|
|
59
|
+
mais snippets de até 2000 chars de cada pai>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Regras inegociáveis ao construir o DAG:**
|
|
63
|
+
|
|
64
|
+
- `id` em kebab-case e único
|
|
65
|
+
- `depends_on` **mínimo** — só adicione quando a task filha *literalmente*
|
|
66
|
+
não pode começar sem o output da pai (arquivo, schema, decisão exportada)
|
|
67
|
+
- `subtask_prompt` totalmente self-contained — não vale "use o padrão da
|
|
68
|
+
task-001"
|
|
69
|
+
- Pelo menos 2 tasks no rank 0 (`depends_on: []`) para haver paralelismo
|
|
70
|
+
- Cadeia linear (`001→002→003→...`) é antipattern — reanalise
|
|
71
|
+
- `complexity` honesta: `HIGH` só para lógica crítica/segurança
|
|
72
|
+
- Output cap de 4000 chars: se a task gera muito, escreva em arquivo e
|
|
73
|
+
retorne só resumo + caminhos
|
|
74
|
+
|
|
75
|
+
### 4. Gerar `DARE/TASKS.md` (visão humana)
|
|
76
|
+
|
|
77
|
+
```markdown
|
|
78
|
+
# Tasks: <Nome do Projeto>
|
|
79
|
+
|
|
80
|
+
## Visão Geral
|
|
81
|
+
- Total de Tasks: N
|
|
82
|
+
- Ranks paralelos: N
|
|
83
|
+
|
|
84
|
+
## Tabela de Status
|
|
85
|
+
|
|
86
|
+
| ID | Título | Status | Depends On | Complexity |
|
|
87
|
+
|----------|---------------------------|-------------|------------------|------------|
|
|
88
|
+
| task-001 | Setup project structure | ⏳ PENDING | — | LOW |
|
|
89
|
+
| task-002 | DB migrations | ⏳ PENDING | — | MED |
|
|
90
|
+
| task-003 | Auth controllers | ⏳ PENDING | task-001, 002 | HIGH |
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### 5. Gerar `DARE/EXECUTION/task-<id>.md` (uma por task)
|
|
94
|
+
|
|
95
|
+
Para CADA task em `dare-dag.yaml`, crie a spec correspondente seguindo
|
|
96
|
+
`templates/TASK-SPEC-template.md`:
|
|
97
|
+
|
|
98
|
+
- **Objetivo** claro
|
|
99
|
+
- **Arquivos a criar/modificar**
|
|
100
|
+
- **Validation Gates** específicos da stack (PHPUnit, Pytest, Vitest, cargo test)
|
|
101
|
+
- **Testes esperados**
|
|
102
|
+
- **Considerações de segurança**
|
|
103
|
+
- **Próxima task** sugerida
|
|
104
|
+
|
|
105
|
+
O `subtask_prompt` no YAML pode referenciar `spec_file: EXECUTION/task-001.md`
|
|
106
|
+
para que o subagente leia a spec na hora de executar.
|
|
107
|
+
|
|
108
|
+
### 6. Validar consistência dos 4 artefatos
|
|
109
|
+
|
|
110
|
+
Antes de entregar:
|
|
111
|
+
- [ ] Mesmos `id`s em `TASKS.md`, `dare-dag.yaml` e `EXECUTION/task-*.md`
|
|
112
|
+
- [ ] Mesmas `depends_on` nos três
|
|
113
|
+
- [ ] Mesmas `complexity`
|
|
114
|
+
- [ ] Sem ciclos
|
|
115
|
+
- [ ] Pelo menos 2 tasks no rank 0
|
|
116
|
+
- [ ] Cada `subtask_prompt` executável sem contexto adicional
|
|
117
|
+
|
|
118
|
+
### 7. Aguardar aprovação humana
|
|
119
|
+
|
|
120
|
+
**Não execute nenhuma task** até o usuário revisar e aprovar os 4 artefatos.
|
|
52
121
|
|
|
53
122
|
## Templates disponíveis
|
|
54
123
|
|
|
55
124
|
- `templates/BLUEPRINT-template.md`
|
|
56
125
|
- `templates/TASKS-template.md`
|
|
126
|
+
- `templates/TASK-SPEC-template.md`
|
|
127
|
+
|
|
128
|
+
## Próximos passos
|
|
57
129
|
|
|
58
|
-
|
|
130
|
+
Após aprovação humana:
|
|
59
131
|
|
|
60
|
-
Após aprovação humana, rodar:
|
|
61
132
|
```bash
|
|
62
|
-
|
|
133
|
+
# Paralelo (recomendado)
|
|
134
|
+
dare execute --parallel --runner claude
|
|
135
|
+
|
|
136
|
+
# Sequencial (debug)
|
|
137
|
+
dare execute --runner claude
|
|
138
|
+
|
|
139
|
+
# Task única
|
|
140
|
+
dare execute --task task-003 --runner claude
|
|
63
141
|
```
|
|
64
142
|
|
|
143
|
+
Ou pelos slash commands:
|
|
144
|
+
|
|
145
|
+
- `/dare-dag-run` — executa o DAG completo em paralelo
|
|
146
|
+
- `/dare-execute task-001` — executa uma task específica
|
|
147
|
+
- `/dare-tasks` — mostra status atual das tasks
|
|
148
|
+
|
|
65
149
|
$ARGUMENTS
|