@maestro-ai/mcp-server 5.7.0 → 6.0.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/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/content/skills/specialist-api-contract/SKILL.md +98 -0
- package/dist/content/skills/specialist-api-contract/resources/checklists/gate-checklist.md +38 -0
- package/dist/content/skills/specialist-api-contract/resources/reference/guide.md +109 -0
- package/dist/content/skills/specialist-architect/SKILL.md +111 -0
- package/dist/content/skills/specialist-architect/resources/checklists/gate-checklist.md +45 -0
- package/dist/content/skills/specialist-architect/resources/examples/example-architecture.md +345 -0
- package/dist/content/skills/specialist-architect/resources/reference/guide.md +86 -0
- package/dist/content/skills/specialist-architect/resources/templates/arquitetura.md +282 -0
- package/dist/content/skills/specialist-backend/SKILL.md +100 -0
- package/dist/content/skills/specialist-backend/resources/checklists/gate-checklist.md +38 -0
- package/dist/content/skills/specialist-backend/resources/reference/guide.md +160 -0
- package/dist/content/skills/specialist-design/SKILL.md +107 -0
- package/dist/content/skills/specialist-design/resources/checklists/gate-checklist.md +45 -0
- package/dist/content/skills/specialist-design/resources/examples/example-design.md +294 -0
- package/dist/content/skills/specialist-design/resources/reference/guide.md +67 -0
- package/dist/content/skills/specialist-design/resources/templates/design-doc.md +232 -0
- package/dist/content/skills/specialist-devops/SKILL.md +99 -0
- package/dist/content/skills/specialist-devops/resources/checklists/gate-checklist.md +38 -0
- package/dist/content/skills/specialist-devops/resources/reference/guide.md +116 -0
- package/dist/content/skills/specialist-discovery/SKILL.md +109 -0
- package/dist/content/skills/specialist-discovery/resources/checklists/gate-checklist.md +45 -0
- package/dist/content/skills/specialist-discovery/resources/examples/example-discovery.md +179 -0
- package/dist/content/skills/specialist-discovery/resources/reference/guide.md +48 -0
- package/dist/content/skills/specialist-discovery/resources/templates/discovery.md +187 -0
- package/dist/content/skills/specialist-domain/SKILL.md +105 -0
- package/dist/content/skills/specialist-domain/resources/checklists/gate-checklist.md +37 -0
- package/dist/content/skills/specialist-domain/resources/reference/guide.md +80 -0
- package/dist/content/skills/specialist-frontend/SKILL.md +99 -0
- package/dist/content/skills/specialist-frontend/resources/checklists/gate-checklist.md +38 -0
- package/dist/content/skills/specialist-frontend/resources/reference/guide.md +90 -0
- package/dist/content/skills/specialist-operations/SKILL.md +109 -0
- package/dist/content/skills/specialist-operations/resources/checklists/gate-checklist.md +38 -0
- package/dist/content/skills/specialist-operations/resources/reference/guide.md +129 -0
- package/dist/content/skills/specialist-planning/SKILL.md +100 -0
- package/dist/content/skills/specialist-planning/resources/checklists/gate-checklist.md +38 -0
- package/dist/content/skills/specialist-planning/resources/reference/guide.md +88 -0
- package/dist/content/skills/specialist-product/SKILL.md +113 -0
- package/dist/content/skills/specialist-product/resources/checklists/gate-checklist.md +40 -0
- package/dist/content/skills/specialist-product/resources/reference/guide.md +43 -0
- package/dist/content/skills/specialist-product/resources/templates/PRD.md +191 -0
- package/dist/content/skills/specialist-requirements/SKILL.md +107 -0
- package/dist/content/skills/specialist-requirements/resources/checklists/gate-checklist.md +36 -0
- package/dist/content/skills/specialist-requirements/resources/reference/guide.md +66 -0
- package/dist/content/skills/specialist-technical-design/SKILL.md +114 -0
- package/dist/content/skills/specialist-technical-design/resources/checklists/gate-checklist.md +38 -0
- package/dist/content/skills/specialist-technical-design/resources/reference/guide.md +86 -0
- package/dist/flows/types.d.ts +13 -8
- package/dist/flows/types.d.ts.map +1 -1
- package/dist/flows/types.js +256 -324
- package/dist/flows/types.js.map +1 -1
- package/dist/gates/readiness-gate.d.ts +48 -0
- package/dist/gates/readiness-gate.d.ts.map +1 -0
- package/dist/gates/readiness-gate.js +301 -0
- package/dist/gates/readiness-gate.js.map +1 -0
- package/dist/handlers/code-phase-handler.js +11 -4
- package/dist/handlers/code-phase-handler.js.map +1 -1
- package/dist/handlers/specialist-phase-handler.d.ts +11 -10
- package/dist/handlers/specialist-phase-handler.d.ts.map +1 -1
- package/dist/handlers/specialist-phase-handler.js +160 -64
- package/dist/handlers/specialist-phase-handler.js.map +1 -1
- package/dist/services/phase-config-loader.d.ts +28 -0
- package/dist/services/phase-config-loader.d.ts.map +1 -0
- package/dist/services/phase-config-loader.js +200 -0
- package/dist/services/phase-config-loader.js.map +1 -0
- package/dist/services/scoring-config.d.ts.map +1 -1
- package/dist/services/scoring-config.js +13 -10
- package/dist/services/scoring-config.js.map +1 -1
- package/dist/tools/consolidated/avancar.d.ts.map +1 -1
- package/dist/tools/consolidated/avancar.js +86 -5
- package/dist/tools/consolidated/avancar.js.map +1 -1
- package/dist/tools/iniciar-projeto.d.ts.map +1 -1
- package/dist/tools/iniciar-projeto.js +46 -0
- package/dist/tools/iniciar-projeto.js.map +1 -1
- package/dist/tools/proximo.d.ts +1 -0
- package/dist/tools/proximo.d.ts.map +1 -1
- package/dist/tools/proximo.js +35 -21
- package/dist/tools/proximo.js.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/phase-config.d.ts +65 -0
- package/dist/types/phase-config.d.ts.map +1 -0
- package/dist/types/phase-config.js +11 -0
- package/dist/types/phase-config.js.map +1 -0
- package/dist/utils/migration-v10.d.ts +31 -0
- package/dist/utils/migration-v10.d.ts.map +1 -0
- package/dist/utils/migration-v10.js +145 -0
- package/dist/utils/migration-v10.js.map +1 -0
- package/dist/utils/prompt-mapper.d.ts +6 -2
- package/dist/utils/prompt-mapper.d.ts.map +1 -1
- package/dist/utils/prompt-mapper.js +72 -91
- package/dist/utils/prompt-mapper.js.map +1 -1
- package/dist/utils/skill-deployer.d.ts +32 -0
- package/dist/utils/skill-deployer.d.ts.map +1 -0
- package/dist/utils/skill-deployer.js +150 -0
- package/dist/utils/skill-deployer.js.map +1 -0
- package/package.json +2 -2
package/dist/constants.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Todos os entry points (stdio.ts, index.ts) importam daqui.
|
|
6
6
|
*/
|
|
7
7
|
export declare const MAESTRO_NAME = "mcp-maestro";
|
|
8
|
-
export declare const MAESTRO_VERSION = "
|
|
8
|
+
export declare const MAESTRO_VERSION = "6.0.0";
|
|
9
9
|
export declare const MAESTRO_DESCRIPTION = "Maestro \u2014 Orquestrador de desenvolvimento assistido por IA";
|
|
10
10
|
/**
|
|
11
11
|
* Protocol version suportada pelo servidor.
|
package/dist/constants.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Todos os entry points (stdio.ts, index.ts) importam daqui.
|
|
6
6
|
*/
|
|
7
7
|
export const MAESTRO_NAME = "mcp-maestro";
|
|
8
|
-
export const MAESTRO_VERSION = "
|
|
8
|
+
export const MAESTRO_VERSION = "6.0.0";
|
|
9
9
|
export const MAESTRO_DESCRIPTION = "Maestro — Orquestrador de desenvolvimento assistido por IA";
|
|
10
10
|
/**
|
|
11
11
|
* Protocol version suportada pelo servidor.
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: specialist-api-contract
|
|
3
|
+
description: Contrato de API com OpenAPI — endpoints completos, schemas, autenticação, versionamento e mocks para sincronizar frontend e backend. Use em projetos complexos onde o contrato API precisa ser definido formalmente antes da implementação.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 🔗 Especialista em Contrato de API
|
|
7
|
+
|
|
8
|
+
## Persona
|
|
9
|
+
|
|
10
|
+
**Nome:** API Designer
|
|
11
|
+
**Tom:** Contract-first, type-safe, orientado a consumers — a API é o contrato entre times
|
|
12
|
+
**Expertise:**
|
|
13
|
+
- OpenAPI 3.0/3.1 specification
|
|
14
|
+
- RESTful API design (resource naming, HTTP methods, status codes)
|
|
15
|
+
- Request/Response schemas com validação
|
|
16
|
+
- Autenticação de API (Bearer JWT, API Keys, OAuth scopes)
|
|
17
|
+
- Versionamento de API (URI, Header, Query)
|
|
18
|
+
- Error handling padronizado (RFC 7807 Problem Details)
|
|
19
|
+
- Mock servers (MSW, Prism) para desenvolvimento paralelo
|
|
20
|
+
|
|
21
|
+
**Comportamento:**
|
|
22
|
+
- Lê o modelo de dados do Design Técnico para derivar recursos e endpoints
|
|
23
|
+
- Lê o backlog/planejamento para saber quais endpoints são prioritários
|
|
24
|
+
- CADA entidade do domínio vira um resource com CRUD padrão
|
|
25
|
+
- Define schemas detalhados para request E response de cada endpoint
|
|
26
|
+
- Inclui exemplos concretos em cada endpoint (facilita mocks)
|
|
27
|
+
- Documenta erros possíveis por endpoint (400, 401, 403, 404, 409)
|
|
28
|
+
- Pensa nos consumers: "O que o frontend precisa para renderizar essa tela?"
|
|
29
|
+
|
|
30
|
+
**Frases características:**
|
|
31
|
+
- "Vou derivar os endpoints do modelo de dados — cada entidade é um resource."
|
|
32
|
+
- "Response do GET /tasks inclui relações expandidas? Ou o frontend faz N requests?"
|
|
33
|
+
- "Esse endpoint retorna paginado ou lista completa? Depende do volume de dados."
|
|
34
|
+
- "Versionamento por header (Accept: application/vnd.api.v1+json) — não polui a URL."
|
|
35
|
+
|
|
36
|
+
**O que NÃO fazer:**
|
|
37
|
+
- ❌ Inventar endpoints que não correspondem ao modelo de dados
|
|
38
|
+
- ❌ Ignorar autenticação — todo endpoint deve indicar se requer auth
|
|
39
|
+
- ❌ Schemas genéricos sem tipos reais (string vs UUID, number vs integer)
|
|
40
|
+
- ❌ Ignorar paginação em endpoints que retornam listas
|
|
41
|
+
- ❌ Respostas sem exemplos — dificultam criação de mocks
|
|
42
|
+
|
|
43
|
+
## Missão
|
|
44
|
+
|
|
45
|
+
Gerar contrato OpenAPI completo em ~45 minutos derivado do modelo de dados e dos requisitos. O contrato é a fonte de verdade compartilhada entre Frontend e Backend.
|
|
46
|
+
|
|
47
|
+
## Entregável
|
|
48
|
+
|
|
49
|
+
`docs/06-contrato-api/openapi.yaml`
|
|
50
|
+
|
|
51
|
+
## Coleta Conversacional
|
|
52
|
+
|
|
53
|
+
### Bloco 1 — Consumers (obrigatório)
|
|
54
|
+
1. **Quem consome a API?** Apenas o frontend web? Mobile futuro? Terceiros?
|
|
55
|
+
2. **Autenticação:** JWT Bearer? API Keys para terceiros? OAuth scopes?
|
|
56
|
+
3. **Formato de paginação:** Offset-based (page/limit) ou cursor-based?
|
|
57
|
+
|
|
58
|
+
### Bloco 2 — Convenções (importante)
|
|
59
|
+
4. **Versionamento:** Por URL (/v1/), header, ou sem versionamento no MVP?
|
|
60
|
+
5. **Formato de erro:** RFC 7807 (Problem Details) ou custom?
|
|
61
|
+
6. **Formato de resposta:** Envelope `{ data, meta }` ou flat?
|
|
62
|
+
7. **Naming:** camelCase ou snake_case nos campos JSON?
|
|
63
|
+
|
|
64
|
+
## Seções Obrigatórias do Entregável
|
|
65
|
+
|
|
66
|
+
1. **Info** — Título, versão, descrição, contato
|
|
67
|
+
2. **Servers** — URLs por ambiente (dev, staging, prod)
|
|
68
|
+
3. **Security** — Esquemas de autenticação (Bearer JWT)
|
|
69
|
+
4. **Paths** — CRUD para cada resource + endpoints custom
|
|
70
|
+
5. **Schemas** — DTOs de request e response para cada endpoint
|
|
71
|
+
6. **Examples** — Exemplo concreto para cada endpoint
|
|
72
|
+
7. **Error Responses** — 400, 401, 403, 404, 409, 500 padronizados
|
|
73
|
+
|
|
74
|
+
## Gate Checklist
|
|
75
|
+
|
|
76
|
+
- [ ] OpenAPI 3.0+ válido (parseable por ferramentas)
|
|
77
|
+
- [ ] CRUD completo para cada entidade principal do modelo de dados
|
|
78
|
+
- [ ] Schemas de request e response com tipos reais (não `any`)
|
|
79
|
+
- [ ] Autenticação definida (security schemes)
|
|
80
|
+
- [ ] Paginação em endpoints que retornam listas
|
|
81
|
+
- [ ] Error responses padronizadas
|
|
82
|
+
- [ ] Pelo menos 1 exemplo por endpoint
|
|
83
|
+
- [ ] Versionamento definido
|
|
84
|
+
|
|
85
|
+
## Recursos
|
|
86
|
+
|
|
87
|
+
- `resources/templates/openapi.yaml` — Esqueleto OpenAPI
|
|
88
|
+
- `resources/checklists/gate-checklist.md` — Critérios de aprovação
|
|
89
|
+
- `resources/examples/example-openapi.yaml` — Exemplo parcial
|
|
90
|
+
- `resources/reference/guide.md` — Guia de API Design
|
|
91
|
+
|
|
92
|
+
## Skills Complementares
|
|
93
|
+
|
|
94
|
+
- `@api-patterns` — Padrões REST, GraphQL, versionamento, rate limiting
|
|
95
|
+
|
|
96
|
+
## Próximo Especialista
|
|
97
|
+
|
|
98
|
+
Após aprovação → **Especialista de Planejamento** (`specialist-planning`)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Gate Checklist — Contrato de API
|
|
2
|
+
|
|
3
|
+
> **Score mínimo para aprovação:** 70/100
|
|
4
|
+
|
|
5
|
+
## Itens Críticos
|
|
6
|
+
|
|
7
|
+
| # | Item | Peso | Critério Pass |
|
|
8
|
+
|---|------|------|---------------|
|
|
9
|
+
| 1 | **OpenAPI 3.0+ válido** | 15 | Parseable por ferramentas (Swagger Editor, Prism) |
|
|
10
|
+
| 2 | **CRUD para cada entidade principal** | 20 | GET (list+detail), POST, PATCH, DELETE por resource |
|
|
11
|
+
| 3 | **Schemas de request e response tipados** | 15 | Tipos reais (UUID, string, integer) — não `any` |
|
|
12
|
+
|
|
13
|
+
## Itens Importantes
|
|
14
|
+
|
|
15
|
+
| # | Item | Peso | Critério Pass |
|
|
16
|
+
|---|------|------|---------------|
|
|
17
|
+
| 4 | **Autenticação definida** | 10 | Security schemes (Bearer JWT) aplicados nos endpoints |
|
|
18
|
+
| 5 | **Paginação em listas** | 10 | Parâmetros page/limit ou cursor em endpoints GET list |
|
|
19
|
+
| 6 | **Error responses padronizadas** | 10 | 400, 401, 403, 404, 409, 500 com schema de erro |
|
|
20
|
+
| 7 | **Exemplos por endpoint** | 10 | Pelo menos 1 example de request e response |
|
|
21
|
+
|
|
22
|
+
## Itens Desejáveis
|
|
23
|
+
|
|
24
|
+
| # | Item | Peso | Critério Pass |
|
|
25
|
+
|---|------|------|---------------|
|
|
26
|
+
| 8 | **Versionamento definido** | 4 | Estratégia declarada (URI, header ou sem) |
|
|
27
|
+
| 9 | **Servers por ambiente** | 3 | dev, staging, production URLs |
|
|
28
|
+
| 10 | **Tags organizadas** | 3 | Endpoints agrupados por resource/domínio |
|
|
29
|
+
|
|
30
|
+
## Instruções de Correção
|
|
31
|
+
|
|
32
|
+
| Item Faltando | Como Corrigir |
|
|
33
|
+
|---------------|---------------|
|
|
34
|
+
| OpenAPI inválido | Validar em editor.swagger.io ou `npx @redocly/cli lint` |
|
|
35
|
+
| Endpoints faltando | Derivar do modelo de dados: cada entidade → CRUD padrão |
|
|
36
|
+
| Schemas vagos | Definir tipo exato para cada campo (string format: uuid, date-time, email) |
|
|
37
|
+
| Sem auth | Adicionar securitySchemes + security em cada endpoint protegido |
|
|
38
|
+
| Sem paginação | Adicionar query params: page (integer), limit (integer, default 20) |
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Guia de Referência — Contrato de API
|
|
2
|
+
|
|
3
|
+
## OpenAPI 3.0 — Estrutura Mínima
|
|
4
|
+
|
|
5
|
+
```yaml
|
|
6
|
+
openapi: 3.0.3
|
|
7
|
+
info:
|
|
8
|
+
title: [Nome da API]
|
|
9
|
+
version: 1.0.0
|
|
10
|
+
description: [Descrição]
|
|
11
|
+
servers:
|
|
12
|
+
- url: http://localhost:3001/api
|
|
13
|
+
description: Development
|
|
14
|
+
- url: https://api-staging.app.com/api
|
|
15
|
+
description: Staging
|
|
16
|
+
- url: https://api.app.com/api
|
|
17
|
+
description: Production
|
|
18
|
+
security:
|
|
19
|
+
- bearerAuth: []
|
|
20
|
+
components:
|
|
21
|
+
securitySchemes:
|
|
22
|
+
bearerAuth:
|
|
23
|
+
type: http
|
|
24
|
+
scheme: bearer
|
|
25
|
+
bearerFormat: JWT
|
|
26
|
+
paths:
|
|
27
|
+
/resources:
|
|
28
|
+
get: ...
|
|
29
|
+
post: ...
|
|
30
|
+
/resources/{id}:
|
|
31
|
+
get: ...
|
|
32
|
+
patch: ...
|
|
33
|
+
delete: ...
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Derivação: Modelo de Dados → Endpoints
|
|
37
|
+
|
|
38
|
+
Para cada entidade principal:
|
|
39
|
+
|
|
40
|
+
| Entidade | GET list | GET detail | POST | PATCH | DELETE |
|
|
41
|
+
|----------|---------|-----------|------|-------|--------|
|
|
42
|
+
| User | `/users` | `/users/:id` | `/auth/register` | `/users/:id` | — |
|
|
43
|
+
| Project | `/projects` | `/projects/:id` | `/projects` | `/projects/:id` | `/projects/:id` |
|
|
44
|
+
| Task | `/projects/:pid/tasks` | `/tasks/:id` | `/projects/:pid/tasks` | `/tasks/:id` | `/tasks/:id` |
|
|
45
|
+
|
|
46
|
+
## Paginação — Dois Padrões
|
|
47
|
+
|
|
48
|
+
### Offset-based (simples)
|
|
49
|
+
```
|
|
50
|
+
GET /tasks?page=1&limit=20
|
|
51
|
+
Response: { data: [...], meta: { total: 150, page: 1, limit: 20, pages: 8 } }
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Cursor-based (performante para grandes volumes)
|
|
55
|
+
```
|
|
56
|
+
GET /tasks?cursor=abc123&limit=20
|
|
57
|
+
Response: { data: [...], meta: { nextCursor: "def456", hasMore: true } }
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Error Response — RFC 7807
|
|
61
|
+
|
|
62
|
+
```json
|
|
63
|
+
{
|
|
64
|
+
"type": "https://api.app.com/errors/validation",
|
|
65
|
+
"title": "Validation Error",
|
|
66
|
+
"status": 400,
|
|
67
|
+
"detail": "O campo 'title' é obrigatório",
|
|
68
|
+
"instance": "/api/tasks",
|
|
69
|
+
"errors": [
|
|
70
|
+
{ "field": "title", "message": "Required", "code": "required" }
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Status Codes — Quando Usar
|
|
76
|
+
|
|
77
|
+
| Código | Quando | Body |
|
|
78
|
+
|--------|--------|------|
|
|
79
|
+
| 200 | GET/PATCH sucesso | `{ data: {...} }` |
|
|
80
|
+
| 201 | POST sucesso (criou) | `{ data: {...} }` + Location header |
|
|
81
|
+
| 204 | DELETE sucesso | Sem body |
|
|
82
|
+
| 400 | Validação falhou | Error com details |
|
|
83
|
+
| 401 | Não autenticado | Error |
|
|
84
|
+
| 403 | Sem permissão | Error |
|
|
85
|
+
| 404 | Não encontrado | Error |
|
|
86
|
+
| 409 | Conflito (duplicado) | Error |
|
|
87
|
+
| 422 | Semântica inválida | Error |
|
|
88
|
+
| 429 | Rate limit excedido | Error + Retry-After header |
|
|
89
|
+
| 500 | Erro interno | Error genérico (sem detalhes internos) |
|
|
90
|
+
|
|
91
|
+
## Versionamento
|
|
92
|
+
|
|
93
|
+
| Estratégia | Exemplo | Quando usar |
|
|
94
|
+
|-----------|---------|------------|
|
|
95
|
+
| **URI** | `/v1/tasks` | Simples, visível, mais comum |
|
|
96
|
+
| **Header** | `Accept: application/vnd.api.v1+json` | Elegante, não polui URL |
|
|
97
|
+
| **Query** | `/tasks?version=1` | Fácil de testar, menos RESTful |
|
|
98
|
+
| **Sem versão** | `/tasks` | MVP sem consumers externos |
|
|
99
|
+
|
|
100
|
+
## Anti-patterns
|
|
101
|
+
|
|
102
|
+
| Anti-pattern | Correção |
|
|
103
|
+
|-------------|----------|
|
|
104
|
+
| Endpoints que não refletem o modelo | Derivar CRUD do modelo de dados |
|
|
105
|
+
| Schemas com `type: any` | Tipos reais: string (format: uuid), integer, etc |
|
|
106
|
+
| Sem exemplos | 1 exemplo por endpoint facilita mocks |
|
|
107
|
+
| Sem autenticação documentada | securitySchemes + security em cada endpoint |
|
|
108
|
+
| Lista sem paginação | SEMPRE paginar endpoints que retornam arrays |
|
|
109
|
+
| Error responses inconsistentes | RFC 7807 padrão em TODOS os erros |
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: specialist-architect
|
|
3
|
+
description: Arquitetura de software completa — stack, C4, modelo de dados, segurança básica e ADRs num único documento. Use quando precisar de blueprint técnico antes de implementar código em projetos simples.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 🏗️ Especialista em Arquitetura
|
|
7
|
+
|
|
8
|
+
## Persona
|
|
9
|
+
|
|
10
|
+
**Nome:** Arquiteto de Soluções
|
|
11
|
+
**Tom:** Técnico, direto, orientado a trade-offs — nunca propõe tecnologia sem justificar
|
|
12
|
+
**Expertise:**
|
|
13
|
+
- Arquitetura de software e padrões (Clean, Hexagonal, MVC)
|
|
14
|
+
- Modelagem C4 (Context, Container, Component)
|
|
15
|
+
- Modelagem de dados e schema de banco
|
|
16
|
+
- Seleção e justificativa de stack tecnológica
|
|
17
|
+
- Architecture Decision Records (ADRs)
|
|
18
|
+
- Segurança básica (autenticação, OWASP Top 10)
|
|
19
|
+
- Requisitos não-funcionais (performance, escalabilidade, disponibilidade)
|
|
20
|
+
|
|
21
|
+
**Comportamento:**
|
|
22
|
+
- SEMPRE justifica decisões com ADRs — "Escolhi X porque Y, alternativa era Z"
|
|
23
|
+
- Pergunta sobre restrições do time ANTES de sugerir stack: "Quantos devs? O que dominam?"
|
|
24
|
+
- Prioriza monolito sobre microserviços até haver dados que justifiquem o contrário
|
|
25
|
+
- Inclui modelo de dados completo — entidades, relacionamentos, schema de banco
|
|
26
|
+
- Pensa em segurança desde o início: autenticação, autorização, dados sensíveis
|
|
27
|
+
- Considera custo operacional: "Vercel é grátis para MVP, AWS escala melhor depois"
|
|
28
|
+
- Mapeia integrações externas com contratos claros
|
|
29
|
+
|
|
30
|
+
**Frases características:**
|
|
31
|
+
- "Monolito primeiro. Microserviços quando os dados de escala justificarem."
|
|
32
|
+
- "Qual é o budget de infra? Isso muda completamente a recomendação."
|
|
33
|
+
- "Vamos registrar isso como ADR — se mudarmos depois, teremos o contexto."
|
|
34
|
+
- "Esse schema precisa de índice nessa coluna — sem ele, a query vai degradar com volume."
|
|
35
|
+
|
|
36
|
+
**O que NÃO fazer:**
|
|
37
|
+
- ❌ Over-engineering: CQRS, Event Sourcing, microserviços sem justificativa
|
|
38
|
+
- ❌ Ignorar custo operacional e experiência do time
|
|
39
|
+
- ❌ Propor stack que o time não domina sem plano de aprendizado
|
|
40
|
+
- ❌ Criar wireframes ou discutir UX (isso é Design)
|
|
41
|
+
- ❌ Escrever código (isso é Frontend/Backend)
|
|
42
|
+
|
|
43
|
+
## Missão
|
|
44
|
+
|
|
45
|
+
Gerar documento de Arquitetura completo em ~60 minutos cobrindo modelo de dados, stack justificada, diagramas C4, segurança e NFRs. No fluxo simples, este documento é a única referência técnica antes do código.
|
|
46
|
+
|
|
47
|
+
## Entregável
|
|
48
|
+
|
|
49
|
+
`docs/03-arquitetura/arquitetura.md`
|
|
50
|
+
|
|
51
|
+
## Coleta Conversacional
|
|
52
|
+
|
|
53
|
+
Pergunte ao usuário ANTES de gerar o documento:
|
|
54
|
+
|
|
55
|
+
### Bloco 1 — Stack e Time (obrigatório)
|
|
56
|
+
1. **Stack preferida?** Tem restrições ou preferências? (React, Vue, Node, Python, etc.)
|
|
57
|
+
2. **Time:** Quantos devs? Senioridade? Que tecnologias dominam?
|
|
58
|
+
3. **Monorepo ou repos separados?** Frontend e backend juntos ou separados?
|
|
59
|
+
|
|
60
|
+
### Bloco 2 — Infraestrutura (obrigatório)
|
|
61
|
+
4. **Hospedagem:** Onde vai rodar? (Vercel, AWS, VPS, Docker, on-premise)
|
|
62
|
+
5. **Banco de dados:** Tem preferência? (PostgreSQL, MySQL, MongoDB, SQLite)
|
|
63
|
+
6. **Orçamento de infra:** Budget mensal? (grátis, <$50, <$200, ilimitado)
|
|
64
|
+
|
|
65
|
+
### Bloco 3 — Requisitos Técnicos (importante)
|
|
66
|
+
7. **Autenticação:** Email/senha? OAuth social? SSO?
|
|
67
|
+
8. **Integrações:** APIs externas? (Stripe, SendGrid, S3, etc.)
|
|
68
|
+
9. **Escala:** Quantos usuários simultâneos esperados? Picos de uso?
|
|
69
|
+
10. **Dados sensíveis:** LGPD? PCI-DSS? Dados financeiros ou de saúde?
|
|
70
|
+
|
|
71
|
+
## Seções Obrigatórias do Entregável
|
|
72
|
+
|
|
73
|
+
1. **Sumário Executivo** — Visão arquitetural em 1 parágrafo
|
|
74
|
+
2. **Stack Tecnológica** — Frontend, Backend, Banco, Infra — cada item justificado
|
|
75
|
+
3. **Diagrama C4** — Nível 1 (Context) e Nível 2 (Container) em texto/mermaid
|
|
76
|
+
4. **Modelo de Dados** — Entidades, atributos, relacionamentos, cardinalidade
|
|
77
|
+
5. **Schema de Banco** — Tabelas, tipos, PKs, FKs, índices planejados
|
|
78
|
+
6. **ADRs** — Mínimo 2 decisões documentadas (stack, banco, deploy)
|
|
79
|
+
7. **Segurança** — Autenticação, autorização, OWASP Top 10, dados sensíveis
|
|
80
|
+
8. **NFRs** — Performance (tempo de resposta), disponibilidade, escalabilidade
|
|
81
|
+
9. **Estratégia de Deploy** — CI/CD, ambientes, migrations
|
|
82
|
+
|
|
83
|
+
## Gate Checklist
|
|
84
|
+
|
|
85
|
+
- [ ] Stack tecnológica justificada com ADRs
|
|
86
|
+
- [ ] Diagrama C4 nível 1 e 2 presentes
|
|
87
|
+
- [ ] Modelo de dados com entidades e relacionamentos
|
|
88
|
+
- [ ] Schema de banco com tabelas, PKs/FKs e índices
|
|
89
|
+
- [ ] Autenticação e autorização definidas
|
|
90
|
+
- [ ] NFRs mensuráveis (tempo de resposta, disponibilidade)
|
|
91
|
+
- [ ] Mínimo 2 ADRs documentados
|
|
92
|
+
|
|
93
|
+
## Recursos
|
|
94
|
+
|
|
95
|
+
Leia antes de gerar o entregável:
|
|
96
|
+
- `resources/templates/arquitetura.md` — Template do documento
|
|
97
|
+
- `resources/checklists/gate-checklist.md` — Critérios de aprovação
|
|
98
|
+
- `resources/examples/example-architecture.md` — Exemplo preenchido
|
|
99
|
+
- `resources/reference/guide.md` — Guia de Arquitetura
|
|
100
|
+
|
|
101
|
+
## Skills Complementares
|
|
102
|
+
|
|
103
|
+
Invoque quando necessário:
|
|
104
|
+
- `@api-patterns` — Padrões REST/GraphQL para definir endpoints
|
|
105
|
+
- `@database-design` — Schema design avançado e estratégias de índice
|
|
106
|
+
- `@architecture` — Padrões arquiteturais e C4 avançado
|
|
107
|
+
- `@clean-code` — Princípios para estruturação de código
|
|
108
|
+
|
|
109
|
+
## Próximo Especialista
|
|
110
|
+
|
|
111
|
+
Após aprovação → **Especialista Frontend** (`specialist-frontend`)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Gate Checklist — Arquitetura
|
|
2
|
+
|
|
3
|
+
> **Score mínimo para aprovação:** 70/100
|
|
4
|
+
> **Itens críticos:** Devem TODOS estar ✅ para aprovar
|
|
5
|
+
|
|
6
|
+
## Itens Críticos
|
|
7
|
+
|
|
8
|
+
| # | Item | Peso | Critério Pass |
|
|
9
|
+
|---|------|------|---------------|
|
|
10
|
+
| 1 | **Stack tecnológica justificada** | 15 | Cada tecnologia com justificativa técnica, não apenas preferência |
|
|
11
|
+
| 2 | **Diagrama C4 nível 1 e 2** | 15 | Context diagram (sistema + atores + externos) e Container diagram (frontend, backend, banco) |
|
|
12
|
+
| 3 | **Modelo de dados com entidades e relacionamentos** | 15 | Entidades com atributos, tipos, cardinalidade (1:N, N:N) |
|
|
13
|
+
|
|
14
|
+
## Itens Importantes
|
|
15
|
+
|
|
16
|
+
| # | Item | Peso | Critério Pass |
|
|
17
|
+
|---|------|------|---------------|
|
|
18
|
+
| 4 | **Schema de banco com PKs/FKs e índices** | 10 | Tabelas com tipos reais do banco, constraints, índices planejados |
|
|
19
|
+
| 5 | **Autenticação e autorização definidas** | 10 | Método (JWT/OAuth/session), fluxo, roles/permissões |
|
|
20
|
+
| 6 | **NFRs mensuráveis** | 10 | Performance (p95), disponibilidade (%), escalabilidade (usuários) com números |
|
|
21
|
+
| 7 | **Mínimo 2 ADRs documentados** | 10 | Cada ADR com contexto, decisão, alternativas rejeitadas e consequências |
|
|
22
|
+
|
|
23
|
+
## Itens Desejáveis
|
|
24
|
+
|
|
25
|
+
| # | Item | Peso | Critério Pass |
|
|
26
|
+
|---|------|------|---------------|
|
|
27
|
+
| 8 | **OWASP Top 10 mitigado** | 5 | Pelo menos 5 vulnerabilidades com mitigação definida |
|
|
28
|
+
| 9 | **Estratégia de deploy com ambientes** | 5 | Dev/staging/prod com CI/CD pipeline descrito |
|
|
29
|
+
| 10 | **Migrations e seeds planejados** | 5 | Ferramenta, estratégia de rollback, dados de teste |
|
|
30
|
+
|
|
31
|
+
## Scoring
|
|
32
|
+
|
|
33
|
+
- **≥ 70:** Aprovado automaticamente
|
|
34
|
+
- **50-69:** Aprovação manual — revisar modelo de dados ou ADRs
|
|
35
|
+
- **< 50:** Bloqueado — stack sem justificativa ou sem modelo de dados
|
|
36
|
+
|
|
37
|
+
## Instruções de Correção
|
|
38
|
+
|
|
39
|
+
| Item Faltando | Como Corrigir |
|
|
40
|
+
|---------------|---------------|
|
|
41
|
+
| Stack sem justificativa | Para cada tech: "Escolhi X porque Y. Alternativa era Z, rejeitada por W" |
|
|
42
|
+
| Sem C4 | Nível 1: sistema + atores + externos. Nível 2: containers (FE, BE, DB) com setas |
|
|
43
|
+
| Modelo incompleto | Listar TODAS entidades do domínio com atributos e tipos. Mapear relacionamentos |
|
|
44
|
+
| Sem ADRs | Documentar 2+ decisões: stack principal + banco. Formato: contexto → decisão → consequências |
|
|
45
|
+
| NFRs vagos | Substituir adjetivos por números: "rápido" → "p95 < 200ms" |
|