up-cc 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agents/up-depurador.md +357 -0
- package/agents/up-executor.md +409 -0
- package/agents/up-pesquisador-projeto.md +358 -0
- package/agents/up-planejador.md +390 -0
- package/agents/up-roteirista.md +401 -0
- package/agents/up-sintetizador.md +232 -0
- package/agents/up-verificador.md +357 -0
- package/bin/install.js +709 -0
- package/bin/lib/core.cjs +270 -0
- package/bin/up-tools.cjs +1361 -0
- package/commands/adicionar-fase.md +33 -0
- package/commands/ajuda.md +131 -0
- package/commands/discutir-fase.md +35 -0
- package/commands/executar-fase.md +40 -0
- package/commands/novo-projeto.md +39 -0
- package/commands/pausar.md +33 -0
- package/commands/planejar-fase.md +43 -0
- package/commands/progresso.md +33 -0
- package/commands/rapido.md +40 -0
- package/commands/remover-fase.md +34 -0
- package/commands/retomar.md +35 -0
- package/commands/verificar-trabalho.md +35 -0
- package/package.json +32 -0
- package/references/checkpoints.md +358 -0
- package/references/git-integration.md +208 -0
- package/references/questioning.md +156 -0
- package/references/ui-brand.md +124 -0
- package/templates/config.json +6 -0
- package/templates/continue-here.md +78 -0
- package/templates/project.md +184 -0
- package/templates/requirements.md +129 -0
- package/templates/roadmap.md +131 -0
- package/templates/state.md +130 -0
- package/templates/summary.md +174 -0
- package/workflows/discutir-fase.md +324 -0
- package/workflows/executar-fase.md +277 -0
- package/workflows/executar-plano.md +192 -0
- package/workflows/novo-projeto.md +561 -0
- package/workflows/pausar.md +111 -0
- package/workflows/planejar-fase.md +208 -0
- package/workflows/progresso.md +226 -0
- package/workflows/rapido.md +209 -0
- package/workflows/retomar.md +231 -0
- package/workflows/verificar-trabalho.md +261 -0
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Extrair decisoes de implementacao que agentes downstream precisam. Analisar a fase para identificar areas cinzentas, deixar o usuario escolher o que discutir, entao aprofundar em cada area selecionada ate ficar satisfeito.
|
|
3
|
+
|
|
4
|
+
Voce e um parceiro de pensamento, nao um entrevistador. O usuario e o visionario -- voce e o construtor. Seu trabalho e capturar decisoes que guiarao pesquisa e planejamento.
|
|
5
|
+
</purpose>
|
|
6
|
+
|
|
7
|
+
<scope_guardrail>
|
|
8
|
+
**CRITICO: Sem inflacao de escopo.**
|
|
9
|
+
|
|
10
|
+
O limite da fase vem do ROADMAP.md e e FIXO. Discussao esclarece COMO implementar o que esta no escopo, nunca SE adicionar novas capacidades.
|
|
11
|
+
|
|
12
|
+
**Permitido (esclarecer ambiguidade):**
|
|
13
|
+
- "Como posts devem ser exibidos?" (layout, densidade, info mostrada)
|
|
14
|
+
- "O que acontece no estado vazio?" (dentro da feature)
|
|
15
|
+
|
|
16
|
+
**Nao permitido (inflacao de escopo):**
|
|
17
|
+
- "Devemos tambem adicionar comentarios?" (nova capacidade)
|
|
18
|
+
- "E sobre busca/filtragem?" (nova capacidade)
|
|
19
|
+
|
|
20
|
+
**Quando usuario sugere inflacao de escopo:**
|
|
21
|
+
```
|
|
22
|
+
"[Feature X] seria uma nova capacidade -- e uma fase propria.
|
|
23
|
+
Quer que eu anote para o backlog do roteiro?
|
|
24
|
+
|
|
25
|
+
Por agora, vamos focar em [dominio da fase]."
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Capturar a ideia em secao "Ideias Adiadas". Nao perca, nao atue sobre ela.
|
|
29
|
+
</scope_guardrail>
|
|
30
|
+
|
|
31
|
+
<process>
|
|
32
|
+
|
|
33
|
+
<step name="initialize" priority="first">
|
|
34
|
+
Numero da fase do argumento (obrigatorio).
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
INIT=$(node "$HOME/.claude/up/bin/up-tools.cjs" init phase-op "${PHASE}")
|
|
38
|
+
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Parse JSON: `commit_docs`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `has_research`, `has_context`, `has_plans`, `plan_count`, `roadmap_exists`, `planning_exists`.
|
|
42
|
+
|
|
43
|
+
**Se `phase_found` = false:**
|
|
44
|
+
```
|
|
45
|
+
Fase [X] nao encontrada no roteiro.
|
|
46
|
+
|
|
47
|
+
Use /up:progresso para ver fases disponiveis.
|
|
48
|
+
```
|
|
49
|
+
Sair do workflow.
|
|
50
|
+
|
|
51
|
+
**Se `phase_found` = true:** Continuar para check_existing.
|
|
52
|
+
</step>
|
|
53
|
+
|
|
54
|
+
<step name="check_existing">
|
|
55
|
+
Verificar se CONTEXT.md ja existe usando `has_context` do init.
|
|
56
|
+
|
|
57
|
+
**Se existe:**
|
|
58
|
+
Use AskUserQuestion:
|
|
59
|
+
- header: "Contexto"
|
|
60
|
+
- question: "Fase [X] ja tem contexto. O que voce quer fazer?"
|
|
61
|
+
- options:
|
|
62
|
+
- "Atualizar" -- Revisar e atualizar contexto existente
|
|
63
|
+
- "Ver" -- Mostrar o que tem la
|
|
64
|
+
- "Pular" -- Usar contexto existente como esta
|
|
65
|
+
|
|
66
|
+
Se "Atualizar": Carregar existente, continuar para analyze_phase
|
|
67
|
+
Se "Ver": Exibir CONTEXT.md, depois oferecer atualizar/pular
|
|
68
|
+
Se "Pular": Sair do workflow
|
|
69
|
+
|
|
70
|
+
**Se nao existe:** Continuar para load_prior_context.
|
|
71
|
+
</step>
|
|
72
|
+
|
|
73
|
+
<step name="load_prior_context">
|
|
74
|
+
Ler contexto de nivel de projeto e de fases anteriores para evitar re-perguntar questoes ja decididas.
|
|
75
|
+
|
|
76
|
+
**Passo 1: Ler arquivos do projeto**
|
|
77
|
+
```bash
|
|
78
|
+
cat .plano/PROJECT.md 2>/dev/null
|
|
79
|
+
cat .plano/REQUIREMENTS.md 2>/dev/null
|
|
80
|
+
cat .plano/STATE.md 2>/dev/null
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Extrair:
|
|
84
|
+
- **PROJECT.md** -- Visao, principios, nao-negociaveis, preferencias do usuario
|
|
85
|
+
- **REQUIREMENTS.md** -- Criterios de aceitacao, restricoes
|
|
86
|
+
- **STATE.md** -- Progresso atual, flags ou notas
|
|
87
|
+
|
|
88
|
+
**Passo 2: Ler todos CONTEXT.md de fases anteriores**
|
|
89
|
+
```bash
|
|
90
|
+
find .plano/fases -name "*-CONTEXT.md" 2>/dev/null | sort
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Para cada CONTEXT.md onde numero da fase < fase atual:
|
|
94
|
+
- Ler secao `<decisions>` -- sao preferencias travadas
|
|
95
|
+
- Ler `<specifics>` -- referencias particulares ou momentos "quero como X"
|
|
96
|
+
- Notar padroes
|
|
97
|
+
|
|
98
|
+
**Passo 3: Construir contexto interno `<prior_decisions>`**
|
|
99
|
+
|
|
100
|
+
**Uso nos passos seguintes:**
|
|
101
|
+
- `analyze_phase`: Pular areas cinzentas ja decididas
|
|
102
|
+
- `present_gray_areas`: Anotar opcoes com decisoes anteriores
|
|
103
|
+
- `discuss_areas`: Pre-preencher respostas ou sinalizar conflitos
|
|
104
|
+
</step>
|
|
105
|
+
|
|
106
|
+
<step name="analyze_phase">
|
|
107
|
+
Analisar a fase para identificar areas cinzentas que valem discussao.
|
|
108
|
+
|
|
109
|
+
**Ler descricao da fase do ROADMAP.md e determinar:**
|
|
110
|
+
|
|
111
|
+
1. **Limite do dominio** -- Qual capacidade essa fase entrega? Declarar claramente.
|
|
112
|
+
|
|
113
|
+
2. **Verificar decisoes anteriores** -- Antes de gerar areas cinzentas, verificar se ja foram decididas.
|
|
114
|
+
|
|
115
|
+
3. **Areas cinzentas por categoria** -- Para cada categoria relevante, identificar 1-2 ambiguidades especificas que mudariam implementacao.
|
|
116
|
+
|
|
117
|
+
4. **Avaliacao de pulo** -- Se nao ha areas cinzentas significativas (infraestrutura pura, implementacao clara, ou tudo ja decidido), a fase pode nao precisar de discussao.
|
|
118
|
+
</step>
|
|
119
|
+
|
|
120
|
+
<step name="present_gray_areas">
|
|
121
|
+
Apresentar limite do dominio, decisoes anteriores e areas cinzentas ao usuario.
|
|
122
|
+
|
|
123
|
+
**Primeiro, declarar limite e decisoes anteriores que se aplicam:**
|
|
124
|
+
```
|
|
125
|
+
Fase [X]: [Nome]
|
|
126
|
+
Dominio: [O que esta fase entrega -- da sua analise]
|
|
127
|
+
|
|
128
|
+
Vamos esclarecer COMO implementar isso.
|
|
129
|
+
(Novas capacidades pertencem a outras fases.)
|
|
130
|
+
|
|
131
|
+
[Se decisoes anteriores se aplicam:]
|
|
132
|
+
**Herdado de fases anteriores:**
|
|
133
|
+
- [Decisao da Fase N que se aplica aqui]
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**Usar AskUserQuestion (multiSelect: true):**
|
|
137
|
+
- header: "Discutir"
|
|
138
|
+
- question: "Quais areas voce quer discutir para [nome da fase]?"
|
|
139
|
+
- options: Gerar 3-4 areas cinzentas especificas da fase
|
|
140
|
+
|
|
141
|
+
**NAO incluir opcao "pular" ou "voce decide".** Usuario executou este comando para discutir.
|
|
142
|
+
</step>
|
|
143
|
+
|
|
144
|
+
<step name="discuss_areas">
|
|
145
|
+
Para cada area selecionada, conduzir loop de discussao focada.
|
|
146
|
+
|
|
147
|
+
**Filosofia: 4 perguntas, depois verificar.**
|
|
148
|
+
|
|
149
|
+
**Para cada area:**
|
|
150
|
+
|
|
151
|
+
1. **Anunciar a area:**
|
|
152
|
+
```
|
|
153
|
+
Vamos falar sobre [Area].
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
2. **Perguntar 4 questoes usando AskUserQuestion:**
|
|
157
|
+
- header: "[Area]" (max 12 chars)
|
|
158
|
+
- question: Decisao especifica para esta area
|
|
159
|
+
- options: 2-3 escolhas concretas, com escolha recomendada destacada
|
|
160
|
+
- Incluir "Voce decide" como opcao quando razoavel
|
|
161
|
+
|
|
162
|
+
3. **Apos 4 perguntas, verificar:**
|
|
163
|
+
- header: "[Area]" (max 12 chars)
|
|
164
|
+
- question: "Mais perguntas sobre [area], ou ir para proxima?"
|
|
165
|
+
- options: "Mais perguntas" / "Proxima area"
|
|
166
|
+
|
|
167
|
+
4. **Apos todas areas selecionadas completarem:**
|
|
168
|
+
- Resumir o que foi capturado
|
|
169
|
+
- AskUserQuestion:
|
|
170
|
+
- header: "Pronto"
|
|
171
|
+
- question: "Discutimos [listar areas]. Quais areas cinzentas permanecem?"
|
|
172
|
+
- options: "Explorar mais areas" / "Pronto para contexto"
|
|
173
|
+
- Se "Explorar mais": identificar 2-4 areas adicionais, voltar ao loop
|
|
174
|
+
- Se "Pronto para contexto": Prosseguir para write_context
|
|
175
|
+
|
|
176
|
+
**Tratamento de inflacao de escopo:**
|
|
177
|
+
Se usuario mencionar algo fora do dominio da fase:
|
|
178
|
+
```
|
|
179
|
+
"[Feature] parece uma nova capacidade -- pertence a propria fase.
|
|
180
|
+
Vou anotar como ideia adiada.
|
|
181
|
+
|
|
182
|
+
Voltando para [area atual]: [retornar a pergunta atual]"
|
|
183
|
+
```
|
|
184
|
+
</step>
|
|
185
|
+
|
|
186
|
+
<step name="write_context">
|
|
187
|
+
Criar CONTEXT.md capturando decisoes tomadas.
|
|
188
|
+
|
|
189
|
+
Usar valores do init: `phase_dir`, `phase_slug`, `padded_phase`.
|
|
190
|
+
|
|
191
|
+
Se `phase_dir` e null:
|
|
192
|
+
```bash
|
|
193
|
+
mkdir -p ".plano/fases/${padded_phase}-${phase_slug}"
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
**Local do arquivo:** `${phase_dir}/${padded_phase}-CONTEXT.md`
|
|
197
|
+
|
|
198
|
+
```markdown
|
|
199
|
+
# Fase [X]: [Nome] - Contexto
|
|
200
|
+
|
|
201
|
+
**Reunido:** [data]
|
|
202
|
+
**Status:** Pronto para planejamento
|
|
203
|
+
|
|
204
|
+
<domain>
|
|
205
|
+
## Limite da Fase
|
|
206
|
+
|
|
207
|
+
[Declaracao clara do que esta fase entrega -- a ancora de escopo]
|
|
208
|
+
|
|
209
|
+
</domain>
|
|
210
|
+
|
|
211
|
+
<decisions>
|
|
212
|
+
## Decisoes de Implementacao
|
|
213
|
+
|
|
214
|
+
### [Categoria 1 discutida]
|
|
215
|
+
- [Decisao ou preferencia capturada]
|
|
216
|
+
|
|
217
|
+
### [Categoria 2 discutida]
|
|
218
|
+
- [Decisao ou preferencia capturada]
|
|
219
|
+
|
|
220
|
+
### Criterio do Claude
|
|
221
|
+
[Areas onde usuario disse "voce decide"]
|
|
222
|
+
|
|
223
|
+
</decisions>
|
|
224
|
+
|
|
225
|
+
<specifics>
|
|
226
|
+
## Ideias Especificas
|
|
227
|
+
|
|
228
|
+
[Referencias particulares, exemplos, ou momentos "quero como X"]
|
|
229
|
+
|
|
230
|
+
[Se nenhum: "Sem requisitos especificos -- aberto a abordagens padrao"]
|
|
231
|
+
|
|
232
|
+
</specifics>
|
|
233
|
+
|
|
234
|
+
<deferred>
|
|
235
|
+
## Ideias Adiadas
|
|
236
|
+
|
|
237
|
+
[Ideias que surgiram mas pertencem a outras fases.]
|
|
238
|
+
|
|
239
|
+
[Se nenhuma: "Nenhuma -- discussao manteve-se no escopo da fase"]
|
|
240
|
+
|
|
241
|
+
</deferred>
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
*Fase: XX-nome*
|
|
246
|
+
*Contexto reunido: [data]*
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
Escrever arquivo.
|
|
250
|
+
</step>
|
|
251
|
+
|
|
252
|
+
<step name="confirm_creation">
|
|
253
|
+
Apresentar resumo e proximos passos:
|
|
254
|
+
|
|
255
|
+
```
|
|
256
|
+
Criado: .plano/fases/${PADDED_PHASE}-${SLUG}/${PADDED_PHASE}-CONTEXT.md
|
|
257
|
+
|
|
258
|
+
## Decisoes Capturadas
|
|
259
|
+
|
|
260
|
+
### [Categoria]
|
|
261
|
+
- [Decisao-chave]
|
|
262
|
+
|
|
263
|
+
[Se ideias adiadas existem:]
|
|
264
|
+
## Anotado para Depois
|
|
265
|
+
- [Ideia adiada] -- fase futura
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## Proximo
|
|
270
|
+
|
|
271
|
+
**Fase ${PHASE}: [Nome]** -- [Objetivo do ROADMAP.md]
|
|
272
|
+
|
|
273
|
+
`/up:planejar-fase ${PHASE}`
|
|
274
|
+
|
|
275
|
+
<sub>`/clear` primeiro -> janela de contexto limpa</sub>
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
|
|
279
|
+
**Tambem disponivel:**
|
|
280
|
+
- Revisar/editar CONTEXT.md antes de continuar
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
```
|
|
284
|
+
</step>
|
|
285
|
+
|
|
286
|
+
<step name="git_commit">
|
|
287
|
+
Commit do contexto da fase:
|
|
288
|
+
|
|
289
|
+
```bash
|
|
290
|
+
node "$HOME/.claude/up/bin/up-tools.cjs" commit "docs(${padded_phase}): capturar contexto da fase" --files "${phase_dir}/${padded_phase}-CONTEXT.md"
|
|
291
|
+
```
|
|
292
|
+
</step>
|
|
293
|
+
|
|
294
|
+
<step name="update_state">
|
|
295
|
+
Atualizar STATE.md com info da sessao:
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
node "$HOME/.claude/up/bin/up-tools.cjs" state record-session \
|
|
299
|
+
--stopped-at "Fase ${PHASE} contexto reunido" \
|
|
300
|
+
--resume-file "${phase_dir}/${padded_phase}-CONTEXT.md"
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
Commit STATE.md:
|
|
304
|
+
|
|
305
|
+
```bash
|
|
306
|
+
node "$HOME/.claude/up/bin/up-tools.cjs" commit "docs(state): registrar sessao de contexto fase ${PHASE}" --files .plano/STATE.md
|
|
307
|
+
```
|
|
308
|
+
</step>
|
|
309
|
+
|
|
310
|
+
</process>
|
|
311
|
+
|
|
312
|
+
<success_criteria>
|
|
313
|
+
- Fase validada contra roteiro
|
|
314
|
+
- Contexto anterior carregado (PROJECT.md, REQUIREMENTS.md, STATE.md, CONTEXT.md anteriores)
|
|
315
|
+
- Questoes ja decididas nao re-perguntadas
|
|
316
|
+
- Areas cinzentas identificadas com analise inteligente
|
|
317
|
+
- Usuario selecionou quais areas discutir
|
|
318
|
+
- Cada area explorada ate usuario ficar satisfeito
|
|
319
|
+
- Inflacao de escopo redirecionada para ideias adiadas
|
|
320
|
+
- CONTEXT.md captura decisoes reais, nao visao vaga
|
|
321
|
+
- Ideias adiadas preservadas para fases futuras
|
|
322
|
+
- STATE.md atualizado com info da sessao
|
|
323
|
+
- Usuario sabe proximos passos
|
|
324
|
+
</success_criteria>
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Executar todos os planos em uma fase usando execucao paralela baseada em waves. Orquestrador fica enxuto -- delega execucao de planos a subagentes.
|
|
3
|
+
</purpose>
|
|
4
|
+
|
|
5
|
+
<core_principle>
|
|
6
|
+
Orquestrador coordena, nao executa. Cada subagente carrega o contexto completo de execute-plan. Orquestrador: descobrir planos -> analisar deps -> agrupar waves -> spawn agentes -> tratar checkpoints -> coletar resultados.
|
|
7
|
+
</core_principle>
|
|
8
|
+
|
|
9
|
+
<process>
|
|
10
|
+
|
|
11
|
+
<step name="initialize" priority="first">
|
|
12
|
+
Carregar contexto:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
INIT=$(node "$HOME/.claude/up/bin/up-tools.cjs" init execute-phase "${PHASE_ARG}")
|
|
16
|
+
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Parse JSON: `executor_model`, `verifier_model`, `commit_docs`, `parallelization`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `plans`, `incomplete_plans`, `plan_count`, `incomplete_count`, `state_exists`, `roadmap_exists`, `phase_req_ids`.
|
|
20
|
+
|
|
21
|
+
**Se `phase_found` = false:** Erro -- diretorio da fase nao encontrado.
|
|
22
|
+
**Se `plan_count` = 0:** Erro -- sem planos encontrados na fase.
|
|
23
|
+
|
|
24
|
+
Quando `parallelization` = false, planos dentro de uma wave executam sequencialmente.
|
|
25
|
+
</step>
|
|
26
|
+
|
|
27
|
+
<step name="validate_phase">
|
|
28
|
+
Do init JSON: `phase_dir`, `plan_count`, `incomplete_count`.
|
|
29
|
+
|
|
30
|
+
Reportar: "Encontrados {plan_count} planos em {phase_dir} ({incomplete_count} incompletos)"
|
|
31
|
+
</step>
|
|
32
|
+
|
|
33
|
+
<step name="discover_and_group_plans">
|
|
34
|
+
Carregar inventario de planos com agrupamento por wave:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
PLAN_INDEX=$(node "$HOME/.claude/up/bin/up-tools.cjs" phase-plan-index "${PHASE_NUMBER}")
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Parse JSON: `phase`, `plans[]` (cada com `id`, `wave`, `autonomous`, `objective`, `files_modified`, `task_count`, `has_summary`), `waves`, `incomplete`, `has_checkpoints`.
|
|
41
|
+
|
|
42
|
+
**Filtrar:** Pular planos onde `has_summary: true`. Se todos filtrados: "Sem planos incompletos" -> sair.
|
|
43
|
+
|
|
44
|
+
Reportar:
|
|
45
|
+
```
|
|
46
|
+
## Plano de Execucao
|
|
47
|
+
|
|
48
|
+
**Fase {X}: {Nome}** -- {total_plans} planos em {wave_count} waves
|
|
49
|
+
|
|
50
|
+
| Wave | Planos | O que constroi |
|
|
51
|
+
|------|--------|----------------|
|
|
52
|
+
| 1 | 01-01, 01-02 | {dos objetivos dos planos, 3-8 palavras} |
|
|
53
|
+
| 2 | 01-03 | ... |
|
|
54
|
+
```
|
|
55
|
+
</step>
|
|
56
|
+
|
|
57
|
+
<step name="execute_waves">
|
|
58
|
+
Executar cada wave em sequencia. Dentro de uma wave: paralelo se `PARALLELIZATION=true`, sequencial se `false`.
|
|
59
|
+
|
|
60
|
+
**Para cada wave:**
|
|
61
|
+
|
|
62
|
+
1. **Descrever o que esta sendo construido (ANTES do spawn):**
|
|
63
|
+
|
|
64
|
+
Ler `<objective>` de cada plano. Extrair o que esta sendo construido e por que.
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
---
|
|
68
|
+
## Wave {N}
|
|
69
|
+
|
|
70
|
+
**{Plan ID}: {Nome do Plano}**
|
|
71
|
+
{2-3 sentencas: o que isso constroi, abordagem tecnica, por que importa}
|
|
72
|
+
|
|
73
|
+
Spawning {count} agente(s)...
|
|
74
|
+
---
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
2. **Spawn agentes executores:**
|
|
78
|
+
|
|
79
|
+
Passar apenas caminhos -- executores leem arquivos eles mesmos com contexto limpo de 200k.
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
Task(
|
|
83
|
+
subagent_type="up-executor",
|
|
84
|
+
prompt="
|
|
85
|
+
<objective>
|
|
86
|
+
Executar plano {plan_number} da fase {phase_number}-{phase_name}.
|
|
87
|
+
Commitar cada tarefa atomicamente. Criar SUMMARY.md. Atualizar STATE.md e ROADMAP.md.
|
|
88
|
+
</objective>
|
|
89
|
+
|
|
90
|
+
<execution_context>
|
|
91
|
+
@~/.claude/up/workflows/executar-plano.md
|
|
92
|
+
@~/.claude/up/references/checkpoints.md
|
|
93
|
+
</execution_context>
|
|
94
|
+
|
|
95
|
+
<files_to_read>
|
|
96
|
+
Ler estes arquivos no inicio da execucao usando a ferramenta Read:
|
|
97
|
+
- {phase_dir}/{plan_file} (Plano)
|
|
98
|
+
- .plano/STATE.md (Estado)
|
|
99
|
+
- .plano/config.json (Config, se existir)
|
|
100
|
+
- ./CLAUDE.md (Instrucoes do projeto, se existir)
|
|
101
|
+
</files_to_read>
|
|
102
|
+
|
|
103
|
+
<success_criteria>
|
|
104
|
+
- [ ] Todas tarefas executadas
|
|
105
|
+
- [ ] Cada tarefa committed individualmente
|
|
106
|
+
- [ ] SUMMARY.md criado no diretorio do plano
|
|
107
|
+
- [ ] STATE.md atualizado com posicao e decisoes
|
|
108
|
+
- [ ] ROADMAP.md atualizado com progresso do plano (via `roadmap update-plan-progress`)
|
|
109
|
+
</success_criteria>
|
|
110
|
+
"
|
|
111
|
+
)
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
3. **Esperar todos agentes na wave completarem.**
|
|
115
|
+
|
|
116
|
+
4. **Reportar conclusao -- spot-check claims primeiro:**
|
|
117
|
+
|
|
118
|
+
Para cada SUMMARY.md:
|
|
119
|
+
- Verificar que primeiros 2 arquivos de `key-files.created` existem no disco
|
|
120
|
+
- Verificar `git log --oneline --all --grep="{phase}-{plan}"` retorna >= 1 commit
|
|
121
|
+
- Verificar marcador `## Self-Check: FAILED`
|
|
122
|
+
|
|
123
|
+
Se algum spot-check falhar: reportar qual plano falhou, perguntar "Tentar novamente?" ou "Continuar com waves restantes?"
|
|
124
|
+
|
|
125
|
+
Se passar:
|
|
126
|
+
```
|
|
127
|
+
---
|
|
128
|
+
## Wave {N} Completa
|
|
129
|
+
|
|
130
|
+
**{Plan ID}: {Nome do Plano}**
|
|
131
|
+
{O que foi construido -- do SUMMARY.md}
|
|
132
|
+
|
|
133
|
+
{Se mais waves: o que isso habilita para proxima wave}
|
|
134
|
+
---
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
5. **Tratar falhas:**
|
|
138
|
+
Para falhas reais: reportar qual plano falhou -> perguntar "Continuar?" ou "Parar?" -> se continuar, planos dependentes podem tambem falhar.
|
|
139
|
+
|
|
140
|
+
6. **Prosseguir para proxima wave.**
|
|
141
|
+
</step>
|
|
142
|
+
|
|
143
|
+
<step name="aggregate_results">
|
|
144
|
+
Apos todas waves:
|
|
145
|
+
|
|
146
|
+
```markdown
|
|
147
|
+
## Fase {X}: {Nome} Execucao Completa
|
|
148
|
+
|
|
149
|
+
**Waves:** {N} | **Planos:** {M}/{total} completos
|
|
150
|
+
|
|
151
|
+
| Wave | Planos | Status |
|
|
152
|
+
|------|--------|--------|
|
|
153
|
+
| 1 | plano-01, plano-02 | Completo |
|
|
154
|
+
| 2 | plano-03 | Completo |
|
|
155
|
+
|
|
156
|
+
### Detalhes dos Planos
|
|
157
|
+
1. **03-01**: [resumo do SUMMARY.md]
|
|
158
|
+
2. **03-02**: [resumo do SUMMARY.md]
|
|
159
|
+
|
|
160
|
+
### Problemas Encontrados
|
|
161
|
+
[Agregado dos SUMMARYs, ou "Nenhum"]
|
|
162
|
+
```
|
|
163
|
+
</step>
|
|
164
|
+
|
|
165
|
+
<step name="verify_phase_goal">
|
|
166
|
+
Verificar que fase atingiu seu OBJETIVO, nao apenas completou tarefas.
|
|
167
|
+
|
|
168
|
+
```
|
|
169
|
+
Task(
|
|
170
|
+
prompt="Verificar atingimento do objetivo da fase {phase_number}.
|
|
171
|
+
Diretorio da fase: {phase_dir}
|
|
172
|
+
Objetivo da fase: {goal do ROADMAP.md}
|
|
173
|
+
IDs de requisitos da fase: {phase_req_ids}
|
|
174
|
+
Verificar must_haves contra codebase real.
|
|
175
|
+
Cross-referenciar IDs de requisitos do frontmatter do PLAN contra REQUIREMENTS.md.
|
|
176
|
+
Criar VERIFICATION.md.",
|
|
177
|
+
subagent_type="up-verificador"
|
|
178
|
+
)
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Ler status:
|
|
182
|
+
```bash
|
|
183
|
+
grep "^status:" "$PHASE_DIR"/*-VERIFICATION.md | cut -d: -f2 | tr -d ' '
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
| Status | Acao |
|
|
187
|
+
|--------|------|
|
|
188
|
+
| `passed` | -> update_roadmap |
|
|
189
|
+
| `human_needed` | Apresentar itens para teste humano, obter aprovacao |
|
|
190
|
+
| `gaps_found` | Apresentar resumo de lacunas, oferecer `/up:planejar-fase {fase} --gaps` |
|
|
191
|
+
</step>
|
|
192
|
+
|
|
193
|
+
<step name="update_roadmap">
|
|
194
|
+
**Marcar fase completa e atualizar todos arquivos de rastreamento:**
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
COMPLETION=$(node "$HOME/.claude/up/bin/up-tools.cjs" phase complete "${PHASE_NUMBER}")
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
O CLI trata:
|
|
201
|
+
- Marcar checkbox da fase `[x]` com data de conclusao
|
|
202
|
+
- Atualizar tabela de Progresso
|
|
203
|
+
- Avancar STATE.md para proxima fase
|
|
204
|
+
- Atualizar rastreabilidade do REQUIREMENTS.md
|
|
205
|
+
|
|
206
|
+
Extrair do resultado: `next_phase`, `next_phase_name`, `is_last_phase`.
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
node "$HOME/.claude/up/bin/up-tools.cjs" commit "docs(fase-{X}): completar execucao da fase" --files .plano/ROADMAP.md .plano/STATE.md .plano/REQUIREMENTS.md {phase_dir}/*-VERIFICATION.md
|
|
210
|
+
```
|
|
211
|
+
</step>
|
|
212
|
+
|
|
213
|
+
<step name="offer_next">
|
|
214
|
+
|
|
215
|
+
**Se verificacao passou:**
|
|
216
|
+
|
|
217
|
+
```
|
|
218
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
219
|
+
UP > FASE {X} COMPLETA
|
|
220
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
221
|
+
|
|
222
|
+
**Fase {X}: {Nome}** -- todos planos executados e verificados
|
|
223
|
+
|
|
224
|
+
───────────────────────────────────────────────────────────────
|
|
225
|
+
|
|
226
|
+
## Proximo
|
|
227
|
+
|
|
228
|
+
**Fase {X+1}: {Nome}** -- [Objetivo do ROADMAP.md]
|
|
229
|
+
|
|
230
|
+
/up:discutir-fase {X+1} -- reunir contexto e esclarecer abordagem
|
|
231
|
+
|
|
232
|
+
<sub>/clear primeiro -> janela de contexto limpa</sub>
|
|
233
|
+
|
|
234
|
+
───────────────────────────────────────────────────────────────
|
|
235
|
+
|
|
236
|
+
**Tambem disponivel:**
|
|
237
|
+
- /up:planejar-fase {X+1} -- pular discussao, planejar diretamente
|
|
238
|
+
- /up:verificar-trabalho {X} -- teste de aceitacao do usuario
|
|
239
|
+
|
|
240
|
+
───────────────────────────────────────────────────────────────
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
**Se lacunas encontradas:**
|
|
244
|
+
|
|
245
|
+
```
|
|
246
|
+
## Lacunas Encontradas na Fase {X}: {Nome}
|
|
247
|
+
|
|
248
|
+
**Score:** {N}/{M} must-haves verificados
|
|
249
|
+
**Relatorio:** {phase_dir}/{phase_num}-VERIFICATION.md
|
|
250
|
+
|
|
251
|
+
### O que Falta
|
|
252
|
+
{Resumo das lacunas}
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
## Proximo
|
|
256
|
+
|
|
257
|
+
`/up:planejar-fase {X} --gaps`
|
|
258
|
+
|
|
259
|
+
<sub>`/clear` primeiro -> janela de contexto limpa</sub>
|
|
260
|
+
```
|
|
261
|
+
</step>
|
|
262
|
+
|
|
263
|
+
</process>
|
|
264
|
+
|
|
265
|
+
<context_efficiency>
|
|
266
|
+
Orquestrador: ~10-15% contexto. Subagentes: 200k limpo cada. Sem polling (Task bloqueia). Sem vazamento de contexto.
|
|
267
|
+
</context_efficiency>
|
|
268
|
+
|
|
269
|
+
<failure_handling>
|
|
270
|
+
- **Agente falha no meio do plano:** SUMMARY.md faltando -> reportar, perguntar usuario como prosseguir
|
|
271
|
+
- **Cadeia de dependencia quebra:** Wave 1 falha -> dependentes da Wave 2 provavelmente falham -> usuario escolhe tentar ou pular
|
|
272
|
+
- **Todos agentes na wave falham:** Problema sistemico -> parar, reportar para investigacao
|
|
273
|
+
</failure_handling>
|
|
274
|
+
|
|
275
|
+
<resumption>
|
|
276
|
+
Re-executar `/up:executar-fase {fase}` -> discover_plans encontra SUMMARYs completos -> pula -> resume do primeiro plano incompleto -> continua execucao por wave.
|
|
277
|
+
</resumption>
|