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.
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "up-cc",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "Simplified spec-driven development for Claude Code, Gemini and OpenCode.",
5
5
  "bin": {
6
6
  "up-cc": "bin/install.js"
@@ -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>