up-cc 0.3.0 → 0.3.1

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/bin/up-tools.cjs CHANGED
@@ -8,7 +8,7 @@
8
8
  * Usage: node up-tools.cjs <command> [args] [--raw] [--cwd <path>]
9
9
  *
10
10
  * Commands:
11
- * init planejar-fase|executar-fase|novo-projeto|rapido|retomar|operacao-fase|progresso|verificar-trabalho|melhorias|ideias
11
+ * init planejar-fase|executar-fase|novo-projeto|rapido|retomar|operacao-fase|progresso|verificar-trabalho|melhorias|ideias|iniciar
12
12
  * state load|get|update|advance-plan|update-progress|add-decision|record-session|record-metric|snapshot
13
13
  * roadmap get-phase|analyze|update-plan-progress
14
14
  * phase add|remove|find|complete|generate-from-report
@@ -206,8 +206,11 @@ function main() {
206
206
  case 'ideias':
207
207
  cmdInitIdeias(cwd, raw);
208
208
  break;
209
+ case 'iniciar':
210
+ cmdInitIniciar(cwd, raw);
211
+ break;
209
212
  default:
210
- error(`Unknown init workflow: ${workflow}\nAvailable: planejar-fase, executar-fase, novo-projeto, rapido, retomar, operacao-fase, progresso, verificar-trabalho, melhorias, ideias`);
213
+ error(`Unknown init workflow: ${workflow}\nAvailable: planejar-fase, executar-fase, novo-projeto, rapido, retomar, operacao-fase, progresso, verificar-trabalho, melhorias, ideias, iniciar`);
211
214
  }
212
215
  break;
213
216
  }
@@ -487,6 +490,66 @@ function cmdInitNovoProjeto(cwd, raw) {
487
490
  output(result, raw);
488
491
  }
489
492
 
