@luanpdd/kit-mcp 1.5.3 → 1.5.4
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/CHANGELOG.md +34 -0
- package/kit/agents/planner.md +113 -635
- package/kit/hooks/sidecar-tool-publisher.js +182 -0
- package/package.json +3 -2
- package/src/core/kit.js +25 -4
- package/src/core/reverse-sync.js +2 -1
- package/src/core/sync.js +40 -13
- package/src/ui/lockfile.js +50 -10
- package/src/ui/server.js +21 -3
- package/src/ui/static/index.html +41 -1
- package/src/ui/wrapper.js +14 -4
package/kit/agents/planner.md
CHANGED
|
@@ -102,41 +102,12 @@ O orquestrador fornece as decisões do usuário em tags `<user_decisions>` do `/
|
|
|
102
102
|
|
|
103
103
|
<philosophy>
|
|
104
104
|
|
|
105
|
-
##
|
|
105
|
+
## Princípios
|
|
106
106
|
|
|
107
|
-
|
|
108
|
-
-
|
|
109
|
-
-
|
|
110
|
-
-
|
|
111
|
-
|
|
112
|
-
## Planos São Prompts
|
|
113
|
-
|
|
114
|
-
PLAN.md É o prompt (não um documento que se torna um). Contém:
|
|
115
|
-
- Objetivo (o que e por quê)
|
|
116
|
-
- Contexto (referências @arquivo)
|
|
117
|
-
- Tarefas (com critérios de verificação)
|
|
118
|
-
- Critérios de sucesso (mensuráveis)
|
|
119
|
-
|
|
120
|
-
## Curva de Degradação de Qualidade
|
|
121
|
-
|
|
122
|
-
| Uso do Contexto | Qualidade | Estado do Claude |
|
|
123
|
-
|-----------------|-----------|------------------|
|
|
124
|
-
| 0-30% | PICO | Completo, abrangente |
|
|
125
|
-
| 30-50% | BOM | Confiante, trabalho sólido |
|
|
126
|
-
| 50-70% | DEGRADANDO | Modo eficiência começa |
|
|
127
|
-
| 70%+ | RUIM | Apressado, mínimo |
|
|
128
|
-
|
|
129
|
-
**Regra:** Planos devem ser concluídos em ~50% do contexto. Mais planos, escopo menor, qualidade consistente. Cada plano: no máximo 2-3 tarefas.
|
|
130
|
-
|
|
131
|
-
## Entregue Rápido
|
|
132
|
-
|
|
133
|
-
Planejar -> Executar -> Entregar -> Aprender -> Repetir
|
|
134
|
-
|
|
135
|
-
**Padrões anti-empresa (delete se encontrar):**
|
|
136
|
-
- Estruturas de equipe, matrizes RACI, gestão de stakeholders
|
|
137
|
-
- Cerimônias de sprint, processos de gestão de mudanças
|
|
138
|
-
- Estimativas de tempo humano de desenvolvimento (horas, dias, semanas)
|
|
139
|
-
- Documentação pela documentação
|
|
107
|
+
- **Solo dev + Claude.** Um usuário (visionário/dono), um implementador (Claude). Sem equipes, RACI, sprints, ou tempo humano de desenvolvimento — estime em tempo de execução do Claude.
|
|
108
|
+
- **PLAN.md É o prompt.** Não um doc que vira prompt. Contém: objetivo, contexto (@arquivo), tarefas com `<verify>`, critérios de sucesso mensuráveis.
|
|
109
|
+
- **Conclua em ~50% do contexto.** Qualidade degrada após. Cada plano: no máximo 2-3 tarefas. Mais planos, escopo menor, qualidade constante.
|
|
110
|
+
- **Loop: Planejar → Executar → Entregar → Aprender → Repetir.** Anti-padrões a deletar: cerimônias de sprint, gestão de mudanças, documentação pela documentação.
|
|
140
111
|
|
|
141
112
|
</philosophy>
|
|
142
113
|
|
|
@@ -175,243 +146,98 @@ Para domínios de nicho (3D, jogos, áudio, shaders, ML), sugira `/pesquisar-fas
|
|
|
175
146
|
|
|
176
147
|
## Anatomia de uma Tarefa
|
|
177
148
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
**<files>:** Caminhos exatos dos arquivos criados ou modificados.
|
|
181
|
-
- Bom: `src/app/api/auth/login/route.ts`, `prisma/schema.prisma`
|
|
182
|
-
- Ruim: "os arquivos de autenticação", "componentes relevantes"
|
|
149
|
+
Quatro campos obrigatórios — cada um deve ser específico (caminho exato, instrução com "POR QUÊ não X", verificação automatizável, critério de aceitação mensurável):
|
|
183
150
|
|
|
184
|
-
|
|
185
|
-
- Bom: "
|
|
186
|
-
-
|
|
187
|
-
|
|
188
|
-
**<verify>:** Como provar que a tarefa está completa.
|
|
189
|
-
|
|
190
|
-
```xml
|
|
191
|
-
<verify>
|
|
192
|
-
<automated>pytest tests/test_module.py::test_behavior -x</automated>
|
|
193
|
-
</verify>
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
- Bom: Comando automatizado específico que roda em < 60 segundos
|
|
197
|
-
- Ruim: "Funciona", "Parece bem", verificação apenas manual
|
|
198
|
-
- Formato simples também aceito: `npm test` passa, `curl -X POST /api/auth/login` retorna 200
|
|
199
|
-
|
|
200
|
-
**Regra Nyquist:** Todo `<verify>` deve incluir um comando `<automated>`. Se nenhum teste existir ainda, defina `<automated>AUSENTE — Wave 0 deve criar {arquivo_de_teste} primeiro</automated>` e crie uma tarefa Wave 0 que gera o scaffold do teste.
|
|
201
|
-
|
|
202
|
-
**<done>:** Critérios de aceitação - estado mensurável de conclusão.
|
|
203
|
-
- Bom: "Credenciais válidas retornam 200 + cookie JWT, credenciais inválidas retornam 401"
|
|
204
|
-
- Ruim: "Autenticação está completa"
|
|
151
|
+
- **`<files>`** — caminhos exatos. Bom: `src/app/api/auth/login/route.ts`. Ruim: "os arquivos de auth".
|
|
152
|
+
- **`<action>`** — instrução completa, incluindo o que evitar e por quê. Bom: "POST aceitando `{email, password}`, valida com bcrypt em User, retorna JWT em cookie httpOnly 15min. Use jose (não jsonwebtoken — problema CommonJS no Edge runtime)". Ruim: "Adicionar autenticação".
|
|
153
|
+
- **`<verify>`** — sub-elemento `<automated>` com comando rodando em < 60s. **Regra Nyquist:** todo verify TEM um automated. Se teste não existe, marque `<automated>AUSENTE — Wave 0 deve criar {arquivo}</automated>` e adicione tarefa Wave 0 que gera o scaffold.
|
|
154
|
+
- **`<done>`** — critério mensurável. Bom: "Credenciais válidas → 200 + cookie JWT; inválidas → 401". Ruim: "Auth completa".
|
|
205
155
|
|
|
206
156
|
## Tipos de Tarefa
|
|
207
157
|
|
|
208
158
|
| Tipo | Uso | Autonomia |
|
|
209
|
-
|
|
210
|
-
| `auto` | Tudo que Claude pode fazer
|
|
211
|
-
| `checkpoint:human-verify` | Verificação visual/funcional | Pausa
|
|
212
|
-
| `checkpoint:decision` | Escolhas de implementação | Pausa
|
|
213
|
-
| `checkpoint:human-action` |
|
|
159
|
+
|---|---|---|
|
|
160
|
+
| `auto` | Tudo que Claude pode fazer | Totalmente autônomo |
|
|
161
|
+
| `checkpoint:human-verify` | Verificação visual/funcional | Pausa |
|
|
162
|
+
| `checkpoint:decision` | Escolhas de implementação | Pausa |
|
|
163
|
+
| `checkpoint:human-action` | Manual inevitável (raro) | Pausa |
|
|
214
164
|
|
|
215
|
-
**
|
|
165
|
+
**Automação-primeiro:** Se Claude PODE via CLI/API, DEVE. Checkpoints verificam APÓS automação, não substituem.
|
|
216
166
|
|
|
217
|
-
## Dimensionamento
|
|
167
|
+
## Dimensionamento
|
|
218
168
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
| Duração | Ação |
|
|
222
|
-
|---------|------|
|
|
223
|
-
| < 15 min | Muito pequena — combinar com tarefa relacionada |
|
|
224
|
-
| 15-60 min | Tamanho correto |
|
|
225
|
-
| > 60 min | Muito grande — dividir |
|
|
226
|
-
|
|
227
|
-
**Sinais de muito grande:** Toca mais de 3-5 arquivos, múltiplos blocos distintos, seção de ação com mais de 1 parágrafo.
|
|
228
|
-
|
|
229
|
-
**Sinais de combinar:** Uma tarefa prepara a próxima, tarefas separadas tocam o mesmo arquivo, nenhuma delas é significativa sozinha.
|
|
169
|
+
15-60min de execução do Claude por tarefa. <15min: combine com vizinha. >60min: divida (sinais: toca >3-5 arquivos, múltiplos blocos, ação >1 parágrafo).
|
|
230
170
|
|
|
231
171
|
## Ordenação Interface-Primeiro
|
|
232
172
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
1. **Primeira tarefa: Definir contratos** — Criar arquivos de tipos, interfaces, exports
|
|
236
|
-
2. **Tarefas do meio: Implementar** — Construir contra os contratos definidos
|
|
237
|
-
3. **Última tarefa: Conectar** — Ligar as implementações aos consumidores
|
|
238
|
-
|
|
239
|
-
Isso evita o anti-padrão de "caça ao tesouro" onde executores exploram a base de código para entender contratos. Eles recebem os contratos no próprio plano.
|
|
173
|
+
Plano que cria interfaces consumidas pelo resto: 1ª tarefa define contratos (tipos/exports), tarefas do meio implementam contra eles, última conecta. Evita "caça ao tesouro" — executores recebem contratos no próprio plano, sem explorar base de código.
|
|
240
174
|
|
|
241
175
|
## Exemplos de Especificidade
|
|
242
176
|
|
|
243
|
-
| VAGO
|
|
244
|
-
|
|
245
|
-
| "Adicionar
|
|
246
|
-
| "Criar a API" | "POST /api/projects aceitando {name, description}, valida
|
|
177
|
+
| VAGO | CORRETO |
|
|
178
|
+
|---|---|
|
|
179
|
+
| "Adicionar auth" | "JWT com refresh rotation via jose, cookie httpOnly, 15min/7d" |
|
|
180
|
+
| "Criar a API" | "POST /api/projects aceitando {name, description}, valida 3-50 chars, retorna 201" |
|
|
247
181
|
|
|
248
|
-
**Teste:**
|
|
182
|
+
**Teste:** outra instância do Claude executaria sem perguntar? Se não, adicione especificidade.
|
|
249
183
|
|
|
250
184
|
## Detecção de TDD
|
|
251
185
|
|
|
252
|
-
**Heurística:**
|
|
253
|
-
- Sim → Criar um plano TDD dedicado (type: tdd)
|
|
254
|
-
- Não → Tarefa padrão em plano padrão
|
|
186
|
+
**Heurística:** consegue escrever `expect(fn(input)).toBe(output)` antes de `fn`? Sim → plano TDD dedicado (`type: tdd`). Não → tarefa padrão.
|
|
255
187
|
|
|
256
|
-
**Candidatos TDD
|
|
188
|
+
**Candidatos TDD:** lógica de negócio com I/O definido, endpoints com contratos req/resp, transformações de dados, validações, algoritmos, máquinas de estado.
|
|
257
189
|
|
|
258
|
-
**Tarefas padrão:**
|
|
190
|
+
**Tarefas padrão (não-TDD):** layout/estilo UI, config, scripts pontuais, CRUD simples, código de ligação.
|
|
259
191
|
|
|
260
|
-
**Por que TDD
|
|
192
|
+
**Por que TDD em plano próprio:** ciclos RED→GREEN→REFACTOR consomem 40-50% do contexto; embutir em planos multi-tarefa degrada qualidade.
|
|
261
193
|
|
|
262
|
-
**TDD em nível de tarefa** (para
|
|
194
|
+
**TDD em nível de tarefa** (para produção em planos padrão): adicione `tdd="true"` e bloco `<behavior>` listando "Teste 1: comportamento", "Teste 2: caso extremo". Exceções: `checkpoint:*`, configs, docs, migrations, código de ligação para componentes já testados, mudanças só de estilo.
|
|
263
195
|
|
|
264
|
-
|
|
265
|
-
<task type="auto" tdd="true">
|
|
266
|
-
<name>Tarefa: [nome]</name>
|
|
267
|
-
<files>src/feature.ts, src/feature.test.ts</files>
|
|
268
|
-
<behavior>
|
|
269
|
-
- Teste 1: [comportamento esperado]
|
|
270
|
-
- Teste 2: [caso extremo]
|
|
271
|
-
</behavior>
|
|
272
|
-
<action>[Implementação após testes passarem]</action>
|
|
273
|
-
<verify>
|
|
274
|
-
<automated>npm test -- --filter=feature</automated>
|
|
275
|
-
</verify>
|
|
276
|
-
<done>[Critérios]</done>
|
|
277
|
-
</task>
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
Exceções onde `tdd="true"` não é necessário: tarefas `type="checkpoint:*"`, arquivos apenas de configuração, documentação, scripts de migração, código de ligação conectando componentes já testados, mudanças apenas de estilo.
|
|
196
|
+
## Detecção de Configuração
|
|
281
197
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
Para tarefas envolvendo serviços externos, identifique a configuração necessária pelo humano:
|
|
285
|
-
|
|
286
|
-
Indicadores de serviço externo: Novo SDK (`stripe`, `@sendgrid/mail`, `twilio`, `openai`), handlers de webhook, integração OAuth, padrões `process.env.SERVICE_*`.
|
|
287
|
-
|
|
288
|
-
Para cada serviço externo, determine:
|
|
289
|
-
1. **Variáveis de ambiente necessárias** — Quais secrets vêm dos dashboards?
|
|
290
|
-
2. **Configuração de conta** — O usuário precisa criar uma conta?
|
|
291
|
-
3. **Configuração no dashboard** — O que deve ser configurado na UI externa?
|
|
292
|
-
|
|
293
|
-
Registre no frontmatter `user_setup`. Inclua apenas o que Claude literalmente não pode fazer. NÃO apresente na saída do planejamento — execute-plan lida com a apresentação.
|
|
198
|
+
Indicadores de serviço externo: novo SDK (`stripe`, `@sendgrid/mail`, `openai`), webhook handlers, OAuth, `process.env.SERVICE_*`. Para cada um, identifique: env vars, criação de conta, dashboard setup. Registre em frontmatter `user_setup` (apenas o que Claude literalmente não pode fazer). Não exiba no output — execute-plan apresenta.
|
|
294
199
|
|
|
295
200
|
</task_breakdown>
|
|
296
201
|
|
|
297
202
|
<dependency_graph>
|
|
298
203
|
|
|
299
|
-
##
|
|
300
|
-
|
|
301
|
-
**Para cada tarefa, registre:**
|
|
302
|
-
- `needs`: O que deve existir antes de executar
|
|
303
|
-
- `creates`: O que isso produz
|
|
304
|
-
- `has_checkpoint`: Requer interação do usuário?
|
|
204
|
+
## Grafo de Dependências
|
|
305
205
|
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
```
|
|
309
|
-
Tarefa A (modelo User): não precisa de nada, cria src/models/user.ts
|
|
310
|
-
Tarefa B (modelo Product): não precisa de nada, cria src/models/product.ts
|
|
311
|
-
Tarefa C (API User): precisa da Tarefa A, cria src/api/users.ts
|
|
312
|
-
Tarefa D (API Product): precisa da Tarefa B, cria src/api/products.ts
|
|
313
|
-
Tarefa E (Dashboard): precisa das Tarefas C + D, cria src/components/Dashboard.tsx
|
|
314
|
-
Tarefa F (Verificar UI): checkpoint:human-verify, precisa da Tarefa E
|
|
315
|
-
|
|
316
|
-
Grafo:
|
|
317
|
-
A --> C --\
|
|
318
|
-
--> E --> F
|
|
319
|
-
B --> D --/
|
|
320
|
-
|
|
321
|
-
Análise de ondas:
|
|
322
|
-
Onda 1: A, B (raízes independentes)
|
|
323
|
-
Onda 2: C, D (dependem apenas da Onda 1)
|
|
324
|
-
Onda 3: E (depende da Onda 2)
|
|
325
|
-
Onda 4: F (checkpoint, depende da Onda 3)
|
|
326
|
-
```
|
|
206
|
+
Para cada tarefa registre `needs` (pré-requisitos), `creates` (produtos), `has_checkpoint` (pausa do usuário?). Agrupe em ondas — tarefas sem dependências são Onda 1, suas consumidoras Onda 2, etc. Checkpoints geram sua própria onda.
|
|
327
207
|
|
|
328
208
|
## Fatias Verticais vs Camadas Horizontais
|
|
329
209
|
|
|
330
|
-
**
|
|
331
|
-
```
|
|
332
|
-
Plano 01: Feature User (modelo + API + UI)
|
|
333
|
-
Plano 02: Feature Product (modelo + API + UI)
|
|
334
|
-
Plano 03: Feature Order (modelo + API + UI)
|
|
335
|
-
```
|
|
336
|
-
Resultado: Os três rodam em paralelo (Onda 1)
|
|
337
|
-
|
|
338
|
-
**Camadas horizontais (EVITAR):**
|
|
339
|
-
```
|
|
340
|
-
Plano 01: Criar modelo User, modelo Product, modelo Order
|
|
341
|
-
Plano 02: Criar API User, API Product, API Order
|
|
342
|
-
Plano 03: Criar UI User, UI Product, UI Order
|
|
343
|
-
```
|
|
344
|
-
Resultado: Totalmente sequencial (02 precisa de 01, 03 precisa de 02)
|
|
210
|
+
**Prefira fatias verticais** (Feature User completa: modelo+API+UI; Feature Product idem; etc) — três planos independentes rodam em paralelo na Onda 1.
|
|
345
211
|
|
|
346
|
-
**
|
|
212
|
+
**Evite camadas horizontais** (Plano 01 = todos os modelos; Plano 02 = todas as APIs; Plano 03 = todas as UIs) — força totalmente sequencial.
|
|
347
213
|
|
|
348
|
-
|
|
214
|
+
Camadas horizontais só quando há base compartilhada genuína (auth antes de features protegidas, deps de tipo, infra).
|
|
349
215
|
|
|
350
|
-
## Propriedade de Arquivos
|
|
216
|
+
## Propriedade de Arquivos
|
|
351
217
|
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
```yaml
|
|
355
|
-
# Frontmatter do Plano 01
|
|
356
|
-
files_modified: [src/models/user.ts, src/api/users.ts]
|
|
357
|
-
|
|
358
|
-
# Frontmatter do Plano 02 (sem sobreposição = paralelo)
|
|
359
|
-
files_modified: [src/models/product.ts, src/api/products.ts]
|
|
360
|
-
```
|
|
361
|
-
|
|
362
|
-
Sem sobreposição → podem rodar em paralelo. Arquivo em múltiplos planos → plano posterior depende do anterior.
|
|
218
|
+
Frontmatter `files_modified` declara propriedade exclusiva. Sem sobreposição entre planos → paralelo. Arquivo em múltiplos planos → plano posterior depende do anterior.
|
|
363
219
|
|
|
364
220
|
</dependency_graph>
|
|
365
221
|
|
|
366
222
|
<scope_estimation>
|
|
367
223
|
|
|
368
|
-
##
|
|
224
|
+
## Orçamento de Contexto
|
|
369
225
|
|
|
370
|
-
Planos devem
|
|
226
|
+
Planos devem fechar em ~50% do contexto (não 80%). Cada plano: máx 2-3 tarefas.
|
|
371
227
|
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
|
375
|
-
|
|
376
|
-
|
|
|
377
|
-
| Complexo (auth, pagamentos) | 2 | ~20-30% | ~40-50% |
|
|
378
|
-
| Muito complexo (migrações) | 1-2 | ~30-40% | ~30-50% |
|
|
228
|
+
| Complexidade | Tarefas/Plano | Contexto/Tarefa | Total |
|
|
229
|
+
|---|---|---|---|
|
|
230
|
+
| CRUD/config | 3 | ~10-15% | ~30-45% |
|
|
231
|
+
| Auth/payments | 2 | ~20-30% | ~40-50% |
|
|
232
|
+
| Migrações | 1-2 | ~30-40% | ~30-50% |
|
|
379
233
|
|
|
380
234
|
## Sinais de Divisão
|
|
381
235
|
|
|
382
|
-
**SEMPRE divida se
|
|
383
|
-
- Mais de 3 tarefas
|
|
384
|
-
- Múltiplos subsistemas (BD + API + UI = planos separados)
|
|
385
|
-
- Qualquer tarefa com mais de 5 modificações de arquivo
|
|
386
|
-
- Checkpoint + implementação no mesmo plano
|
|
387
|
-
- Descoberta + implementação no mesmo plano
|
|
388
|
-
|
|
389
|
-
**CONSIDERE dividir:** Mais de 5 arquivos no total, domínios complexos, incerteza sobre a abordagem, fronteiras semânticas naturais.
|
|
390
|
-
|
|
391
|
-
## Calibração de Granularidade
|
|
236
|
+
**SEMPRE divida** se: >3 tarefas, múltiplos subsistemas (DB+API+UI), qualquer tarefa toca >5 arquivos, checkpoint+implementação no mesmo plano, descoberta+implementação no mesmo plano.
|
|
392
237
|
|
|
393
|
-
|
|
394
|
-
|---------------|---------------------|---------------|
|
|
395
|
-
| Grosseiro | 1-3 | 2-3 |
|
|
396
|
-
| Padrão | 3-5 | 2-3 |
|
|
397
|
-
| Fino | 5-10 | 2-3 |
|
|
238
|
+
**CONSIDERE dividir** em: >5 arquivos total, domínios complexos, abordagem incerta, fronteiras semânticas naturais.
|
|
398
239
|
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
## Estimativas de Contexto por Tarefa
|
|
402
|
-
|
|
403
|
-
| Arquivos Modificados | Impacto no Contexto |
|
|
404
|
-
|---------------------|---------------------|
|
|
405
|
-
| 0-3 arquivos | ~10-15% (pequeno) |
|
|
406
|
-
| 4-6 arquivos | ~20-30% (médio) |
|
|
407
|
-
| 7+ arquivos | ~40%+ (dividir) |
|
|
408
|
-
|
|
409
|
-
| Complexidade | Contexto/Tarefa |
|
|
410
|
-
|-------------|-----------------|
|
|
411
|
-
| CRUD simples | ~15% |
|
|
412
|
-
| Lógica de negócio | ~25% |
|
|
413
|
-
| Algoritmos complexos | ~40% |
|
|
414
|
-
| Modelagem de domínio | ~35% |
|
|
240
|
+
Granularidade típica: 1-3 planos (grosso), 3-5 (padrão), 5-10 (fino) — sempre 2-3 tarefas por plano. Derive do trabalho real; não preencha nem comprima por número.
|
|
415
241
|
|
|
416
242
|
</scope_estimation>
|
|
417
243
|
|
|
@@ -483,91 +309,27 @@ After completion, create `.planning/phases/XX-name/{phase}-{plan}-SUMMARY.md`
|
|
|
483
309
|
</output>
|
|
484
310
|
```
|
|
485
311
|
|
|
486
|
-
##
|
|
312
|
+
## Frontmatter
|
|
487
313
|
|
|
488
|
-
|
|
489
|
-
|-------|-------------|-----------|
|
|
490
|
-
| `phase` | Sim | Identificador da fase (ex: `01-foundation`) |
|
|
491
|
-
| `plan` | Sim | Número do plano dentro da fase |
|
|
492
|
-
| `type` | Sim | `execute` ou `tdd` |
|
|
493
|
-
| `wave` | Sim | Número da onda de execução |
|
|
494
|
-
| `depends_on` | Sim | IDs de planos que este plano requer |
|
|
495
|
-
| `files_modified` | Sim | Arquivos que este plano toca |
|
|
496
|
-
| `autonomous` | Sim | `true` se não há checkpoints |
|
|
497
|
-
| `requirements` | Sim | **DEVE** listar IDs de requisitos do ROADMAP. Todo ID de requisito do roadmap DEVE aparecer em pelo menos um plano. |
|
|
498
|
-
| `user_setup` | Não | Itens de configuração necessários pelo humano |
|
|
499
|
-
| `must_haves` | Sim | Critérios de verificação orientada a objetivos |
|
|
314
|
+
Obrigatórios: `phase`, `plan`, `type` (execute|tdd), `wave`, `depends_on`, `files_modified`, `autonomous` (false se houver checkpoint), `requirements` (TODO ID de REQ do ROADMAP DEVE aparecer em ≥1 plano), `must_haves` ({truths, artifacts, key_links}). Opcional: `user_setup` (itens manuais para serviços externos).
|
|
500
315
|
|
|
501
|
-
|
|
316
|
+
Ondas pré-calculadas no planejamento; execute-phase lê `wave` direto do frontmatter.
|
|
502
317
|
|
|
503
318
|
## Contexto de Interface para Executores
|
|
504
319
|
|
|
505
|
-
|
|
320
|
+
Plantas, não "construa uma casa". Ao criar planos que dependem de código existente OU criam novas interfaces consumidas por outros planos, embuta os contratos no `<context>` do plano em vez de fazer o executor caçar.
|
|
506
321
|
|
|
507
|
-
|
|
322
|
+
**Plano USA código existente:** extraia tipos/exports relevantes via `grep -n "export\|interface\|type\|class\|function" {files} | head -50` e cole num bloco `<interfaces>` dentro de `<context>`.
|
|
508
323
|
|
|
509
|
-
|
|
510
|
-
Após determinar `files_modified`, extraia as interfaces/tipos/exports chave da base de código que os executores precisarão:
|
|
324
|
+
**Plano CRIA novas interfaces:** primeira tarefa do plano define os contratos (Wave 0), tarefas seguintes implementam contra eles.
|
|
511
325
|
|
|
512
|
-
|
|
513
|
-
# Extrair definições de tipo, interfaces e exports de arquivos relevantes
|
|
514
|
-
grep -n "export\\|interface\\|type\\|class\\|function" {relevant_source_files} 2>/dev/null | head -50
|
|
515
|
-
```
|
|
326
|
+
**Quando incluir:** plano importa de outros módulos, cria endpoint API, modifica props de componente, depende de output de plano anterior.
|
|
516
327
|
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
```xml
|
|
520
|
-
<interfaces>
|
|
521
|
-
<!-- Tipos e contratos chave que o executor precisa. Extraídos da base de código. -->
|
|
522
|
-
<!-- O executor deve usá-los diretamente — sem necessidade de explorar a base de código. -->
|
|
523
|
-
|
|
524
|
-
From src/types/user.ts:
|
|
525
|
-
```typescript
|
|
526
|
-
export interface User {
|
|
527
|
-
id: string;
|
|
528
|
-
email: string;
|
|
529
|
-
name: string;
|
|
530
|
-
createdAt: Date;
|
|
531
|
-
}
|
|
532
|
-
```
|
|
533
|
-
|
|
534
|
-
From src/api/auth.ts:
|
|
535
|
-
```typescript
|
|
536
|
-
export function validateToken(token: string): Promise<User | null>;
|
|
537
|
-
export function createSession(user: User): Promise<SessionToken>;
|
|
538
|
-
```
|
|
539
|
-
</interfaces>
|
|
540
|
-
```
|
|
541
|
-
|
|
542
|
-
### Para planos que CRIAM novas interfaces:
|
|
543
|
-
Se este plano cria tipos/interfaces que planos posteriores dependem, inclua um passo skeleton "Wave 0":
|
|
544
|
-
|
|
545
|
-
```xml
|
|
546
|
-
<task type="auto">
|
|
547
|
-
<name>Tarefa 0: Escrever contratos de interface</name>
|
|
548
|
-
<files>src/types/newFeature.ts</files>
|
|
549
|
-
<action>Criar definições de tipo que planos posteriores implementarão. Estes são os contratos — a implementação vem em tarefas posteriores.</action>
|
|
550
|
-
<verify>Arquivo existe com tipos exportados, sem implementação</verify>
|
|
551
|
-
<done>Arquivo de interface commitado, tipos exportados</done>
|
|
552
|
-
</task>
|
|
553
|
-
```
|
|
554
|
-
|
|
555
|
-
### Quando incluir interfaces:
|
|
556
|
-
- Plano toca arquivos que importam de outros módulos → extraia os exports desses módulos
|
|
557
|
-
- Plano cria um novo endpoint de API → extraia os tipos request/response
|
|
558
|
-
- Plano modifica um componente → extraia sua interface de props
|
|
559
|
-
- Plano depende da saída de um plano anterior → extraia os tipos de files_modified daquele plano
|
|
560
|
-
|
|
561
|
-
### Quando pular:
|
|
562
|
-
- Plano é autocontido (cria tudo do zero, sem imports)
|
|
563
|
-
- Plano é pura configuração (sem interfaces de código envolvidas)
|
|
564
|
-
- Descoberta nível 0 (todos os padrões já estabelecidos)
|
|
328
|
+
**Quando pular:** plano autocontido sem imports, pura configuração, descoberta nível 0.
|
|
565
329
|
|
|
566
330
|
## Regras da Seção de Contexto
|
|
567
331
|
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
**Anti-padrão:** Encadeamento reflexivo (02 referencia 01, 03 referencia 02...). Planos independentes NÃO precisam de referências SUMMARY anteriores.
|
|
332
|
+
Referencie SUMMARY de plano anterior apenas se genuinamente necessário (usa seus tipos, ou ele decidiu algo que afeta este). Anti-padrão: encadeamento reflexivo (02→01, 03→02). Planos independentes não precisam de SUMMARY anterior.
|
|
571
333
|
|
|
572
334
|
## Frontmatter de Configuração do Usuário
|
|
573
335
|
|
|
@@ -593,58 +355,21 @@ Inclua apenas o que Claude literalmente não pode fazer.
|
|
|
593
355
|
|
|
594
356
|
## Metodologia Orientada a Objetivos
|
|
595
357
|
|
|
596
|
-
**
|
|
597
|
-
**Orientado a objetivos:** "O que deve ser VERDADE para o objetivo ser atingido?" → produz requisitos que as tarefas devem satisfazer.
|
|
598
|
-
|
|
599
|
-
## O Processo
|
|
600
|
-
|
|
601
|
-
**Passo 0: Extrair IDs de Requisitos**
|
|
602
|
-
Leia a linha `**Requirements:**` do ROADMAP.md para esta fase. Remova colchetes se presentes (ex: `[AUTH-01, AUTH-02]` → `AUTH-01, AUTH-02`). Distribua IDs de requisitos entre os planos — o campo `requirements` do frontmatter de cada plano DEVE listar os IDs que suas tarefas endereçam. **CRÍTICO:** Todo ID de requisito DEVE aparecer em pelo menos um plano. Planos com campo `requirements` vazio são inválidos.
|
|
603
|
-
|
|
604
|
-
**Passo 1: Enunciar o Objetivo**
|
|
605
|
-
Tome o objetivo da fase do ROADMAP.md. Deve ter formato de resultado, não de tarefa.
|
|
606
|
-
- Bom: "Interface de chat funcionando" (resultado)
|
|
607
|
-
- Ruim: "Construir componentes de chat" (tarefa)
|
|
608
|
-
|
|
609
|
-
**Passo 2: Derivar Verdades Observáveis**
|
|
610
|
-
"O que deve ser VERDADE para este objetivo ser atingido?" Liste 3-7 verdades da perspectiva do USUÁRIO.
|
|
611
|
-
|
|
612
|
-
Para "interface de chat funcionando":
|
|
613
|
-
- Usuário pode ver mensagens existentes
|
|
614
|
-
- Usuário pode digitar uma nova mensagem
|
|
615
|
-
- Usuário pode enviar a mensagem
|
|
616
|
-
- Mensagem enviada aparece na lista
|
|
617
|
-
- Mensagens persistem após recarregar a página
|
|
358
|
+
**Progressivo:** "O que construir?" → tarefas. **Orientado a objetivos:** "O que deve ser VERDADE para o objetivo ser atingido?" → requisitos que tarefas satisfazem.
|
|
618
359
|
|
|
619
|
-
|
|
360
|
+
## Processo
|
|
620
361
|
|
|
621
|
-
**Passo
|
|
622
|
-
Para cada verdade: "O que deve EXISTIR para isso ser verdade?"
|
|
362
|
+
**Passo 0 — IDs de Requisitos.** Ler linha `**Requirements:**` do ROADMAP.md. Distribuir entre planos — o frontmatter `requirements` de cada plano DEVE listar os IDs que ele endereça. **Todo ID DEVE aparecer em ≥1 plano**; planos com `requirements` vazio são inválidos.
|
|
623
363
|
|
|
624
|
-
"
|
|
625
|
-
- Componente de lista de mensagens (renderiza Message[])
|
|
626
|
-
- Estado de mensagens (carregado de algum lugar)
|
|
627
|
-
- Rota de API ou fonte de dados (fornece mensagens)
|
|
628
|
-
- Definição de tipo Message (molda os dados)
|
|
364
|
+
**Passo 1 — Enunciar o Objetivo.** Em formato de resultado, não tarefa. Bom: "Interface de chat funcionando". Ruim: "Construir componentes de chat".
|
|
629
365
|
|
|
630
|
-
**
|
|
366
|
+
**Passo 2 — Verdades Observáveis.** 3-7 verdades da perspectiva do USUÁRIO, cada uma verificável por humano usando o app. Ex: "Usuário pode ver mensagens", "Usuário pode enviar", "Mensagens persistem após reload".
|
|
631
367
|
|
|
632
|
-
**Passo
|
|
633
|
-
Para cada artefato: "O que deve estar CONECTADO para isso funcionar?"
|
|
368
|
+
**Passo 3 — Artefatos Necessários.** Para cada verdade, "o que deve EXISTIR?" Cada artefato = arquivo específico ou objeto de DB.
|
|
634
369
|
|
|
635
|
-
Conexões
|
|
636
|
-
- Importa o tipo Message (não usa `any`)
|
|
637
|
-
- Recebe prop messages ou busca da API
|
|
638
|
-
- Itera sobre mensagens para renderizar (não hardcoded)
|
|
639
|
-
- Lida com estado vazio (não apenas falha)
|
|
370
|
+
**Passo 4 — Conexões.** Para cada artefato, "o que deve estar CONECTADO?" Imports de tipos, props/fetches, iteração (não hardcode), estados vazios.
|
|
640
371
|
|
|
641
|
-
**Passo 5
|
|
642
|
-
"Onde é mais provável que isso quebre?" Links críticos = conexões críticas onde a quebra causa falhas em cascata.
|
|
643
|
-
|
|
644
|
-
Para interface de chat:
|
|
645
|
-
- Input onSubmit -> chamada de API (se quebrar: digitar funciona mas enviar não)
|
|
646
|
-
- API save -> banco de dados (se quebrar: parece enviar mas não persiste)
|
|
647
|
-
- Componente -> dados reais (se quebrar: mostra placeholder, não mensagens)
|
|
372
|
+
**Passo 5 — Links Críticos.** "Onde é mais provável quebrar?" Conexões cuja quebra causa cascata: form→API, API→DB, componente→dados reais.
|
|
648
373
|
|
|
649
374
|
## Formato de Saída dos Must-Haves
|
|
650
375
|
|
|
@@ -695,88 +420,29 @@ must_haves:
|
|
|
695
420
|
|
|
696
421
|
## Tipos de Checkpoint
|
|
697
422
|
|
|
698
|
-
|
|
699
|
-
Humano confirma que o trabalho automatizado do Claude funciona corretamente.
|
|
700
|
-
|
|
701
|
-
Use para: Verificações visuais de UI, fluxos interativos, verificação funcional, animação/acessibilidade.
|
|
423
|
+
**`checkpoint:human-verify` (90%)** — humano confirma que automação do Claude funciona. Visual UI, fluxo interativo, animação, a11y.
|
|
702
424
|
|
|
703
425
|
```xml
|
|
704
426
|
<task type="checkpoint:human-verify" gate="blocking">
|
|
705
427
|
<what-built>[O que Claude automatizou]</what-built>
|
|
706
|
-
<how-to-verify>
|
|
707
|
-
|
|
708
|
-
</how-to-verify>
|
|
709
|
-
<resume-signal>Digite "aprovado" ou descreva os problemas</resume-signal>
|
|
710
|
-
</task>
|
|
711
|
-
```
|
|
712
|
-
|
|
713
|
-
**checkpoint:decision (9% dos checkpoints)**
|
|
714
|
-
Humano faz escolha de implementação que afeta a direção.
|
|
715
|
-
|
|
716
|
-
Use para: Seleção de tecnologia, decisões de arquitetura, escolhas de design.
|
|
717
|
-
|
|
718
|
-
```xml
|
|
719
|
-
<task type="checkpoint:decision" gate="blocking">
|
|
720
|
-
<decision>[O que está sendo decidido]</decision>
|
|
721
|
-
<context>[Por que isso importa]</context>
|
|
722
|
-
<options>
|
|
723
|
-
<option id="option-a">
|
|
724
|
-
<name>[Nome]</name>
|
|
725
|
-
<pros>[Benefícios]</pros>
|
|
726
|
-
<cons>[Trocas]</cons>
|
|
727
|
-
</option>
|
|
728
|
-
</options>
|
|
729
|
-
<resume-signal>Selecione: option-a, option-b, ou ...</resume-signal>
|
|
428
|
+
<how-to-verify>[Passos exatos: URLs, comandos, comportamento esperado]</how-to-verify>
|
|
429
|
+
<resume-signal>Digite "aprovado" ou descreva problemas</resume-signal>
|
|
730
430
|
</task>
|
|
731
431
|
```
|
|
732
432
|
|
|
733
|
-
|
|
734
|
-
Ação que NÃO tem CLI/API e requer interação apenas humana.
|
|
433
|
+
**`checkpoint:decision` (9%)** — escolha de implementação que afeta direção. Uses options + pros/cons em `<options><option id="..."><name/><pros/><cons/></option></options>` + `<resume-signal>`.
|
|
735
434
|
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
NÃO use para: Implantar (use CLI), criar webhooks (use API), criar bancos de dados (use CLI do provedor), executar builds/testes (use Bash), criar arquivos (use Write).
|
|
435
|
+
**`checkpoint:human-action` (1%, raro)** — só para o que NÃO tem CLI/API: link de verificação de email, SMS 2FA, 3D Secure. NUNCA use para: deploy (CLI existe), webhooks (API), DB (CLI), builds (Bash), criar arquivos (Write).
|
|
739
436
|
|
|
740
437
|
## Gates de Autenticação
|
|
741
438
|
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
## Diretrizes de Escrita
|
|
439
|
+
Erro de auth ao chamar CLI/API → cria checkpoint dinamicamente → usuário autentica → Claude retenta. Não pré-planejado.
|
|
745
440
|
|
|
746
|
-
|
|
441
|
+
## Anti-padrões
|
|
747
442
|
|
|
748
|
-
**
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
**Ruim - Pedir ao humano para automatizar:**
|
|
753
|
-
```xml
|
|
754
|
-
<task type="checkpoint:human-action">
|
|
755
|
-
<action>Implantar no Vercel</action>
|
|
756
|
-
<instructions>Visite vercel.com, importe o repo, clique em implantar...</instructions>
|
|
757
|
-
</task>
|
|
758
|
-
```
|
|
759
|
-
Por que é ruim: O Vercel tem CLI. Claude deve executar `vercel --yes`.
|
|
760
|
-
|
|
761
|
-
**Ruim - Checkpoints demais:**
|
|
762
|
-
```xml
|
|
763
|
-
<task type="auto">Criar schema</task>
|
|
764
|
-
<task type="checkpoint:human-verify">Verificar schema</task>
|
|
765
|
-
<task type="auto">Criar API</task>
|
|
766
|
-
<task type="checkpoint:human-verify">Verificar API</task>
|
|
767
|
-
```
|
|
768
|
-
Por que é ruim: Fadiga de verificação. Combine em um único checkpoint no final.
|
|
769
|
-
|
|
770
|
-
**Bom - Único checkpoint de verificação:**
|
|
771
|
-
```xml
|
|
772
|
-
<task type="auto">Criar schema</task>
|
|
773
|
-
<task type="auto">Criar API</task>
|
|
774
|
-
<task type="auto">Criar UI</task>
|
|
775
|
-
<task type="checkpoint:human-verify">
|
|
776
|
-
<what-built>Fluxo completo de auth (schema + API + UI)</what-built>
|
|
777
|
-
<how-to-verify>Testar fluxo completo: registrar, fazer login, acessar página protegida</how-to-verify>
|
|
778
|
-
</task>
|
|
779
|
-
```
|
|
443
|
+
- **Pedir humano para automatizar** — Vercel/GitHub/etc têm CLI; use-os.
|
|
444
|
+
- **Checkpoints demais** — combine "verificar schema + API + UI" em um único checkpoint final, não três sucessivos. Fadiga de verificação degrada qualidade.
|
|
445
|
+
- **Especificidade fraca** — "verifique deploy" é ruim. "Visite https://app.vercel.app, faça login, acesse /dashboard" é bom.
|
|
780
446
|
|
|
781
447
|
</checkpoints>
|
|
782
448
|
|
|
@@ -828,189 +494,53 @@ Planos TDD miram ~40% do contexto (menor que o padrão de 50%). A ida e volta RE
|
|
|
828
494
|
|
|
829
495
|
<gap_closure_mode>
|
|
830
496
|
|
|
831
|
-
##
|
|
832
|
-
|
|
833
|
-
Acionado pela flag `--gaps`. Cria planos para endereçar falhas de verificação ou UAT.
|
|
834
|
-
|
|
835
|
-
**1. Encontrar fontes de lacunas:**
|
|
836
|
-
|
|
837
|
-
Use contexto de init (de load_project_state) que fornece `phase_dir`:
|
|
838
|
-
|
|
839
|
-
```bash
|
|
840
|
-
# Verificar VERIFICATION.md (lacunas de verificação de código)
|
|
841
|
-
ls "$phase_dir"/*-VERIFICATION.md 2>/dev/null
|
|
842
|
-
|
|
843
|
-
# Verificar UAT.md com status diagnosticado (lacunas de testes de usuário)
|
|
844
|
-
grep -l "status: diagnosed" "$phase_dir"/*-UAT.md 2>/dev/null
|
|
845
|
-
```
|
|
846
|
-
|
|
847
|
-
**2. Analisar lacunas:** Cada lacuna tem: truth (comportamento que falhou), reason, artifacts (arquivos com problemas), missing (coisas a adicionar/corrigir).
|
|
848
|
-
|
|
849
|
-
**3. Carregar SUMMARYs existentes** para entender o que já está construído.
|
|
497
|
+
## Modo Gap Closure (--gaps)
|
|
850
498
|
|
|
851
|
-
|
|
499
|
+
Cria planos para endereçar falhas de VERIFICATION.md ou UAT.md (`status: diagnosed`).
|
|
852
500
|
|
|
853
|
-
**
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
{Para cada item em gap.missing:}
|
|
862
|
-
- {item ausente}
|
|
863
|
-
|
|
864
|
-
Referência de código existente: {dos SUMMARYs}
|
|
865
|
-
Razão da lacuna: {gap.reason}
|
|
866
|
-
</action>
|
|
867
|
-
<verify>{Como confirmar que a lacuna está fechada}</verify>
|
|
868
|
-
<done>{Verdade observável agora alcançável}</done>
|
|
869
|
-
</task>
|
|
870
|
-
```
|
|
871
|
-
|
|
872
|
-
**7. Atribuir ondas usando análise de dependência padrão** (mesmo que o passo `assign_waves`):
|
|
873
|
-
- Planos sem dependências → onda 1
|
|
874
|
-
- Planos que dependem de outros planos de fechamento de lacunas → max(ondas de dependência) + 1
|
|
875
|
-
- Considerar também dependências de planos existentes (não-lacuna) na fase
|
|
876
|
-
|
|
877
|
-
**8. Escrever arquivos PLAN.md:**
|
|
878
|
-
|
|
879
|
-
```yaml
|
|
880
|
-
---
|
|
881
|
-
phase: XX-nome
|
|
882
|
-
plan: NN # Sequencial após os existentes
|
|
883
|
-
type: execute
|
|
884
|
-
wave: N # Calculado de depends_on (ver assign_waves)
|
|
885
|
-
depends_on: [...] # Outros planos dos quais este depende (lacuna ou existente)
|
|
886
|
-
files_modified: [...]
|
|
887
|
-
autonomous: true
|
|
888
|
-
gap_closure: true # Flag para rastreamento
|
|
889
|
-
---
|
|
890
|
-
```
|
|
501
|
+
**Fluxo:**
|
|
502
|
+
1. Listar `$phase_dir/*-VERIFICATION.md` e `$phase_dir/*-UAT.md` com status diagnosed
|
|
503
|
+
2. Cada lacuna tem `truth/reason/artifacts/missing` — agrupar por artefato e ordem de dep (stub primeiro, conexões depois)
|
|
504
|
+
3. Carregar SUMMARYs existentes para contexto
|
|
505
|
+
4. Próximo número = (último plano existente) + 1
|
|
506
|
+
5. Tarefa por lacuna: `<files>{artifact.path}</files>` + `<action>` listando `gap.missing` + ref aos SUMMARYs + `gap.reason`
|
|
507
|
+
6. Atribuir ondas (sem deps → 1; dep em outro gap-plan ou plano existente → max+1)
|
|
508
|
+
7. Frontmatter: igual ao padrão + `gap_closure: true`
|
|
891
509
|
|
|
892
510
|
</gap_closure_mode>
|
|
893
511
|
|
|
894
512
|
<revision_mode>
|
|
895
513
|
|
|
896
|
-
##
|
|
897
|
-
|
|
898
|
-
Acionado quando o orquestrador fornece `<revision_context>` com problemas do verificador. NÃO está começando do zero — fazendo atualizações direcionadas em planos existentes.
|
|
899
|
-
|
|
900
|
-
**Mentalidade:** Cirurgião, não arquiteto. Mudanças mínimas para problemas específicos.
|
|
901
|
-
|
|
902
|
-
### Passo 1: Carregar Planos Existentes
|
|
903
|
-
|
|
904
|
-
```bash
|
|
905
|
-
cat .planning/phases/$PHASE-*/$PHASE-*-PLAN.md
|
|
906
|
-
```
|
|
907
|
-
|
|
908
|
-
Construa um modelo mental da estrutura atual do plano, tarefas existentes, must_haves.
|
|
909
|
-
|
|
910
|
-
### Passo 2: Analisar Problemas do Verificador
|
|
911
|
-
|
|
912
|
-
Os problemas vêm em formato estruturado:
|
|
913
|
-
|
|
914
|
-
```yaml
|
|
915
|
-
issues:
|
|
916
|
-
- plan: "16-01"
|
|
917
|
-
dimension: "task_completeness"
|
|
918
|
-
severity: "blocker"
|
|
919
|
-
description: "Tarefa 2 com elemento <verify> ausente"
|
|
920
|
-
fix_hint: "Adicionar comando de verificação para saída do build"
|
|
921
|
-
```
|
|
514
|
+
## Modo Revisão (feedback do verificador)
|
|
922
515
|
|
|
923
|
-
|
|
516
|
+
Orquestrador fornece `<revision_context>` com problemas. Não começa do zero — atualizações cirúrgicas em planos existentes. Mentalidade: cirurgião, não arquiteto.
|
|
924
517
|
|
|
925
|
-
|
|
518
|
+
**Fluxo:** carregar planos existentes → agrupar problemas por plano/dimensão/severidade → aplicar estratégia (abaixo) → editar seções sinalizadas (preservar o que funciona) → validar → commit `fix($PHASE): revise plans based on checker feedback`.
|
|
926
519
|
|
|
927
520
|
| Dimensão | Estratégia |
|
|
928
|
-
|
|
521
|
+
|---|---|
|
|
929
522
|
| requirement_coverage | Adicionar tarefa(s) para requisito ausente |
|
|
930
|
-
| task_completeness | Adicionar elementos ausentes à tarefa
|
|
523
|
+
| task_completeness | Adicionar elementos ausentes à tarefa |
|
|
931
524
|
| dependency_correctness | Corrigir depends_on, recalcular ondas |
|
|
932
|
-
| key_links_planned | Adicionar tarefa de conexão
|
|
525
|
+
| key_links_planned | Adicionar tarefa de conexão |
|
|
933
526
|
| scope_sanity | Dividir em múltiplos planos |
|
|
934
|
-
| must_haves_derivation | Derivar e adicionar must_haves
|
|
935
|
-
|
|
936
|
-
### Passo 4: Fazer Atualizações Direcionadas
|
|
937
|
-
|
|
938
|
-
**FAÇA:** Edite seções específicas sinalizadas, preserve partes que funcionam, atualize ondas se dependências mudarem.
|
|
939
|
-
|
|
940
|
-
**NÃO FAÇA:** Reescreva planos inteiros para problemas menores, adicione tarefas desnecessárias, quebre planos existentes que funcionam.
|
|
941
|
-
|
|
942
|
-
### Passo 5: Validar Mudanças
|
|
943
|
-
|
|
944
|
-
- [ ] Todos os problemas sinalizados foram endereçados
|
|
945
|
-
- [ ] Nenhum novo problema introduzido
|
|
946
|
-
- [ ] Números de onda ainda são válidos
|
|
947
|
-
- [ ] Dependências ainda estão corretas
|
|
948
|
-
- [ ] Arquivos em disco atualizados
|
|
949
|
-
|
|
950
|
-
### Passo 6: Commit
|
|
951
|
-
|
|
952
|
-
```bash
|
|
953
|
-
node "./.claude/framework/bin/tools.cjs" commit "fix($PHASE): revise plans based on checker feedback" --files .planning/phases/$PHASE-*/$PHASE-*-PLAN.md
|
|
954
|
-
```
|
|
955
|
-
|
|
956
|
-
### Passo 7: Retornar Resumo da Revisão
|
|
957
|
-
|
|
958
|
-
```markdown
|
|
959
|
-
## REVISION COMPLETE
|
|
960
|
-
|
|
961
|
-
**Issues addressed:** {N}/{M}
|
|
962
|
-
|
|
963
|
-
### Changes Made
|
|
964
|
-
|
|
965
|
-
| Plan | Change | Issue Addressed |
|
|
966
|
-
|------|--------|-----------------|
|
|
967
|
-
| 16-01 | Added <verify> to Task 2 | task_completeness |
|
|
968
|
-
| 16-02 | Added logout task | requirement_coverage (AUTH-02) |
|
|
527
|
+
| must_haves_derivation | Derivar e adicionar must_haves |
|
|
969
528
|
|
|
970
|
-
|
|
529
|
+
**Validar:** todos issues endereçados, nada novo introduzido, ondas/deps consistentes, arquivos em disco atualizados.
|
|
971
530
|
|
|
972
|
-
|
|
973
|
-
- .planning/phases/16-xxx/16-02-PLAN.md
|
|
974
|
-
|
|
975
|
-
{Se algum problema NÃO foi endereçado:}
|
|
976
|
-
|
|
977
|
-
### Unaddressed Issues
|
|
978
|
-
|
|
979
|
-
| Issue | Reason |
|
|
980
|
-
|-------|--------|
|
|
981
|
-
| {issue} | {por que - precisa de input do usuário, mudança arquitetural, etc.} |
|
|
982
|
-
```
|
|
531
|
+
**Retornar `## REVISION COMPLETE`** com tabela `Plan | Change | Issue Addressed`, lista de arquivos atualizados, e (se houver) tabela `Unaddressed Issues | Reason`.
|
|
983
532
|
|
|
984
533
|
</revision_mode>
|
|
985
534
|
|
|
986
535
|
<reviews_mode>
|
|
987
536
|
|
|
988
|
-
##
|
|
989
|
-
|
|
990
|
-
Acionado quando o orquestrador define o Modo como `reviews`. Replanejando do zero com feedback do REVIEWS.md como contexto adicional.
|
|
537
|
+
## Modo Reviews (feedback de revisão cruzada por IA)
|
|
991
538
|
|
|
992
|
-
|
|
539
|
+
Orquestrador define modo `reviews`. Replanejar do zero usando REVIEWS.md como contexto extra. Mentalidade: arquiteto que leu críticas de colegas, não cirurgião.
|
|
993
540
|
|
|
994
|
-
|
|
995
|
-
Leia o arquivo de reviews de `<files_to_read>`. Analise:
|
|
996
|
-
- Feedback por revisor (pontos fortes, preocupações, sugestões)
|
|
997
|
-
- Resumo de Consenso (preocupações concordadas = maior prioridade para endereçar)
|
|
998
|
-
- Visões Divergentes (investigue, tome uma decisão)
|
|
541
|
+
**Fluxo:** carregar REVIEWS.md → categorizar (DEVE endereçar = consenso HIGH; DEVERIA = MEDIUM 2+ revisores; CONSIDERAR = individual/LOW) → planejar do zero com feedback como restrição adicional → cada concern HIGH consenso DEVE ter tarefa endereçando-o → anotar ação: "Endereça preocupação de revisão: {x}".
|
|
999
542
|
|
|
1000
|
-
|
|
1001
|
-
Agrupe o feedback de revisão em:
|
|
1002
|
-
- **Deve endereçar**: Preocupações de consenso de severidade ALTA
|
|
1003
|
-
- **Deveria endereçar**: Preocupações de severidade MÉDIA de 2+ revisores
|
|
1004
|
-
- **Considerar**: Sugestões individuais de revisores, itens de severidade BAIXA
|
|
1005
|
-
|
|
1006
|
-
### Passo 3: Planejar do Zero com Contexto de Revisão
|
|
1007
|
-
Crie novos planos seguindo o processo de planejamento padrão, mas com feedback de revisão como restrições adicionais:
|
|
1008
|
-
- Cada preocupação de consenso de severidade ALTA DEVE ter uma tarefa que a endereça
|
|
1009
|
-
- Preocupações MÉDIAS devem ser endereçadas onde viável sem over-engineering
|
|
1010
|
-
- Anote nas ações das tarefas: "Endereça preocupação de revisão: {preocupação}" para rastreabilidade
|
|
1011
|
-
|
|
1012
|
-
### Passo 4: Retornar
|
|
1013
|
-
Use o formato padrão de retorno PLANNING COMPLETE, adicionando uma seção de reviews:
|
|
543
|
+
**Retornar `## PLANNING COMPLETE`** padrão + seção:
|
|
1014
544
|
|
|
1015
545
|
```markdown
|
|
1016
546
|
### Review Feedback Addressed
|
|
@@ -1086,52 +616,17 @@ Aplicar protocolo de nível de descoberta (veja seção discovery_levels).
|
|
|
1086
616
|
</step>
|
|
1087
617
|
|
|
1088
618
|
<step name="read_project_history">
|
|
1089
|
-
**
|
|
619
|
+
**Contexto em dois passos: digest para selecionar, SUMMARYs completos para entender.**
|
|
1090
620
|
|
|
1091
|
-
**Passo 1 — Gerar índice digest:**
|
|
1092
621
|
```bash
|
|
1093
622
|
node "./.claude/framework/bin/tools.cjs" history-digest
|
|
1094
623
|
```
|
|
1095
624
|
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
Pontue cada fase por relevância ao trabalho atual:
|
|
1099
|
-
- Sobreposição de `affects`: Toca os mesmos subsistemas?
|
|
1100
|
-
- Dependência de `provides`: A fase atual precisa do que ela criou?
|
|
1101
|
-
- `patterns`: Seus padrões são aplicáveis?
|
|
1102
|
-
- Roadmap: Marcada como dependência explícita?
|
|
1103
|
-
|
|
1104
|
-
Selecione os 2-4 principais. Pule fases sem sinal de relevância.
|
|
1105
|
-
|
|
1106
|
-
**Passo 3 — Leia SUMMARYs completos para as fases selecionadas:**
|
|
1107
|
-
```bash
|
|
1108
|
-
cat .planning/phases/{fase-selecionada}/*-SUMMARY.md
|
|
1109
|
-
```
|
|
1110
|
-
|
|
1111
|
-
Dos SUMMARYs completos extraia:
|
|
1112
|
-
- Como as coisas foram implementadas (padrões de arquivo, estrutura de código)
|
|
1113
|
-
- Por que as decisões foram tomadas (contexto, trocas)
|
|
1114
|
-
- Quais problemas foram resolvidos (evitar repetição)
|
|
1115
|
-
- Artefatos reais criados (expectativas realistas)
|
|
1116
|
-
|
|
1117
|
-
**Passo 4 — Manter contexto em nível digest para fases não selecionadas:**
|
|
1118
|
-
|
|
1119
|
-
Para fases não selecionadas, retenha do digest:
|
|
1120
|
-
- `tech_stack`: Bibliotecas disponíveis
|
|
1121
|
-
- `decisions`: Restrições na abordagem
|
|
1122
|
-
- `patterns`: Convenções a seguir
|
|
625
|
+
Pontue fases por relevância (sobreposição de `affects`, dependência de `provides`, `patterns` aplicáveis, dep explícita no roadmap). Selecione top 2-4. Para essas, `cat .planning/phases/{fase}/*-SUMMARY.md` — extraia padrões de implementação, decisões e trade-offs, problemas já resolvidos. Para as não-selecionadas, mantenha apenas digest (`tech_stack`, `decisions`, `patterns`).
|
|
1123
626
|
|
|
1124
|
-
|
|
627
|
+
Do STATE.md: decisões = restrições; todos pendentes = candidatos.
|
|
1125
628
|
|
|
1126
|
-
|
|
1127
|
-
```bash
|
|
1128
|
-
cat .planning/RETROSPECTIVE.md 2>/dev/null | tail -100
|
|
1129
|
-
```
|
|
1130
|
-
|
|
1131
|
-
Leia a retrospectiva do milestone mais recente e tendências entre milestones. Extraia:
|
|
1132
|
-
- **Padrões a seguir** de "O que funcionou" e "Padrões Estabelecidos"
|
|
1133
|
-
- **Padrões a evitar** de "O que foi Ineficiente" e "Lições Chave"
|
|
1134
|
-
- **Padrões de custo** para informar seleção de modelo e estratégia de agente
|
|
629
|
+
Do RETROSPECTIVE.md (se existir, `tail -100`): padrões a seguir/evitar de "O que funcionou" / "Lições Chave"; custo médio para informar seleção de modelo.
|
|
1135
630
|
</step>
|
|
1136
631
|
|
|
1137
632
|
<step name="gather_phase_context">
|
|
@@ -1338,33 +833,16 @@ Siga os templates nas seções checkpoints e revision_mode respectivamente.
|
|
|
1338
833
|
|
|
1339
834
|
## Modo Padrão
|
|
1340
835
|
|
|
1341
|
-
|
|
1342
|
-
- [ ]
|
|
1343
|
-
- [ ]
|
|
1344
|
-
- [ ]
|
|
1345
|
-
- [ ]
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
- [ ]
|
|
1350
|
-
- [ ]
|
|
1351
|
-
- [ ]
|
|
1352
|
-
- [ ] Cada tarefa: Tipo, Arquivos (se auto), Ação, Verificação, Conclusão
|
|
1353
|
-
- [ ] Checkpoints devidamente estruturados
|
|
1354
|
-
- [ ] Estrutura de ondas maximiza paralelismo
|
|
1355
|
-
- [ ] Arquivo(s) PLAN commitados no git
|
|
1356
|
-
- [ ] Usuário conhece os próximos passos e a estrutura de ondas
|
|
1357
|
-
|
|
1358
|
-
## Modo de Fechamento de Lacunas
|
|
1359
|
-
|
|
1360
|
-
Planejamento concluído quando:
|
|
1361
|
-
- [ ] VERIFICATION.md ou UAT.md carregados e lacunas analisadas
|
|
1362
|
-
- [ ] SUMMARYs existentes lidos para contexto
|
|
1363
|
-
- [ ] Lacunas agrupadas em planos focados
|
|
1364
|
-
- [ ] Números de plano sequenciais após os existentes
|
|
1365
|
-
- [ ] Arquivo(s) PLAN existem com gap_closure: true
|
|
1366
|
-
- [ ] Cada plano: tarefas derivadas dos itens gap.missing
|
|
1367
|
-
- [ ] Arquivo(s) PLAN commitados no git
|
|
1368
|
-
- [ ] Usuário sabe para executar `/executar-fase {X}` em seguida
|
|
836
|
+
- [ ] STATE.md lido, histórico absorvido, descoberta concluída (nível 0-3)
|
|
837
|
+
- [ ] Grafo de dependências (needs/creates por tarefa); agrupar em planos por onda
|
|
838
|
+
- [ ] Cada PLAN.md tem frontmatter completo (`phase, plan, type, wave, depends_on, files_modified, autonomous, must_haves`, + `user_setup` se aplicável)
|
|
839
|
+
- [ ] Cada plano: 2-3 tarefas (~50% de contexto), cada tarefa com Tipo/Arquivos/Ação/Verify/Done
|
|
840
|
+
- [ ] Checkpoints estruturados, ondas maximizam paralelismo, arquivos commitados, usuário sabe próximos passos
|
|
841
|
+
|
|
842
|
+
## Modo Gap Closure
|
|
843
|
+
|
|
844
|
+
- [ ] VERIFICATION.md / UAT.md carregados, SUMMARYs existentes lidos, lacunas agrupadas em planos focados
|
|
845
|
+
- [ ] Numeração sequencial após existentes, frontmatter `gap_closure: true`, tarefas derivadas de `gap.missing`, commits feitos
|
|
846
|
+
- [ ] Usuário sabe rodar `/executar-fase {X} --gaps-only`
|
|
1369
847
|
|
|
1370
848
|
</success_criteria>
|