@maestro-ai/cli 1.1.0 → 1.2.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.
Files changed (32) hide show
  1. package/README.md +84 -54
  2. package/content/guides/fases-mapeamento.md +35 -0
  3. package/content/guides/multi-ide.md +32 -0
  4. package/content/guides/playbook-orquestrador.md +45 -0
  5. package/content/rules/quality-gates.md +43 -0
  6. package/content/rules/validation-rules.md +97 -0
  7. package/content/templates/estado-template.json +73 -0
  8. package/content/workflows/avancar-fase.md +84 -0
  9. package/content/workflows/brainstorm.md +22 -8
  10. package/content/workflows/continuar-fase.md +64 -0
  11. package/content/workflows/{mcp-debug.md → corrigir-bug.md} +30 -6
  12. package/content/workflows/iniciar-projeto.md +59 -0
  13. package/content/workflows/maestro.md +77 -0
  14. package/content/workflows/{mcp-feature.md → nova-feature.md} +81 -28
  15. package/content/workflows/{mcp-refactor.md → refatorar-codigo.md} +33 -10
  16. package/content/workflows/status-projeto.md +54 -0
  17. package/dist/commands/init.d.ts +2 -2
  18. package/dist/commands/init.js +86 -74
  19. package/dist/index.js +94 -5
  20. package/package.json +10 -4
  21. package/content/workflows/README-MCP.md +0 -363
  22. package/content/workflows/debug.md +0 -103
  23. package/content/workflows/mcp-next.md +0 -388
  24. package/content/workflows/mcp-start.md +0 -304
  25. package/content/workflows/mcp-status.md +0 -400
  26. package/content/workflows/preview.md +0 -81
  27. package/content/workflows/status.md +0 -86
  28. /package/content/workflows/{create.md → create-app.md} +0 -0
  29. /package/content/workflows/{enhance.md → melhorar-feature.md} +0 -0
  30. /package/content/workflows/{test.md → testar.md} +0 -0
  31. /package/content/workflows/{ui-ux-pro-max.md → ux-avancado.md} +0 -0
  32. /package/content/workflows/{mcp-gate.md → validar-gate.md} +0 -0