493
+ function cmdInitIniciar(cwd, raw) {
494
+ const config = loadConfig(cwd);
495
+ const { execSync } = require('child_process');
496
+
497
+ let hasCode = false;
498
+ try {
499
+ const files = execSync('find . -maxdepth 3 \\( -name "*.ts" -o -name "*.js" -o -name "*.py" -o -name "*.go" -o -name "*.rs" -o -name "*.swift" -o -name "*.java" \\) 2>/dev/null | grep -v node_modules | grep -v .git | head -5', {
500
+ cwd,
501
+ encoding: 'utf-8',
502
+ stdio: ['pipe', 'pipe', 'pipe'],
503
+ });
504
+ hasCode = files.trim().length > 0;
505
+ } catch {}
506
+
507
+ const hasCodebaseMap = pathExistsInternal(cwd, '.plano/codebase');
508
+ let codebaseFiles = [];
509
+ if (hasCodebaseMap) {
510
+ try {
511
+ codebaseFiles = fs.readdirSync(path.join(cwd, '.plano/codebase'))
512
+ .filter(f => f.endsWith('.md'))
513
+ .map(f => `.plano/codebase/${f}`);
514
+ } catch {}
515
+ }
516
+
517
+ // Stack hints from package.json
518
+ const pkgPath = path.join(cwd, 'package.json');
519
+ let stackHints = {};
520
+ try {
521
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
522
+ const allDeps = Object.assign({}, pkg.dependencies || {}, pkg.devDependencies || {});
523
+ stackHints = {
524
+ has_react: !!allDeps.react,
525
+ has_next: !!allDeps.next,
526
+ has_vue: !!allDeps.vue,
527
+ has_nuxt: !!allDeps.nuxt,
528
+ has_svelte: !!allDeps.svelte,
529
+ has_tailwind: !!allDeps.tailwindcss,
530
+ has_prisma: !!(allDeps['@prisma/client'] || allDeps.prisma),
531
+ has_typescript: !!(allDeps.typescript || pathExistsInternal(cwd, 'tsconfig.json')),
532
+ type_module: pkg.type === 'module',
533
+ };
534
+ } catch {}
535
+
536
+ const result = {
537
+ commit_docs: config.commit_docs,
538
+ project_exists: pathExistsInternal(cwd, '.plano/PROJECT.md'),
539
+ planning_exists: pathExistsInternal(cwd, '.plano'),
540
+ has_existing_code: hasCode,
541
+ has_codebase_map: hasCodebaseMap,
542
+ codebase_files: codebaseFiles,
543
+ has_git: pathExistsInternal(cwd, '.git'),
544
+ has_package_json: pathExistsInternal(cwd, 'package.json'),
545
+ has_readme: pathExistsInternal(cwd, 'README.md') || pathExistsInternal(cwd, 'readme.md'),
546
+ stack_hints: stackHints,
547
+ project_path: '.plano/PROJECT.md',
548
+ };
549
+
550
+ output(result, raw);
551
+ }
552
+
490
553
  function cmdInitRapido(cwd, description, raw) {
491
554
  const config = loadConfig(cwd);
492
555
  const now = new Date();
package/commands/ajuda.md CHANGED
@@ -27,7 +27,8 @@ Sistema de desenvolvimento orientado a fases para projetos de software.
27
27
 
28
28
  | Comando | Descricao | Uso |
29
29
  |---------|-----------|-----|
30
- | `/up:novo-projeto` | Inicializar novo projeto com coleta de contexto | `/up:novo-projeto` |
30
+ | `/up:iniciar` | Registrar projeto existente (leve, sem questionario) | `/up:iniciar` |
31
+ | `/up:novo-projeto` | Inicializar projeto completo (questionario + requisitos + roadmap) | `/up:novo-projeto` |
31
32
  | `/up:mapear-codigo` | Analisar codebase existente com agentes paralelos | `/up:mapear-codigo` |
32
33
  | `/up:retomar` | Restaurar contexto da sessao anterior | `/up:retomar` |
33
34
 
@@ -96,10 +97,21 @@ Sistema de desenvolvimento orientado a fases para projetos de software.
96
97
 
97
98
  ## Fluxos de Trabalho Comuns
98
99
 
99
- ### Projeto com Codigo Existente (mais comum)
100
+ ### Projeto Existente Adocao Leve (recomendado)
101
+ ```
102
+ /up:iniciar # Registra projeto, cria PROJECT.md automaticamente
103
+ /up:mapear-codigo # Analise profunda do codebase (opcional)
104
+ /up:planejar-fase 1 # Quando tiver algo para implementar
105
+ /up:executar-fase 1
106
+ /up:verificar-trabalho 1
107
+ ```
108
+ Dica: /up:iniciar nao faz perguntas — documenta o que existe e para.
109
+ Use /up:melhorias ou /up:ideias para descobrir o que fazer.
110
+
111
+ ### Projeto Existente — Pipeline Completo
100
112
  ```
101
113
  /up:mapear-codigo # Analisa codebase (stack, arquitetura, concerns)
102
- /up:novo-projeto # Detecta brownfield automaticamente
114
+ /up:novo-projeto # Questionario completo + requisitos + roadmap
103
115
  /up:discutir-fase 1 # Discute no contexto do codigo existente
104
116
  /up:planejar-fase 1 # Planos respeitam convencoes do codebase
105
117
  /up:executar-fase 1
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: up:iniciar
3
+ description: Registrar projeto existente no UP (leve, sem questionario)
4
+ argument-hint: ""
5
+ allowed-tools:
6
+ - Read
7
+ - Write
8
+ - Bash
9
+ - Glob
10
+ - Grep
11
+ - AskUserQuestion
12
+ ---
13
+ <objective>
14
+ Registrar projeto no UP de forma leve. Detecta o que existe, cria PROJECT.md automaticamente sem questionario, e para. Ideal para quem quer adotar UP num projeto existente sem definir roadmap/requisitos de cara.
15
+
16
+ Diferente de /up:novo-projeto que faz questionamento profundo + requisitos + roadmap, este comando apenas documenta o estado atual e configura o minimo necessario.
17
+ </objective>
18
+
19
+ <execution_context>
20
+ @~/.claude/up/workflows/iniciar.md
21
+ </execution_context>
22
+
23
+ <context>
24
+ $ARGUMENTS
25
+
26
+ Modo leve: registra projeto, documenta o que existe, e para. O usuario vai planejando fases incrementalmente depois.
27
+ </context>
28
+
29
+ <process>
30
+ Execute the iniciar workflow from @~/.claude/up/workflows/iniciar.md end-to-end.
31
+ </process>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "up-cc",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
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,235 @@
1
+ <purpose>
2
+ Registrar projeto no UP de forma leve. Sem questionario, sem requisitos, sem roadmap.
3
+ Detecta o que existe, gera PROJECT.md automaticamente, cria config padrao, para.
4
+
5
+ O PROJECT.md vai crescer conforme o usuario planeja fases com /up:planejar-fase e /up:discutir-fase.
6
+ </purpose>
7
+
8
+ <process>
9
+
10
+ ## 1. Setup
11
+
12
+ **PRIMEIRO PASSO OBRIGATORIO -- Execute antes de qualquer interacao:**
13
+
14
+ ```bash
15
+ INIT=$(node "$HOME/.claude/up/bin/up-tools.cjs" init iniciar)
16
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
17
+ ```
18
+
19
+ Parse JSON: `commit_docs`, `project_exists`, `planning_exists`, `has_existing_code`, `has_codebase_map`, `codebase_files`, `has_git`, `has_package_json`, `has_readme`, `stack_hints`.
20
+
21
+ **Se `project_exists` = true:**
22
+
23
+ Use AskUserQuestion:
24
+ - header: "PROJECT.md existente"
25
+ - question: "Ja existe um PROJECT.md. O que fazer?"
26
+ - options:
27
+ - "Sobrescrever" -- Gerar novamente a partir do codebase
28
+ - "Cancelar" -- Manter como esta
29
+
30
+ Se "Cancelar": Sair. Sugerir `/up:progresso`.
31
+
32
+ **Se `has_git` = false:** Inicializar git:
33
+ ```bash
34
+ git init
35
+ ```
36
+
37
+ ## 2. Coletar informacoes do projeto (AUTOMATICO, sem perguntar)
38
+
39
+ ```
40
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
41
+ UP > REGISTRANDO PROJETO
42
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
43
+ ```
44
+
45
+ ### Fontes de informacao (ler em paralelo, o que existir):
46
+
47
+ **Sempre ler:**
48
+ ```bash
49
+ # package.json (nome, descricao, dependencias)
50
+ cat package.json 2>/dev/null
51
+
52
+ # README (descricao do projeto)
53
+ cat README.md 2>/dev/null || cat readme.md 2>/dev/null
54
+
55
+ # CLAUDE.md do projeto (instrucoes existentes)
56
+ cat CLAUDE.md 2>/dev/null
57
+
58
+ # Estrutura de diretorios (top-level)
59
+ ls -d */ 2>/dev/null | head -20
60
+ ```
61
+
62
+ **Se `has_codebase_map` = true (mapeamento completo existe):**
63
+ ```bash
64
+ cat .plano/codebase/STACK.md 2>/dev/null
65
+ cat .plano/codebase/ARCHITECTURE.md 2>/dev/null
66
+ cat .plano/codebase/CONCERNS.md 2>/dev/null
67
+ cat .plano/codebase/CONVENTIONS.md 2>/dev/null
68
+ ```
69
+
70
+ **Se `has_codebase_map` = false E `has_existing_code` = true (mini-scan):**
71
+ ```bash
72
+ # Detectar stack pelos arquivos de config
73
+ ls package.json go.mod Cargo.toml requirements.txt pyproject.toml pom.xml build.gradle composer.json Gemfile mix.exs 2>/dev/null
74
+
75
+ # Detectar estrutura
76
+ ls -d src/ app/ lib/ cmd/ internal/ pages/ components/ public/ api/ server/ 2>/dev/null | head -15
77
+
78
+ # Detectar frameworks (package.json deps)
79
+ node -e "try{const p=require('./package.json');console.log(JSON.stringify({deps:Object.keys(p.dependencies||{}),devDeps:Object.keys(p.devDependencies||{})}))}catch{}" 2>/dev/null
80
+ ```
81
+
82
+ ### Sintetizar informacoes coletadas:
83
+
84
+ A partir das fontes lidas, extrair:
85
+ - **Nome do projeto**: de package.json name, ou nome do diretorio
86
+ - **Descricao**: de package.json description, ou primeiro paragrafo do README, ou inferir do codigo
87
+ - **Stack**: frameworks, linguagens, dependencias principais
88
+ - **Estrutura**: organizacao de diretorios, entry points
89
+ - **Contexto adicional**: do CLAUDE.md, README, ou codebase map
90
+
91
+ ## 3. Gerar PROJECT.md (AUTOMATICO)
92
+
93
+ Escrever `.plano/PROJECT.md` sintetizando tudo que foi coletado:
94
+
95
+ ```markdown
96
+ # [Nome do Projeto]
97
+
98
+ ## O que e Isso
99
+
100
+ [Descricao gerada automaticamente a partir de package.json, README, e/ou analise do codigo.
101
+ 2-3 frases descrevendo o que o produto faz e para quem.]
102
+
103
+ ## Valor Central
104
+
105
+ [Inferido do codigo/README. Se nao for possivel inferir com confianca, usar:]
106
+ [A definir -- sera refinado conforme o projeto evolui]
107
+
108
+ ## Requisitos
109
+
110
+ ### Validados
111
+
112
+ <!-- Inferidos do codebase existente -->
113
+
114
+ - [x] [Feature existente 1 detectada no codigo]
115
+ - [x] [Feature existente 2 detectada no codigo]
116
+ - [x] [Feature existente 3 detectada no codigo]
117
+
118
+ ### Ativos
119
+
120
+ <!-- Adicione objetivos com /up:planejar-fase ou /up:discutir-fase -->
121
+
122
+ (Nenhum ainda)
123
+
124
+ ### Fora do Escopo
125
+
126
+ (A definir)
127
+
128
+ ## Contexto
129
+
130
+ **Stack:** [linguagens, frameworks, dependencias principais]
131
+ **Estrutura:** [organizacao do projeto]
132
+ [Se codebase map existe:]
133
+ **Mapeamento detalhado:** .plano/codebase/
134
+ [Se README existe:]
135
+ **Documentacao:** README.md
136
+ [Se CLAUDE.md existe:]
137
+ **Instrucoes de desenvolvimento:** CLAUDE.md
138
+
139
+ ## Restricoes
140
+
141
+ - **Stack**: [stack detectada] -- projeto existente
142
+ [Outras restricoes inferidas, ex: se tem TypeScript strict, se tem ESLint, etc.]
143
+
144
+ ## Decisoes-Chave
145
+
146
+ | Decisao | Justificativa | Resultado |
147
+ |---------|---------------|-----------|
148
+ | Registrado via /up:iniciar | Adocao incremental do UP | -- |
149
+
150
+ ---
151
+ *Ultima atualizacao: [data] apos registro inicial*
152
+ ```
153
+
154
+ **IMPORTANTE:** Preencher Requisitos Validados com features REAIS detectadas no codigo. Se tem codebase map, usar ARCHITECTURE.md como fonte. Se nao, inferir das dependencias e estrutura (ex: "Sistema de autenticacao com NextAuth", "API REST com Express", "Interface com React e Tailwind").
155
+
156
+ Nao inventar features. So listar o que e evidente no codigo.
157
+
158
+ **Commit PROJECT.md:**
159
+
160
+ ```bash
161
+ mkdir -p .plano
162
+ node "$HOME/.claude/up/bin/up-tools.cjs" commit "docs: registrar projeto via /up:iniciar" --files .plano/PROJECT.md
163
+ ```
164
+
165
+ ## 4. Criar config.json padrao
166
+
167
+ Criar `.plano/config.json` com valores padrao (sem perguntar):
168
+
169
+ ```json
170
+ {
171
+ "mode": "yolo",
172
+ "granularity": "standard",
173
+ "parallelization": true,
174
+ "commit_docs": true
175
+ }
176
+ ```
177
+
178
+ **Commit config.json:**
179
+
180
+ ```bash
181
+ node "$HOME/.claude/up/bin/up-tools.cjs" commit "chore: config padrao do projeto" --files .plano/config.json
182
+ ```
183
+
184
+ ## 5. Finalizar
185
+
186
+ ```
187
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
188
+ UP > PROJETO REGISTRADO
189
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
190
+
191
+ **[Nome do Projeto]**
192
+
193
+ [Descricao curta -- 1 linha do "O que e Isso"]
194
+
195
+ | Artefato | Localizacao |
196
+ |-----------|----------------------|
197
+ | Projeto | `.plano/PROJECT.md` |
198
+ | Config | `.plano/config.json` |
199
+ [Se codebase map existe:]
200
+ | Codebase | `.plano/codebase/` |
201
+
202
+ **[N] features existentes documentadas**
203
+
204
+ ───────────────────────────────────────────────────────────────
205
+
206
+ ## Proximos Passos
207
+
208
+ O UP esta pronto. Use conforme precisar:
209
+
210
+ - `/up:mapear-codigo` -- Analise profunda do codebase (se ainda nao mapeou)
211
+ - `/up:melhorias` -- Auditoria de UX, performance, modernidade
212
+ - `/up:ideias` -- Sugestoes de features novas
213
+ - `/up:planejar-fase` -- Quando tiver algo especifico para implementar
214
+ - `/up:rapido` -- Tarefa rapida sem fase formal
215
+
216
+ PROJECT.md e um documento vivo -- sera atualizado conforme voce planeja e executa fases.
217
+
218
+ <sub>/clear antes do proximo comando -- janela de contexto limpa</sub>
219
+
220
+ ───────────────────────────────────────────────────────────────
221
+ ```
222
+
223
+ </process>
224
+
225
+ <success_criteria>
226
+
227
+ - [ ] .plano/ diretorio criado
228
+ - [ ] Git repo inicializado (se nao existia)
229
+ - [ ] Informacoes coletadas automaticamente (sem perguntas ao usuario)
230
+ - [ ] PROJECT.md gerado com features existentes documentadas -> **committed**
231
+ - [ ] config.json criado com valores padrao -> **committed**
232
+ - [ ] NENHUM questionario, NENHUM REQUIREMENTS.md, NENHUM ROADMAP.md
233
+ - [ ] Proximos passos apresentados
234
+
235
+ </success_criteria>