up-cc 0.1.4 → 0.1.6
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/commands/adicionar-testes.md +145 -0
- package/commands/atualizar.md +103 -0
- package/commands/configurar.md +106 -0
- package/commands/saude.md +103 -0
- package/package.json +1 -1
- package/workflows/adicionar-fase.md +112 -0
- package/workflows/remover-fase.md +155 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: up:adicionar-testes
|
|
3
|
+
description: Gerar testes para uma fase completa baseado na implementacao e criterios UAT
|
|
4
|
+
argument-hint: "<fase> [instrucoes adicionais]"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Edit
|
|
9
|
+
- Bash
|
|
10
|
+
- Glob
|
|
11
|
+
- Grep
|
|
12
|
+
- Task
|
|
13
|
+
- AskUserQuestion
|
|
14
|
+
argument-instructions: |
|
|
15
|
+
Parse o argumento como numero de fase (inteiro, decimal ou sufixo-letra), mais texto livre opcional.
|
|
16
|
+
Exemplo: /up:adicionar-testes 3
|
|
17
|
+
Exemplo: /up:adicionar-testes 3 focar em edge cases no modulo de precos
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
<objective>
|
|
21
|
+
Gerar testes unitarios e E2E para uma fase completa, usando SUMMARY.md, CONTEXT.md e VERIFICATION.md como especificacoes.
|
|
22
|
+
|
|
23
|
+
Analisa arquivos de implementacao, classifica em TDD (unitario), E2E (browser) ou Pular, apresenta plano de testes para aprovacao, e gera testes seguindo convencoes RED-GREEN.
|
|
24
|
+
|
|
25
|
+
Output: Arquivos de teste commitados com mensagem `test(fase-{N}): adicionar testes unitarios e E2E`
|
|
26
|
+
</objective>
|
|
27
|
+
|
|
28
|
+
<context>
|
|
29
|
+
Fase: $ARGUMENTS
|
|
30
|
+
|
|
31
|
+
@.plano/STATE.md
|
|
32
|
+
@.plano/ROADMAP.md
|
|
33
|
+
</context>
|
|
34
|
+
|
|
35
|
+
<process>
|
|
36
|
+
|
|
37
|
+
## 1. Carregar Contexto da Fase
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
INIT=$(node "$HOME/.claude/up/bin/up-tools.cjs" init operacao-fase "${FASE_ARG}")
|
|
41
|
+
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Extrair: `phase_dir`, `phase_number`, `phase_name`.
|
|
45
|
+
|
|
46
|
+
Se fase nao existe: erro e sair.
|
|
47
|
+
Se nao ha SUMMARY.md: erro — fase precisa estar completa primeiro.
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
51
|
+
UP > ADICIONAR TESTES — Fase ${phase_number}: ${phase_name}
|
|
52
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Ler artefatos da fase:
|
|
56
|
+
1. `${phase_dir}/*-SUMMARY.md` — o que foi implementado, arquivos modificados
|
|
57
|
+
2. `${phase_dir}/CONTEXT.md` — criterios de aceite, decisoes
|
|
58
|
+
3. `${phase_dir}/*-VERIFICATION.md` — cenarios verificados pelo usuario (se UAT feito)
|
|
59
|
+
|
|
60
|
+
## 2. Analisar e Classificar Arquivos
|
|
61
|
+
|
|
62
|
+
Para cada arquivo modificado pela fase, classificar:
|
|
63
|
+
|
|
64
|
+
| Categoria | Criterio | Tipo de Teste |
|
|
65
|
+
|-----------|----------|---------------|
|
|
66
|
+
| **TDD** | Funcoes puras, logica de negocio, validacoes, parsers, transformacoes | Unitario |
|
|
67
|
+
| **E2E** | Interacoes UI, navegacao, formularios, shortcuts, modais | Browser/E2E |
|
|
68
|
+
| **Pular** | Layout/CSS, config, glue code, migrations, tipos sem logica | Nenhum |
|
|
69
|
+
|
|
70
|
+
Ler cada arquivo para confirmar classificacao — nao classificar so pelo nome.
|
|
71
|
+
|
|
72
|
+
## 3. Aprovar Classificacao
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
AskUserQuestion(
|
|
76
|
+
header: "Classificacao de Testes",
|
|
77
|
+
question: |
|
|
78
|
+
### TDD (Unitarios) — {N} arquivos
|
|
79
|
+
{lista com motivo breve}
|
|
80
|
+
|
|
81
|
+
### E2E (Browser) — {M} arquivos
|
|
82
|
+
{lista com motivo breve}
|
|
83
|
+
|
|
84
|
+
### Pular — {K} arquivos
|
|
85
|
+
{lista com motivo breve}
|
|
86
|
+
|
|
87
|
+
Como prosseguir?
|
|
88
|
+
options:
|
|
89
|
+
- "Aprovar e gerar plano de testes"
|
|
90
|
+
- "Ajustar classificacao"
|
|
91
|
+
- "Cancelar"
|
|
92
|
+
)
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## 4. Descobrir Estrutura de Testes do Projeto
|
|
96
|
+
|
|
97
|
+
Identificar:
|
|
98
|
+
- Diretorios de teste existentes
|
|
99
|
+
- Convencoes de nomeacao (`.test.ts`, `.spec.ts`, etc.)
|
|
100
|
+
- Comandos do test runner
|
|
101
|
+
- Framework de teste
|
|
102
|
+
|
|
103
|
+
## 5. Gerar Plano de Testes
|
|
104
|
+
|
|
105
|
+
Para cada arquivo aprovado, criar plano detalhado:
|
|
106
|
+
- **TDD:** funcoes testaveis, cenarios de input, outputs esperados, edge cases
|
|
107
|
+
- **E2E:** cenarios de usuario, acoes, outcomes, assertions
|
|
108
|
+
|
|
109
|
+
Apresentar plano completo para aprovacao.
|
|
110
|
+
|
|
111
|
+
## 6. Gerar Testes
|
|
112
|
+
|
|
113
|
+
**TDD:** Arrange/Act/Assert. Executar cada teste. Flaggar falhas como possiveis bugs (NAO corrigir implementacao).
|
|
114
|
+
|
|
115
|
+
**E2E:** Criar testes de cenario. Executar. Reportar blockers.
|
|
116
|
+
|
|
117
|
+
## 7. Resumo e Commit
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
121
|
+
UP > TESTES GERADOS
|
|
122
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
123
|
+
|
|
124
|
+
| Categoria | Gerados | Passando | Falhando | Bloqueados |
|
|
125
|
+
|-----------|---------|----------|----------|------------|
|
|
126
|
+
| Unitario | {N} | {n1} | {n2} | {n3} |
|
|
127
|
+
| E2E | {M} | {m1} | {m2} | {m3} |
|
|
128
|
+
|
|
129
|
+
Arquivos criados: {lista}
|
|
130
|
+
Gaps de cobertura: {areas nao testaveis e motivo}
|
|
131
|
+
Bugs descobertos: {falhas que indicam bugs na implementacao}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Commitar testes passando:
|
|
135
|
+
```bash
|
|
136
|
+
git add {arquivos de teste}
|
|
137
|
+
git commit -m "test(fase-${phase_number}): adicionar testes unitarios e E2E"
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Proximos passos:
|
|
141
|
+
- Se bugs: `/up:rapido corrigir {N} falhas de teste na fase ${phase_number}`
|
|
142
|
+
- Se blockers: descrever o que falta
|
|
143
|
+
- Se tudo ok: "Todos os testes passando!"
|
|
144
|
+
|
|
145
|
+
</process>
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: up:atualizar
|
|
3
|
+
description: Atualizar up-cc para ultima versao via npm
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Bash
|
|
6
|
+
- AskUserQuestion
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<objective>
|
|
10
|
+
Verificar atualizacoes do up-cc via npm, mostrar mudancas, e instalar se disponivel.
|
|
11
|
+
</objective>
|
|
12
|
+
|
|
13
|
+
<process>
|
|
14
|
+
|
|
15
|
+
## 1. Detectar Versao Instalada
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Verificar versao local
|
|
19
|
+
for dir in .claude .config/opencode .gemini; do
|
|
20
|
+
if [ -f "./$dir/up/package.json" ]; then
|
|
21
|
+
node -e "console.log(require('./$dir/up/package.json').version)" 2>/dev/null
|
|
22
|
+
echo "LOCAL"
|
|
23
|
+
break
|
|
24
|
+
fi
|
|
25
|
+
done
|
|
26
|
+
|
|
27
|
+
# Verificar versao global
|
|
28
|
+
for dir in .claude .config/opencode .gemini; do
|
|
29
|
+
if [ -f "$HOME/$dir/up/package.json" ]; then
|
|
30
|
+
node -e "console.log(require('$HOME/$dir/up/package.json').version)" 2>/dev/null
|
|
31
|
+
echo "GLOBAL"
|
|
32
|
+
break
|
|
33
|
+
fi
|
|
34
|
+
done
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Se versao nao encontrada, tratar como 0.0.0.
|
|
38
|
+
|
|
39
|
+
## 2. Verificar Ultima Versao
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npm view up-cc version 2>/dev/null
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Se falhar: informar que nao foi possivel verificar (offline ou npm indisponivel). Sair.
|
|
46
|
+
|
|
47
|
+
## 3. Comparar Versoes
|
|
48
|
+
|
|
49
|
+
**Se instalada == ultima:**
|
|
50
|
+
```
|
|
51
|
+
UP > JA ATUALIZADO
|
|
52
|
+
|
|
53
|
+
Instalada: X.Y.Z
|
|
54
|
+
Ultima: X.Y.Z
|
|
55
|
+
```
|
|
56
|
+
Sair.
|
|
57
|
+
|
|
58
|
+
## 4. Confirmar e Atualizar
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
UP > ATUALIZACAO DISPONIVEL
|
|
62
|
+
|
|
63
|
+
Instalada: {old}
|
|
64
|
+
Disponivel: {new}
|
|
65
|
+
|
|
66
|
+
A instalacao limpa substitui:
|
|
67
|
+
- commands/up/ (comandos substituidos)
|
|
68
|
+
- up/ (workflows, agentes, templates substituidos)
|
|
69
|
+
|
|
70
|
+
Seus arquivos customizados sao preservados:
|
|
71
|
+
- Comandos fora de commands/up/ ✓
|
|
72
|
+
- Agentes sem prefixo up- ✓
|
|
73
|
+
- Hooks customizados ✓
|
|
74
|
+
- Seus CLAUDE.md ✓
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Perguntar: "Atualizar agora?" (Sim / Nao)
|
|
78
|
+
|
|
79
|
+
Se nao: sair.
|
|
80
|
+
|
|
81
|
+
Se sim:
|
|
82
|
+
|
|
83
|
+
**Install local:**
|
|
84
|
+
```bash
|
|
85
|
+
npx -y up-cc@latest --local
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Install global:**
|
|
89
|
+
```bash
|
|
90
|
+
npx -y up-cc@latest --global
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## 5. Resultado
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
97
|
+
UP > ATUALIZADO: v{old} -> v{new}
|
|
98
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
99
|
+
|
|
100
|
+
Reinicie o Claude Code para usar os novos comandos.
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
</process>
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: up:configurar
|
|
3
|
+
description: Configurar opcoes do workflow UP para o projeto atual
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Write
|
|
7
|
+
- Bash
|
|
8
|
+
- AskUserQuestion
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
<objective>
|
|
12
|
+
Configuracao interativa das opcoes do workflow UP. Atualiza .plano/config.json com preferencias do usuario.
|
|
13
|
+
</objective>
|
|
14
|
+
|
|
15
|
+
<process>
|
|
16
|
+
|
|
17
|
+
## 1. Carregar Configuracao Atual
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
cat .plano/config.json 2>/dev/null || echo "{}"
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Valores default se ausentes:
|
|
24
|
+
- `modo`: "solo"
|
|
25
|
+
- `paralelizacao`: true
|
|
26
|
+
- `commit_docs`: true
|
|
27
|
+
- `auto_advance`: false
|
|
28
|
+
|
|
29
|
+
## 2. Apresentar Opcoes
|
|
30
|
+
|
|
31
|
+
Usar AskUserQuestion com valores atuais pre-selecionados:
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
AskUserQuestion([
|
|
35
|
+
{
|
|
36
|
+
question: "Modo de trabalho?",
|
|
37
|
+
header: "Modo",
|
|
38
|
+
multiSelect: false,
|
|
39
|
+
options: [
|
|
40
|
+
{ label: "Solo (Recomendado)", description: "Desenvolvedor unico, commits diretos" },
|
|
41
|
+
{ label: "Time", description: "Multiplos desenvolvedores, branches por fase" }
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
question: "Paralelizar agentes quando possivel?",
|
|
46
|
+
header: "Paralelizacao",
|
|
47
|
+
multiSelect: false,
|
|
48
|
+
options: [
|
|
49
|
+
{ label: "Sim (Recomendado)", description: "Agentes rodam em paralelo quando independentes" },
|
|
50
|
+
{ label: "Nao", description: "Agentes rodam sequencialmente" }
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
question: "Commitar documentos de planejamento automaticamente?",
|
|
55
|
+
header: "Commit Docs",
|
|
56
|
+
multiSelect: false,
|
|
57
|
+
options: [
|
|
58
|
+
{ label: "Sim (Recomendado)", description: "STATE.md, ROADMAP.md, PLANs commitados automaticamente" },
|
|
59
|
+
{ label: "Nao", description: "Apenas codigo e commitado, docs ficam unstaged" }
|
|
60
|
+
]
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
question: "Avancar pipeline automaticamente? (discutir -> planejar -> executar)",
|
|
64
|
+
header: "Auto-Advance",
|
|
65
|
+
multiSelect: false,
|
|
66
|
+
options: [
|
|
67
|
+
{ label: "Nao (Recomendado)", description: "Manual /clear entre estagios" },
|
|
68
|
+
{ label: "Sim", description: "Encadeia estagios via subagentes" }
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
])
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## 3. Atualizar config.json
|
|
75
|
+
|
|
76
|
+
Mapear respostas para valores:
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
{
|
|
80
|
+
"modo": "solo" | "time",
|
|
81
|
+
"paralelizacao": true | false,
|
|
82
|
+
"commit_docs": true | false,
|
|
83
|
+
"auto_advance": true | false
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Escrever em `.plano/config.json`.
|
|
88
|
+
|
|
89
|
+
## 4. Confirmar
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
93
|
+
UP > CONFIGURACAO ATUALIZADA
|
|
94
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
95
|
+
|
|
96
|
+
| Opcao | Valor |
|
|
97
|
+
|----------------|-------------|
|
|
98
|
+
| Modo | {solo/time} |
|
|
99
|
+
| Paralelizacao | {Sim/Nao} |
|
|
100
|
+
| Commit Docs | {Sim/Nao} |
|
|
101
|
+
| Auto-Advance | {Sim/Nao} |
|
|
102
|
+
|
|
103
|
+
Estas opcoes se aplicam a futuros /up:planejar-fase e /up:executar-fase.
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
</process>
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: up:saude
|
|
3
|
+
description: Diagnosticar integridade do diretorio .plano/ e opcionalmente reparar
|
|
4
|
+
argument-hint: [--reparar]
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Bash
|
|
9
|
+
- AskUserQuestion
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
<objective>
|
|
13
|
+
Validar integridade do diretorio `.plano/` e reportar problemas acionaveis. Verifica arquivos ausentes, configuracoes invalidas, estado inconsistente e planos orfaos.
|
|
14
|
+
</objective>
|
|
15
|
+
|
|
16
|
+
<process>
|
|
17
|
+
|
|
18
|
+
## 1. Verificar Flag
|
|
19
|
+
|
|
20
|
+
Checar se `--reparar` esta presente nos argumentos.
|
|
21
|
+
|
|
22
|
+
## 2. Executar Checagens
|
|
23
|
+
|
|
24
|
+
Executar todas as verificacoes e coletar erros, avisos e informacoes:
|
|
25
|
+
|
|
26
|
+
**Erros (criticos):**
|
|
27
|
+
- E001: Diretorio `.plano/` nao existe
|
|
28
|
+
- E002: `PROJECT.md` nao encontrado
|
|
29
|
+
- E003: `ROADMAP.md` nao encontrado
|
|
30
|
+
- E004: `STATE.md` nao encontrado (reparavel — regenerar do ROADMAP)
|
|
31
|
+
- E005: `config.json` com erro de parse (reparavel — recriar com defaults)
|
|
32
|
+
|
|
33
|
+
**Avisos:**
|
|
34
|
+
- W001: `STATE.md` referencia fase que nao existe no disco
|
|
35
|
+
- W002: `config.json` nao encontrado (reparavel — criar com defaults)
|
|
36
|
+
- W003: Diretorio de fase nao segue padrao NN-nome
|
|
37
|
+
- W004: Fase no ROADMAP sem diretorio correspondente
|
|
38
|
+
- W005: Diretorio de fase no disco mas nao no ROADMAP
|
|
39
|
+
|
|
40
|
+
**Info:**
|
|
41
|
+
- I001: Plano sem SUMMARY (pode estar em progresso)
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# Verificacoes basicas
|
|
45
|
+
ls -la .plano/ 2>/dev/null
|
|
46
|
+
ls .plano/PROJECT.md .plano/ROADMAP.md .plano/STATE.md .plano/config.json 2>/dev/null
|
|
47
|
+
cat .plano/config.json 2>/dev/null | node -e "JSON.parse(require('fs').readFileSync(0,'utf-8'))" 2>&1
|
|
48
|
+
|
|
49
|
+
# Fases no disco
|
|
50
|
+
ls -d .plano/fases/*/ 2>/dev/null
|
|
51
|
+
|
|
52
|
+
# Fases no ROADMAP
|
|
53
|
+
grep -E '#{2,4}\s*Phase\s+\d' .plano/ROADMAP.md 2>/dev/null
|
|
54
|
+
|
|
55
|
+
# Planos sem SUMMARY
|
|
56
|
+
for plan in .plano/fases/*/*-PLAN.md; do
|
|
57
|
+
summary="${plan/-PLAN.md/-SUMMARY.md}"
|
|
58
|
+
[ ! -f "$summary" ] && echo "SEM_SUMMARY: $plan"
|
|
59
|
+
done 2>/dev/null
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## 3. Reparar (se --reparar)
|
|
63
|
+
|
|
64
|
+
| Acao | Efeito |
|
|
65
|
+
|------|--------|
|
|
66
|
+
| Criar config.json | Cria com defaults |
|
|
67
|
+
| Resetar config.json | Deleta e recria |
|
|
68
|
+
| Regenerar STATE.md | Cria do template com dados do ROADMAP |
|
|
69
|
+
|
|
70
|
+
**Nao reparavel (muito arriscado):**
|
|
71
|
+
- PROJECT.md, ROADMAP.md (conteudo do usuario)
|
|
72
|
+
- Renomear diretorios de fase
|
|
73
|
+
- Limpar planos orfaos
|
|
74
|
+
|
|
75
|
+
## 4. Exibir Resultado
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
79
|
+
UP > SAUDE DO PROJETO
|
|
80
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
81
|
+
|
|
82
|
+
Status: SAUDAVEL | DEGRADADO | QUEBRADO
|
|
83
|
+
Erros: N | Avisos: N | Info: N
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Se erros: listar com codigo e sugestao de correcao.
|
|
87
|
+
Se avisos: listar com codigo e sugestao.
|
|
88
|
+
Se info: listar.
|
|
89
|
+
|
|
90
|
+
Se reparos foram feitos: listar acoes executadas.
|
|
91
|
+
|
|
92
|
+
Se ha problemas reparaveis e `--reparar` NAO foi usado:
|
|
93
|
+
```
|
|
94
|
+
---
|
|
95
|
+
N problemas podem ser reparados automaticamente.
|
|
96
|
+
Executar: /up:saude --reparar
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## 5. Verificar Reparos
|
|
100
|
+
|
|
101
|
+
Se reparos foram feitos, re-executar checagens para confirmar resolucao.
|
|
102
|
+
|
|
103
|
+
</process>
|
package/package.json
CHANGED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Adicionar nova fase inteira ao final do milestone atual no roadmap. Calcula automaticamente proximo numero de fase, cria diretorio de fase e atualiza estrutura do roadmap.
|
|
3
|
+
</purpose>
|
|
4
|
+
|
|
5
|
+
<required_reading>
|
|
6
|
+
Ler todos os arquivos referenciados pelo execution_context do prompt invocador antes de comecar.
|
|
7
|
+
</required_reading>
|
|
8
|
+
|
|
9
|
+
<process>
|
|
10
|
+
|
|
11
|
+
<step name="parse_arguments">
|
|
12
|
+
Parsear argumentos do comando:
|
|
13
|
+
- Todos os argumentos viram a descricao da fase
|
|
14
|
+
- Exemplo: `/up:adicionar-fase Adicionar autenticacao` → descricao = "Adicionar autenticacao"
|
|
15
|
+
- Exemplo: `/up:adicionar-fase Corrigir problemas criticos de performance` → descricao = "Corrigir problemas criticos de performance"
|
|
16
|
+
|
|
17
|
+
Se nenhum argumento fornecido:
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
ERRO: Descricao da fase obrigatoria
|
|
21
|
+
Uso: /up:adicionar-fase <descricao>
|
|
22
|
+
Exemplo: /up:adicionar-fase Adicionar sistema de autenticacao
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Sair.
|
|
26
|
+
</step>
|
|
27
|
+
|
|
28
|
+
<step name="init_context">
|
|
29
|
+
Carregar contexto de operacao de fase:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
INIT=$(node "$HOME/.claude/up/bin/up-tools.cjs" init operacao-fase "0")
|
|
33
|
+
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Verificar `roadmap_exists` do JSON de init. Se false:
|
|
37
|
+
```
|
|
38
|
+
ERRO: Nenhum roadmap encontrado (.plano/ROADMAP.md)
|
|
39
|
+
Execute /up:novo-projeto para inicializar.
|
|
40
|
+
```
|
|
41
|
+
Sair.
|
|
42
|
+
</step>
|
|
43
|
+
|
|
44
|
+
<step name="add_phase">
|
|
45
|
+
**Delegar adicao da fase ao up-tools:**
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
RESULT=$(node "$HOME/.claude/up/bin/up-tools.cjs" phase add "${descricao}")
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
O CLI faz:
|
|
52
|
+
- Encontrar o maior numero de fase inteiro existente
|
|
53
|
+
- Calcular proximo numero (max + 1)
|
|
54
|
+
- Gerar slug da descricao
|
|
55
|
+
- Criar diretorio da fase (`.plano/fases/{NN}-{slug}/`)
|
|
56
|
+
- Inserir entrada da fase no ROADMAP.md com secoes Objetivo, Depende de e Planos
|
|
57
|
+
|
|
58
|
+
Extrair do resultado: `phase_number`, `padded`, `name`, `slug`, `directory`.
|
|
59
|
+
</step>
|
|
60
|
+
|
|
61
|
+
<step name="update_project_state">
|
|
62
|
+
Atualizar STATE.md para refletir nova fase:
|
|
63
|
+
|
|
64
|
+
1. Ler `.plano/STATE.md`
|
|
65
|
+
2. Em "## Contexto Acumulado" → "### Evolucao do Roadmap" adicionar:
|
|
66
|
+
```
|
|
67
|
+
- Fase {N} adicionada: {descricao}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Se secao "Evolucao do Roadmap" nao existe, criar.
|
|
71
|
+
</step>
|
|
72
|
+
|
|
73
|
+
<step name="completion">
|
|
74
|
+
Apresentar resumo:
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
Fase {N} adicionada ao milestone atual:
|
|
78
|
+
- Descricao: {descricao}
|
|
79
|
+
- Diretorio: .plano/fases/{fase-num}-{slug}/
|
|
80
|
+
- Status: Ainda nao planejada
|
|
81
|
+
|
|
82
|
+
Roadmap atualizado: .plano/ROADMAP.md
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Proximo
|
|
87
|
+
|
|
88
|
+
**Fase {N}: {descricao}**
|
|
89
|
+
|
|
90
|
+
`/up:planejar-fase {N}`
|
|
91
|
+
|
|
92
|
+
<sub>`/clear` primeiro → janela de contexto limpa</sub>
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
**Tambem disponivel:**
|
|
97
|
+
- `/up:adicionar-fase <descricao>` — adicionar outra fase
|
|
98
|
+
- Revisar roadmap
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
```
|
|
102
|
+
</step>
|
|
103
|
+
|
|
104
|
+
</process>
|
|
105
|
+
|
|
106
|
+
<success_criteria>
|
|
107
|
+
- [ ] `up-tools phase add` executado com sucesso
|
|
108
|
+
- [ ] Diretorio da fase criado
|
|
109
|
+
- [ ] Roadmap atualizado com nova entrada
|
|
110
|
+
- [ ] STATE.md atualizado com nota de evolucao do roadmap
|
|
111
|
+
- [ ] Usuario informado dos proximos passos
|
|
112
|
+
</success_criteria>
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Remover fase futura nao iniciada do roadmap do projeto, deletar seu diretorio, renumerar todas as fases subsequentes para manter sequencia linear limpa e commitar a mudanca. O commit git serve como registro historico da remocao.
|
|
3
|
+
</purpose>
|
|
4
|
+
|
|
5
|
+
<required_reading>
|
|
6
|
+
Ler todos os arquivos referenciados pelo execution_context do prompt invocador antes de comecar.
|
|
7
|
+
</required_reading>
|
|
8
|
+
|
|
9
|
+
<process>
|
|
10
|
+
|
|
11
|
+
<step name="parse_arguments">
|
|
12
|
+
Parsear argumentos do comando:
|
|
13
|
+
- Argumento e o numero da fase a remover (inteiro ou decimal)
|
|
14
|
+
- Exemplo: `/up:remover-fase 17` → fase = 17
|
|
15
|
+
- Exemplo: `/up:remover-fase 16.1` → fase = 16.1
|
|
16
|
+
|
|
17
|
+
Se nenhum argumento fornecido:
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
ERRO: Numero da fase obrigatorio
|
|
21
|
+
Uso: /up:remover-fase <numero-fase>
|
|
22
|
+
Exemplo: /up:remover-fase 17
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Sair.
|
|
26
|
+
</step>
|
|
27
|
+
|
|
28
|
+
<step name="init_context">
|
|
29
|
+
Carregar contexto de operacao de fase:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
INIT=$(node "$HOME/.claude/up/bin/up-tools.cjs" init operacao-fase "${target}")
|
|
33
|
+
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Extrair: `phase_found`, `phase_dir`, `phase_number`, `commit_docs`, `roadmap_exists`.
|
|
37
|
+
|
|
38
|
+
Tambem ler STATE.md e ROADMAP.md para parsear posicao atual.
|
|
39
|
+
</step>
|
|
40
|
+
|
|
41
|
+
<step name="validate_future_phase">
|
|
42
|
+
Verificar que a fase e futura (nao iniciada):
|
|
43
|
+
|
|
44
|
+
1. Comparar fase alvo com fase atual do STATE.md
|
|
45
|
+
2. Alvo deve ser > numero da fase atual
|
|
46
|
+
|
|
47
|
+
Se alvo <= fase atual:
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
ERRO: Nao e possivel remover Fase {alvo}
|
|
51
|
+
|
|
52
|
+
Apenas fases futuras podem ser removidas:
|
|
53
|
+
- Fase atual: {atual}
|
|
54
|
+
- Fase {alvo} e atual ou concluida
|
|
55
|
+
|
|
56
|
+
Para abandonar trabalho atual, use /up:pausar.
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Sair.
|
|
60
|
+
</step>
|
|
61
|
+
|
|
62
|
+
<step name="confirm_removal">
|
|
63
|
+
Apresentar resumo da remocao e confirmar:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
Removendo Fase {alvo}: {Nome}
|
|
67
|
+
|
|
68
|
+
Isso vai:
|
|
69
|
+
- Deletar: .plano/fases/{alvo}-{slug}/
|
|
70
|
+
- Renumerar todas as fases subsequentes
|
|
71
|
+
- Atualizar: ROADMAP.md, STATE.md
|
|
72
|
+
|
|
73
|
+
Prosseguir? (s/n)
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Aguardar confirmacao.
|
|
77
|
+
</step>
|
|
78
|
+
|
|
79
|
+
<step name="execute_removal">
|
|
80
|
+
**Delegar operacao completa de remocao ao up-tools:**
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
RESULT=$(node "$HOME/.claude/up/bin/up-tools.cjs" phase remove "${target}")
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Se a fase tem planos executados (arquivos SUMMARY.md), up-tools vai retornar erro. Usar `--force` apenas se usuario confirmar:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
RESULT=$(node "$HOME/.claude/up/bin/up-tools.cjs" phase remove "${target}" --force)
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
O CLI faz:
|
|
93
|
+
- Deletar diretorio da fase
|
|
94
|
+
- Renumerar todos os diretorios subsequentes (em ordem reversa para evitar conflitos)
|
|
95
|
+
- Renomear todos os arquivos dentro dos diretorios renumerados (PLAN.md, SUMMARY.md, etc.)
|
|
96
|
+
- Atualizar ROADMAP.md (removendo secao, renumerando todas as referencias de fase, atualizando dependencias)
|
|
97
|
+
- Atualizar STATE.md (decrementando contagem de fases)
|
|
98
|
+
|
|
99
|
+
Extrair do resultado: `removed`, `directory_deleted`, `renamed_directories`, `renamed_files`, `roadmap_updated`, `state_updated`.
|
|
100
|
+
</step>
|
|
101
|
+
|
|
102
|
+
<step name="commit">
|
|
103
|
+
Preparar e commitar a remocao:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
node "$HOME/.claude/up/bin/up-tools.cjs" commit "chore: remover fase {alvo} ({nome-original-fase})" --files .plano/
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
A mensagem de commit preserva o registro historico do que foi removido.
|
|
110
|
+
</step>
|
|
111
|
+
|
|
112
|
+
<step name="completion">
|
|
113
|
+
Apresentar resumo:
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
Fase {alvo} ({nome-original}) removida.
|
|
117
|
+
|
|
118
|
+
Mudancas:
|
|
119
|
+
- Deletado: .plano/fases/{alvo}-{slug}/
|
|
120
|
+
- Renumerados: {N} diretorios e {M} arquivos
|
|
121
|
+
- Atualizado: ROADMAP.md, STATE.md
|
|
122
|
+
- Commitado: chore: remover fase {alvo} ({nome-original})
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Proximo
|
|
127
|
+
|
|
128
|
+
Gostaria de:
|
|
129
|
+
- `/up:progresso` — ver status atualizado do roadmap
|
|
130
|
+
- Continuar com fase atual
|
|
131
|
+
- Revisar roadmap
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
```
|
|
135
|
+
</step>
|
|
136
|
+
|
|
137
|
+
</process>
|
|
138
|
+
|
|
139
|
+
<anti_patterns>
|
|
140
|
+
|
|
141
|
+
- Nao remover fases concluidas (com arquivos SUMMARY.md) sem --force
|
|
142
|
+
- Nao remover fases atuais ou passadas
|
|
143
|
+
- Nao renumerar manualmente — usar `up-tools phase remove` que cuida de toda renumeracao
|
|
144
|
+
- Nao adicionar notas "fase removida" ao STATE.md — commit git e o registro
|
|
145
|
+
- Nao modificar diretorios de fases concluidas
|
|
146
|
+
</anti_patterns>
|
|
147
|
+
|
|
148
|
+
<success_criteria>
|
|
149
|
+
Remocao de fase esta completa quando:
|
|
150
|
+
|
|
151
|
+
- [ ] Fase alvo validada como futura/nao iniciada
|
|
152
|
+
- [ ] `up-tools phase remove` executado com sucesso
|
|
153
|
+
- [ ] Mudancas commitadas com mensagem descritiva
|
|
154
|
+
- [ ] Usuario informado das mudancas
|
|
155
|
+
</success_criteria>
|