@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
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
# Arquitetura — [NOME DO PROJETO]
|
|
2
|
+
|
|
3
|
+
> **Fase:** 3 · Arquitetura
|
|
4
|
+
> **Data:** [DATA]
|
|
5
|
+
> **Autor:** Especialista de Arquitetura + Usuário
|
|
6
|
+
> **Status:** Draft | Em Revisão | Aprovado
|
|
7
|
+
> **Base:** Discovery (`docs/01-discovery/discovery.md`), Design (`docs/02-design/design-doc.md`)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 1. Sumário Executivo
|
|
12
|
+
|
|
13
|
+
<!-- Visão arquitetural em 1 parágrafo: tipo de sistema, stack principal, decisões-chave -->
|
|
14
|
+
|
|
15
|
+
[PREENCHER — Ex: "Sistema web SaaS monolítico usando Next.js (frontend) + Node.js/Express (backend) + PostgreSQL, hospedado na Vercel + Railway. Autenticação via JWT com refresh tokens. Arquitetura limpa com separação clara entre API, services e repositórios."]
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 2. Stack Tecnológica
|
|
20
|
+
|
|
21
|
+
<!-- Cada tecnologia deve ter justificativa. Se há alternativa considerada, documente como ADR. -->
|
|
22
|
+
|
|
23
|
+
### 2.1 Frontend
|
|
24
|
+
|
|
25
|
+
| Tecnologia | Versão | Justificativa |
|
|
26
|
+
|-----------|--------|---------------|
|
|
27
|
+
| [Ex: Next.js] | [Ex: 14.x] | [Ex: SSR para SEO, App Router, React Server Components] |
|
|
28
|
+
| [Ex: TypeScript] | [Ex: 5.x] | [Ex: Type-safety, melhor DX, catch bugs em compile-time] |
|
|
29
|
+
| [Ex: Tailwind CSS] | [Ex: 3.x] | [Ex: Utility-first, sem CSS custom, design system integrado] |
|
|
30
|
+
| [Ex: shadcn/ui] | [Ex: latest] | [Ex: Componentes acessíveis, customizáveis, sem lock-in] |
|
|
31
|
+
| [Ex: Zustand] | [Ex: 4.x] | [Ex: State management simples, sem boilerplate] |
|
|
32
|
+
|
|
33
|
+
### 2.2 Backend
|
|
34
|
+
|
|
35
|
+
| Tecnologia | Versão | Justificativa |
|
|
36
|
+
|-----------|--------|---------------|
|
|
37
|
+
| [Ex: Node.js] | [Ex: 20 LTS] | [Ex: Mesmo ecossistema do frontend, async I/O] |
|
|
38
|
+
| [Ex: Express] | [Ex: 4.x] | [Ex: Maduro, extensível, time já domina] |
|
|
39
|
+
| [Ex: Prisma] | [Ex: 5.x] | [Ex: Type-safe ORM, migrations automáticas, studio] |
|
|
40
|
+
| [Ex: Zod] | [Ex: 3.x] | [Ex: Validação de input type-safe, runtime + compiletime] |
|
|
41
|
+
|
|
42
|
+
### 2.3 Banco de Dados
|
|
43
|
+
|
|
44
|
+
| Tecnologia | Justificativa |
|
|
45
|
+
|-----------|---------------|
|
|
46
|
+
| [Ex: PostgreSQL 16] | [Ex: ACID, extensões ricas, performance, gratuito] |
|
|
47
|
+
| [Ex: Redis (opcional)] | [Ex: Cache de sessões, rate limiting] |
|
|
48
|
+
|
|
49
|
+
### 2.4 Infraestrutura
|
|
50
|
+
|
|
51
|
+
| Componente | Tecnologia | Justificativa |
|
|
52
|
+
|-----------|-----------|---------------|
|
|
53
|
+
| **Hosting Frontend** | [Ex: Vercel] | [Ex: Deploy automático, CDN, free tier generoso] |
|
|
54
|
+
| **Hosting Backend** | [Ex: Railway] | [Ex: Deploy simples, PostgreSQL incluso, $5/mês] |
|
|
55
|
+
| **CI/CD** | [Ex: GitHub Actions] | [Ex: Integrado ao repo, gratuito para público] |
|
|
56
|
+
| **Monitoramento** | [Ex: Vercel Analytics + Sentry] | [Ex: Erros + performance] |
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## 3. Diagrama C4
|
|
61
|
+
|
|
62
|
+
### 3.1 Nível 1 — Contexto do Sistema
|
|
63
|
+
|
|
64
|
+
<!-- Visão macro: sistema, usuários, sistemas externos -->
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
┌─────────────────────────────────────────────────────────┐
|
|
68
|
+
│ USUÁRIOS │
|
|
69
|
+
│ [Persona 1] [Persona 2] │
|
|
70
|
+
│ │ │ │
|
|
71
|
+
│ ▼ ▼ │
|
|
72
|
+
│ ┌─────────────────────────────────┐ │
|
|
73
|
+
│ │ [NOME DO SISTEMA] │ │
|
|
74
|
+
│ │ Web Application (SaaS) │ │
|
|
75
|
+
│ └──────────┬──────────────────────┘ │
|
|
76
|
+
│ │ │
|
|
77
|
+
│ ┌────────┼────────────┐ │
|
|
78
|
+
│ ▼ ▼ ▼ │
|
|
79
|
+
│ [Email] [Pagamento] [Auth Provider] │
|
|
80
|
+
│ SendGrid Stripe Google OAuth │
|
|
81
|
+
└─────────────────────────────────────────────────────────┘
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### 3.2 Nível 2 — Containers
|
|
85
|
+
|
|
86
|
+
<!-- Componentes de deploy: frontend app, backend API, banco, serviços -->
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
┌──────────────────────────────────────────────────────┐
|
|
90
|
+
│ CONTAINERS │
|
|
91
|
+
│ │
|
|
92
|
+
│ ┌─────────────┐ ┌─────────────┐ │
|
|
93
|
+
│ │ Frontend │───▶│ Backend │ │
|
|
94
|
+
│ │ (Next.js) │ │ (Express) │ │
|
|
95
|
+
│ │ Vercel │ │ Railway │ │
|
|
96
|
+
│ └─────────────┘ └──────┬──────┘ │
|
|
97
|
+
│ │ │
|
|
98
|
+
│ ┌──────┴──────┐ │
|
|
99
|
+
│ │ PostgreSQL │ │
|
|
100
|
+
│ │ Railway │ │
|
|
101
|
+
│ └─────────────┘ │
|
|
102
|
+
└──────────────────────────────────────────────────────┘
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## 4. Modelo de Dados
|
|
108
|
+
|
|
109
|
+
### 4.1 Entidades Principais
|
|
110
|
+
|
|
111
|
+
<!-- Liste TODAS as entidades do domínio com seus atributos -->
|
|
112
|
+
|
|
113
|
+
#### Entidade: [NOME]
|
|
114
|
+
|
|
115
|
+
| Atributo | Tipo | Obrigatório | Descrição |
|
|
116
|
+
|----------|------|:-----------:|-----------|
|
|
117
|
+
| id | UUID | ✅ | Identificador único |
|
|
118
|
+
| [PREENCHER] | [PREENCHER] | ✅/❌ | [PREENCHER] |
|
|
119
|
+
| created_at | DateTime | ✅ | Data de criação |
|
|
120
|
+
| updated_at | DateTime | ✅ | Última atualização |
|
|
121
|
+
|
|
122
|
+
#### Entidade: [NOME]
|
|
123
|
+
|
|
124
|
+
[PREENCHER — repetir formato acima]
|
|
125
|
+
|
|
126
|
+
### 4.2 Relacionamentos
|
|
127
|
+
|
|
128
|
+
| Entidade A | Relação | Entidade B | Descrição |
|
|
129
|
+
|-----------|---------|-----------|-----------|
|
|
130
|
+
| [Ex: User] | 1:N | [Ex: Task] | [Ex: Um usuário tem muitas tarefas] |
|
|
131
|
+
| [Ex: Task] | N:1 | [Ex: Project] | [Ex: Muitas tarefas pertencem a um projeto] |
|
|
132
|
+
| [Ex: User] | N:N | [Ex: Project] | [Ex: Muitos usuários em muitos projetos (via ProjectMember)] |
|
|
133
|
+
|
|
134
|
+
### 4.3 Diagrama ER (simplificado)
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
[User] 1──N [Task] N──1 [Project]
|
|
138
|
+
│ │
|
|
139
|
+
└──N [ProjectMember] N───┘
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## 5. Schema de Banco
|
|
145
|
+
|
|
146
|
+
### 5.1 Tabelas
|
|
147
|
+
|
|
148
|
+
<!-- Schema físico — tipos reais do banco, constraints, defaults -->
|
|
149
|
+
|
|
150
|
+
```sql
|
|
151
|
+
-- Users
|
|
152
|
+
CREATE TABLE users (
|
|
153
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
154
|
+
email VARCHAR(255) UNIQUE NOT NULL,
|
|
155
|
+
name VARCHAR(100) NOT NULL,
|
|
156
|
+
password_hash VARCHAR(255) NOT NULL,
|
|
157
|
+
avatar_url TEXT,
|
|
158
|
+
created_at TIMESTAMP DEFAULT NOW(),
|
|
159
|
+
updated_at TIMESTAMP DEFAULT NOW()
|
|
160
|
+
);
|
|
161
|
+
|
|
162
|
+
-- [PREENCHER — Adicionar todas as tabelas]
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### 5.2 Índices Planejados
|
|
166
|
+
|
|
167
|
+
| Tabela | Índice | Colunas | Tipo | Justificativa |
|
|
168
|
+
|--------|--------|---------|------|---------------|
|
|
169
|
+
| users | idx_users_email | email | UNIQUE | Login lookup |
|
|
170
|
+
| [PREENCHER] | [PREENCHER] | [PREENCHER] | [PREENCHER] | [PREENCHER] |
|
|
171
|
+
|
|
172
|
+
### 5.3 Estratégia de Migrations
|
|
173
|
+
|
|
174
|
+
| Ferramenta | Estratégia |
|
|
175
|
+
|-----------|-----------|
|
|
176
|
+
| [Ex: Prisma Migrate] | [Ex: Migrations versionadas, aplicadas em deploy via CI/CD] |
|
|
177
|
+
| **Rollback** | [Ex: Cada migration tem down, testado em staging antes de prod] |
|
|
178
|
+
| **Seeds** | [Ex: Script de seed para dados de desenvolvimento e testes] |
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## 6. Architecture Decision Records (ADRs)
|
|
183
|
+
|
|
184
|
+
### ADR-001: [TÍTULO DA DECISÃO]
|
|
185
|
+
|
|
186
|
+
| Campo | Valor |
|
|
187
|
+
|-------|-------|
|
|
188
|
+
| **Status** | Aceito |
|
|
189
|
+
| **Data** | [DATA] |
|
|
190
|
+
| **Contexto** | [Ex: Precisamos escolher entre monolito e microserviços para o MVP] |
|
|
191
|
+
| **Decisão** | [Ex: Monolito com separação por módulos] |
|
|
192
|
+
| **Alternativas** | [Ex: 1) Microserviços — rejeitado por complexidade para time de 2 devs. 2) Serverless — rejeitado por cold starts e complexidade de debug] |
|
|
193
|
+
| **Consequências** | [Ex: (+) Deploy simples, DX melhor. (-) Escala vertical, refactor futuro se crescer muito] |
|
|
194
|
+
|
|
195
|
+
### ADR-002: [TÍTULO DA DECISÃO]
|
|
196
|
+
|
|
197
|
+
[PREENCHER — Mínimo 2 ADRs]
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## 7. Segurança
|
|
202
|
+
|
|
203
|
+
### 7.1 Autenticação
|
|
204
|
+
|
|
205
|
+
| Aspecto | Implementação |
|
|
206
|
+
|---------|---------------|
|
|
207
|
+
| **Método** | [Ex: JWT (access + refresh token)] |
|
|
208
|
+
| **Access Token** | [Ex: 15 min expiry, em memory/cookie HttpOnly] |
|
|
209
|
+
| **Refresh Token** | [Ex: 7 dias, rotação, em cookie HttpOnly Secure] |
|
|
210
|
+
| **OAuth** | [Ex: Google, GitHub via next-auth] |
|
|
211
|
+
| **Senhas** | [Ex: bcrypt, mín 8 chars, sem requisitos complexos] |
|
|
212
|
+
|
|
213
|
+
### 7.2 Autorização
|
|
214
|
+
|
|
215
|
+
| Modelo | Implementação |
|
|
216
|
+
|--------|---------------|
|
|
217
|
+
| [Ex: RBAC] | [Ex: Roles: admin, member, viewer. Middleware em cada rota] |
|
|
218
|
+
|
|
219
|
+
### 7.3 OWASP Top 10
|
|
220
|
+
|
|
221
|
+
| Vulnerabilidade | Mitigação |
|
|
222
|
+
|----------------|-----------|
|
|
223
|
+
| Injection (SQL/NoSQL) | [Ex: Prisma ORM com parameterized queries] |
|
|
224
|
+
| Broken Authentication | [Ex: JWT com refresh rotation, rate limiting em login] |
|
|
225
|
+
| XSS | [Ex: React escapa por padrão, CSP headers] |
|
|
226
|
+
| CSRF | [Ex: SameSite cookies, tokens CSRF em forms] |
|
|
227
|
+
| SSRF | [Ex: Whitelist de URLs externas] |
|
|
228
|
+
|
|
229
|
+
### 7.4 Dados Sensíveis
|
|
230
|
+
|
|
231
|
+
| Dado | Classificação | Proteção |
|
|
232
|
+
|------|--------------|----------|
|
|
233
|
+
| [Ex: Senhas] | Crítico | [Ex: bcrypt hash, nunca em log] |
|
|
234
|
+
| [Ex: Email] | PII | [Ex: Criptografado em repouso, LGPD compliant] |
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## 8. Requisitos Não-Funcionais
|
|
239
|
+
|
|
240
|
+
| ID | Categoria | Requisito | Meta | Como Medir |
|
|
241
|
+
|----|-----------|-----------|------|------------|
|
|
242
|
+
| NFR-001 | Performance | Tempo de resposta da API | p95 < 200ms | [Ex: APM + load test] |
|
|
243
|
+
| NFR-002 | Disponibilidade | Uptime mensal | 99.5% | [Ex: Health check + uptime monitor] |
|
|
244
|
+
| NFR-003 | Escalabilidade | Usuários simultâneos | 500+ | [Ex: Load test com k6] |
|
|
245
|
+
| NFR-004 | Observabilidade | Error tracking | 100% erros capturados | [Ex: Sentry] |
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## 9. Estratégia de Deploy
|
|
250
|
+
|
|
251
|
+
### 9.1 Ambientes
|
|
252
|
+
|
|
253
|
+
| Ambiente | URL | Branch | Deploy |
|
|
254
|
+
|----------|-----|--------|--------|
|
|
255
|
+
| Development | localhost | feature/* | Manual |
|
|
256
|
+
| Staging | [Ex: staging.app.com] | develop | Automático (CI/CD) |
|
|
257
|
+
| Production | [Ex: app.com] | main | Automático com approval |
|
|
258
|
+
|
|
259
|
+
### 9.2 CI/CD Pipeline
|
|
260
|
+
|
|
261
|
+
```
|
|
262
|
+
Push → Lint → Type Check → Test → Build → Deploy
|
|
263
|
+
│
|
|
264
|
+
┌──────┴──────┐
|
|
265
|
+
│ staging │ (auto)
|
|
266
|
+
│ production │ (manual approval)
|
|
267
|
+
└─────────────┘
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
## Checklist de Completude
|
|
273
|
+
|
|
274
|
+
- [ ] Stack tecnológica justificada com ADRs
|
|
275
|
+
- [ ] Diagrama C4 nível 1 e 2 presentes
|
|
276
|
+
- [ ] Modelo de dados com entidades e relacionamentos
|
|
277
|
+
- [ ] Schema de banco com tabelas, PKs/FKs e índices
|
|
278
|
+
- [ ] Autenticação e autorização definidas
|
|
279
|
+
- [ ] OWASP Top 10 mitigado
|
|
280
|
+
- [ ] NFRs mensuráveis definidos
|
|
281
|
+
- [ ] Mínimo 2 ADRs documentados
|
|
282
|
+
- [ ] Estratégia de deploy com ambientes
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: specialist-backend
|
|
3
|
+
description: Desenvolvimento backend com foco operacional — APIs, services, migrations, testes e autenticação. Use quando entrar em fase de código backend após arquitetura e planejamento definidos.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# ⚙️ Especialista Backend
|
|
7
|
+
|
|
8
|
+
## Persona
|
|
9
|
+
|
|
10
|
+
**Nome:** Backend Developer Lead
|
|
11
|
+
**Tom:** Pragmático, API-first, type-safe — implementa endpoints sólidos com validação e testes
|
|
12
|
+
**Expertise:**
|
|
13
|
+
- Desenvolvimento de APIs REST e GraphQL
|
|
14
|
+
- Clean Architecture e padrões de service layer
|
|
15
|
+
- ORMs e migrations (Prisma, TypeORM, Sequelize)
|
|
16
|
+
- Autenticação e autorização (JWT, OAuth, sessions)
|
|
17
|
+
- Validação de input (Zod, Joi, class-validator)
|
|
18
|
+
- Testes unitários e de integração (Vitest, Jest, Supertest)
|
|
19
|
+
- Error handling padronizado e logging estruturado
|
|
20
|
+
|
|
21
|
+
**Comportamento:**
|
|
22
|
+
- NÃO pergunta sobre stack — ela já está definida na Arquitetura
|
|
23
|
+
- Lê o schema de banco da Arquitetura ANTES de criar migrations
|
|
24
|
+
- Lê o Discovery/Backlog para saber quais endpoints implementar
|
|
25
|
+
- Implementa UMA User Story por vez, na ordem do Backlog
|
|
26
|
+
- Para cada US segue: Migration/Schema → DTO → Service → Controller → Test
|
|
27
|
+
- Valida TODOS os inputs — nunca confia em dados do cliente
|
|
28
|
+
- Padroniza error handling desde o primeiro endpoint
|
|
29
|
+
|
|
30
|
+
**Frases características:**
|
|
31
|
+
- "Vou criar o schema do Prisma a partir do modelo de dados da Arquitetura."
|
|
32
|
+
- "Endpoint criado com validação de input via Zod. Adicionando testes."
|
|
33
|
+
- "Error handling padronizado: todos os endpoints retornam o mesmo formato de erro."
|
|
34
|
+
- "Auth implementada conforme definido na Arquitetura — JWT com refresh token."
|
|
35
|
+
|
|
36
|
+
**O que NÃO fazer:**
|
|
37
|
+
- ❌ Redefinir stack ou schema de banco (já decidido na Arquitetura)
|
|
38
|
+
- ❌ Pular validação de inputs — Zod/Joi em TODOS os endpoints
|
|
39
|
+
- ❌ Implementar tudo de uma vez — task por task
|
|
40
|
+
- ❌ Criar telas ou componentes frontend (isso é Frontend)
|
|
41
|
+
- ❌ Ignorar error handling — padronizar desde o início
|
|
42
|
+
|
|
43
|
+
## Missão
|
|
44
|
+
|
|
45
|
+
Implementar o backend task por task seguindo as User Stories do Discovery/Backlog, o schema de banco e a stack definidos na Arquitetura. Cada task gera migrations, DTOs, services, controllers e testes.
|
|
46
|
+
|
|
47
|
+
## Entregável
|
|
48
|
+
|
|
49
|
+
Código backend funcional — API endpoints, services, migrations, testes, autenticação.
|
|
50
|
+
|
|
51
|
+
## Coleta Conversacional
|
|
52
|
+
|
|
53
|
+
Pergunte APENAS questões operacionais (a stack já está definida):
|
|
54
|
+
|
|
55
|
+
### Setup Operacional
|
|
56
|
+
1. **Banco rodando?** PostgreSQL/MySQL local, Docker, ou cloud?
|
|
57
|
+
2. **Schema existe?** Prisma schema já criado ou devo gerar do modelo de dados?
|
|
58
|
+
3. **Prioridade:** Qual módulo primeiro? (Recomendo: Auth → CRUD principal)
|
|
59
|
+
4. **Estrutura:** Onde fica o código? (`backend/`, `server/`, `src/`)
|
|
60
|
+
5. **Ambiente:** `.env` configurado? Redis disponível para cache/filas?
|
|
61
|
+
|
|
62
|
+
## Processo de Implementação
|
|
63
|
+
|
|
64
|
+
Para cada User Story:
|
|
65
|
+
1. **Ler** o schema de banco e modelo de dados da Arquitetura
|
|
66
|
+
2. **Criar/Atualizar** migration se novas tabelas são necessárias
|
|
67
|
+
3. **Criar** DTOs com validação de input (Zod/class-validator)
|
|
68
|
+
4. **Implementar** service com regras de negócio
|
|
69
|
+
5. **Implementar** controller com rotas e error handling
|
|
70
|
+
6. **Testar** service (unitário) e controller (integração)
|
|
71
|
+
7. **Verificar** autenticação/autorização se aplicável
|
|
72
|
+
8. **Marcar** task como done
|
|
73
|
+
|
|
74
|
+
## Gate Checklist
|
|
75
|
+
|
|
76
|
+
- [ ] Endpoints implementados conforme modelo de dados da Arquitetura
|
|
77
|
+
- [ ] DTOs com validação de input para cada endpoint
|
|
78
|
+
- [ ] Services com regras de negócio do modelo de domínio
|
|
79
|
+
- [ ] Testes unitários para services e controllers
|
|
80
|
+
- [ ] Migrações de banco executáveis
|
|
81
|
+
- [ ] Error handling padronizado conforme schema de erros
|
|
82
|
+
- [ ] Autenticação implementada conforme arquitetura
|
|
83
|
+
|
|
84
|
+
## Recursos
|
|
85
|
+
|
|
86
|
+
- `resources/reference/guide.md` — Guia operacional de backend
|
|
87
|
+
|
|
88
|
+
## Skills Complementares
|
|
89
|
+
|
|
90
|
+
Invoque quando necessário:
|
|
91
|
+
- `@api-patterns` — Padrões REST, status codes, response format, versionamento
|
|
92
|
+
- `@nodejs-best-practices` — Padrões Node.js, error handling, performance
|
|
93
|
+
- `@clean-code` — SRP, DRY, KISS para services e controllers
|
|
94
|
+
- `@tdd-workflow` — Ciclo RED-GREEN-REFACTOR
|
|
95
|
+
- `@testing-patterns` — AAA pattern, mocking, fixtures
|
|
96
|
+
- `@database-design` — Schema design avançado, índices, queries
|
|
97
|
+
|
|
98
|
+
## Próximo Especialista
|
|
99
|
+
|
|
100
|
+
Após aprovação → Projeto concluído (fluxo simples) ou **Integração & Deploy** (`specialist-devops`)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Gate Checklist — Backend
|
|
2
|
+
|
|
3
|
+
> **Score mínimo para aprovação:** 70/100
|
|
4
|
+
> **Validação:** Por existência de artefatos no disco (code-validator)
|
|
5
|
+
|
|
6
|
+
## Itens Críticos
|
|
7
|
+
|
|
8
|
+
| # | Item | Peso | Critério Pass |
|
|
9
|
+
|---|------|------|---------------|
|
|
10
|
+
| 1 | **Endpoints implementados conforme modelo de dados** | 20 | Rotas existem e correspondem ao schema da Arquitetura |
|
|
11
|
+
| 2 | **DTOs com validação de input** | 15 | Zod/Joi/class-validator em cada endpoint |
|
|
12
|
+
| 3 | **Services com regras de negócio** | 15 | Lógica separada dos controllers, testável |
|
|
13
|
+
|
|
14
|
+
## Itens Importantes
|
|
15
|
+
|
|
16
|
+
| # | Item | Peso | Critério Pass |
|
|
17
|
+
|---|------|------|---------------|
|
|
18
|
+
| 4 | **Testes unitários para services e controllers** | 10 | Pelo menos 1 teste por service principal |
|
|
19
|
+
| 5 | **Migrações de banco executáveis** | 10 | Schema no disco, migration funciona com `prisma migrate` ou equivalente |
|
|
20
|
+
| 6 | **Error handling padronizado** | 10 | Formato de erro consistente em todos os endpoints |
|
|
21
|
+
| 7 | **Autenticação implementada** | 10 | Login, registro, middleware de auth conforme Arquitetura |
|
|
22
|
+
|
|
23
|
+
## Itens Desejáveis
|
|
24
|
+
|
|
25
|
+
| # | Item | Peso | Critério Pass |
|
|
26
|
+
|---|------|------|---------------|
|
|
27
|
+
| 8 | **Logging estruturado** | 5 | Logs com nível, timestamp, request ID |
|
|
28
|
+
| 9 | **Seeds de desenvolvimento** | 3 | Script para popular banco com dados de teste |
|
|
29
|
+
| 10 | **TypeScript sem erros** | 2 | `tsc --noEmit` passa sem erros |
|
|
30
|
+
|
|
31
|
+
## Instruções de Correção
|
|
32
|
+
|
|
33
|
+
| Item Faltando | Como Corrigir |
|
|
34
|
+
|---------------|---------------|
|
|
35
|
+
| Endpoints faltando | Revisar modelo de dados → mapear CRUD para cada entidade principal |
|
|
36
|
+
| Sem validação | Adicionar Zod schema para body/params/query de cada endpoint |
|
|
37
|
+
| Sem testes | Criar teste unitário para cada service com mocks de repository |
|
|
38
|
+
| Sem auth | Implementar JWT middleware conforme ADR de autenticação da Arquitetura |
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# Guia de Referência — Backend
|
|
2
|
+
|
|
3
|
+
## Processo por User Story
|
|
4
|
+
|
|
5
|
+
Para cada User Story do Backlog/Discovery:
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
1. Ler modelo de dados da Arquitetura
|
|
9
|
+
2. Criar/atualizar migration → se novas tabelas são necessárias
|
|
10
|
+
3. Criar DTOs → validação de input com Zod/class-validator
|
|
11
|
+
4. Implementar service → regras de negócio isoladas
|
|
12
|
+
5. Implementar controller → rotas, middleware, error handling
|
|
13
|
+
6. Testar → unitário (service) + integração (controller)
|
|
14
|
+
7. Verificar → auth, validação, error handling padronizado
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Estrutura de Projeto Recomendada
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
backend/
|
|
21
|
+
├── src/
|
|
22
|
+
│ ├── modules/ # Organizado por domínio
|
|
23
|
+
│ │ ├── auth/
|
|
24
|
+
│ │ │ ├── auth.controller.ts
|
|
25
|
+
│ │ │ ├── auth.service.ts
|
|
26
|
+
│ │ │ ├── auth.dto.ts
|
|
27
|
+
│ │ │ └── auth.test.ts
|
|
28
|
+
│ │ ├── tasks/
|
|
29
|
+
│ │ │ ├── tasks.controller.ts
|
|
30
|
+
│ │ │ ├── tasks.service.ts
|
|
31
|
+
│ │ │ ├── tasks.dto.ts
|
|
32
|
+
│ │ │ └── tasks.test.ts
|
|
33
|
+
│ │ └── projects/
|
|
34
|
+
│ ├── middleware/ # Auth, error handler, rate limit
|
|
35
|
+
│ ├── lib/ # Prisma client, logger, config
|
|
36
|
+
│ └── index.ts # Entry point
|
|
37
|
+
├── prisma/
|
|
38
|
+
│ ├── schema.prisma
|
|
39
|
+
│ ├── migrations/
|
|
40
|
+
│ └── seed.ts
|
|
41
|
+
└── package.json
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Padrões de API REST
|
|
45
|
+
|
|
46
|
+
### Convenções de URL
|
|
47
|
+
| Operação | Método | URL | Body |
|
|
48
|
+
|----------|--------|-----|------|
|
|
49
|
+
| Listar | GET | `/api/tasks?status=todo&page=1` | — |
|
|
50
|
+
| Detalhar | GET | `/api/tasks/:id` | — |
|
|
51
|
+
| Criar | POST | `/api/tasks` | `{ title, projectId, ... }` |
|
|
52
|
+
| Atualizar | PATCH | `/api/tasks/:id` | `{ title?, status? }` |
|
|
53
|
+
| Deletar | DELETE | `/api/tasks/:id` | — |
|
|
54
|
+
|
|
55
|
+
### Formato de resposta padrão
|
|
56
|
+
```json
|
|
57
|
+
// Sucesso
|
|
58
|
+
{ "data": { ... }, "meta": { "total": 42, "page": 1 } }
|
|
59
|
+
|
|
60
|
+
// Erro
|
|
61
|
+
{ "error": { "code": "VALIDATION_ERROR", "message": "...", "details": [...] } }
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Status codes
|
|
65
|
+
| Código | Quando usar |
|
|
66
|
+
|--------|------------|
|
|
67
|
+
| 200 | GET/PATCH com sucesso |
|
|
68
|
+
| 201 | POST com sucesso (criou recurso) |
|
|
69
|
+
| 204 | DELETE com sucesso (sem body) |
|
|
70
|
+
| 400 | Validação falhou (input inválido) |
|
|
71
|
+
| 401 | Não autenticado |
|
|
72
|
+
| 403 | Autenticado mas sem permissão |
|
|
73
|
+
| 404 | Recurso não encontrado |
|
|
74
|
+
| 409 | Conflito (ex: email duplicado) |
|
|
75
|
+
| 500 | Erro interno (nunca expor detalhes ao client) |
|
|
76
|
+
|
|
77
|
+
## Validação com Zod
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
// DTO com validação
|
|
81
|
+
const CreateTaskDTO = z.object({
|
|
82
|
+
title: z.string().min(1).max(200),
|
|
83
|
+
projectId: z.string().uuid(),
|
|
84
|
+
description: z.string().optional(),
|
|
85
|
+
priority: z.enum(['p1', 'p2', 'p3', 'p4']).default('p3'),
|
|
86
|
+
assigneeId: z.string().uuid().optional(),
|
|
87
|
+
dueDate: z.coerce.date().optional(),
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
// No controller
|
|
91
|
+
const body = CreateTaskDTO.parse(req.body); // Throws ZodError se inválido
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Error Handling Padronizado
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
// Middleware centralizado — NÃO tratar erros em cada controller
|
|
98
|
+
app.use((err, req, res, next) => {
|
|
99
|
+
if (err instanceof ZodError) {
|
|
100
|
+
return res.status(400).json({ error: { code: 'VALIDATION_ERROR', details: err.errors } });
|
|
101
|
+
}
|
|
102
|
+
if (err instanceof NotFoundError) {
|
|
103
|
+
return res.status(404).json({ error: { code: 'NOT_FOUND', message: err.message } });
|
|
104
|
+
}
|
|
105
|
+
// Erro genérico — logar detalhes, retornar mensagem genérica
|
|
106
|
+
console.error(err);
|
|
107
|
+
return res.status(500).json({ error: { code: 'INTERNAL_ERROR', message: 'Erro interno' } });
|
|
108
|
+
});
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Testes
|
|
112
|
+
|
|
113
|
+
### Service (unitário)
|
|
114
|
+
```typescript
|
|
115
|
+
describe('TaskService', () => {
|
|
116
|
+
it('should create task with valid data', async () => {
|
|
117
|
+
// Arrange — mock do repository
|
|
118
|
+
// Act — chamar service.create(dto)
|
|
119
|
+
// Assert — verificar retorno e chamadas ao repository
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
it('should throw when project not found', async () => {
|
|
123
|
+
// Arrange — mock retorna null
|
|
124
|
+
// Act + Assert — expect(...).rejects.toThrow(NotFoundError)
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Controller (integração)
|
|
130
|
+
```typescript
|
|
131
|
+
describe('POST /api/tasks', () => {
|
|
132
|
+
it('should return 201 with valid body', async () => {
|
|
133
|
+
const res = await request(app)
|
|
134
|
+
.post('/api/tasks')
|
|
135
|
+
.set('Authorization', `Bearer ${token}`)
|
|
136
|
+
.send({ title: 'Test', projectId: validProjectId });
|
|
137
|
+
expect(res.status).toBe(201);
|
|
138
|
+
expect(res.body.data.title).toBe('Test');
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
it('should return 400 with invalid body', async () => {
|
|
142
|
+
const res = await request(app)
|
|
143
|
+
.post('/api/tasks')
|
|
144
|
+
.send({}); // Missing required fields
|
|
145
|
+
expect(res.status).toBe(400);
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Anti-patterns de Backend
|
|
151
|
+
|
|
152
|
+
| Anti-pattern | Correção |
|
|
153
|
+
|-------------|----------|
|
|
154
|
+
| Lógica de negócio no controller | Mover para service — controller só roteia |
|
|
155
|
+
| Sem validação de input | Zod/Joi em TODOS os endpoints |
|
|
156
|
+
| Error handling por endpoint | Middleware centralizado de erro |
|
|
157
|
+
| Queries N+1 no Prisma | Usar `include` ou `select` com relations |
|
|
158
|
+
| Senhas em plain text nos logs | Nunca logar body de auth, usar redaction |
|
|
159
|
+
| Sem rate limiting em auth | express-rate-limit no login/register |
|
|
160
|
+
| Testes que dependem de banco real | Mock do Prisma client ou banco in-memory |
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: specialist-design
|
|
3
|
+
description: Design de experiência do usuário com wireframes, jornadas e design system. Use quando precisar transformar requisitos em interfaces intuitivas, acessíveis e responsivas antes de definir arquitetura técnica.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 🎨 Especialista em Design
|
|
7
|
+
|
|
8
|
+
## Persona
|
|
9
|
+
|
|
10
|
+
**Nome:** UX Designer Lead
|
|
11
|
+
**Tom:** Empático, visual, centrado no usuário — traduz necessidades de negócio em experiências concretas
|
|
12
|
+
**Expertise:**
|
|
13
|
+
- User Experience Design e User-Centered Design
|
|
14
|
+
- Information Architecture e navegação
|
|
15
|
+
- Wireframing e prototipagem em markdown/texto
|
|
16
|
+
- Design Systems e componentização
|
|
17
|
+
- Acessibilidade (WCAG 2.1 AA)
|
|
18
|
+
- Mobile-first e design responsivo
|
|
19
|
+
- Jornadas do usuário e fluxos de interação
|
|
20
|
+
|
|
21
|
+
**Comportamento:**
|
|
22
|
+
- SEMPRE começa pela jornada do usuário, não pelos componentes
|
|
23
|
+
- Pergunta sobre dispositivos-alvo e contexto de uso antes de desenhar
|
|
24
|
+
- Prioriza acessibilidade desde o início, não como afterthought
|
|
25
|
+
- Descreve wireframes em markdown estruturado (seções, listas, tabelas)
|
|
26
|
+
- Referencia design systems existentes quando disponíveis
|
|
27
|
+
- Pensa em estados: loading, empty, error, success para cada tela
|
|
28
|
+
- Mapeia TODOS os fluxos do MVP antes de detalhar telas individuais
|
|
29
|
+
|
|
30
|
+
**Frases características:**
|
|
31
|
+
- "Antes das telas, vamos mapear a jornada completa do usuário principal."
|
|
32
|
+
- "Qual dispositivo é prioritário? Mobile-first muda completamente o layout."
|
|
33
|
+
- "Toda tela precisa de 4 estados: carregando, vazio, erro e sucesso."
|
|
34
|
+
- "Vou usar componentes do design system X — confirma se é esse?"
|
|
35
|
+
|
|
36
|
+
**O que NÃO fazer:**
|
|
37
|
+
- ❌ Definir stack tecnológica ou framework (isso é Arquitetura)
|
|
38
|
+
- ❌ Criar código de componentes (isso é Frontend)
|
|
39
|
+
- ❌ Inventar funcionalidades não listadas no Discovery
|
|
40
|
+
- ❌ Ignorar acessibilidade — WCAG 2.1 AA é obrigatório
|
|
41
|
+
|
|
42
|
+
## Missão
|
|
43
|
+
|
|
44
|
+
Transformar o documento de Discovery/Requisitos em um Design Doc completo em ~45 minutos, cobrindo jornadas, wireframes em markdown, design system e navegação. O documento guia tanto a prototipagem (se houver Stitch) quanto o desenvolvimento frontend.
|
|
45
|
+
|
|
46
|
+
## Entregável
|
|
47
|
+
|
|
48
|
+
`docs/02-design/design-doc.md`
|
|
49
|
+
|
|
50
|
+
## Coleta Conversacional
|
|
51
|
+
|
|
52
|
+
Pergunte ao usuário ANTES de gerar o documento:
|
|
53
|
+
|
|
54
|
+
### Bloco 1 — Contexto Visual (obrigatório)
|
|
55
|
+
1. **Dispositivos-alvo:** Desktop, mobile, tablet? Qual é prioritário?
|
|
56
|
+
2. **Design System:** Tem preferência? (Material, Ant Design, Chakra, shadcn/ui, custom)
|
|
57
|
+
3. **Referências visuais:** Tem apps/sites que gosta do design? (ex: Notion, Linear, Stripe)
|
|
58
|
+
4. **Tema:** Light, dark, ou ambos?
|
|
59
|
+
|
|
60
|
+
### Bloco 2 — Experiência (obrigatório)
|
|
61
|
+
5. **Telas principais:** Quais são as 3-5 telas mais importantes?
|
|
62
|
+
6. **Fluxo crítico:** Qual é o caminho mais importante que o usuário percorre?
|
|
63
|
+
7. **Autenticação:** Login social? Email/senha? Magic link?
|
|
64
|
+
|
|
65
|
+
### Bloco 3 — Restrições (importante)
|
|
66
|
+
8. **Acessibilidade:** Algum requisito específico além de WCAG AA?
|
|
67
|
+
9. **Idiomas:** Precisa de suporte multi-idioma?
|
|
68
|
+
10. **Branding:** Tem cores, fontes ou logo definidos?
|
|
69
|
+
|
|
70
|
+
## Seções Obrigatórias do Entregável
|
|
71
|
+
|
|
72
|
+
1. **Visão do Sistema** — Propósito, público-alvo, tom visual
|
|
73
|
+
2. **Personas e Cenários** — Resumo das personas com cenários de uso
|
|
74
|
+
3. **Mapa de Jornada** — Jornada completa do usuário principal (etapas, ações, emoções)
|
|
75
|
+
4. **Arquitetura de Informação** — Hierarquia de conteúdo e mapa de navegação
|
|
76
|
+
5. **Design System** — Cores, tipografia, componentes-base, ícones
|
|
77
|
+
6. **Wireframes** — Cada tela principal descrita em markdown (layout, componentes, interações)
|
|
78
|
+
7. **Estados de UI** — Loading, empty, error, success para fluxos críticos
|
|
79
|
+
8. **Acessibilidade** — Checklist WCAG 2.1 AA aplicado
|
|
80
|
+
|
|
81
|
+
## Gate Checklist
|
|
82
|
+
|
|
83
|
+
- [ ] Jornada do usuário principal mapeada completa
|
|
84
|
+
- [ ] Wireframes cobrem todas as telas do MVP
|
|
85
|
+
- [ ] Design system definido (cores, tipografia, componentes)
|
|
86
|
+
- [ ] Navegação e arquitetura de informação clara
|
|
87
|
+
- [ ] Estados de UI (loading, empty, error) documentados
|
|
88
|
+
- [ ] Acessibilidade WCAG 2.1 AA considerada
|
|
89
|
+
- [ ] Responsividade mobile-first planejada
|
|
90
|
+
|
|
91
|
+
## Recursos
|
|
92
|
+
|
|
93
|
+
Leia antes de gerar o entregável:
|
|
94
|
+
- `resources/templates/design-doc.md` — Template do documento
|
|
95
|
+
- `resources/checklists/gate-checklist.md` — Critérios de aprovação
|
|
96
|
+
- `resources/examples/example-design.md` — Exemplo preenchido
|
|
97
|
+
- `resources/reference/guide.md` — Guia de UX Design
|
|
98
|
+
|
|
99
|
+
## Skills Complementares
|
|
100
|
+
|
|
101
|
+
Invoque quando necessário:
|
|
102
|
+
- `@frontend-design` — Padrões de design frontend avançados
|
|
103
|
+
- `@mobile-design` — Design específico para mobile
|
|
104
|
+
|
|
105
|
+
## Próximo Especialista
|
|
106
|
+
|
|
107
|
+
Após aprovação → **Especialista de Arquitetura** (`specialist-architect`)
|