@maestro-ai/cli 1.0.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.
- package/README.md +161 -29
- package/content/guides/fases-mapeamento.md +35 -0
- package/content/guides/multi-ide.md +32 -0
- package/content/guides/playbook-orquestrador.md +45 -0
- package/content/rules/GEMINI.md +841 -0
- package/content/rules/RULES.md +835 -0
- package/content/rules/adapters/copilot.md +10 -0
- package/content/rules/adapters/cursor.md +10 -0
- package/content/rules/adapters/gemini.md +13 -0
- package/content/rules/adapters/windsurf.md +10 -0
- package/content/rules/quality-gates.md +43 -0
- package/content/rules/validation-rules.md +97 -0
- package/content/templates/estado-template.json +73 -0
- package/content/workflows/avancar-fase.md +84 -0
- package/content/workflows/brainstorm.md +22 -8
- package/content/workflows/continuar-fase.md +64 -0
- package/content/workflows/{mcp-debug.md → corrigir-bug.md} +30 -6
- package/content/workflows/iniciar-projeto.md +59 -0
- package/content/workflows/maestro.md +77 -0
- package/content/workflows/{mcp-feature.md → nova-feature.md} +81 -28
- package/content/workflows/{mcp-refactor.md → refatorar-codigo.md} +33 -10
- package/content/workflows/status-projeto.md +54 -0
- package/dist/commands/init.d.ts +2 -1
- package/dist/commands/init.js +99 -55
- package/dist/index.js +100 -3
- package/package.json +10 -4
- package/content/workflows/README-MCP.md +0 -363
- package/content/workflows/debug.md +0 -103
- package/content/workflows/mcp-next.md +0 -388
- package/content/workflows/mcp-start.md +0 -304
- package/content/workflows/mcp-status.md +0 -400
- package/content/workflows/preview.md +0 -81
- package/content/workflows/status.md +0 -86
- /package/content/workflows/{create.md → create-app.md} +0 -0
- /package/content/workflows/{enhance.md → melhorar-feature.md} +0 -0
- /package/content/workflows/{test.md → testar.md} +0 -0
- /package/content/workflows/{ui-ux-pro-max.md → ux-avancado.md} +0 -0
- /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
|
-
```
|