@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.
- package/README.md +84 -54
- 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/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 -2
- package/dist/commands/init.js +86 -74
- package/dist/index.js +94 -5
- 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,16 +1,29 @@
|
|
|
1
1
|
---
|
|
2
|
-
description:
|
|
2
|
+
description: Exploração estruturada de ideias, integrada ao estado do Maestro.
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
# /brainstorm -
|
|
5
|
+
# /brainstorm - Exploração Estruturada de Ideias
|
|
6
6
|
|
|
7
7
|
$ARGUMENTS
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
+
## Pré-requisitos e conexão com o Maestro
|
|
12
|
+
|
|
13
|
+
1. Execute `/maestro` para validar o estado atual e detectar fase/artefatos focos.
|
|
14
|
+
2. Carregue `.maestro/estado.json` para contextualizar o brainstorming com o problema/fase em andamento:
|
|
15
|
+
```javascript
|
|
16
|
+
const estado = lerJson('.maestro/estado.json');
|
|
17
|
+
const faseAtual = estado.fases?.[estado.faseAtual];
|
|
18
|
+
```
|
|
19
|
+
3. Registre no histórico (`estado.historico`) o evento `brainstorm_executado`, indicando o tópico e os caminhos escolhidos. Chame `salvarEstado(estado)` após concluir.
|
|
20
|
+
4. Use `content/guides/fases-mapeamento.md` para puxar especialistas/prompts relacionados (ex.: fase 1 → Gestão de Produto, fase 3 → UX).
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
11
24
|
## Purpose
|
|
12
25
|
|
|
13
|
-
This command activates BRAINSTORM mode for structured idea exploration. Use when you need to explore options before committing to an implementation.
|
|
26
|
+
This command activates BRAINSTORM mode for structured idea exploration. Use when you need to explore options before committing to an implementation and quer salvar as conclusões no estado do Maestro.
|
|
14
27
|
|
|
15
28
|
---
|
|
16
29
|
|
|
@@ -22,6 +35,7 @@ When `/brainstorm` is triggered:
|
|
|
22
35
|
- What problem are we solving?
|
|
23
36
|
- Who is the user?
|
|
24
37
|
- What constraints exist?
|
|
38
|
+
- Relacione com `faseAtual.nome` e `faseAtual.especialista` para manter alinhamento.
|
|
25
39
|
|
|
26
40
|
2. **Generate options**
|
|
27
41
|
- Provide at least 3 different approaches
|
|
@@ -34,7 +48,7 @@ When `/brainstorm` is triggered:
|
|
|
34
48
|
|
|
35
49
|
---
|
|
36
50
|
|
|
37
|
-
## Output Format
|
|
51
|
+
## Output Format (registrar em `docs/brainstorm/<slug>.md` e anexar ao estado)
|
|
38
52
|
|
|
39
53
|
```markdown
|
|
40
54
|
## 🧠 Brainstorm: [Topic]
|
|
@@ -97,10 +111,10 @@ What direction would you like to explore?
|
|
|
97
111
|
## Examples
|
|
98
112
|
|
|
99
113
|
```
|
|
100
|
-
/brainstorm authentication system
|
|
101
|
-
/brainstorm
|
|
102
|
-
/brainstorm
|
|
103
|
-
/brainstorm caching strategy
|
|
114
|
+
/brainstorm authentication system (fase 2 – requisitos)
|
|
115
|
+
/brainstorm redesign para dashboard (fase 3 – UX)
|
|
116
|
+
/brainstorm integrações com ERP (fase 6 – Integração)
|
|
117
|
+
/brainstorm caching strategy para escala
|
|
104
118
|
```
|
|
105
119
|
|
|
106
120
|
---
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Retoma a fase atual exatamente do ponto onde foi interrompida
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# 🔄 Workflow de Continuação - /continuar-fase
|
|
6
|
+
|
|
7
|
+
## 1. Ler estado atual
|
|
8
|
+
|
|
9
|
+
```javascript
|
|
10
|
+
const estado = lerJson('.maestro/estado.json');
|
|
11
|
+
const faseAtual = estado.fases[estado.faseAtual];
|
|
12
|
+
if (!faseAtual) throw new Error('Fase atual não encontrada');
|
|
13
|
+
|
|
14
|
+
function salvarEstado(state) {
|
|
15
|
+
escreverJson('.maestro/estado.json', state, { spaces: 2 });
|
|
16
|
+
}
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## 2. Identificar último artefato
|
|
20
|
+
|
|
21
|
+
- Use `faseAtual.artefatos` para encontrar o arquivo principal.
|
|
22
|
+
- Se vazio, referencie o template padrão da fase (ex.: `docs/01-produto/PRD.md`).
|
|
23
|
+
|
|
24
|
+
```javascript
|
|
25
|
+
const arquivo = faseAtual.artefatos?.slice(-1)[0] || faseAtual.entregavel;
|
|
26
|
+
const analise = analisarArquivo(arquivo);
|
|
27
|
+
/* analise = {
|
|
28
|
+
secoesPreenchidas,
|
|
29
|
+
secoesFaltantes,
|
|
30
|
+
percentualCompleto,
|
|
31
|
+
proximaSecao
|
|
32
|
+
} */
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## 3. Mensagem de retomada
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
📋 **Retomando Fase {estado.faseAtual}/{estado.totalFases} - {faseAtual.nome}**
|
|
39
|
+
- Especialista: {faseAtual.especialista}
|
|
40
|
+
- Artefato: {arquivo}
|
|
41
|
+
- Progresso: {analise.percentualCompleto}%
|
|
42
|
+
- Última ação: {analise.ultimaSecao}
|
|
43
|
+
- Próxima tarefa: {analise.proximaSecao}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## 4. Carregar contexto
|
|
47
|
+
|
|
48
|
+
1. Consulte `content/guides/fases-mapeamento.md` para mapear fase → especialista/prompt/template/skills.
|
|
49
|
+
2. Abra o especialista e prompt correspondentes. Ex.: fase 2 → `specialists/Especialista em Engenharia de Requisitos com IA.md` + `prompts/requisitos.md`.
|
|
50
|
+
3. Carregue os templates associados (ver tabela) e compare com o artefato atual para detectar seções faltantes.
|
|
51
|
+
4. Liste explicitamente na resposta quais arquivos serão atualizados (ex.: `docs/02-requisitos/requisitos.md`, `templates/matriz-rastreabilidade.md`).
|
|
52
|
+
|
|
53
|
+
## 5. Retomar execução
|
|
54
|
+
|
|
55
|
+
- Perguntar ao usuário se deseja continuar exatamente da próxima seção, revisar algo ou mudar o foco.
|
|
56
|
+
- Ao continuar, seguir checklist da fase (regras em `content/rules/validation-rules.md`).
|
|
57
|
+
|
|
58
|
+
## 6. Atualização de estado (manual)
|
|
59
|
+
|
|
60
|
+
Quando terminar a sessão:
|
|
61
|
+
- Atualizar `faseAtual.progresso` e `faseAtual.artefatos`.
|
|
62
|
+
- Registrar nota no histórico, se necessário.
|
|
63
|
+
- Atualizar `estado.metrica.ultimoComando = '/continuar-fase'`.
|
|
64
|
+
- Chamar `salvarEstado(estado)` para persistir.
|
|
@@ -2,12 +2,27 @@
|
|
|
2
2
|
description: Correção de bugs com fluxo estruturado (Reprodução → Análise → Fix → Regressão)
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
# /
|
|
5
|
+
# /corrigir-bug - Correção de Bug Maestro
|
|
6
6
|
|
|
7
7
|
$ARGUMENTS
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
+
## Integração com o Maestro
|
|
12
|
+
|
|
13
|
+
1. Execute `/maestro` antes para garantir que o estado está sincronizado e detectar bloqueios ativos.
|
|
14
|
+
2. Crie helpers mentais para ler e salvar estado:
|
|
15
|
+
```javascript
|
|
16
|
+
const estado = lerJson('.maestro/estado.json');
|
|
17
|
+
function salvarEstado(next) {
|
|
18
|
+
escreverJson('.maestro/estado.json', next, { spaces: 2 });
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
3. Sempre passe `estado_json` para qualquer tool MCP que for invocado e registre eventos no `estado.historico` (`acao: "bug_iniciado"`, `bug_id`, `severidade`).
|
|
22
|
+
4. Use `content/guides/fases-mapeamento.md` para carregar especialistas, prompts e templates de apoio (Debugging, DevOps, Testes, etc.).
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
11
26
|
## Objetivo
|
|
12
27
|
|
|
13
28
|
Corrigir bugs de forma estruturada usando fluxo de 4 fases do MCP Maestro, com análise de causa raiz e testes de regressão.
|
|
@@ -21,8 +36,8 @@ Corrigir bugs de forma estruturada usando fluxo de 4 fases do MCP Maestro, com a
|
|
|
21
36
|
- Erro que requer análise sistemática
|
|
22
37
|
|
|
23
38
|
**NÃO usar para:**
|
|
24
|
-
- Nova funcionalidade → Use `/
|
|
25
|
-
- Refatoração de código → Use `/
|
|
39
|
+
- Nova funcionalidade → Use `/nova-feature`
|
|
40
|
+
- Refatoração de código → Use `/refatorar-codigo`
|
|
26
41
|
|
|
27
42
|
---
|
|
28
43
|
|
|
@@ -71,12 +86,21 @@ Corrigir bugs de forma estruturada usando fluxo de 4 fases do MCP Maestro, com a
|
|
|
71
86
|
|
|
72
87
|
### Passo 2: Iniciar Fluxo de Debugging
|
|
73
88
|
|
|
89
|
+
> [!IMPORTANT]
|
|
90
|
+
> **Protocolo stateless:** carregar `.maestro/estado.json` do disco antes de qualquer chamada.
|
|
91
|
+
|
|
74
92
|
```typescript
|
|
93
|
+
const estadoJson = lerArquivo('.maestro/estado.json');
|
|
94
|
+
|
|
75
95
|
await mcp_maestro_corrigir_bug({
|
|
76
96
|
descricao: "[descrição fornecida]",
|
|
77
97
|
severidade: "[critica/alta/media/baixa]",
|
|
78
|
-
ticket_id: "[opcional: JIRA-123]"
|
|
98
|
+
ticket_id: "[opcional: JIRA-123]",
|
|
99
|
+
estado_json: estadoJson,
|
|
100
|
+
diretorio: process.cwd()
|
|
79
101
|
});
|
|
102
|
+
|
|
103
|
+
salvarEstado(registrarHistorico(estado, { acao: 'bug_iniciado', severidade }));
|
|
80
104
|
```
|
|
81
105
|
|
|
82
106
|
**MCP cria contexto de bug e retorna:**
|
|
@@ -315,7 +339,7 @@ Executar deploy? Use `/deploy [ambiente]`
|
|
|
315
339
|
### Exemplo 1: Bug Crítico (Duplicação de Pedido)
|
|
316
340
|
|
|
317
341
|
```
|
|
318
|
-
User: /
|
|
342
|
+
User: /corrigir-bug
|
|
319
343
|
|
|
320
344
|
AI: Descreva o bug:
|
|
321
345
|
|
|
@@ -382,7 +406,7 @@ AI: ✅ Fluxo iniciado (BUG-001) - Severidade CRÍTICA
|
|
|
382
406
|
### Exemplo 2: Bug de UI (Baixa Severidade)
|
|
383
407
|
|
|
384
408
|
```
|
|
385
|
-
User: /
|
|
409
|
+
User: /corrigir-bug Botão de logout desalinhado no mobile
|
|
386
410
|
|
|
387
411
|
AI: Severidade?
|
|
388
412
|
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Inicia novo projeto Maestro com classificação automática e setup inteligente
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# 🚀 Workflow de Iniciação - /iniciar-projeto
|
|
6
|
+
|
|
7
|
+
## 1. Coleta de informações
|
|
8
|
+
|
|
9
|
+
Pergunte ao usuário (ou utilize argumentos) para obter:
|
|
10
|
+
- Nome do projeto
|
|
11
|
+
- Descrição curta (problema, público, solução)
|
|
12
|
+
|
|
13
|
+
## 2. Classificação automática
|
|
14
|
+
|
|
15
|
+
1. Carregue o template em `templates/estado-template.json` e os fluxos definidos em `src/src/flows/types.ts` (funções `getFluxo`, `getFluxoComStitch`).
|
|
16
|
+
2. Use a função mental abaixo para sugerir configuração:
|
|
17
|
+
|
|
18
|
+
```javascript
|
|
19
|
+
const analise = classificarProjeto({ nome, descricao });
|
|
20
|
+
const fluxo = getFluxoComStitch(analise.complexidade, analise.usarStitch);
|
|
21
|
+
/* Retorna:
|
|
22
|
+
* - complexidade (simples/medio/complexo)
|
|
23
|
+
* - tier (7/13/17 fases)
|
|
24
|
+
* - especialistaInicial (fase 1 do fluxo escolhido)
|
|
25
|
+
*/
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Mostre a classificação e peça confirmação. Permita ajustes manuais caso o usuário solicite (ex.: "reclassificar para médio").
|
|
29
|
+
|
|
30
|
+
## 3. Geração do estado inicial
|
|
31
|
+
|
|
32
|
+
- Copie o template de estado e popule as fases com base em `fluxo.fases`.
|
|
33
|
+
- Garanta que cada fase traga `especialista`, `entregavel_esperado`, `scoreMinimo` e `gate_checklist` do fluxo MCP.
|
|
34
|
+
- Registre em `historico` o evento `projeto_iniciado` com justificativa da classificação.
|
|
35
|
+
- Defina helpers mentais para leitura/escrita:
|
|
36
|
+
```javascript
|
|
37
|
+
const estado = preencherTemplate(...);
|
|
38
|
+
function salvarEstado(state) {
|
|
39
|
+
escreverJson('.maestro/estado.json', state, { spaces: 2 });
|
|
40
|
+
}
|
|
41
|
+
salvarEstado(estado);
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## 4. Setup do contexto
|
|
45
|
+
|
|
46
|
+
- Copiar templates necessários para `docs/<fase>/...`
|
|
47
|
+
- Registrar especialista inicial (`Gestão de Produto` para fase 1)
|
|
48
|
+
- Preparar prompts e skills relevantes
|
|
49
|
+
|
|
50
|
+
## 5. Mensagem de saída
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
✅ Projeto iniciado!
|
|
54
|
+
- Fase 1/ {totalFases}: Produto
|
|
55
|
+
- Especialista: Gestão de Produto
|
|
56
|
+
- Entregável: docs/01-produto/PRD.md
|
|
57
|
+
|
|
58
|
+
Próximo passo: responda às perguntas do especialista para preencher o PRD.
|
|
59
|
+
```
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Workflow universal inteligente que detecta estado e toma a próxima ação
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# 🤖 Workflow Universal - /maestro
|
|
6
|
+
|
|
7
|
+
## Objetivo
|
|
8
|
+
|
|
9
|
+
Detectar automaticamente o estado do projeto Maestro, validar se o estado reflete os fluxos MCP (7/13/17 fases + Stitch) e decidir a ação adequada, respondendo no chat com contexto completo.
|
|
10
|
+
|
|
11
|
+
## Sincronização com os fluxos MCP
|
|
12
|
+
|
|
13
|
+
Antes de qualquer decisão:
|
|
14
|
+
|
|
15
|
+
1. Ler `.maestro/estado.json` **e** o template original em `packages/cli/content/templates/estado-template.json` para entender a estrutura completa.
|
|
16
|
+
2. Ler `src/src/flows/types.ts` para conhecer `FLUXO_SIMPLES`, `FLUXO_MEDIO`, `FLUXO_COMPLEXO` e a inserção opcional de Stitch (`getFluxoComStitch`).
|
|
17
|
+
3. Verificar se `estado.fases` segue a mesma ordem e quantidade de fases do fluxo correspondente. Se detectar divergências (fase faltando, numeração diferente), listar no resumo e sugerir ao usuário rodar `/iniciar-projeto` ou ajustar manualmente.
|
|
18
|
+
|
|
19
|
+
## Como funciona
|
|
20
|
+
|
|
21
|
+
1. **Ler estado** em `.maestro/estado.json` (se não existir, classificar como `novo_projeto`).
|
|
22
|
+
2. **Validar consistência** comparando `estado.fases` com o fluxo MCP adequado.
|
|
23
|
+
3. **Classificar estado** usando a função mental abaixo.
|
|
24
|
+
4. **Mapear ação** (`/iniciar-projeto`, `/continuar-fase`, `/avancar-fase`).
|
|
25
|
+
5. **Responder** com resumo e próxima ação sugerida.
|
|
26
|
+
|
|
27
|
+
```javascript
|
|
28
|
+
const estado = lerJson('.maestro/estado.json');
|
|
29
|
+
const fluxo = estado?.projeto
|
|
30
|
+
? getFluxoComStitch(estado.projeto.complexidade, estado.projeto.usarStitch)
|
|
31
|
+
: null;
|
|
32
|
+
|
|
33
|
+
if (!estado || !estado.projeto?.nome) {
|
|
34
|
+
return { status: 'novo_projeto', proximaAcao: '/iniciar-projeto' };
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const faseAtual = estado.fases[estado.faseAtual];
|
|
38
|
+
if (!faseAtual || faseAtual.status !== 'concluida') {
|
|
39
|
+
return {
|
|
40
|
+
status: 'fase_incompleta',
|
|
41
|
+
proximaAcao: '/continuar-fase',
|
|
42
|
+
fase: estado.faseAtual,
|
|
43
|
+
arquivoFoco: faseAtual?.artefatos?.slice(-1)[0] || fluxo?.fases?.find(f => f.numero === estado.faseAtual)?.entregavel_esperado,
|
|
44
|
+
divergenciasFluxo: compararComFluxo(estado.fases, fluxo?.fases)
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return {
|
|
49
|
+
status: 'pronto_para_avancar',
|
|
50
|
+
proximaAcao: '/avancar-fase',
|
|
51
|
+
fase: estado.faseAtual,
|
|
52
|
+
proximaFase: estado.faseAtual + 1,
|
|
53
|
+
divergenciasFluxo: compararComFluxo(estado.fases, fluxo?.fases)
|
|
54
|
+
};
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Template de resposta
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
📋 **Status Detectado:** {status}
|
|
61
|
+
- Projeto: {estado.projeto.nome}
|
|
62
|
+
- Fase atual: {estado.faseAtual}/{totalFases} - {faseAtual.nome}
|
|
63
|
+
- Especialista: {faseAtual.especialista}
|
|
64
|
+
- Arquivo foco: {arquivoFoco}
|
|
65
|
+
|
|
66
|
+
🎯 **Próxima ação sugerida:** {proximaAcao}
|
|
67
|
+
➡️ Execute o comando correspondente ou peça um ajuste específico.
|
|
68
|
+
|
|
69
|
+
{divergenciasFluxo?.length ? `⚠️ Divergências detectadas entre estado e fluxo MCP:
|
|
70
|
+
- ${divergenciasFluxo.join('\n- ')}` : ''}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Regras rápidas
|
|
74
|
+
|
|
75
|
+
- Sempre verificar se há bloqueios (`faseAtual.status === 'bloqueado'`) e destacar no resumo.
|
|
76
|
+
- Se detectar `novo_projeto`, **não** tentar gerar estado: apenas orientar o usuário a rodar `/iniciar-projeto`.
|
|
77
|
+
- Se o usuário preferir outra ação, respeitar e registrar no histórico (se aplicável).
|
|
@@ -2,12 +2,27 @@
|
|
|
2
2
|
description: Adicionar nova feature com fluxo estruturado (Análise → Implementação → Deploy)
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
# /
|
|
5
|
+
# /nova-feature - Nova Feature Maestro
|
|
6
6
|
|
|
7
7
|
$ARGUMENTS
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
+
## Pré-requisitos e integração com o Maestro
|
|
12
|
+
|
|
13
|
+
1. Execute `/maestro` para garantir que o estado esteja sincronizado com os fluxos MCP (7/13/17 + Stitch).
|
|
14
|
+
2. Carregue o estado antes de qualquer tool:
|
|
15
|
+
```javascript
|
|
16
|
+
const estado = lerJson('.maestro/estado.json');
|
|
17
|
+
function salvarEstado(novoEstado) {
|
|
18
|
+
escreverJson('.maestro/estado.json', novoEstado, { spaces: 2 });
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
3. Use `content/guides/fases-mapeamento.md` para alinhar especialistas, prompts e templates de suporte a features.
|
|
22
|
+
4. Todos os artefatos criados devem ficar dentro de `docs/features/FEATURE-ID/` e ser registrados em `estado.historico`.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
11
26
|
## Objetivo
|
|
12
27
|
|
|
13
28
|
Adicionar nova funcionalidade em projeto existente usando fluxo estruturado de 6 fases do MCP Maestro.
|
|
@@ -21,9 +36,9 @@ Adicionar nova funcionalidade em projeto existente usando fluxo estruturado de 6
|
|
|
21
36
|
- Feature que precisa de análise de impacto
|
|
22
37
|
|
|
23
38
|
**NÃO usar para:**
|
|
24
|
-
- Correção de bugs → Use `/
|
|
25
|
-
- Melhorias de código → Use `/
|
|
26
|
-
- Novo projeto → Use `/
|
|
39
|
+
- Correção de bugs → Use `/corrigir-bug`
|
|
40
|
+
- Melhorias de código → Use `/refatorar-codigo`
|
|
41
|
+
- Novo projeto → Use `/iniciar-projeto`
|
|
27
42
|
|
|
28
43
|
---
|
|
29
44
|
|
|
@@ -68,7 +83,7 @@ Adicionar nova funcionalidade em projeto existente usando fluxo estruturado de 6
|
|
|
68
83
|
**Se forneceu argumentos:**
|
|
69
84
|
|
|
70
85
|
```bash
|
|
71
|
-
/
|
|
86
|
+
/nova-feature Sistema de notificações push
|
|
72
87
|
```
|
|
73
88
|
|
|
74
89
|
→ Usar como descrição, pedir apenas impacto
|
|
@@ -77,13 +92,22 @@ Adicionar nova funcionalidade em projeto existente usando fluxo estruturado de 6
|
|
|
77
92
|
|
|
78
93
|
### Passo 2: Iniciar Fluxo de Feature
|
|
79
94
|
|
|
95
|
+
> [!IMPORTANT]
|
|
96
|
+
> **Protocolo stateless:** sempre envie `estado_json` carregado do disco para os tools MCP.
|
|
97
|
+
|
|
80
98
|
```typescript
|
|
99
|
+
const estadoJson = lerArquivo('.maestro/estado.json');
|
|
100
|
+
|
|
81
101
|
await mcp_maestro_nova_feature({
|
|
82
102
|
descricao: "[descrição fornecida]",
|
|
83
|
-
impacto_estimado: "[baixo/médio/alto]"
|
|
103
|
+
impacto_estimado: "[baixo/médio/alto]",
|
|
104
|
+
estado_json: estadoJson,
|
|
105
|
+
diretorio: process.cwd()
|
|
84
106
|
});
|
|
85
107
|
```
|
|
86
108
|
|
|
109
|
+
Após a resposta, atualize `estado.historico` com `acao: "feature_iniciada"`, registrando `feature_id` e impacto.
|
|
110
|
+
|
|
87
111
|
**MCP cria contexto separado para a feature e retorna:**
|
|
88
112
|
|
|
89
113
|
```json
|
|
@@ -146,25 +170,42 @@ Vamos começar. Que **entidades** ou **tabelas** serão afetadas?
|
|
|
146
170
|
|
|
147
171
|
### Passo 4: Avançar Entre Fases (Frontend-First)
|
|
148
172
|
|
|
149
|
-
**Usar `/
|
|
173
|
+
**Usar `/avancar-fase` (via `/maestro`) para conectar com o fluxo principal**
|
|
174
|
+
|
|
175
|
+
Quando estiver trabalhando dentro da feature, o acompanhamento das fases internas segue o mesmo padrão do Maestro. Utilize:
|
|
150
176
|
|
|
151
177
|
```
|
|
152
178
|
Fase 1: Análise ✅
|
|
153
|
-
↓ /
|
|
179
|
+
↓ /avancar-fase (passando o artefato docs/features/FEATURE-ID/01-impacto.md)
|
|
154
180
|
Fase 2: Requisitos ✅
|
|
155
|
-
↓ /
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
181
|
+
↓ /avancar-fase
|
|
182
|
+
...
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Caso precise apenas retomar o trabalho da feature antes de avançar, use `/continuar-fase` com o arquivo da subfase correspondente.
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
### Passo 4: Avançar Entre Fases (Frontend-First)
|
|
190
|
+
|
|
191
|
+
**Mapeie especialistas e templates** usando `guides/fases-mapeamento.md` para cada etapa abaixo e carregue os prompts adequados (ex.: Contrato API → especialista "Contrato de API").
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
Fase 1: Análise ✅
|
|
195
|
+
↓ /avancar-fase (ou `/maestro` → sugere avanço)
|
|
196
|
+
Fase 2: Requisitos ✅
|
|
197
|
+
↓ /avancar-fase
|
|
198
|
+
Fase 3: Design ✅ (gera contrato OpenAPI)
|
|
199
|
+
↓ /avancar-fase
|
|
159
200
|
Fase 4: Implementação
|
|
160
201
|
├─ US-001-CONT (Contrato) ✅
|
|
161
202
|
├─ US-001-FE (Frontend) 🔄 ← Paralelo
|
|
162
|
-
├─ US-001-BE (Backend) 🔄
|
|
203
|
+
├─ US-001-BE (Backend) 🔄 ← Paralelo
|
|
163
204
|
└─ INT-001 (Integração) ⏳ ← Após FE+BE
|
|
164
|
-
↓ /
|
|
205
|
+
↓ /avancar-fase
|
|
165
206
|
Fase 5: Testes ✅
|
|
166
|
-
↓ /
|
|
167
|
-
Fase 6: Deploy ✅
|
|
207
|
+
↓ /avancar-fase
|
|
208
|
+
Fase 6: Deploy ✅ (encerra feature e atualiza estado)
|
|
168
209
|
```
|
|
169
210
|
|
|
170
211
|
**Protocolo Frontend-First:**
|
|
@@ -191,29 +232,41 @@ Fase 6: Deploy ✅
|
|
|
191
232
|
**Na Fase 4 (Implementação):**
|
|
192
233
|
|
|
193
234
|
```typescript
|
|
235
|
+
const estadoJson = lerArquivo('.maestro/estado.json');
|
|
236
|
+
|
|
194
237
|
// Contrato
|
|
195
238
|
await mcp_maestro_implementar_historia({
|
|
196
239
|
historia_id: "US-001-CONT",
|
|
197
|
-
modo: "iniciar"
|
|
240
|
+
modo: "iniciar",
|
|
241
|
+
estado_json: estadoJson,
|
|
242
|
+
diretorio: process.cwd()
|
|
198
243
|
});
|
|
199
244
|
|
|
200
245
|
// Frontend (pode iniciar em paralelo após contrato)
|
|
201
246
|
await mcp_maestro_implementar_historia({
|
|
202
247
|
historia_id: "US-001-FE",
|
|
203
|
-
modo: "iniciar"
|
|
248
|
+
modo: "iniciar",
|
|
249
|
+
estado_json: estadoJson,
|
|
250
|
+
diretorio: process.cwd()
|
|
204
251
|
});
|
|
205
252
|
|
|
206
253
|
// Backend (pode iniciar em paralelo após contrato)
|
|
207
254
|
await mcp_maestro_implementar_historia({
|
|
208
255
|
historia_id: "US-001-BE",
|
|
209
|
-
modo: "iniciar"
|
|
256
|
+
modo: "iniciar",
|
|
257
|
+
estado_json: estadoJson,
|
|
258
|
+
diretorio: process.cwd()
|
|
210
259
|
});
|
|
211
260
|
|
|
212
261
|
// Integração (somente após FE e BE finalizados)
|
|
213
262
|
await mcp_maestro_implementar_historia({
|
|
214
263
|
historia_id: "INT-001",
|
|
215
|
-
modo: "iniciar"
|
|
264
|
+
modo: "iniciar",
|
|
265
|
+
estado_json: estadoJson,
|
|
266
|
+
diretorio: process.cwd()
|
|
216
267
|
});
|
|
268
|
+
|
|
269
|
+
salvarEstado(atualizarHistorico(estado, { acao: 'feature_historia_iniciada', historia: 'INT-001' }));
|
|
217
270
|
```
|
|
218
271
|
|
|
219
272
|
---
|
|
@@ -223,7 +276,7 @@ await mcp_maestro_implementar_historia({
|
|
|
223
276
|
### Exemplo 1: Feature Simples (Impacto Baixo)
|
|
224
277
|
|
|
225
278
|
```
|
|
226
|
-
User: /
|
|
279
|
+
User: /nova-feature Adicionar filtro de data na listagem de pedidos
|
|
227
280
|
|
|
228
281
|
AI: Qual o impacto estimado? (baixo/médio/alto)
|
|
229
282
|
|
|
@@ -244,13 +297,13 @@ AI: ✅ Fluxo de Feature Iniciado (FEAT-001)
|
|
|
244
297
|
|
|
245
298
|
User: Sim
|
|
246
299
|
|
|
247
|
-
AI: [Avança para Fase 2
|
|
300
|
+
AI: [Avança para Fase 2 executando `/maestro` → `/avancar-fase`]
|
|
248
301
|
```
|
|
249
302
|
|
|
250
303
|
### Exemplo 2: Feature Complexa (Impacto Alto)
|
|
251
304
|
|
|
252
305
|
```
|
|
253
|
-
User: /
|
|
306
|
+
User: /nova-feature Sistema de notificações push em tempo real
|
|
254
307
|
|
|
255
308
|
AI: Qual o impacto estimado?
|
|
256
309
|
|
|
@@ -290,10 +343,10 @@ AI: ✅ Fluxo de Feature Iniciado (FEAT-002)
|
|
|
290
343
|
## Comandos Relacionados
|
|
291
344
|
|
|
292
345
|
```
|
|
293
|
-
/
|
|
294
|
-
/
|
|
295
|
-
/
|
|
296
|
-
/
|
|
346
|
+
/nova-feature [descrição] → Inicia fluxo de feature alinhado ao estado
|
|
347
|
+
/continuar-fase → Retoma etapa corrente da feature
|
|
348
|
+
/avancar-fase → Valida gate e registra próxima fase
|
|
349
|
+
/corrigir-bug → Se surgir bug durante a feature
|
|
297
350
|
```
|
|
298
351
|
|
|
299
352
|
---
|
|
@@ -369,7 +422,7 @@ FEAT-001: Sistema de Notificações (Épico)
|
|
|
369
422
|
├─ FEAT-001-B: Frontend (UI)
|
|
370
423
|
└─ FEAT-001-C: Integração (Push)
|
|
371
424
|
|
|
372
|
-
Implementar um por vez com
|
|
425
|
+
Implementar um por vez com `/nova-feature`
|
|
373
426
|
```
|
|
374
427
|
|
|
375
428
|
### Conflito com Feature em Andamento
|
|
@@ -2,12 +2,28 @@
|
|
|
2
2
|
description: Refatoração estruturada de código (Análise → Testes → Refactor → Validação)
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
# /
|
|
5
|
+
# /refatorar-codigo - Refatoração Maestro
|
|
6
6
|
|
|
7
7
|
$ARGUMENTS
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
+
## Integração obrigatória com o Maestro
|
|
12
|
+
|
|
13
|
+
1. **Sincronize o estado** executando `/maestro` antes de começar. Garanta que não há gates bloqueados.
|
|
14
|
+
2. **Carregue o estado e defina helpers**:
|
|
15
|
+
```javascript
|
|
16
|
+
const estado = lerJson('.maestro/estado.json');
|
|
17
|
+
function salvarEstado(novoEstado) {
|
|
18
|
+
escreverJson('.maestro/estado.json', novoEstado, { spaces: 2 });
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
3. Sempre passe `estado_json` ao chamar qualquer tool MCP (`mcp_maestro_refatorar`, `mcp_maestro_avancar_refatoracao`, etc.).
|
|
22
|
+
4. Atualize `estado.historico` com eventos como `refatoracao_iniciada`, `refatoracao_passo_concluido` e `refatoracao_finalizada`, armazenando `refactor_id` e arquivos afetados.
|
|
23
|
+
5. Use `content/guides/fases-mapeamento.md` para escolher especialistas de apoio (Arquitetura, Performance, Testes) conforme o foco da refatoração.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
11
27
|
## Objetivo
|
|
12
28
|
|
|
13
29
|
Refatorar código de forma segura e estruturada usando fluxo de 5 fases do MCP Maestro, com testes de caracterização e validação contínua.
|
|
@@ -22,8 +38,8 @@ Refatorar código de forma segura e estruturada usando fluxo de 5 fases do MCP M
|
|
|
22
38
|
- Migrar para novo padrão ou arquitetura
|
|
23
39
|
|
|
24
40
|
**NÃO usar para:**
|
|
25
|
-
- Adicionar funcionalidade → Use `/
|
|
26
|
-
- Corrigir bugs → Use `/
|
|
41
|
+
- Adicionar funcionalidade → Use `/nova-feature`
|
|
42
|
+
- Corrigir bugs → Use `/corrigir-bug`
|
|
27
43
|
|
|
28
44
|
---
|
|
29
45
|
|
|
@@ -75,10 +91,16 @@ Refatorar código de forma segura e estruturada usando fluxo de 5 fases do MCP M
|
|
|
75
91
|
### Passo 2: Iniciar Fluxo de Refatoração
|
|
76
92
|
|
|
77
93
|
```typescript
|
|
94
|
+
const estadoJson = lerArquivo('.maestro/estado.json');
|
|
95
|
+
|
|
78
96
|
await mcp_maestro_refatorar({
|
|
79
97
|
area: "[área fornecida]",
|
|
80
|
-
motivo: "[motivo]"
|
|
98
|
+
motivo: "[motivo]",
|
|
99
|
+
estado_json: estadoJson,
|
|
100
|
+
diretorio: process.cwd()
|
|
81
101
|
});
|
|
102
|
+
|
|
103
|
+
salvarEstado(registrarHistorico(estado, { acao: 'refatoracao_iniciada', area, motivo }));
|
|
82
104
|
```
|
|
83
105
|
|
|
84
106
|
**MCP cria contexto e retorna:**
|
|
@@ -397,7 +419,7 @@ Use: `/deploy production`
|
|
|
397
419
|
### Exemplo 1: Refatorar Serviço Complexo
|
|
398
420
|
|
|
399
421
|
```
|
|
400
|
-
User: /
|
|
422
|
+
User: /refatorar-codigo
|
|
401
423
|
|
|
402
424
|
AI: Qual área deseja refatorar?
|
|
403
425
|
|
|
@@ -435,7 +457,7 @@ AI: [Fase 2: Cria testes de caracterização]
|
|
|
435
457
|
|
|
436
458
|
Todos passando. Pronto para refatorar!
|
|
437
459
|
|
|
438
|
-
User: /
|
|
460
|
+
User: /avancar-fase (ou `/maestro` para validar e avançar)
|
|
439
461
|
|
|
440
462
|
AI: [Fase 3: Refatoração]
|
|
441
463
|
|
|
@@ -463,7 +485,7 @@ AI: [Fase 3: Refatoração]
|
|
|
463
485
|
### Exemplo 2: Migração de Padrão
|
|
464
486
|
|
|
465
487
|
```
|
|
466
|
-
User: /
|
|
488
|
+
User: /refatorar-codigo Migrar de callback para async/await
|
|
467
489
|
|
|
468
490
|
AI: Motivo?
|
|
469
491
|
|
|
@@ -496,9 +518,10 @@ AI: ✅ Refactor initiated
|
|
|
496
518
|
## Comandos Relacionados
|
|
497
519
|
|
|
498
520
|
```
|
|
499
|
-
/
|
|
500
|
-
/
|
|
501
|
-
/
|
|
521
|
+
/refatorar-codigo [área] → Inicia refatoração integrada ao estado
|
|
522
|
+
/continuar-fase → Retoma passo atual (usa análise do artefato)
|
|
523
|
+
/avancar-fase → Valida gate pós-refatoração
|
|
524
|
+
/status-projeto → Ver progresso e métricas
|
|
502
525
|
```
|
|
503
526
|
|
|
504
527
|
---
|