@maestro-ai/cli 1.1.0 → 1.3.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 +34 -0
- package/content/guides/guide-brainstorm.md +38 -0
- package/content/guides/guide-orquestracao.md +45 -0
- package/content/guides/guide-testes.md +51 -0
- package/content/guides/guide-troubleshooting.md +43 -0
- package/content/guides/guide-validacao.md +50 -0
- package/content/guides/internal/automated-events.md +27 -0
- package/content/guides/internal/automated-map.md +56 -0
- package/content/guides/internal/automated-stitch.md +51 -0
- package/content/guides/internal/automated-system.md +46 -0
- package/content/guides/mapa-sistema.md +86 -0
- package/content/guides/multi-ide.md +32 -0
- package/content/guides/playbook-orquestrador.md +45 -0
- package/content/guides/workflows-avancados.md +62 -0
- package/content/rules/GEMINI.md +70 -762
- package/content/rules/RULES.md +71 -761
- package/content/rules/complexity-rules.md +43 -0
- package/content/rules/quality-gates.md +55 -0
- package/content/rules/security-rules.md +40 -0
- package/content/rules/structure-rules.md +63 -0
- package/content/rules/validation-rules.md +56 -0
- package/content/templates/estado-template.json +73 -0
- package/content/workflows/00-maestro.md +78 -0
- package/content/workflows/01-iniciar-projeto.md +59 -0
- package/content/workflows/02-avancar-fase.md +72 -0
- package/content/workflows/03-continuar-fase.md +64 -0
- package/content/workflows/04-implementar-historia.md +64 -0
- package/content/workflows/05-nova-feature.md +39 -0
- package/content/workflows/06-corrigir-bug.md +34 -0
- package/content/workflows/07-refatorar-codigo.md +34 -0
- package/dist/commands/init.d.ts +2 -2
- package/dist/commands/init.js +89 -76
- package/dist/index.js +94 -5
- package/package.json +10 -4
- package/content/workflows/README-MCP.md +0 -363
- package/content/workflows/brainstorm.md +0 -113
- package/content/workflows/create.md +0 -59
- package/content/workflows/debug.md +0 -103
- package/content/workflows/enhance.md +0 -63
- package/content/workflows/mcp-debug.md +0 -506
- package/content/workflows/mcp-feature.md +0 -385
- package/content/workflows/mcp-gate.md +0 -413
- package/content/workflows/mcp-next.md +0 -388
- package/content/workflows/mcp-refactor.md +0 -600
- package/content/workflows/mcp-start.md +0 -304
- package/content/workflows/mcp-status.md +0 -400
- package/content/workflows/orchestrate.md +0 -237
- package/content/workflows/plan.md +0 -89
- package/content/workflows/preview.md +0 -81
- package/content/workflows/status.md +0 -86
- package/content/workflows/test.md +0 -144
- package/content/workflows/ui-ux-pro-max.md +0 -296
- /package/content/workflows/{deploy.md → 08-deploy-projeto.md} +0 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# 🧠 Regras de Classificação de Complexidade
|
|
2
|
+
|
|
3
|
+
> Este arquivo define a lógica para analisar o **PRD (Produto)** e calcular automaticamente a complexidade do projeto.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. Tabela de Pontuação
|
|
8
|
+
|
|
9
|
+
**Instrução:** Leia o conteúdo do `docs/01-produto/PRD.md` e some os pontos baseados nos critérios abaixo.
|
|
10
|
+
|
|
11
|
+
| Critério | O que buscar (Regex/Keywords) | Pontos |
|
|
12
|
+
| :--- | :--- | :--- |
|
|
13
|
+
| **1. Entidades de Domínio** | Conte substantivos únicos relevantes (ex: Usuário, Pedido, Produto).<br>- `> 15 entidades`: **+3**<br>- `> 8 entidades`: **+2**<br>- `Até 8`: **+1** | `___` |
|
|
14
|
+
| **2. Integrações Externas** | Palavras-chave: `API`, `integração`, `webhook`, `pagamento`, `stripe`, `auth0`, `firebase`.<br>- Se encontrar qualquer uma: **+3** | `___` |
|
|
15
|
+
| **3. Requisitos de Segurança** | Palavras-chave: `LGPD`, `GDPR`, `criptografia`, `JWT`, `permissões`, `roles`.<br>- Se encontrar qualquer uma: **+3** | `___` |
|
|
16
|
+
| **4. Escala e Performance** | Palavras-chave: `milhares`, `milhões`, `alta disponibilidade`, `concorrência`, `cluster`.<br>- Se encontrar qualquer uma: **+3** | `___` |
|
|
17
|
+
| **5. Multi-tenancy / B2B** | Palavras-chave: `multi-tenant`, `workspace`, `organização`, `saas`.<br>- Se encontrar qualquer uma: **+2** | `___` |
|
|
18
|
+
| **6. Cronograma Estimado** | Verifique seções de tempo.<br>- `> 6 meses`: **+3**<br>- `> 2 meses`: **+2**<br>- `Curto prazo`: **+1** | `___` |
|
|
19
|
+
| **7. Regras de Negócio** | Frequência de palavras: `regra`, `validação`, `fluxo`, `condição`.<br>- `Alta densidade`: **+3**<br>- `Média densidade`: **+2** | `___` |
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 2. Tabela de Decisão (Nível)
|
|
24
|
+
|
|
25
|
+
**Instrução:** Use a soma total dos pontos para definir o nível e o fluxo do projeto.
|
|
26
|
+
|
|
27
|
+
| Pontuação Total | Nível Definido | Total de Fases do Fluxo |
|
|
28
|
+
| :--- | :--- | :--- |
|
|
29
|
+
| **0 a 8 pontos** | **🥉 Simples** | **7 Fases** (Produto → Requisitos → UX → Arq → Backlog → Front → Back) |
|
|
30
|
+
| **9 a 15 pontos** | **🥈 Médio** | **13 Fases** (Adiciona: Modelo, Banco, Segurança, Contrato, Testes, Integração) |
|
|
31
|
+
| **16+ pontos** | **🥇 Complexo** | **17 Fases** (Adiciona: Arq. Avançada, Performance, Observabilidade, Deploy Final) |
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 3. Ação Pós-Classificação (Apenas Fase 1)
|
|
36
|
+
|
|
37
|
+
Se você acabou de concluir a Fase 1 (Produto):
|
|
38
|
+
1. **Calcule** a pontuação.
|
|
39
|
+
2. **Determine** o nível.
|
|
40
|
+
3. **Atualize** o arquivo `.maestro/estado.json` com:
|
|
41
|
+
* `"nivel": "simples" | "medio" | "complexo"`
|
|
42
|
+
* `"total_fases": 7 | 11 | 15`
|
|
43
|
+
* `"pontuacao_complexidade": {numero}`
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# 🔐 Quality Gates e Estruturas
|
|
2
|
+
|
|
3
|
+
> Este arquivo é a fonte da verdade para validar a qualidade e estrutura dos entregáveis.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 🏗️ 1. Validação Estrutural (Obrigatória)
|
|
8
|
+
|
|
9
|
+
**Instrução:** Para cada fase, consulte o arquivo `rules/structure-rules.md`. Ele contém a tabela exata de regexes obrigatórias.
|
|
10
|
+
|
|
11
|
+
| Fase | Arquivo Alvo | Referência |
|
|
12
|
+
|------|--------------|------------|
|
|
13
|
+
| **Todas as Fases** | `docs/XX-nome/arquivo.md` | Consulte `rules/structure-rules.md` |
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 🧠 2. Validação Lógica (Semântica)
|
|
18
|
+
|
|
19
|
+
**Instrução:** Leia o conteúdo e aplique a lógica de verificação da transição atual.
|
|
20
|
+
|
|
21
|
+
### Transição: Produto → Requisitos
|
|
22
|
+
* **Contexto:** Comparar `PRD.md` vs `requisitos.md`.
|
|
23
|
+
* **Regra Lógica:**
|
|
24
|
+
* `PARA CADA` funcionalidade no MVP do PRD:
|
|
25
|
+
* `VERIFIQUE SE` existe um requisito funcional correspondente em `requisitos.md`.
|
|
26
|
+
* `SE` cobertura < 100%:
|
|
27
|
+
* ❌ Falha: Cite as funcionalidades faltantes.
|
|
28
|
+
|
|
29
|
+
### Transição: Requisitos → UX Design
|
|
30
|
+
* **Contexto:** Ler `requisitos.md` vs `design-doc.md`.
|
|
31
|
+
* **Regra Lógica:**
|
|
32
|
+
* `PARA CADA` requisito funcional crítico:
|
|
33
|
+
* `VERIFIQUE SE` existe um fluxo de usuário ou tela descrita no Design Doc.
|
|
34
|
+
|
|
35
|
+
### Transição: Arquitetura → Banco de Dados
|
|
36
|
+
* **Contexto:** Ler `arquitetura.md` e `modelo-dominio.md`.
|
|
37
|
+
* **Regra Lógica:**
|
|
38
|
+
* `VERIFIQUE SE` todas as entidades listadas no Modelo de Domínio possuem tabelas/coleções correspondentes no Design de Banco.
|
|
39
|
+
|
|
40
|
+
### Transição: Contrato API → Implementação (Backend/Frontend)
|
|
41
|
+
* **Contexto:** Ler `openapi.yaml` vs Código.
|
|
42
|
+
* **Regra Lógica:**
|
|
43
|
+
* `VERIFIQUE SE` todos os endpoints definidos no contrato existem no código.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 🚦 3. Tabela de Decisão (Score)
|
|
48
|
+
|
|
49
|
+
Use em conjunto com `validation-rules.md` para determinar o Tier.
|
|
50
|
+
|
|
51
|
+
| Score Calculado | Ação do Agente |
|
|
52
|
+
| :--- | :--- |
|
|
53
|
+
| **100%** | ✅ **APROVAR**: Executar o avanço de fase. |
|
|
54
|
+
| **70% - 99%** | ⚠️ **ALERTA**: Listar pendências, mas permitir avanço (pergunte ao usuário). |
|
|
55
|
+
| **< 70%** | 🛑 **BLOQUEAR**: Não avance. Liste erros e pare. |
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# 🛡️ Regras de Análise de Segurança (Code Review)
|
|
2
|
+
|
|
3
|
+
> Estas regras devem ser verificadas manualmente pela IA ao ler arquivos de código, especialmente antes de commits ou deploys.
|
|
4
|
+
|
|
5
|
+
Baseado no **OWASP Top 10**.
|
|
6
|
+
|
|
7
|
+
## 🔴 Crítico (Bloqueante)
|
|
8
|
+
|
|
9
|
+
| ID | Regra | O que buscar (Padrão/Regex) | Correção Sugerida |
|
|
10
|
+
| :--- | :--- | :--- | :--- |
|
|
11
|
+
| **A01-ADMIN** | **Bypass de Admin** | `isAdmin\s*[=!]=\s*(true\|false)` ou check confiavel só no frontend | Verificar roles apenas no Backend/Token. |
|
|
12
|
+
| **A02-SECRET** | **Secret Hardcoded** | `(password\|secret\|key\|token)\s*[:=]\s*['"][^'"]{8,}['"]` | Mover para variáveis de ambiente (`process.env`). |
|
|
13
|
+
| **A03-SQLI** | **SQL Injection** | `query\("SELECT ... " + var` (Concatenação direta) | Usar Prepared Statements ou ORM. |
|
|
14
|
+
| **A03-EVAL** | **Uso de Eval** | `eval\(` | **Remover**. Usar JSON.parse ou alternativas seguras. |
|
|
15
|
+
|
|
16
|
+
## 🟠 Alto (Requer Correção)
|
|
17
|
+
|
|
18
|
+
| ID | Regra | Padrão Visual | Correção |
|
|
19
|
+
| :--- | :--- | :--- | :--- |
|
|
20
|
+
| **A02-WEAK** | **Criptografia Fraca** | `md5(`, `sha1(` | Usar `bcrypt`, `argon2` ou `SHA-256`. |
|
|
21
|
+
| **A07-XSS** | **XSS (HTML Injection)** | `innerHTML =`, `dangerouslySetInnerHTML` | Usar sanitização (DOMPurify) ou textContent. |
|
|
22
|
+
| **A01-ID-REF** | **Exposição de ID** | URL com ID incremental `/user/123` sem auth check | Implementar verificação de permissão por recurso. |
|
|
23
|
+
|
|
24
|
+
## 🟡 Médio (Sugestão de Melhoria)
|
|
25
|
+
|
|
26
|
+
| ID | Regra | Padrão Visual | Correção |
|
|
27
|
+
| :--- | :--- | :--- | :--- |
|
|
28
|
+
| **SEC-LOG** | **Log em Produção** | `console.log(` | Remover ou usar `logger.debug()`. |
|
|
29
|
+
| **SEC-TODO** | **TODO de Segurança** | `// TODO: security`, `// TODO: fix auth` | Resolver antes do merge. |
|
|
30
|
+
| **SEC-CORS** | **CORS Permissivo** | `Access-Control-Allow-Origin: *` | Restringir domínios. |
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## 🚦 Como Usar
|
|
35
|
+
|
|
36
|
+
Durante a fase de **Implementação** ou **Refatoração**:
|
|
37
|
+
|
|
38
|
+
1. Ao gerar código, faça uma auto-verificação rápida usando esta tabela.
|
|
39
|
+
2. Se encontrar um padrão **Crítico**, corrija imediatamente.
|
|
40
|
+
3. Se encontrar um padrão **Alto**, avise o usuário e sugira a correção.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# 📏 Regras de Validação Estrutural
|
|
2
|
+
|
|
3
|
+
> Estas regras definem as SEÇÕES OBRIGATÓRIAS (Headers) que devem existir nos documentos para cada fase.
|
|
4
|
+
> A validação deve ser feita via Regex no Header Markdown (`# ...` ou `## ...`).
|
|
5
|
+
|
|
6
|
+
## 1. Produto (PRD)
|
|
7
|
+
|
|
8
|
+
| Seção Obrigatória | Regex Sugerida |
|
|
9
|
+
| :--- | :--- |
|
|
10
|
+
| **Problema** | `^#{1,2}\s*(problema|problem)` |
|
|
11
|
+
| **MVP/Escopo** | `^#{1,2}\s*(funcionalidade|feature|mvp|escopo)` |
|
|
12
|
+
| **Usuários** (Base+) | `^#{1,2}\s*(usuário|usuario|user|persona)` |
|
|
13
|
+
| **Métricas** (Base+) | `^#{1,2}\s*(métrica|metrica|sucesso|kpi)` |
|
|
14
|
+
|
|
15
|
+
## 2. Requisitos
|
|
16
|
+
|
|
17
|
+
| Seção Obrigatória | Regex Sugerida |
|
|
18
|
+
| :--- | :--- |
|
|
19
|
+
| **Funcionais** | `^#{1,2}\s*(requisito|requirement|rf\d|funcional)` |
|
|
20
|
+
| **Não-Funcionais** | `^#{1,2}\s*(não.?funcional|nfr|rnf|performance|segurança)` |
|
|
21
|
+
|
|
22
|
+
## 3. UX Design
|
|
23
|
+
|
|
24
|
+
| Seção Obrigatória | Regex Sugerida |
|
|
25
|
+
| :--- | :--- |
|
|
26
|
+
| **Jornadas** | `^#{1,2}\s*(jornada|journey|fluxo|flow)` |
|
|
27
|
+
| **Wireframes** | `^#{1,2}\s*(wireframe|protótipo|prototipo|tela|screen)` |
|
|
28
|
+
|
|
29
|
+
## 4. Banco de Dados
|
|
30
|
+
|
|
31
|
+
| Seção Obrigatória | Regex Sugerida |
|
|
32
|
+
| :--- | :--- |
|
|
33
|
+
| **Schema/Tabelas** | `^#{1,2}\s*(tabela|table|schema|modelo)` |
|
|
34
|
+
|
|
35
|
+
## 5. Arquitetura
|
|
36
|
+
|
|
37
|
+
| Seção Obrigatória | Regex Sugerida |
|
|
38
|
+
| :--- | :--- |
|
|
39
|
+
| **Diagrama (C4)** | `^#{1,2}\s*(c4|diagrama|arquitetura|architecture)` |
|
|
40
|
+
| **Stack** | `^#{1,2}\s*(stack|tecnologia|technology)` |
|
|
41
|
+
| **Decisões** | `^#{1,2}\s*(adr|decisão|decision)` |
|
|
42
|
+
|
|
43
|
+
## 6. Testes
|
|
44
|
+
|
|
45
|
+
| Seção Obrigatória | Regex Sugerida |
|
|
46
|
+
| :--- | :--- |
|
|
47
|
+
| **Estratégia** | `^#{1,2}\s*(estratégia|strategy|plano)` |
|
|
48
|
+
| **Casos de Teste** | `^#{1,2}\s*(caso|case|cenário|scenario)` |
|
|
49
|
+
|
|
50
|
+
## 7. Contratos API
|
|
51
|
+
|
|
52
|
+
| Seção Obrigatória | Regex Sugerida |
|
|
53
|
+
| :--- | :--- |
|
|
54
|
+
| **Endpoints** | `^#{1,2}\s*(endpoint|api|openapi|swagger)` |
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## ⚙️ Instrução de Validação
|
|
59
|
+
|
|
60
|
+
Ao validar um entregável:
|
|
61
|
+
1. Verifique a fase.
|
|
62
|
+
2. Busque cada **Header** obrigatório usando a regex (case insensitive).
|
|
63
|
+
3. Se faltar algum, o Gate falha.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# 📏 Regras de Classificação e Score
|
|
2
|
+
|
|
3
|
+
> Definição dos critérios de aprovação baseados na complexidade do projeto.
|
|
4
|
+
|
|
5
|
+
## Tiers de Projeto (Nível de Rigor)
|
|
6
|
+
|
|
7
|
+
Consulte `.maestro/estado.json` para saber o nível do seu projeto.
|
|
8
|
+
|
|
9
|
+
### 🥉 Tier Essencial (POC, Script)
|
|
10
|
+
* **Foco**: Funciona?
|
|
11
|
+
* **Critérios de Check**:
|
|
12
|
+
1. Código executa sem erro fatal?
|
|
13
|
+
2. Objetivo principal foi atingido?
|
|
14
|
+
3. Existe um README.md básico?
|
|
15
|
+
|
|
16
|
+
### 🥈 Tier Base (Produto Interno, MVP)
|
|
17
|
+
* **Foco**: Qualidade Mínima
|
|
18
|
+
* **Critérios de Check (acumulativo)**:
|
|
19
|
+
1. Critérios do Tier Essencial ✅
|
|
20
|
+
2. Testes unitários existem (mesmo que poucos)?
|
|
21
|
+
3. Não há erros visíveis de Lint/Typescript?
|
|
22
|
+
4. Documentação técnica existe (`docs/`)?
|
|
23
|
+
5. Validação de dados (ex: Zod) implementada?
|
|
24
|
+
|
|
25
|
+
### 🥇 Tier Avançado (SaaS, Fintech, Alta Escala)
|
|
26
|
+
* **Foco**: Robustez e Segurança
|
|
27
|
+
* **Critérios de Check (acumulativo)**:
|
|
28
|
+
1. Critérios do Tier Base ✅
|
|
29
|
+
2. Segurança: Tratamento de erros e dados sensíveis?
|
|
30
|
+
3. Observabilidade: Logs estruturados previstos?
|
|
31
|
+
4. Testes de Integração/E2E previstos?
|
|
32
|
+
5. Arquitetura desacoplada (SOLID/Clean Arch)?
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 🧮 Como Calcular o Score (Manual)
|
|
37
|
+
|
|
38
|
+
Ao realizar o checklist do Tier correspondente:
|
|
39
|
+
|
|
40
|
+
1. Conte o número total de perguntas do checklist (ex: 5 critérios).
|
|
41
|
+
2. Conte quantas foram respondidas com "SIM" (ex: 4).
|
|
42
|
+
3. Aplique a fórmula:
|
|
43
|
+
```
|
|
44
|
+
Score = (Itens OK / Total) * 100
|
|
45
|
+
```
|
|
46
|
+
*Exemplo: (4 / 5) * 100 = 80*
|
|
47
|
+
|
|
48
|
+
## 🚦 Tabela de Decisão
|
|
49
|
+
|
|
50
|
+
| Score Calculado | Ação Recomendada | Comando |
|
|
51
|
+
| :--- | :--- | :--- |
|
|
52
|
+
| **100** | Aprovado | ✅ Pode executar `/02-avancar-fase` |
|
|
53
|
+
| **70 a 99** | Aprovado com Ressalvas | ⚠️ Pode avançar, mas liste as pendências |
|
|
54
|
+
| **0 a 69** | **BLOQUEADO** | 🛑 NÃO avance. Solicite correções. |
|
|
55
|
+
|
|
56
|
+
> **Nota**: Se houver um bloqueio (Score < 70) mas o usuário EXIGIR avançar, trate como "Aprovação Manual" e peça uma justificativa.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"projeto": {
|
|
3
|
+
"nome": "[Nome do Projeto]",
|
|
4
|
+
"descricao": "[Resumo do projeto]",
|
|
5
|
+
"tipo": "[poc|script|internal|product]",
|
|
6
|
+
"complexidade": "[simples|medio|complexo]",
|
|
7
|
+
"tier": "[essencial|base|avancado]",
|
|
8
|
+
"usarStitch": false,
|
|
9
|
+
"criadoEm": "[ISO datetime]",
|
|
10
|
+
"atualizadoEm": "[ISO datetime]"
|
|
11
|
+
},
|
|
12
|
+
"faseAtual": {
|
|
13
|
+
"numero": 1,
|
|
14
|
+
"nome": "Produto",
|
|
15
|
+
"status": "in_progress",
|
|
16
|
+
"especialista": "Gestão de Produto",
|
|
17
|
+
"score": null,
|
|
18
|
+
"scoreMinimo": 75,
|
|
19
|
+
"iniciadoEm": "[ISO datetime]",
|
|
20
|
+
"ultimoUpdate": "[ISO datetime]"
|
|
21
|
+
},
|
|
22
|
+
"fases": {
|
|
23
|
+
"1": {
|
|
24
|
+
"numero": 1,
|
|
25
|
+
"nome": "Produto",
|
|
26
|
+
"especialista": "Gestão de Produto",
|
|
27
|
+
"status": "pending",
|
|
28
|
+
"score": null,
|
|
29
|
+
"scoreMinimo": 75,
|
|
30
|
+
"artefatos": ["docs/01-produto/PRD.md"],
|
|
31
|
+
"validacoes": {
|
|
32
|
+
"problema_definido": false,
|
|
33
|
+
"personas": false,
|
|
34
|
+
"mvp_listado": false,
|
|
35
|
+
"metricas": false
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"2": {
|
|
39
|
+
"numero": 2,
|
|
40
|
+
"nome": "Requisitos",
|
|
41
|
+
"especialista": "Engenharia de Requisitos",
|
|
42
|
+
"status": "pending",
|
|
43
|
+
"score": null,
|
|
44
|
+
"scoreMinimo": 70,
|
|
45
|
+
"artefatos": ["docs/02-requisitos/requisitos.md"],
|
|
46
|
+
"validacoes": {
|
|
47
|
+
"requisitos_funcionais": false,
|
|
48
|
+
"requisitos_nao_funcionais": false,
|
|
49
|
+
"criterios_aceite": false,
|
|
50
|
+
"cobertura_mvp": false
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"qualityGates": {
|
|
55
|
+
"1_para_2": {
|
|
56
|
+
"validado": false,
|
|
57
|
+
"score": null,
|
|
58
|
+
"checks": ["mvp_100_coberto"]
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"historico": [
|
|
62
|
+
{
|
|
63
|
+
"acao": "projeto_iniciado",
|
|
64
|
+
"detalhes": "Projeto criado a partir do template",
|
|
65
|
+
"timestamp": "[ISO datetime]"
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
"metrica": {
|
|
69
|
+
"fasesConcluidas": 0,
|
|
70
|
+
"ultimoComando": null,
|
|
71
|
+
"tempoPorFase": {}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
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** (`/01-iniciar-projeto`, `/03-continuar-fase`, `/02-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: '/01-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: '/03-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: '/02-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} (Status: {faseAtual.status})
|
|
63
|
+
- Tier: {estado.projeto.tier} | Nível: {estado.projeto.nivel}
|
|
64
|
+
- Última atualização: {estado.updated_at}
|
|
65
|
+
- Arquivo foco: {arquivoFoco}
|
|
66
|
+
|
|
67
|
+
🎯 **Próxima ação sugerida:** {proximaAcao}
|
|
68
|
+
➡️ Execute o comando correspondente ou peça um ajuste específico.
|
|
69
|
+
|
|
70
|
+
{divergenciasFluxo?.length ? `⚠️ Divergências detectadas entre estado e fluxo MCP:
|
|
71
|
+
- ${divergenciasFluxo.join('\n- ')}` : ''}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Regras rápidas
|
|
75
|
+
|
|
76
|
+
- Sempre verificar se há bloqueios (`faseAtual.status === 'bloqueado'`) e destacar no resumo.
|
|
77
|
+
- Se detectar `novo_projeto`, **não** tentar gerar estado: apenas orientar o usuário a rodar `/iniciar-projeto`.
|
|
78
|
+
- Se o usuário preferir outra ação, respeitar e registrar no histórico (se aplicável).
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Workflow para inicializar um novo projeto Maestro com estrutura completa
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# 🚀 Workflow de Inicialização - /iniciar-projeto
|
|
6
|
+
|
|
7
|
+
## 0. Fase Zero: Brainstorming (Opcional)
|
|
8
|
+
|
|
9
|
+
* **Condição:** Se o usuário não tem um escopo claro ou objetivo definido.
|
|
10
|
+
* **Ação:** Consulte `guides/guide-brainstorm.md` para conduzir uma sessão de ideação antes de iniciar.
|
|
11
|
+
|
|
12
|
+
## 1. Coleta de Informações
|
|
13
|
+
|
|
14
|
+
* **Ação:** Pergunte ao usuário o nome do projeto (se não fornecido).
|
|
15
|
+
* **Ação:** Pergunte qual o objetivo principal (use a saída do Brainstorm).
|
|
16
|
+
|
|
17
|
+
## 2. Setup de Diretórios
|
|
18
|
+
|
|
19
|
+
* **Ação:** Crie a estrutura de pastas usando `run_command` (mkdir) ou `write_to_file`.
|
|
20
|
+
* `.maestro/`
|
|
21
|
+
* `.maestro/history/`
|
|
22
|
+
* `docs/01-produto/`
|
|
23
|
+
|
|
24
|
+
## 3. Inicialização de Estado (JSON)
|
|
25
|
+
|
|
26
|
+
* **Ação:** Crie ` .maestro/estado.json` (Estado Base):
|
|
27
|
+
```json
|
|
28
|
+
{
|
|
29
|
+
"nome_projeto": "{NOME}",
|
|
30
|
+
"fase_atual": 1,
|
|
31
|
+
"fase_nome": "Produto",
|
|
32
|
+
"tier": "base",
|
|
33
|
+
"nivel": "a_definir",
|
|
34
|
+
"created_at": "{DATA}",
|
|
35
|
+
"updated_at": "{DATA}",
|
|
36
|
+
"entregaveis": {}
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
* **Ação:** Crie ` .maestro/resumo.json` (Cache de Memória):
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"resumo_executivo": "Projeto {NOME}: {OBJETIVO}",
|
|
44
|
+
"entregaveis": [],
|
|
45
|
+
"contexto_atual": {
|
|
46
|
+
"fase": "Produto",
|
|
47
|
+
"objetivo": "Definir o MVP e criar o PRD"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## 4. Boot da Fase 1
|
|
53
|
+
|
|
54
|
+
* **Ação:** Identifique o especialista da fase 1 ("Gestão de Produto").
|
|
55
|
+
* **Ação:** Identifique o template da fase 1 (`templates/PRD.md`).
|
|
56
|
+
* **Resposta ao Usuário:**
|
|
57
|
+
* Confirme que a "Infraestrutura Maestro" foi criada.
|
|
58
|
+
* Assuma a persona de **Gerente de Produto**.
|
|
59
|
+
* Inicie o Discovery do Produto.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Workflow MESTRE para avançar fases com validação, classificação e persistência robusta
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# 🔄 Workflow de Avanço - /avancar-fase
|
|
6
|
+
|
|
7
|
+
## 1. Leitura de Estado
|
|
8
|
+
|
|
9
|
+
* **Ação:** Leia o arquivo `.maestro/estado.json`.
|
|
10
|
+
* **Dados:** Identifique `fase_atual`, `tier`, `nome_projeto`.
|
|
11
|
+
* **Ação:** Identifique o arquivo entregável da fase atual (ex: `docs/01-produto/PRD.md`).
|
|
12
|
+
|
|
13
|
+
## 2. Validação de Gate (Checklist Mestre)
|
|
14
|
+
|
|
15
|
+
* **Referência:** `.maestro/content/rules/quality-gates.md`
|
|
16
|
+
* **Passo 2.1: Estrutura**: Verifique se o entregável tem tamanho > 200 chars e possui as seções obrigatórias.
|
|
17
|
+
* **Passo 2.2: Semântica**: Verifique a lógica da transição específica.
|
|
18
|
+
* **Decisão**:
|
|
19
|
+
* `SE` falhar em qualquer validação crítica: **PARE**. Retorne erro ao usuário.
|
|
20
|
+
|
|
21
|
+
## 2.5 Orquestração de Review (Momentum)
|
|
22
|
+
|
|
23
|
+
* **Condição:** Se o projeto for **Tier Avançado** ou a fase for crítica (ex: Arquitetura).
|
|
24
|
+
* **Ação:** Ative o **Modo Squad** (via `guides/guide-orquestracao.md`) para simular uma banca examinadora:
|
|
25
|
+
1. **Persona Produto:** "Isso atende o usuário?"
|
|
26
|
+
2. **Persona Tech:** "Isso escala? É seguro?"
|
|
27
|
+
3. **Persona QA:** "Está testável?"
|
|
28
|
+
* **Decisão:** Só aprove o gate se as 3 personas concordarem.
|
|
29
|
+
|
|
30
|
+
## 3. Gestão Inteligente (Condicional)
|
|
31
|
+
|
|
32
|
+
### Apenas se Fase Atual == 1 (Produto)
|
|
33
|
+
* **Ação:** Leia o arquivo `.maestro/content/rules/complexity-rules.md`.
|
|
34
|
+
* **Execução:**
|
|
35
|
+
1. Analise o `PRD.md` buscando as keywords da tabela de pontuação.
|
|
36
|
+
2. Some os pontos (Entidades + Integrações + Segurança + etc).
|
|
37
|
+
3. Defina o **Nível** (Simples/Médio/Complexo).
|
|
38
|
+
* **Persistência**: Atualize `.maestro/estado.json` com o novo `nivel` e `total_fases`.
|
|
39
|
+
|
|
40
|
+
## 4. Persistência de Resumo (Memória)
|
|
41
|
+
|
|
42
|
+
* **Ação:** Leia (ou crie) `.maestro/resumo.json`.
|
|
43
|
+
* **Execução**:
|
|
44
|
+
1. Crie uma entrada na lista `entregaveis` com um resumo de 1 linha do que foi feito nesta fase.
|
|
45
|
+
2. Atualize o campo `contexto_atual` com o objetivo da próxima fase.
|
|
46
|
+
* **Persistência**: Salve o arquivo atualizado.
|
|
47
|
+
|
|
48
|
+
## 5. Atualização de Estado e Transição
|
|
49
|
+
|
|
50
|
+
* **Ação:** Atualize `.maestro/estado.json`:
|
|
51
|
+
* `fase_atual`: incremente +1.
|
|
52
|
+
* `status`: "in_progress".
|
|
53
|
+
* `updated_at`: data/hora atual.
|
|
54
|
+
* `entregaveis`: adicione o path do arquivo aprovado.
|
|
55
|
+
|
|
56
|
+
## 6. Carregamento da Próxima Fase
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
* **Ação:** Identifique o próximo especialista usando `guides/fases-mapeamento.md`.
|
|
61
|
+
* **Ação:** Liste os **Prompts Recomendados** encontrados na tabela para o usuário.
|
|
62
|
+
* **Ação (Automática):** Se estiver concluindo a **Fase de UX (3)** e o projeto for visual:
|
|
63
|
+
* Execute `guides/internal/automated-stitch.md` para verificar e ativar a prototipagem.
|
|
64
|
+
* **Ação Final:** Execute a automação `guides/internal/automated-system.md` para persistir o contexto global.
|
|
65
|
+
* **Ação Final:** Registre o evento usando `guides/internal/automated-events.md`.
|
|
66
|
+
|
|
67
|
+
* **Resposta ao Usuário:**
|
|
68
|
+
* ✅ **Confirmação**: "Fase X concluída (Score: Y%)."
|
|
69
|
+
* 📊 **Classificação** (Se Fase 1): "Projeto classificado como **[NÍVEL]** ([PONTOS] pts)."
|
|
70
|
+
* 🚀 **Próximo Passo**: "Iniciando Fase [N+1]: [NOME]. Especialista carregado."
|
|
71
|
+
* 📚 **Prompts Sugeridos**: [Liste os prompts aqui]
|
|
72
|
+
* **Imediatamente**: Assuma a persona e peça o primeiro input da nova fase.
|
|
@@ -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.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Guia de implementação "Frontend-First" para Histórias de Usuário
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# 🔨 Workflow de Implementação - /implementar-historia
|
|
6
|
+
|
|
7
|
+
> Este workflow deve ser invocado durante a **Fase de Implementação** (seja em um projeto novo ou feature). Ele garante que uma História de Usuário (User Story) seja entregue com qualidade e testabilidade.
|
|
8
|
+
|
|
9
|
+
## 0. Contexto
|
|
10
|
+
|
|
11
|
+
* **Entrada:** ID da História (ex: `US-01`, `FEAT-A`)
|
|
12
|
+
* **Pré-requisito:** Contrato de Interface definido (se houver API envolvida).
|
|
13
|
+
* **Estratégia:** Se a história for muito complexa, considere usar **`/05-nova-feature`** ou consulte `guides/guide-orquestracao.md` para dividir o trabalho entre "Persona Backend" e "Persona Frontend".
|
|
14
|
+
|
|
15
|
+
## 1. 📜 Etapa 1: Definição de Contratos
|
|
16
|
+
|
|
17
|
+
Antes de escrever código de produto, defina as interfaces.
|
|
18
|
+
|
|
19
|
+
1. **Schema OpenAPI (se Backend envolvido):**
|
|
20
|
+
* Crie/atualize `docs/api/openapi.yaml` com o endpoint.
|
|
21
|
+
2. **Types TypeScript (Compartilhado):**
|
|
22
|
+
* Gere interfacesTS que representam a entrada e saída do endpoint.
|
|
23
|
+
* Salve em `src/types/` (ex: `src/types/pedido.ts`).
|
|
24
|
+
|
|
25
|
+
## 2. 🎭 Etapa 2: Mocking
|
|
26
|
+
|
|
27
|
+
Crie a infraestrutura para que o Frontend possa trabalhar independente do Backend.
|
|
28
|
+
|
|
29
|
+
1. **Mock Data:**
|
|
30
|
+
* Crie um objeto JSON estático representando uma resposta de sucesso e casos de erro.
|
|
31
|
+
|
|
32
|
+
## 3. 🎨 Etapa 3: Frontend (Componentes)
|
|
33
|
+
|
|
34
|
+
Comece a UI usando os Mocks.
|
|
35
|
+
|
|
36
|
+
1. **Componentes Visuais:**
|
|
37
|
+
* Implemente os componentes de UI (botões, formulários, listas).
|
|
38
|
+
2. **Hooks/Services:**
|
|
39
|
+
* Crie a camada de serviço que consome o mock (e futuramente a API).
|
|
40
|
+
3. **Teste de Componente:**
|
|
41
|
+
* Verifique se a tela renderiza corretamente com os dados do Mock.
|
|
42
|
+
|
|
43
|
+
## 4. ⚙️ Etapa 4: Backend
|
|
44
|
+
|
|
45
|
+
Implemente a lógica real.
|
|
46
|
+
|
|
47
|
+
1. **DTOs:** Validação de entrada.
|
|
48
|
+
2. **Controller/Service:** Lógica de negócio.
|
|
49
|
+
3. **Repository:** Persistência.
|
|
50
|
+
4. **Testes Unitários:** Garanta que a regra de negócio funcione isolada.
|
|
51
|
+
|
|
52
|
+
## 5. 🔗 Etapa 5: Integração e Limpeza
|
|
53
|
+
|
|
54
|
+
A hora da verdade.
|
|
55
|
+
|
|
56
|
+
1. **Troca de Chave:** Aponte o serviço do Frontend para a API real (remova/desabilite o Mock).
|
|
57
|
+
2. **Teste Integrado:** Siga o `guides/guide-testes.md` para validar casos de borda e happy path.
|
|
58
|
+
3. **Teste E2E Manual:** Navegue pelo fluxo completo.
|
|
59
|
+
4. **Validação de Segurança:** Consulte `rules/security-rules.md` e verifique seu código.
|
|
60
|
+
|
|
61
|
+
> ✅ **Conclusão:** Quando o fluxo funcionar ponta-a-ponta:
|
|
62
|
+
1. Faça o `commit`.
|
|
63
|
+
2. Execute `guides/internal/automated-map.md` para atualizar a estrutura.
|
|
64
|
+
3. Registre o evento com `guides/internal/automated-events.md`.
|