@luanpdd/kit-mcp 1.5.2 → 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 +55 -0
- package/kit/agents/planner.md +113 -638
- package/kit/hooks/sidecar-tool-publisher.js +182 -0
- package/package.json +3 -2
- package/src/cli/index.js +1 -1
- package/src/core/kit.js +25 -4
- package/src/core/reverse-sync.js +2 -1
- package/src/core/sync.js +40 -13
- package/src/mcp-server/index.js +3 -1
- package/src/ui/lockfile.js +50 -10
- package/src/ui/server.js +27 -5
- 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,246 +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" | "
|
|
247
|
-
| "Estilizar o dashboard" | "Adicionar classes Tailwind ao Dashboard.tsx: layout grid (3 colunas no lg, 1 no mobile), sombras nos cards, estados hover nos botões de ação" |
|
|
248
|
-
| "Tratar erros" | "Envolver chamadas de API em try/catch, retornar {error: string} em 4xx/5xx, exibir toast via sonner no cliente" |
|
|
249
|
-
| "Configurar o banco de dados" | "Adicionar modelos User e Project ao schema.prisma com UUIDs, constraint unique no email, timestamps createdAt/updatedAt, executar prisma db push" |
|
|
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" |
|
|
250
181
|
|
|
251
|
-
**Teste:**
|
|
182
|
+
**Teste:** outra instância do Claude executaria sem perguntar? Se não, adicione especificidade.
|
|
252
183
|
|
|
253
184
|
## Detecção de TDD
|
|
254
185
|
|
|
255
|
-
**Heurística:**
|
|
256
|
-
- Sim → Criar um plano TDD dedicado (type: tdd)
|
|
257
|
-
- 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.
|
|
258
187
|
|
|
259
|
-
**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.
|
|
260
189
|
|
|
261
|
-
**Tarefas padrão:**
|
|
190
|
+
**Tarefas padrão (não-TDD):** layout/estilo UI, config, scripts pontuais, CRUD simples, código de ligação.
|
|
262
191
|
|
|
263
|
-
**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.
|
|
264
193
|
|
|
265
|
-
**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.
|
|
266
195
|
|
|
267
|
-
|
|
268
|
-
<task type="auto" tdd="true">
|
|
269
|
-
<name>Tarefa: [nome]</name>
|
|
270
|
-
<files>src/feature.ts, src/feature.test.ts</files>
|
|
271
|
-
<behavior>
|
|
272
|
-
- Teste 1: [comportamento esperado]
|
|
273
|
-
- Teste 2: [caso extremo]
|
|
274
|
-
</behavior>
|
|
275
|
-
<action>[Implementação após testes passarem]</action>
|
|
276
|
-
<verify>
|
|
277
|
-
<automated>npm test -- --filter=feature</automated>
|
|
278
|
-
</verify>
|
|
279
|
-
<done>[Critérios]</done>
|
|
280
|
-
</task>
|
|
281
|
-
```
|
|
282
|
-
|
|
283
|
-
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
|
|
284
197
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
Para tarefas envolvendo serviços externos, identifique a configuração necessária pelo humano:
|
|
288
|
-
|
|
289
|
-
Indicadores de serviço externo: Novo SDK (`stripe`, `@sendgrid/mail`, `twilio`, `openai`), handlers de webhook, integração OAuth, padrões `process.env.SERVICE_*`.
|
|
290
|
-
|
|
291
|
-
Para cada serviço externo, determine:
|
|
292
|
-
1. **Variáveis de ambiente necessárias** — Quais secrets vêm dos dashboards?
|
|
293
|
-
2. **Configuração de conta** — O usuário precisa criar uma conta?
|
|
294
|
-
3. **Configuração no dashboard** — O que deve ser configurado na UI externa?
|
|
295
|
-
|
|
296
|
-
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.
|
|
297
199
|
|
|
298
200
|
</task_breakdown>
|
|
299
201
|
|
|
300
202
|
<dependency_graph>
|
|
301
203
|
|
|
302
|
-
##
|
|
303
|
-
|
|
304
|
-
**Para cada tarefa, registre:**
|
|
305
|
-
- `needs`: O que deve existir antes de executar
|
|
306
|
-
- `creates`: O que isso produz
|
|
307
|
-
- `has_checkpoint`: Requer interação do usuário?
|
|
204
|
+
## Grafo de Dependências
|
|
308
205
|
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
```
|
|
312
|
-
Tarefa A (modelo User): não precisa de nada, cria src/models/user.ts
|
|
313
|
-
Tarefa B (modelo Product): não precisa de nada, cria src/models/product.ts
|
|
314
|
-
Tarefa C (API User): precisa da Tarefa A, cria src/api/users.ts
|
|
315
|
-
Tarefa D (API Product): precisa da Tarefa B, cria src/api/products.ts
|
|
316
|
-
Tarefa E (Dashboard): precisa das Tarefas C + D, cria src/components/Dashboard.tsx
|
|
317
|
-
Tarefa F (Verificar UI): checkpoint:human-verify, precisa da Tarefa E
|
|
318
|
-
|
|
319
|
-
Grafo:
|
|
320
|
-
A --> C --\
|
|
321
|
-
--> E --> F
|
|
322
|
-
B --> D --/
|
|
323
|
-
|
|
324
|
-
Análise de ondas:
|
|
325
|
-
Onda 1: A, B (raízes independentes)
|
|
326
|
-
Onda 2: C, D (dependem apenas da Onda 1)
|
|
327
|
-
Onda 3: E (depende da Onda 2)
|
|
328
|
-
Onda 4: F (checkpoint, depende da Onda 3)
|
|
329
|
-
```
|
|
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.
|
|
330
207
|
|
|
331
208
|
## Fatias Verticais vs Camadas Horizontais
|
|
332
209
|
|
|
333
|
-
**
|
|
334
|
-
```
|
|
335
|
-
Plano 01: Feature User (modelo + API + UI)
|
|
336
|
-
Plano 02: Feature Product (modelo + API + UI)
|
|
337
|
-
Plano 03: Feature Order (modelo + API + UI)
|
|
338
|
-
```
|
|
339
|
-
Resultado: Os três rodam em paralelo (Onda 1)
|
|
340
|
-
|
|
341
|
-
**Camadas horizontais (EVITAR):**
|
|
342
|
-
```
|
|
343
|
-
Plano 01: Criar modelo User, modelo Product, modelo Order
|
|
344
|
-
Plano 02: Criar API User, API Product, API Order
|
|
345
|
-
Plano 03: Criar UI User, UI Product, UI Order
|
|
346
|
-
```
|
|
347
|
-
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.
|
|
348
211
|
|
|
349
|
-
**
|
|
212
|
+
**Evite camadas horizontais** (Plano 01 = todos os modelos; Plano 02 = todas as APIs; Plano 03 = todas as UIs) — força totalmente sequencial.
|
|
350
213
|
|
|
351
|
-
|
|
214
|
+
Camadas horizontais só quando há base compartilhada genuína (auth antes de features protegidas, deps de tipo, infra).
|
|
352
215
|
|
|
353
|
-
## Propriedade de Arquivos
|
|
216
|
+
## Propriedade de Arquivos
|
|
354
217
|
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
```yaml
|
|
358
|
-
# Frontmatter do Plano 01
|
|
359
|
-
files_modified: [src/models/user.ts, src/api/users.ts]
|
|
360
|
-
|
|
361
|
-
# Frontmatter do Plano 02 (sem sobreposição = paralelo)
|
|
362
|
-
files_modified: [src/models/product.ts, src/api/products.ts]
|
|
363
|
-
```
|
|
364
|
-
|
|
365
|
-
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.
|
|
366
219
|
|
|
367
220
|
</dependency_graph>
|
|
368
221
|
|
|
369
222
|
<scope_estimation>
|
|
370
223
|
|
|
371
|
-
##
|
|
224
|
+
## Orçamento de Contexto
|
|
372
225
|
|
|
373
|
-
Planos devem
|
|
226
|
+
Planos devem fechar em ~50% do contexto (não 80%). Cada plano: máx 2-3 tarefas.
|
|
374
227
|
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
|
378
|
-
|
|
379
|
-
|
|
|
380
|
-
| Complexo (auth, pagamentos) | 2 | ~20-30% | ~40-50% |
|
|
381
|
-
| 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% |
|
|
382
233
|
|
|
383
234
|
## Sinais de Divisão
|
|
384
235
|
|
|
385
|
-
**SEMPRE divida se
|
|
386
|
-
- Mais de 3 tarefas
|
|
387
|
-
- Múltiplos subsistemas (BD + API + UI = planos separados)
|
|
388
|
-
- Qualquer tarefa com mais de 5 modificações de arquivo
|
|
389
|
-
- Checkpoint + implementação no mesmo plano
|
|
390
|
-
- Descoberta + implementação no mesmo plano
|
|
391
|
-
|
|
392
|
-
**CONSIDERE dividir:** Mais de 5 arquivos no total, domínios complexos, incerteza sobre a abordagem, fronteiras semânticas naturais.
|
|
393
|
-
|
|
394
|
-
## 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.
|
|
395
237
|
|
|
396
|
-
|
|
397
|
-
|---------------|---------------------|---------------|
|
|
398
|
-
| Grosseiro | 1-3 | 2-3 |
|
|
399
|
-
| Padrão | 3-5 | 2-3 |
|
|
400
|
-
| Fino | 5-10 | 2-3 |
|
|
238
|
+
**CONSIDERE dividir** em: >5 arquivos total, domínios complexos, abordagem incerta, fronteiras semânticas naturais.
|
|
401
239
|
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
## Estimativas de Contexto por Tarefa
|
|
405
|
-
|
|
406
|
-
| Arquivos Modificados | Impacto no Contexto |
|
|
407
|
-
|---------------------|---------------------|
|
|
408
|
-
| 0-3 arquivos | ~10-15% (pequeno) |
|
|
409
|
-
| 4-6 arquivos | ~20-30% (médio) |
|
|
410
|
-
| 7+ arquivos | ~40%+ (dividir) |
|
|
411
|
-
|
|
412
|
-
| Complexidade | Contexto/Tarefa |
|
|
413
|
-
|-------------|-----------------|
|
|
414
|
-
| CRUD simples | ~15% |
|
|
415
|
-
| Lógica de negócio | ~25% |
|
|
416
|
-
| Algoritmos complexos | ~40% |
|
|
417
|
-
| 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.
|
|
418
241
|
|
|
419
242
|
</scope_estimation>
|
|
420
243
|
|
|
@@ -486,91 +309,27 @@ After completion, create `.planning/phases/XX-name/{phase}-{plan}-SUMMARY.md`
|
|
|
486
309
|
</output>
|
|
487
310
|
```
|
|
488
311
|
|
|
489
|
-
##
|
|
312
|
+
## Frontmatter
|
|
490
313
|
|
|
491
|
-
|
|
492
|
-
|-------|-------------|-----------|
|
|
493
|
-
| `phase` | Sim | Identificador da fase (ex: `01-foundation`) |
|
|
494
|
-
| `plan` | Sim | Número do plano dentro da fase |
|
|
495
|
-
| `type` | Sim | `execute` ou `tdd` |
|
|
496
|
-
| `wave` | Sim | Número da onda de execução |
|
|
497
|
-
| `depends_on` | Sim | IDs de planos que este plano requer |
|
|
498
|
-
| `files_modified` | Sim | Arquivos que este plano toca |
|
|
499
|
-
| `autonomous` | Sim | `true` se não há checkpoints |
|
|
500
|
-
| `requirements` | Sim | **DEVE** listar IDs de requisitos do ROADMAP. Todo ID de requisito do roadmap DEVE aparecer em pelo menos um plano. |
|
|
501
|
-
| `user_setup` | Não | Itens de configuração necessários pelo humano |
|
|
502
|
-
| `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).
|
|
503
315
|
|
|
504
|
-
|
|
316
|
+
Ondas pré-calculadas no planejamento; execute-phase lê `wave` direto do frontmatter.
|
|
505
317
|
|
|
506
318
|
## Contexto de Interface para Executores
|
|
507
319
|
|
|
508
|
-
|
|
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.
|
|
509
321
|
|
|
510
|
-
|
|
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>`.
|
|
511
323
|
|
|
512
|
-
|
|
513
|
-
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.
|
|
514
325
|
|
|
515
|
-
|
|
516
|
-
# Extrair definições de tipo, interfaces e exports de arquivos relevantes
|
|
517
|
-
grep -n "export\\|interface\\|type\\|class\\|function" {relevant_source_files} 2>/dev/null | head -50
|
|
518
|
-
```
|
|
326
|
+
**Quando incluir:** plano importa de outros módulos, cria endpoint API, modifica props de componente, depende de output de plano anterior.
|
|
519
327
|
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
```xml
|
|
523
|
-
<interfaces>
|
|
524
|
-
<!-- Tipos e contratos chave que o executor precisa. Extraídos da base de código. -->
|
|
525
|
-
<!-- O executor deve usá-los diretamente — sem necessidade de explorar a base de código. -->
|
|
526
|
-
|
|
527
|
-
From src/types/user.ts:
|
|
528
|
-
```typescript
|
|
529
|
-
export interface User {
|
|
530
|
-
id: string;
|
|
531
|
-
email: string;
|
|
532
|
-
name: string;
|
|
533
|
-
createdAt: Date;
|
|
534
|
-
}
|
|
535
|
-
```
|
|
536
|
-
|
|
537
|
-
From src/api/auth.ts:
|
|
538
|
-
```typescript
|
|
539
|
-
export function validateToken(token: string): Promise<User | null>;
|
|
540
|
-
export function createSession(user: User): Promise<SessionToken>;
|
|
541
|
-
```
|
|
542
|
-
</interfaces>
|
|
543
|
-
```
|
|
544
|
-
|
|
545
|
-
### Para planos que CRIAM novas interfaces:
|
|
546
|
-
Se este plano cria tipos/interfaces que planos posteriores dependem, inclua um passo skeleton "Wave 0":
|
|
547
|
-
|
|
548
|
-
```xml
|
|
549
|
-
<task type="auto">
|
|
550
|
-
<name>Tarefa 0: Escrever contratos de interface</name>
|
|
551
|
-
<files>src/types/newFeature.ts</files>
|
|
552
|
-
<action>Criar definições de tipo que planos posteriores implementarão. Estes são os contratos — a implementação vem em tarefas posteriores.</action>
|
|
553
|
-
<verify>Arquivo existe com tipos exportados, sem implementação</verify>
|
|
554
|
-
<done>Arquivo de interface commitado, tipos exportados</done>
|
|
555
|
-
</task>
|
|
556
|
-
```
|
|
557
|
-
|
|
558
|
-
### Quando incluir interfaces:
|
|
559
|
-
- Plano toca arquivos que importam de outros módulos → extraia os exports desses módulos
|
|
560
|
-
- Plano cria um novo endpoint de API → extraia os tipos request/response
|
|
561
|
-
- Plano modifica um componente → extraia sua interface de props
|
|
562
|
-
- Plano depende da saída de um plano anterior → extraia os tipos de files_modified daquele plano
|
|
563
|
-
|
|
564
|
-
### Quando pular:
|
|
565
|
-
- Plano é autocontido (cria tudo do zero, sem imports)
|
|
566
|
-
- Plano é pura configuração (sem interfaces de código envolvidas)
|
|
567
|
-
- Descoberta nível 0 (todos os padrões já estabelecidos)
|
|
328
|
+
**Quando pular:** plano autocontido sem imports, pura configuração, descoberta nível 0.
|
|
568
329
|
|
|
569
330
|
## Regras da Seção de Contexto
|
|
570
331
|
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
**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.
|
|
574
333
|
|
|
575
334
|
## Frontmatter de Configuração do Usuário
|
|
576
335
|
|
|
@@ -596,58 +355,21 @@ Inclua apenas o que Claude literalmente não pode fazer.
|
|
|
596
355
|
|
|
597
356
|
## Metodologia Orientada a Objetivos
|
|
598
357
|
|
|
599
|
-
**
|
|
600
|
-
**Orientado a objetivos:** "O que deve ser VERDADE para o objetivo ser atingido?" → produz requisitos que as tarefas devem satisfazer.
|
|
601
|
-
|
|
602
|
-
## O Processo
|
|
603
|
-
|
|
604
|
-
**Passo 0: Extrair IDs de Requisitos**
|
|
605
|
-
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.
|
|
606
|
-
|
|
607
|
-
**Passo 1: Enunciar o Objetivo**
|
|
608
|
-
Tome o objetivo da fase do ROADMAP.md. Deve ter formato de resultado, não de tarefa.
|
|
609
|
-
- Bom: "Interface de chat funcionando" (resultado)
|
|
610
|
-
- Ruim: "Construir componentes de chat" (tarefa)
|
|
611
|
-
|
|
612
|
-
**Passo 2: Derivar Verdades Observáveis**
|
|
613
|
-
"O que deve ser VERDADE para este objetivo ser atingido?" Liste 3-7 verdades da perspectiva do USUÁRIO.
|
|
614
|
-
|
|
615
|
-
Para "interface de chat funcionando":
|
|
616
|
-
- Usuário pode ver mensagens existentes
|
|
617
|
-
- Usuário pode digitar uma nova mensagem
|
|
618
|
-
- Usuário pode enviar a mensagem
|
|
619
|
-
- Mensagem enviada aparece na lista
|
|
620
|
-
- 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.
|
|
621
359
|
|
|
622
|
-
|
|
360
|
+
## Processo
|
|
623
361
|
|
|
624
|
-
**Passo
|
|
625
|
-
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.
|
|
626
363
|
|
|
627
|
-
"
|
|
628
|
-
- Componente de lista de mensagens (renderiza Message[])
|
|
629
|
-
- Estado de mensagens (carregado de algum lugar)
|
|
630
|
-
- Rota de API ou fonte de dados (fornece mensagens)
|
|
631
|
-
- 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".
|
|
632
365
|
|
|
633
|
-
**
|
|
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".
|
|
634
367
|
|
|
635
|
-
**Passo
|
|
636
|
-
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.
|
|
637
369
|
|
|
638
|
-
Conexões
|
|
639
|
-
- Importa o tipo Message (não usa `any`)
|
|
640
|
-
- Recebe prop messages ou busca da API
|
|
641
|
-
- Itera sobre mensagens para renderizar (não hardcoded)
|
|
642
|
-
- 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.
|
|
643
371
|
|
|
644
|
-
**Passo 5
|
|
645
|
-
"Onde é mais provável que isso quebre?" Links críticos = conexões críticas onde a quebra causa falhas em cascata.
|
|
646
|
-
|
|
647
|
-
Para interface de chat:
|
|
648
|
-
- Input onSubmit -> chamada de API (se quebrar: digitar funciona mas enviar não)
|
|
649
|
-
- API save -> banco de dados (se quebrar: parece enviar mas não persiste)
|
|
650
|
-
- 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.
|
|
651
373
|
|
|
652
374
|
## Formato de Saída dos Must-Haves
|
|
653
375
|
|
|
@@ -698,88 +420,29 @@ must_haves:
|
|
|
698
420
|
|
|
699
421
|
## Tipos de Checkpoint
|
|
700
422
|
|
|
701
|
-
|
|
702
|
-
Humano confirma que o trabalho automatizado do Claude funciona corretamente.
|
|
703
|
-
|
|
704
|
-
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.
|
|
705
424
|
|
|
706
425
|
```xml
|
|
707
426
|
<task type="checkpoint:human-verify" gate="blocking">
|
|
708
427
|
<what-built>[O que Claude automatizou]</what-built>
|
|
709
|
-
<how-to-verify>
|
|
710
|
-
|
|
711
|
-
</how-to-verify>
|
|
712
|
-
<resume-signal>Digite "aprovado" ou descreva os problemas</resume-signal>
|
|
713
|
-
</task>
|
|
714
|
-
```
|
|
715
|
-
|
|
716
|
-
**checkpoint:decision (9% dos checkpoints)**
|
|
717
|
-
Humano faz escolha de implementação que afeta a direção.
|
|
718
|
-
|
|
719
|
-
Use para: Seleção de tecnologia, decisões de arquitetura, escolhas de design.
|
|
720
|
-
|
|
721
|
-
```xml
|
|
722
|
-
<task type="checkpoint:decision" gate="blocking">
|
|
723
|
-
<decision>[O que está sendo decidido]</decision>
|
|
724
|
-
<context>[Por que isso importa]</context>
|
|
725
|
-
<options>
|
|
726
|
-
<option id="option-a">
|
|
727
|
-
<name>[Nome]</name>
|
|
728
|
-
<pros>[Benefícios]</pros>
|
|
729
|
-
<cons>[Trocas]</cons>
|
|
730
|
-
</option>
|
|
731
|
-
</options>
|
|
732
|
-
<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>
|
|
733
430
|
</task>
|
|
734
431
|
```
|
|
735
432
|
|
|
736
|
-
|
|
737
|
-
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>`.
|
|
738
434
|
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
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).
|
|
742
436
|
|
|
743
437
|
## Gates de Autenticação
|
|
744
438
|
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
## Diretrizes de Escrita
|
|
439
|
+
Erro de auth ao chamar CLI/API → cria checkpoint dinamicamente → usuário autentica → Claude retenta. Não pré-planejado.
|
|
748
440
|
|
|
749
|
-
|
|
441
|
+
## Anti-padrões
|
|
750
442
|
|
|
751
|
-
**
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
**Ruim - Pedir ao humano para automatizar:**
|
|
756
|
-
```xml
|
|
757
|
-
<task type="checkpoint:human-action">
|
|
758
|
-
<action>Implantar no Vercel</action>
|
|
759
|
-
<instructions>Visite vercel.com, importe o repo, clique em implantar...</instructions>
|
|
760
|
-
</task>
|
|
761
|
-
```
|
|
762
|
-
Por que é ruim: O Vercel tem CLI. Claude deve executar `vercel --yes`.
|
|
763
|
-
|
|
764
|
-
**Ruim - Checkpoints demais:**
|
|
765
|
-
```xml
|
|
766
|
-
<task type="auto">Criar schema</task>
|
|
767
|
-
<task type="checkpoint:human-verify">Verificar schema</task>
|
|
768
|
-
<task type="auto">Criar API</task>
|
|
769
|
-
<task type="checkpoint:human-verify">Verificar API</task>
|
|
770
|
-
```
|
|
771
|
-
Por que é ruim: Fadiga de verificação. Combine em um único checkpoint no final.
|
|
772
|
-
|
|
773
|
-
**Bom - Único checkpoint de verificação:**
|
|
774
|
-
```xml
|
|
775
|
-
<task type="auto">Criar schema</task>
|
|
776
|
-
<task type="auto">Criar API</task>
|
|
777
|
-
<task type="auto">Criar UI</task>
|
|
778
|
-
<task type="checkpoint:human-verify">
|
|
779
|
-
<what-built>Fluxo completo de auth (schema + API + UI)</what-built>
|
|
780
|
-
<how-to-verify>Testar fluxo completo: registrar, fazer login, acessar página protegida</how-to-verify>
|
|
781
|
-
</task>
|
|
782
|
-
```
|
|
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.
|
|
783
446
|
|
|
784
447
|
</checkpoints>
|
|
785
448
|
|
|
@@ -831,189 +494,53 @@ Planos TDD miram ~40% do contexto (menor que o padrão de 50%). A ida e volta RE
|
|
|
831
494
|
|
|
832
495
|
<gap_closure_mode>
|
|
833
496
|
|
|
834
|
-
##
|
|
835
|
-
|
|
836
|
-
Acionado pela flag `--gaps`. Cria planos para endereçar falhas de verificação ou UAT.
|
|
837
|
-
|
|
838
|
-
**1. Encontrar fontes de lacunas:**
|
|
839
|
-
|
|
840
|
-
Use contexto de init (de load_project_state) que fornece `phase_dir`:
|
|
841
|
-
|
|
842
|
-
```bash
|
|
843
|
-
# Verificar VERIFICATION.md (lacunas de verificação de código)
|
|
844
|
-
ls "$phase_dir"/*-VERIFICATION.md 2>/dev/null
|
|
845
|
-
|
|
846
|
-
# Verificar UAT.md com status diagnosticado (lacunas de testes de usuário)
|
|
847
|
-
grep -l "status: diagnosed" "$phase_dir"/*-UAT.md 2>/dev/null
|
|
848
|
-
```
|
|
849
|
-
|
|
850
|
-
**2. Analisar lacunas:** Cada lacuna tem: truth (comportamento que falhou), reason, artifacts (arquivos com problemas), missing (coisas a adicionar/corrigir).
|
|
851
|
-
|
|
852
|
-
**3. Carregar SUMMARYs existentes** para entender o que já está construído.
|
|
497
|
+
## Modo Gap Closure (--gaps)
|
|
853
498
|
|
|
854
|
-
|
|
499
|
+
Cria planos para endereçar falhas de VERIFICATION.md ou UAT.md (`status: diagnosed`).
|
|
855
500
|
|
|
856
|
-
**
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
{Para cada item em gap.missing:}
|
|
865
|
-
- {item ausente}
|
|
866
|
-
|
|
867
|
-
Referência de código existente: {dos SUMMARYs}
|
|
868
|
-
Razão da lacuna: {gap.reason}
|
|
869
|
-
</action>
|
|
870
|
-
<verify>{Como confirmar que a lacuna está fechada}</verify>
|
|
871
|
-
<done>{Verdade observável agora alcançável}</done>
|
|
872
|
-
</task>
|
|
873
|
-
```
|
|
874
|
-
|
|
875
|
-
**7. Atribuir ondas usando análise de dependência padrão** (mesmo que o passo `assign_waves`):
|
|
876
|
-
- Planos sem dependências → onda 1
|
|
877
|
-
- Planos que dependem de outros planos de fechamento de lacunas → max(ondas de dependência) + 1
|
|
878
|
-
- Considerar também dependências de planos existentes (não-lacuna) na fase
|
|
879
|
-
|
|
880
|
-
**8. Escrever arquivos PLAN.md:**
|
|
881
|
-
|
|
882
|
-
```yaml
|
|
883
|
-
---
|
|
884
|
-
phase: XX-nome
|
|
885
|
-
plan: NN # Sequencial após os existentes
|
|
886
|
-
type: execute
|
|
887
|
-
wave: N # Calculado de depends_on (ver assign_waves)
|
|
888
|
-
depends_on: [...] # Outros planos dos quais este depende (lacuna ou existente)
|
|
889
|
-
files_modified: [...]
|
|
890
|
-
autonomous: true
|
|
891
|
-
gap_closure: true # Flag para rastreamento
|
|
892
|
-
---
|
|
893
|
-
```
|
|
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`
|
|
894
509
|
|
|
895
510
|
</gap_closure_mode>
|
|
896
511
|
|
|
897
512
|
<revision_mode>
|
|
898
513
|
|
|
899
|
-
##
|
|
900
|
-
|
|
901
|
-
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.
|
|
902
|
-
|
|
903
|
-
**Mentalidade:** Cirurgião, não arquiteto. Mudanças mínimas para problemas específicos.
|
|
904
|
-
|
|
905
|
-
### Passo 1: Carregar Planos Existentes
|
|
906
|
-
|
|
907
|
-
```bash
|
|
908
|
-
cat .planning/phases/$PHASE-*/$PHASE-*-PLAN.md
|
|
909
|
-
```
|
|
910
|
-
|
|
911
|
-
Construa um modelo mental da estrutura atual do plano, tarefas existentes, must_haves.
|
|
912
|
-
|
|
913
|
-
### Passo 2: Analisar Problemas do Verificador
|
|
914
|
-
|
|
915
|
-
Os problemas vêm em formato estruturado:
|
|
916
|
-
|
|
917
|
-
```yaml
|
|
918
|
-
issues:
|
|
919
|
-
- plan: "16-01"
|
|
920
|
-
dimension: "task_completeness"
|
|
921
|
-
severity: "blocker"
|
|
922
|
-
description: "Tarefa 2 com elemento <verify> ausente"
|
|
923
|
-
fix_hint: "Adicionar comando de verificação para saída do build"
|
|
924
|
-
```
|
|
514
|
+
## Modo Revisão (feedback do verificador)
|
|
925
515
|
|
|
926
|
-
|
|
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.
|
|
927
517
|
|
|
928
|
-
|
|
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`.
|
|
929
519
|
|
|
930
520
|
| Dimensão | Estratégia |
|
|
931
|
-
|
|
521
|
+
|---|---|
|
|
932
522
|
| requirement_coverage | Adicionar tarefa(s) para requisito ausente |
|
|
933
|
-
| task_completeness | Adicionar elementos ausentes à tarefa
|
|
523
|
+
| task_completeness | Adicionar elementos ausentes à tarefa |
|
|
934
524
|
| dependency_correctness | Corrigir depends_on, recalcular ondas |
|
|
935
|
-
| key_links_planned | Adicionar tarefa de conexão
|
|
525
|
+
| key_links_planned | Adicionar tarefa de conexão |
|
|
936
526
|
| scope_sanity | Dividir em múltiplos planos |
|
|
937
|
-
| must_haves_derivation | Derivar e adicionar must_haves
|
|
938
|
-
|
|
939
|
-
### Passo 4: Fazer Atualizações Direcionadas
|
|
940
|
-
|
|
941
|
-
**FAÇA:** Edite seções específicas sinalizadas, preserve partes que funcionam, atualize ondas se dependências mudarem.
|
|
942
|
-
|
|
943
|
-
**NÃO FAÇA:** Reescreva planos inteiros para problemas menores, adicione tarefas desnecessárias, quebre planos existentes que funcionam.
|
|
944
|
-
|
|
945
|
-
### Passo 5: Validar Mudanças
|
|
946
|
-
|
|
947
|
-
- [ ] Todos os problemas sinalizados foram endereçados
|
|
948
|
-
- [ ] Nenhum novo problema introduzido
|
|
949
|
-
- [ ] Números de onda ainda são válidos
|
|
950
|
-
- [ ] Dependências ainda estão corretas
|
|
951
|
-
- [ ] Arquivos em disco atualizados
|
|
952
|
-
|
|
953
|
-
### Passo 6: Commit
|
|
954
|
-
|
|
955
|
-
```bash
|
|
956
|
-
node "./.claude/framework/bin/tools.cjs" commit "fix($PHASE): revise plans based on checker feedback" --files .planning/phases/$PHASE-*/$PHASE-*-PLAN.md
|
|
957
|
-
```
|
|
958
|
-
|
|
959
|
-
### Passo 7: Retornar Resumo da Revisão
|
|
960
|
-
|
|
961
|
-
```markdown
|
|
962
|
-
## REVISION COMPLETE
|
|
963
|
-
|
|
964
|
-
**Issues addressed:** {N}/{M}
|
|
965
|
-
|
|
966
|
-
### Changes Made
|
|
967
|
-
|
|
968
|
-
| Plan | Change | Issue Addressed |
|
|
969
|
-
|------|--------|-----------------|
|
|
970
|
-
| 16-01 | Added <verify> to Task 2 | task_completeness |
|
|
971
|
-
| 16-02 | Added logout task | requirement_coverage (AUTH-02) |
|
|
527
|
+
| must_haves_derivation | Derivar e adicionar must_haves |
|
|
972
528
|
|
|
973
|
-
|
|
529
|
+
**Validar:** todos issues endereçados, nada novo introduzido, ondas/deps consistentes, arquivos em disco atualizados.
|
|
974
530
|
|
|
975
|
-
|
|
976
|
-
- .planning/phases/16-xxx/16-02-PLAN.md
|
|
977
|
-
|
|
978
|
-
{Se algum problema NÃO foi endereçado:}
|
|
979
|
-
|
|
980
|
-
### Unaddressed Issues
|
|
981
|
-
|
|
982
|
-
| Issue | Reason |
|
|
983
|
-
|-------|--------|
|
|
984
|
-
| {issue} | {por que - precisa de input do usuário, mudança arquitetural, etc.} |
|
|
985
|
-
```
|
|
531
|
+
**Retornar `## REVISION COMPLETE`** com tabela `Plan | Change | Issue Addressed`, lista de arquivos atualizados, e (se houver) tabela `Unaddressed Issues | Reason`.
|
|
986
532
|
|
|
987
533
|
</revision_mode>
|
|
988
534
|
|
|
989
535
|
<reviews_mode>
|
|
990
536
|
|
|
991
|
-
##
|
|
992
|
-
|
|
993
|
-
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)
|
|
994
538
|
|
|
995
|
-
|
|
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.
|
|
996
540
|
|
|
997
|
-
|
|
998
|
-
Leia o arquivo de reviews de `<files_to_read>`. Analise:
|
|
999
|
-
- Feedback por revisor (pontos fortes, preocupações, sugestões)
|
|
1000
|
-
- Resumo de Consenso (preocupações concordadas = maior prioridade para endereçar)
|
|
1001
|
-
- 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}".
|
|
1002
542
|
|
|
1003
|
-
|
|
1004
|
-
Agrupe o feedback de revisão em:
|
|
1005
|
-
- **Deve endereçar**: Preocupações de consenso de severidade ALTA
|
|
1006
|
-
- **Deveria endereçar**: Preocupações de severidade MÉDIA de 2+ revisores
|
|
1007
|
-
- **Considerar**: Sugestões individuais de revisores, itens de severidade BAIXA
|
|
1008
|
-
|
|
1009
|
-
### Passo 3: Planejar do Zero com Contexto de Revisão
|
|
1010
|
-
Crie novos planos seguindo o processo de planejamento padrão, mas com feedback de revisão como restrições adicionais:
|
|
1011
|
-
- Cada preocupação de consenso de severidade ALTA DEVE ter uma tarefa que a endereça
|
|
1012
|
-
- Preocupações MÉDIAS devem ser endereçadas onde viável sem over-engineering
|
|
1013
|
-
- Anote nas ações das tarefas: "Endereça preocupação de revisão: {preocupação}" para rastreabilidade
|
|
1014
|
-
|
|
1015
|
-
### Passo 4: Retornar
|
|
1016
|
-
Use o formato padrão de retorno PLANNING COMPLETE, adicionando uma seção de reviews:
|
|
543
|
+
**Retornar `## PLANNING COMPLETE`** padrão + seção:
|
|
1017
544
|
|
|
1018
545
|
```markdown
|
|
1019
546
|
### Review Feedback Addressed
|
|
@@ -1089,52 +616,17 @@ Aplicar protocolo de nível de descoberta (veja seção discovery_levels).
|
|
|
1089
616
|
</step>
|
|
1090
617
|
|
|
1091
618
|
<step name="read_project_history">
|
|
1092
|
-
**
|
|
619
|
+
**Contexto em dois passos: digest para selecionar, SUMMARYs completos para entender.**
|
|
1093
620
|
|
|
1094
|
-
**Passo 1 — Gerar índice digest:**
|
|
1095
621
|
```bash
|
|
1096
622
|
node "./.claude/framework/bin/tools.cjs" history-digest
|
|
1097
623
|
```
|
|
1098
624
|
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
Pontue cada fase por relevância ao trabalho atual:
|
|
1102
|
-
- Sobreposição de `affects`: Toca os mesmos subsistemas?
|
|
1103
|
-
- Dependência de `provides`: A fase atual precisa do que ela criou?
|
|
1104
|
-
- `patterns`: Seus padrões são aplicáveis?
|
|
1105
|
-
- Roadmap: Marcada como dependência explícita?
|
|
1106
|
-
|
|
1107
|
-
Selecione os 2-4 principais. Pule fases sem sinal de relevância.
|
|
1108
|
-
|
|
1109
|
-
**Passo 3 — Leia SUMMARYs completos para as fases selecionadas:**
|
|
1110
|
-
```bash
|
|
1111
|
-
cat .planning/phases/{fase-selecionada}/*-SUMMARY.md
|
|
1112
|
-
```
|
|
1113
|
-
|
|
1114
|
-
Dos SUMMARYs completos extraia:
|
|
1115
|
-
- Como as coisas foram implementadas (padrões de arquivo, estrutura de código)
|
|
1116
|
-
- Por que as decisões foram tomadas (contexto, trocas)
|
|
1117
|
-
- Quais problemas foram resolvidos (evitar repetição)
|
|
1118
|
-
- Artefatos reais criados (expectativas realistas)
|
|
1119
|
-
|
|
1120
|
-
**Passo 4 — Manter contexto em nível digest para fases não selecionadas:**
|
|
1121
|
-
|
|
1122
|
-
Para fases não selecionadas, retenha do digest:
|
|
1123
|
-
- `tech_stack`: Bibliotecas disponíveis
|
|
1124
|
-
- `decisions`: Restrições na abordagem
|
|
1125
|
-
- `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`).
|
|
1126
626
|
|
|
1127
|
-
|
|
627
|
+
Do STATE.md: decisões = restrições; todos pendentes = candidatos.
|
|
1128
628
|
|
|
1129
|
-
|
|
1130
|
-
```bash
|
|
1131
|
-
cat .planning/RETROSPECTIVE.md 2>/dev/null | tail -100
|
|
1132
|
-
```
|
|
1133
|
-
|
|
1134
|
-
Leia a retrospectiva do milestone mais recente e tendências entre milestones. Extraia:
|
|
1135
|
-
- **Padrões a seguir** de "O que funcionou" e "Padrões Estabelecidos"
|
|
1136
|
-
- **Padrões a evitar** de "O que foi Ineficiente" e "Lições Chave"
|
|
1137
|
-
- **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.
|
|
1138
630
|
</step>
|
|
1139
631
|
|
|
1140
632
|
<step name="gather_phase_context">
|
|
@@ -1341,33 +833,16 @@ Siga os templates nas seções checkpoints e revision_mode respectivamente.
|
|
|
1341
833
|
|
|
1342
834
|
## Modo Padrão
|
|
1343
835
|
|
|
1344
|
-
|
|
1345
|
-
- [ ]
|
|
1346
|
-
- [ ]
|
|
1347
|
-
- [ ]
|
|
1348
|
-
- [ ]
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
- [ ]
|
|
1353
|
-
- [ ]
|
|
1354
|
-
- [ ]
|
|
1355
|
-
- [ ] Cada tarefa: Tipo, Arquivos (se auto), Ação, Verificação, Conclusão
|
|
1356
|
-
- [ ] Checkpoints devidamente estruturados
|
|
1357
|
-
- [ ] Estrutura de ondas maximiza paralelismo
|
|
1358
|
-
- [ ] Arquivo(s) PLAN commitados no git
|
|
1359
|
-
- [ ] Usuário conhece os próximos passos e a estrutura de ondas
|
|
1360
|
-
|
|
1361
|
-
## Modo de Fechamento de Lacunas
|
|
1362
|
-
|
|
1363
|
-
Planejamento concluído quando:
|
|
1364
|
-
- [ ] VERIFICATION.md ou UAT.md carregados e lacunas analisadas
|
|
1365
|
-
- [ ] SUMMARYs existentes lidos para contexto
|
|
1366
|
-
- [ ] Lacunas agrupadas em planos focados
|
|
1367
|
-
- [ ] Números de plano sequenciais após os existentes
|
|
1368
|
-
- [ ] Arquivo(s) PLAN existem com gap_closure: true
|
|
1369
|
-
- [ ] Cada plano: tarefas derivadas dos itens gap.missing
|
|
1370
|
-
- [ ] Arquivo(s) PLAN commitados no git
|
|
1371
|
-
- [ ] 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`
|
|
1372
847
|
|
|
1373
848
|
</success_criteria>
|