@@ -1,388 +0,0 @@
1
- ---
2
- description: Avançar fase MCP com validação de gates e salvamento de entregável
3
- ---
4
-
5
- # /mcp-next - Avançar Fase MCP
6
-
7
- $ARGUMENTS
8
-
9
- ---
10
-
11
- ## Objetivo
12
-
13
- Salvar entregável da fase atual, validar gates de qualidade, e avançar para próxima fase do fluxo MCP Maestro.
14
-
15
- ---
16
-
17
- ## Protocolo Stateless MCP (CRÍTICO)
18
-
19
- > [!IMPORTANT]
20
- > **OBRIGATÓRIO antes de QUALQUER tool MCP:**
21
- > ```typescript
22
- > const estadoJson = await fs.readFile('.maestro/estado.json', 'utf-8');
23
- > // Passar estadoJson em TODOS os tools
24
- > ```
25
-
26
- ---
27
-
28
- ## Fluxo de Execução
29
-
30
- ### Passo 1: Verificar Contexto MCP
31
-
32
- ```typescript
33
- // Verificar se existe projeto MCP
34
- if (!fs.existsSync('.maestro/estado.json')) {
35
- return "❌ Nenhum projeto MCP ativo. Use /mcp-start para iniciar.";
36
- }
37
-
38
- // Ler estado
39
- const estadoJson = await fs.readFile('.maestro/estado.json', 'utf-8');
40
- const estado = JSON.parse(estadoJson);
41
-
42
- // Mostrar contexto
43
- console.log(`
44
- 📋 **Fase Atual:** ${estado.fase_atual} - ${estado.fases[estado.fase_atual - 1].nome}
45
- 📄 **Entregável Esperado:** ${estado.fases[estado.fase_atual - 1].template}
46
- `);
47
- ```
48
-
49
- ---
50
-
51
- ### Passo 2: Coletar Entregável
52
-
53
- **Se usuário forneceu arquivo como argumento:**
54
-
55
- ```bash
56
- /mcp-next docs/01-produto/PRD.md
57
- ```
58
-
59
- **Ler arquivo:**
60
-
61
- ```typescript
62
- const entregavel = await fs.readFile(argumentoArquivo, 'utf-8');
63
- ```
64
-
65
- **Se NÃO forneceu argumento:**
66
-
67
- ```markdown
68
- 📝 **Entregável da Fase [numero]**
69
-
70
- Como deseja fornecer o entregável?
71
-
72
- 1. Colar conteúdo diretamente
73
- 2. Informar caminho do arquivo
74
-
75
- Escolha (1/2):
76
- ```
77
-
78
- **Se opção 1:**
79
- ```
80
- Cole o conteúdo do entregável abaixo:
81
- ```
82
-
83
- **Se opção 2:**
84
- ```
85
- Qual o caminho do arquivo?
86
- Exemplo: docs/01-produto/PRD.md
87
- ```
88
-
89
- ---
90
-
91
- ### Passo 3: Validar Gate
92
-
93
- ```typescript
94
- const estadoJson = await fs.readFile('.maestro/estado.json', 'utf-8');
95
-
96
- const resultado = await mcp_maestro_validar_gate({
97
- entregavel: entregavel,
98
- estado_json: estadoJson,
99
- diretorio: process.cwd()
100
- });
101
- ```
102
-
103
- **MCP retorna:**
104
- - `valido`: boolean
105
- - `score`: 0-100
106
- - `checklist`: array de itens
107
- - `pendencias`: array de strings
108
-
109
- ---
110
-
111
- ### Passo 4: Apresentar Resultado da Validação
112
-
113
- #### Cenário A: Score >= 70 (Aprovado ✅)
114
-
115
- ```markdown
116
- ✅ **Gate Aprovado** (Score: ${score}/100)
117
-
118
- **Checklist da Fase:**
119
- ${checklist.map(item => `${item.validado ? '✅' : '⚠️'} ${item.nome}`).join('\n')}
120
-
121
- ${pendencias.length > 0 ? `
122
- **Pendências Menores:**
123
- ${pendencias.map(p => `- ${p}`).join('\n')}
124
-
125
- (Pode avançar, mas considere corrigir depois)
126
- ` : ''}
127
-
128
- Avançando para próxima fase...
129
- ```
130
-
131
- **Chamar proximo automaticamente:**
132
-
133
- ```typescript
134
- await mcp_maestro_proximo({
135
- entregavel: entregavel,
136
- estado_json: estadoJson,
137
- diretorio: process.cwd()
138
- });
139
- ```
140
-
141
- #### Cenário B: Score < 70 (Bloqueado 🔴)
142
-
143
- ```markdown
144
- 🔴 **Gate Bloqueado** (Score: ${score}/100)
145
-
146
- **Itens Validados** ✅:
147
- ${checklist.filter(i => i.validado).map(i => `- ${i.nome}`).join('\n')}
148
-
149
- **Itens Pendentes** ❌:
150
- ${checklist.filter(i => !i.validado).map(i => `- ${i.nome}`).join('\n')}
151
-
152
- **Sugestões de Correção:**
153
- ${pendencias.map(p => `- ${p}`).join('\n')}
154
-
155
- ---
156
-
157
- **Opções:**
158
-
159
- 1. **Corrigir pendências** → Atualize o entregável e execute `/mcp-next [arquivo]` novamente
160
- 2. **Aprovar manualmente** → Se tiver motivo justificado, posso informar como forçar
161
-
162
- Qual opção? (1/2)
163
- ```
164
-
165
- **Se usuário escolher opção 2:**
166
-
167
- > [!CAUTION]
168
- > **NUNCA** chamar `aprovar_gate` automaticamente!
169
- >
170
- > Apenas **INFORMAR** ao usuário:
171
-
172
- ```markdown
173
- ⚠️ **Aprovação Manual de Gate**
174
-
175
- Para aprovar este gate manualmente, você (usuário) precisa:
176
-
177
- 1. Entender os riscos de avançar com pendências
178
- 2. Ter justificativa documentada
179
- 3. Executar: `/mcp-gate approve [justificativa]`
180
-
181
- **Exemplo:**
182
- /mcp-gate approve "MVP inicial, vamos refinar depois"
183
-
184
- ❌ **Eu (IA) NÃO posso aprovar gates automaticamente.**
185
- ```
186
-
187
- ---
188
-
189
- ### Passo 5: Apresentar Próxima Fase
190
-
191
- **Após avançar com sucesso:**
192
-
193
- ```typescript
194
- // Recarregar estado atualizado
195
- const novoEstadoJson = await fs.readFile('.maestro/estado.json', 'utf-8');
196
- const novoEstado = JSON.parse(novoEstadoJson);
197
-
198
- // Carregar especialista da próxima fase
199
- const proximaFase = novoEstado.fases[novoEstado.fase_atual - 1];
200
- const especialista = await fetch(`maestro://especialista/${proximaFase.especialista}`);
201
- ```
202
-
203
- **Apresentar:**
204
-
205
- ```markdown
206
- ✅ **Entregável Salvo:** docs/${faseConcluida.numero}-${faseConcluida.slug}/${arquivo}
207
-
208
- ---
209
-
210
- 🎯 **Fase ${proximaFase.numero}/${totalFases}: ${proximaFase.nome}**
211
- 🤖 **Especialista:** ${proximaFase.especialista}
212
- 📄 **Entregável Esperado:** ${proximaFase.template}
213
-
214
- ---
215
-
216
- ## 🎯 ${proximaFase.nome}
217
-
218
- ${especialista.introducao}
219
-
220
- ${especialista.perguntas_iniciais}
221
- ```
222
-
223
- ---
224
-
225
- ## Comandos
226
-
227
- ```
228
- /mcp-next → Wizard (pede entregável)
229
- /mcp-next [arquivo] → Usa arquivo como entregável
230
- /mcp-next --force [arquivo] → ❌ NÃO SUPORTADO (usar /mcp-gate approve)
231
- ```
232
-
233
- ---
234
-
235
- ## Exemplos de Uso
236
-
237
- ### Exemplo 1: Gate Aprovado Automaticamente
238
-
239
- ```
240
- User: /mcp-next docs/01-produto/PRD.md
241
-
242
- AI: Validando gate da Fase 1...
243
-
244
- ✅ Gate Aprovado (Score: 95/100)
245
-
246
- Checklist:
247
- ✅ Problema claramente definido
248
- ✅ Personas identificadas
249
- ✅ MVP com funcionalidades listadas
250
- ✅ North Star Metric definida
251
-
252
- Avançando para próxima fase...
253
-
254
- ✅ PRD Salvo: docs/01-produto/PRD.md
255
-
256
- 🎯 Fase 2/13: Requisitos
257
- 🤖 Especialista: Engenharia de Requisitos
258
-
259
- Vamos elaborar os requisitos funcionais e não-funcionais...
260
- ```
261
-
262
- ### Exemplo 2: Gate Bloqueado
263
-
264
- ```
265
- User: /mcp-next docs/02-requisitos/requisitos.md
266
-
267
- AI: Validando gate da Fase 2...
268
-
269
- 🔴 Gate Bloqueado (Score: 60/100)
270
-
271
- Itens Validados ✅:
272
- - Requisitos funcionais com IDs únicos
273
- - Requisitos não-funcionais definidos
274
-
275
- Itens Pendentes ❌:
276
- - Critérios de aceite em Gherkin
277
- - Matriz de rastreabilidade iniciada
278
-
279
- Sugestões:
280
- - Adicione cenários Gherkin para cada RF (Dado/Quando/Então)
281
- - Crie tabela mapeando RF → User Story
282
-
283
- ---
284
-
285
- Opções:
286
- 1. Corrigir pendências
287
- 2. Aprovar manualmente
288
-
289
- Qual? (1/2)
290
-
291
- User: 1
292
-
293
- AI: Certo! Atualize o arquivo `docs/02-requisitos/requisitos.md`
294
- e execute `/mcp-next` novamente quando estiver pronto.
295
- ```
296
-
297
- ### Exemplo 3: Wizard Interativo
298
-
299
- ```
300
- User: /mcp-next
301
-
302
- AI: 📋 Fase Atual: 3 - UX Design
303
- 📄 Entregável Esperado: design-doc.md
304
-
305
- Como deseja fornecer o entregável?
306
- 1. Colar conteúdo
307
- 2. Informar arquivo
308
-
309
- Escolha:
310
-
311
- User: 2
312
-
313
- AI: Qual o caminho do arquivo?
314
-
315
- User: docs/03-ux/design-doc.md
316
-
317
- AI: Validando gate...
318
- [continua validação]
319
- ```
320
-
321
- ---
322
-
323
- ## Regras Críticas
324
-
325
- ### ✅ SEMPRE Fazer:
326
-
327
- 1. Ler `.maestro/estado.json` ANTES de qualquer tool MCP
328
- 2. Passar `estado_json` em TODOS os tools
329
- 3. Validar gate ANTES de chamar `proximo`
330
- 4. Apresentar resultado de validação ao usuário
331
- 5. Carregar especialista da próxima fase
332
-
333
- ### ❌ NUNCA Fazer:
334
-
335
- 1. Chamar `proximo` sem validar gate antes
336
- 2. Chamar `aprovar_gate` automaticamente
337
- 3. Usar `forcar: true` sem aprovação explícita do usuário
338
- 4. Avançar com score < 70 sem mostrar pendências
339
- 5. Assumir que arquivo existe sem verificar
340
-
341
- ---
342
-
343
- ## Gate Protection Protocol
344
-
345
- > [!CAUTION]
346
- > **Quando `validar_gate` retorna `valido: false`:**
347
- >
348
- > 1. 🛑 **PARAR** - Não chamar `proximo()`
349
- > 2. 📊 **MOSTRAR** - Itens pendentes ao usuário
350
- > 3. 💡 **SUGERIR** - Correções baseadas em checklist
351
- > 4. ⏸️ **AGUARDAR** - Decisão do usuário
352
- >
353
- > **NUNCA:**
354
- > - ❌ Chamar `aprovar_gate` automaticamente
355
- > - ❌ Usar `forcar: true` sem aprovação explícita
356
- > - ❌ Ignorar gates ou pular validações
357
-
358
- ---
359
-
360
- ## Troubleshooting
361
-
362
- ### Erro: "estado.json not found"
363
-
364
- ```
365
- ❌ Nenhum projeto MCP ativo.
366
-
367
- Use `/mcp-start` para iniciar um novo projeto.
368
- ```
369
-
370
- ### Erro: "Fase já concluída"
371
-
372
- ```
373
- ⚠️ Esta fase já foi concluída.
374
-
375
- Use `/mcp-status` para ver a fase atual.
376
- ```
377
-
378
- ### Score Sempre < 70
379
-
380
- **Causa:** Tier de gate muito rigoroso para o tipo de projeto.
381
-
382
- **Solução:** Reclassificar projeto:
383
-
384
- ```
385
- /mcp-start reclassificar
386
- ```
387
-
388
- Ou aprovar manualmente com justificativa.
@@ -1,304 +0,0 @@
1
- ---
2
- description: Iniciar projeto MCP com classificação automática e wizard interativo
3
- ---
4
-
5
- # /mcp-start - Iniciar Projeto MCP Maestro
6
-
7
- $ARGUMENTS
8
-
9
- ---
10
-
11
- ## Objetivo
12
-
13
- Iniciar novo projeto usando o sistema MCP Maestro com classificação automática de complexidade, seleção de tier de gates, e opção de prototipagem com Stitch.
14
-
15
- ---
16
-
17
- ## Protocolo Stateless MCP (CRÍTICO)
18
-
19
- > [!IMPORTANT]
20
- > **ANTES de chamar QUALQUER tool MCP:**
21
- > 1. Ler `.maestro/estado.json` (se existir)
22
- > 2. Parsear conteúdo para variável `estado_json`
23
- > 3. Passar `estado_json` como argumento em TODOS os tools MCP
24
- > 4. NUNCA confiar em memória de conversação
25
-
26
- ---
27
-
28
- ## Fluxo de Execução
29
-
30
- ### Passo 1: Coleta de Informações
31
-
32
- **Perguntar ao usuário:**
33
-
34
- ```
35
- 🎯 **Iniciando Projeto MCP Maestro**
36
-
37
- 1. Qual o nome do projeto?
38
- 2. Descreva brevemente o projeto (problema, solução, público-alvo):
39
- ```
40
-
41
- **Se usuário forneceu argumentos:**
42
- - `/mcp-start NomeProjeto` → Usar nome, pedir descrição
43
- - `/mcp-start` → Pedir nome e descrição
44
-
45
- ---
46
-
47
- ### Passo 2: Análise e Classificação Automática
48
-
49
- **Chamar MCP tool:**
50
-
51
- ```typescript
52
- await mcp_maestro_iniciar_projeto({
53
- nome: "[nome fornecido]",
54
- descricao: "[descrição fornecida]",
55
- diretorio: process.cwd()
56
- });
57
- ```
58
-
59
- **MCP retorna:**
60
- - Classificação sugerida: `tipo_artefato` (poc/script/internal/product)
61
- - Nível de complexidade: `nivel_complexidade` (simples/medio/complexo)
62
- - Tier de gates: `tier_gate` (essencial/base/avancado)
63
- - Número de fases resultante
64
- - Justificativa da classificação
65
-
66
- ---
67
-
68
- ### Passo 3: Apresentar Classificação ao Usuário
69
-
70
- ```markdown
71
- 📊 **Classificação Automática**
72
-
73
- Analisei sua descrição e sugiro:
74
-
75
- - **Tipo de Artefato:** [POC/Script/Internal/Product]
76
- - **Complexidade:** [Simples/Médio/Complexo]
77
- - **Número de Fases:** [7/13/17]
78
- - **Tier de Gates:** [Essencial/Base/Avançado]
79
-
80
- **Justificativa:**
81
- - [motivo 1]
82
- - [motivo 2]
83
- - [motivo 3]
84
-
85
- **Isso significa:**
86
- - [O que o tier de gate valida]
87
- - [Quais especialistas serão usados]
88
-
89
- Confirmar classificação? (Y/N)
90
- Se quiser ajustar, responda: "reclassificar para [simples/medio/complexo]"
91
- ```
92
-
93
- ---
94
-
95
- ### Passo 4: Confirmação ou Reclassificação
96
-
97
- **Se usuário confirmar (Y):**
98
-
99
- ```typescript
100
- const estadoJson = await fs.readFile('.maestro/estado.json', 'utf-8');
101
-
102
- await mcp_maestro_confirmar_projeto({
103
- nome: "[nome]",
104
- diretorio: process.cwd(),
105
- tipo_artefato: "[tipo sugerido]",
106
- nivel_complexidade: "[nivel sugerido]"
107
- });
108
- ```
109
-
110
- **Se usuário quiser reclassificar:**
111
-
112
- ```typescript
113
- const estadoJson = await fs.readFile('.maestro/estado.json', 'utf-8');
114
-
115
- await mcp_maestro_classificar({
116
- nivel: "[simples/medio/complexo]",
117
- estado_json: estadoJson,
118
- diretorio: process.cwd()
119
- });
120
-
121
- // Após reclassificação, confirmar:
122
- await mcp_maestro_confirmar_classificacao({
123
- nivel: "[novo nivel]",
124
- tipo_artefato: "[tipo]",
125
- estado_json: estadoJson,
126
- diretorio: process.cwd()
127
- });
128
- ```
129
-
130
- ---
131
-
132
- ### Passo 5: Opção de Prototipagem com Stitch (Opcional)
133
-
134
- ```markdown
135
- 🎨 **Prototipagem com Google Stitch**
136
-
137
- Deseja incluir uma fase de **Prototipagem Rápida com Google Stitch**?
138
-
139
- Isso adiciona uma fase após UX Design para:
140
- - Gerar prompts otimizados para Stitch
141
- - Criar protótipos HTML/CSS validados
142
- - Exportar código para produção
143
-
144
- Usar Stitch? (Y/N)
145
- ```
146
-
147
- **Se Y:**
148
-
149
- ```typescript
150
- const estadoJson = await fs.readFile('.maestro/estado.json', 'utf-8');
151
-
152
- await mcp_maestro_confirmar_stitch({
153
- usar_stitch: true,
154
- estado_json: estadoJson,
155
- diretorio: process.cwd()
156
- });
157
- ```
158
-
159
- ---
160
-
161
- ### Passo 6: Apresentar Fase Inicial
162
-
163
- ```markdown
164
- ✅ **Projeto Iniciado com Sucesso**
165
-
166
- 📁 **Diretório:** [diretorio]
167
- 📋 **Fase 1/[total]:** Produto
168
- 🤖 **Especialista:** Gestão de Produto
169
- 📄 **Entregável Esperado:** PRD.md
170
-
171
- ---
172
-
173
- ## 🎯 Fase 1: Visão de Produto
174
-
175
- Como **Especialista em Gestão de Produto**, vou ajudá-lo a definir:
176
-
177
- 1. **Problema** - Que dor estamos resolvendo?
178
- 2. **Solução** - Como vamos resolver?
179
- 3. **Público-alvo** - Quem são os usuários?
180
- 4. **MVP** - O que entra na primeira versão?
181
- 5. **Métricas** - Como medir sucesso (North Star Metric)?
182
-
183
- Vamos começar. Qual o **principal problema** que este produto resolve?
184
- ```
185
-
186
- **Carregar especialista:**
187
-
188
- ```typescript
189
- const especialista = await fetch('maestro://especialista/gestao-de-produto');
190
- // Aplicar persona e instruções do especialista
191
- ```
192
-
193
- ---
194
-
195
- ## Estrutura Criada
196
-
197
- Após execução bem-sucedida, o projeto terá:
198
-
199
- ```
200
- [nome-projeto]/
201
- ├── .maestro/
202
- │ ├── estado.json # ⭐ Fonte da verdade (STATE)
203
- │ └── resumo.json # Cache de contexto
204
- └── docs/
205
- └── 01-produto/ # Criado quando salvar PRD
206
- ```
207
-
208
- ---
209
-
210
- ## Comandos Relacionados
211
-
212
- ```
213
- /mcp-start → Wizard completo (recomendado)
214
- /mcp-start MeuProjeto → Inicia com nome, pede descrição
215
- /mcp-status → Ver status após criação
216
- /mcp-next → Avançar para próxima fase
217
- ```
218
-
219
- ---
220
-
221
- ## Exemplos de Uso
222
-
223
- ### Exemplo 1: SaaS Simples
224
-
225
- ```
226
- User: /mcp-start
227
-
228
- AI: Qual o nome do projeto?
229
- User: TaskFlow
230
-
231
- AI: Descreva brevemente o projeto:
232
- User: Gerenciador de tarefas para times pequenos, até 10 usuários
233
-
234
- AI: 📊 Classificação Automática
235
- - Tipo: Internal
236
- - Complexidade: Simples (7 fases)
237
- - Tier: Base
238
- - Justificativa: Escala pequena, sem integrações complexas
239
-
240
- User: Y
241
-
242
- AI: Usar Stitch?
243
- User: N
244
-
245
- AI: ✅ Projeto iniciado! Fase 1: Produto...
246
- ```
247
-
248
- ### Exemplo 2: Fintech Complexo
249
-
250
- ```
251
- User: /mcp-start
252
-
253
- AI: Qual o nome do projeto?
254
- User: PaySecure
255
-
256
- AI: Descreva brevemente o projeto:
257
- User: Plataforma de pagamentos com multi-tenancy, compliance PCI-DSS, 100k+ usuários
258
-
259
- AI: 📊 Classificação Automática
260
- - Tipo: Product
261
- - Complexidade: Complexo (17 fases)
262
- - Tier: Avançado
263
- - Justificativa:
264
- - Multi-tenancy detectado
265
- - Compliance rigoroso (PCI-DSS)
266
- - Alta escala (100k+ usuários)
267
-
268
- User: Y
269
-
270
- AI: Usar Stitch?
271
- User: Y
272
-
273
- AI: ✅ Projeto iniciado! Fase Stitch incluída após UX...
274
- ```
275
-
276
- ---
277
-
278
- ## Regras Críticas
279
-
280
- 1. ✅ **SEMPRE** ler `estado.json` antes de chamar tools MCP
281
- 2. ✅ **SEMPRE** passar `estado_json` como argumento
282
- 3. ✅ **AGUARDAR** confirmação do usuário antes de `confirmar_projeto`
283
- 4. ❌ **NUNCA** assumir classificação sem mostrar ao usuário
284
- 5. ❌ **NUNCA** pular wizard, sempre fazer perguntas
285
- 6. ❌ **NUNCA** avançar automaticamente para Fase 2 (usar `/mcp-next`)
286
-
287
- ---
288
-
289
- ## Troubleshooting
290
-
291
- ### Erro: "estado.json not found"
292
-
293
- **Causa:** Tool MCP esperava estado mas projeto não foi criado ainda.
294
-
295
- **Solução:** Normal no primeiro `iniciar_projeto`. Ignorar e continuar.
296
-
297
- ### Classificação Parece Errada
298
-
299
- **Solução:** Perguntar ao usuário se quer reclassificar:
300
-
301
- ```
302
- A classificação parece adequada? Se quiser ajustar, diga:
303
- "reclassificar para [simples/medio/complexo]"
304
- ```