@daniel-da-silva-alves/sddk 2.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.
Files changed (31) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/LICENSE +21 -0
  3. package/README.md +260 -0
  4. package/bin/cli.js +430 -0
  5. package/package.json +49 -0
  6. package/sddk/plugin.json +12 -0
  7. package/sddk/skills/code-review/SKILL.md +185 -0
  8. package/sddk/skills/code-review/references/anti-ai-design-patterns.md +185 -0
  9. package/sddk/skills/code-review/references/refactoring-severity-guide.md +96 -0
  10. package/sddk/skills/code-review/references/security-checklist.md +131 -0
  11. package/sddk/skills/fullstack-development/SKILL.md +128 -0
  12. package/sddk/skills/fullstack-development/references/clean-code-rules.md +146 -0
  13. package/sddk/skills/fullstack-development/references/self-review-checklist.md +64 -0
  14. package/sddk/skills/implementation-planning/SKILL.md +102 -0
  15. package/sddk/skills/implementation-planning/references/manual-tests-template.md +95 -0
  16. package/sddk/skills/implementation-planning/references/microtask-template.md +66 -0
  17. package/sddk/skills/software-requirements-specification/SKILL.md +80 -0
  18. package/sddk/skills/software-requirements-specification/references/checklist-template.md +65 -0
  19. package/sddk/skills/software-requirements-specification/references/ieee-830-template.md +151 -0
  20. package/sddk/skills/software-requirements-specification/references/socratic-interview-guide.md +96 -0
  21. package/sddk/skills/system-design-document/SKILL.md +164 -0
  22. package/sddk/skills/system-design-document/references/architecture-patterns.md +105 -0
  23. package/sddk/skills/system-design-document/references/documentation-sources-guide.md +126 -0
  24. package/sddk/skills/system-design-document/references/sdd-template.md +259 -0
  25. package/sddk/skills/system-design-document/references/standards-api-template.md +128 -0
  26. package/sddk/skills/system-design-document/references/standards-architecture-template.md +76 -0
  27. package/sddk/skills/system-design-document/references/standards-coding-template.md +114 -0
  28. package/sddk/skills/system-design-document/references/standards-design-system-template.md +137 -0
  29. package/sddk/skills/system-design-document/references/standards-naming-template.md +96 -0
  30. package/sddk/skills/system-design-document/references/standards-onboarding-guide.md +119 -0
  31. package/sddk/skills/system-design-document/references/tech-stack-analysis.md +84 -0
@@ -0,0 +1,259 @@
1
+ # Template de System Design Document (SDD)
2
+
3
+ Use este template como base para gerar o documento SDD. Adapte as seções conforme a complexidade da feature.
4
+
5
+ ---
6
+
7
+ ## Estrutura do Documento
8
+
9
+ ```markdown
10
+ # System Design Document (SDD)
11
+ ## {Nome da Feature}
12
+
13
+ **Versão**: 1.0
14
+ **Data**: {data de criação}
15
+ **Projeto**: {nome do projeto}
16
+ **Feature**: {nome da feature}
17
+ **SRS Referência**: [srs.md](./srs.md)
18
+
19
+ ---
20
+
21
+ ## 1. Visão Geral Técnica
22
+
23
+ ### 1.1 Resumo
24
+ Breve descrição técnica do que será implementado e como.
25
+
26
+ ### 1.2 Stack Tecnológica
27
+
28
+ | Camada | Tecnologia | Justificativa |
29
+ |:---|:---|:---|
30
+ | Linguagem | {ex: TypeScript} | {por que esta escolha} |
31
+ | Framework | {ex: Next.js 14} | {por que esta escolha} |
32
+ | Banco de dados | {ex: PostgreSQL} | {por que esta escolha} |
33
+ | ORM/Query | {ex: Prisma} | {por que esta escolha} |
34
+ | Autenticação | {ex: NextAuth.js} | {por que esta escolha} |
35
+ | Estilização | {ex: Tailwind CSS v4} | {por que esta escolha} |
36
+
37
+ ### 1.3 Decisões Arquiteturais
38
+
39
+ | Decisão | Escolha | Alternativas Consideradas | Justificativa |
40
+ |:---|:---|:---|:---|
41
+ | Padrão | {ex: Clean Architecture} | MVC, Hexagonal | {razão} |
42
+ | State Management | {ex: Zustand} | Redux, Context | {razão} |
43
+
44
+ ---
45
+
46
+ ## 2. Arquitetura do Sistema
47
+
48
+ ### 2.1 Diagrama de Arquitetura
49
+
50
+ ```mermaid
51
+ graph TB
52
+ subgraph Frontend
53
+ A[Pages/Routes] --> B[Components]
54
+ B --> C[Hooks/State]
55
+ end
56
+ subgraph Backend
57
+ D[API Routes] --> E[Services]
58
+ E --> F[Repository]
59
+ F --> G[(Database)]
60
+ end
61
+ C --> D
62
+ ```
63
+
64
+ ### 2.2 Estrutura de Diretórios
65
+
66
+ ```
67
+ src/
68
+ ├── app/ # Routes / pages
69
+ ├── components/ # Componentes reutilizáveis
70
+ │ ├── ui/ # Design system (atoms)
71
+ │ └── features/ # Componentes de feature
72
+ ├── lib/ # Utilitários e helpers
73
+ ├── services/ # Lógica de negócio
74
+ ├── repositories/ # Acesso a dados
75
+ ├── types/ # TypeScript types/interfaces
76
+ └── config/ # Configurações
77
+ ```
78
+
79
+ ### 2.3 Camadas e Responsabilidades
80
+
81
+ | Camada | Responsabilidade | Exemplo |
82
+ |:---|:---|:---|
83
+ | **Presentation** | UI, formulários, validação visual | Componentes React |
84
+ | **Application** | Orquestração, use cases | Services |
85
+ | **Domain** | Regras de negócio puras | Entidades, Value Objects |
86
+ | **Infrastructure** | Acesso a dados, APIs externas | Repositories, API clients |
87
+
88
+ ---
89
+
90
+ ## 3. Modelo de Dados
91
+
92
+ ### 3.1 Entidades
93
+
94
+ #### {NomeEntidade}
95
+
96
+ | Campo | Tipo | Constraints | Descrição |
97
+ |:---|:---|:---|:---|
98
+ | id | UUID | PK, auto-generated | Identificador único |
99
+ | {campo} | {tipo} | {constraints} | {descrição} |
100
+ | created_at | DateTime | NOT NULL, default NOW | Data de criação |
101
+ | updated_at | DateTime | NOT NULL, auto-update | Última atualização |
102
+
103
+ ### 3.2 Relacionamentos
104
+
105
+ ```mermaid
106
+ erDiagram
107
+ ENTITY_A ||--o{ ENTITY_B : "has many"
108
+ ENTITY_B }|--|| ENTITY_C : "belongs to"
109
+ ```
110
+
111
+ ### 3.3 Migrations
112
+
113
+ Lista de migrations necessárias em ordem:
114
+ 1. `001_create_{table}.sql` — Criar tabela principal
115
+ 2. `002_create_{table}.sql` — Criar tabelas secundárias
116
+
117
+ ---
118
+
119
+ ## 4. Design de API
120
+
121
+ ### 4.1 Endpoints
122
+
123
+ #### `POST /api/{resource}`
124
+ - **Descrição**: {o que faz}
125
+ - **Auth**: {requer autenticação? qual role?}
126
+ - **Request Body**:
127
+ ```json
128
+ {
129
+ "field": "type — descrição"
130
+ }
131
+ ```
132
+ - **Response 200**:
133
+ ```json
134
+ {
135
+ "data": {}
136
+ }
137
+ ```
138
+ - **Errors**: 400 (validação), 401 (não autenticado), 403 (não autorizado), 500 (erro interno)
139
+
140
+ ### 4.2 Validações
141
+
142
+ | Endpoint | Campo | Regra |
143
+ |:---|:---|:---|
144
+ | POST /api/{resource} | {campo} | {regra de validação} |
145
+
146
+ ---
147
+
148
+ ## 5. Design de Interface (Frontend)
149
+
150
+ ### 5.1 Componentes
151
+
152
+ | Componente | Tipo | Descrição |
153
+ |:---|:---|:---|
154
+ | `{ComponentName}` | Page | {descrição} |
155
+ | `{ComponentName}` | Feature | {descrição} |
156
+ | `{ComponentName}` | UI/Atom | {descrição} |
157
+
158
+ ### 5.2 Estado e Fluxo de Dados
159
+
160
+ Descrever como o estado flui entre componentes:
161
+ - Fonte de dados
162
+ - Estado local vs global
163
+ - Cache strategy
164
+
165
+ ### 5.3 Design Tokens
166
+
167
+ | Token | Valor | Uso |
168
+ |:---|:---|:---|
169
+ | `--color-primary` | {valor} | {onde usar} |
170
+ | `--spacing-md` | {valor} | {onde usar} |
171
+
172
+ ---
173
+
174
+ ## 6. Integrações
175
+
176
+ ### 6.1 APIs Externas
177
+
178
+ | Serviço | Propósito | Endpoint | Auth |
179
+ |:---|:---|:---|:---|
180
+ | {nome} | {para quê} | {URL base} | {tipo de auth} |
181
+
182
+ ### 6.2 Eventos / Webhooks
183
+
184
+ | Evento | Trigger | Payload |
185
+ |:---|:---|:---|
186
+ | {nome} | {quando dispara} | {dados enviados} |
187
+
188
+ ---
189
+
190
+ ## 7. Tratamento de Erros
191
+
192
+ ### 7.1 Estratégia
193
+
194
+ | Camada | Estratégia | Exemplo |
195
+ |:---|:---|:---|
196
+ | Frontend | {ex: Error Boundary + toast} | {quando usar} |
197
+ | API | {ex: HTTP status + error body padronizado} | {formato} |
198
+ | Service | {ex: Custom exceptions + logging} | {tipos de erro} |
199
+
200
+ ### 7.2 Error Codes
201
+
202
+ | Código | Mensagem | Ação do Usuário |
203
+ |:---|:---|:---|
204
+ | {code} | {mensagem} | {o que fazer} |
205
+
206
+ ---
207
+
208
+ ## 8. Segurança
209
+
210
+ ### 8.1 Autenticação
211
+ Descrever mecanismo de autenticação.
212
+
213
+ ### 8.2 Autorização
214
+ Descrever modelo de permissões (RBAC, ABAC, etc.).
215
+
216
+ ### 8.3 Proteção de Dados
217
+ Campos sensíveis, criptografia, LGPD/GDPR.
218
+
219
+ ---
220
+
221
+ ## 9. Referências ao SRS
222
+
223
+ | Seção SDD | Requisito SRS | Referência |
224
+ |:---|:---|:---|
225
+ | 3. Modelo de Dados | RF-001 | [SRS#3 RF-001](./srs.md#rf-001) |
226
+
227
+ ---
228
+
229
+ ## 10. Fontes de Documentação Técnica
230
+
231
+ ### 10.1 Configuração de Fontes
232
+
233
+ | Tecnologia | Versão | Fonte Primária | URL Oficial | MCP/Skill |
234
+ |:---|:---|:---|:---|:---|
235
+ | {tecnologia} | {versão} | {URL oficial / MCP / Skill / Docs local} | {URL} | {nome do MCP ou —} |
236
+
237
+ ### 10.2 Documentação Local do Projeto
238
+
239
+ | Caminho | Conteúdo |
240
+ |:---|:---|
241
+ | {caminho} | {descrição do conteúdo} |
242
+
243
+ ### 10.3 Regra de Consulta
244
+
245
+ Ordem de prioridade para consulta de documentação durante o desenvolvimento:
246
+ 1. Documentação local do projeto (caminhos listados em 10.2)
247
+ 2. MCP/Skill (se listado na coluna MCP/Skill em 10.1)
248
+ 3. URL oficial (usar `read_url_content` na URL listada em 10.1)
249
+ 4. Web search (usar `search_web` com query: "{tecnologia} {versão} {tópico} site:{domínio oficial}")
250
+ ```
251
+
252
+ ## Regras de Preenchimento
253
+
254
+ 1. **Cada decisão arquitetural DEVE ter justificativa** — nunca apenas "porque sim"
255
+ 2. **Modelo de dados DEVE corresponder aos requisitos do SRS** — usar matriz de referência
256
+ 3. **Endpoints DEVEM cobrir todos os requisitos funcionais** do SRS
257
+ 4. **Componentes DEVEM ser granulares** — nunca um componente monolítico
258
+ 5. **Design tokens DEVEM ser definidos** — nunca usar valores hardcoded
259
+ 6. **Fontes de documentação DEVEM ser configuradas** para cada tecnologia da stack com versão pinada
@@ -0,0 +1,128 @@
1
+ # Template: Convenções de API do Projeto
2
+
3
+ Use este template para gerar `.specs/standards/api-conventions.md`. Preencha com as respostas do onboarding. Se o projeto não tem API, criar com "N/A — projeto sem API".
4
+
5
+ ```markdown
6
+ # Convenções de API
7
+
8
+ **Projeto**: {nome do projeto}
9
+ **Última atualização**: {data}
10
+
11
+ ---
12
+
13
+ ## 1. Padrão de API
14
+
15
+ **Tipo**: {REST | GraphQL | tRPC | gRPC}
16
+ **Versionamento**: {ex: URL path /api/v1/, header, nenhum}
17
+ **Base URL**: {ex: /api/v1}
18
+
19
+ ---
20
+
21
+ ## 2. Formato de Response
22
+
23
+ ### Response de Sucesso
24
+ ```json
25
+ {
26
+ "data": { ... },
27
+ "meta": {
28
+ "page": 1,
29
+ "perPage": 20,
30
+ "total": 150
31
+ }
32
+ }
33
+ ```
34
+
35
+ ### Response de Erro
36
+ ```json
37
+ {
38
+ "error": {
39
+ "code": "{ERROR_CODE}",
40
+ "message": "{mensagem legível}",
41
+ "details": [ ... ]
42
+ }
43
+ }
44
+ ```
45
+
46
+ ### HTTP Status Codes
47
+
48
+ | Status | Quando usar |
49
+ |:---|:---|
50
+ | 200 | Sucesso (GET, PUT, PATCH) |
51
+ | 201 | Recurso criado (POST) |
52
+ | 204 | Sucesso sem body (DELETE) |
53
+ | 400 | Validação / input inválido |
54
+ | 401 | Não autenticado |
55
+ | 403 | Não autorizado (sem permissão) |
56
+ | 404 | Recurso não encontrado |
57
+ | 409 | Conflito (ex: email já existe) |
58
+ | 422 | Entidade não processável |
59
+ | 429 | Rate limit excedido |
60
+ | 500 | Erro interno do servidor |
61
+
62
+ ---
63
+
64
+ ## 3. Naming de Endpoints
65
+
66
+ | Regra | Exemplo correto | Exemplo errado |
67
+ |:---|:---|:---|
68
+ | Substantivos no plural | `/api/v1/users` | `/api/v1/user` |
69
+ | Sem verbos na URL | `GET /users` | `GET /getUsers` |
70
+ | Kebab-case para multi-palavras | `/order-items` | `/orderItems` |
71
+ | Recursos aninhados | `/users/:id/orders` | `/getUserOrders` |
72
+
73
+ ---
74
+
75
+ ## 4. Paginação
76
+
77
+ **Tipo**: {cursor | offset | keyset}
78
+
79
+ ### Formato de Request
80
+ {ex para offset:}
81
+ ```
82
+ GET /api/v1/users?page=2&per_page=20
83
+ ```
84
+
85
+ ### Formato de Response (meta)
86
+ ```json
87
+ {
88
+ "meta": {
89
+ "page": 2,
90
+ "per_page": 20,
91
+ "total": 150,
92
+ "total_pages": 8
93
+ }
94
+ }
95
+ ```
96
+
97
+ ---
98
+
99
+ ## 5. Filtros e Ordenação
100
+
101
+ ### Filtros
102
+ ```
103
+ GET /api/v1/users?status=active&role=admin
104
+ ```
105
+
106
+ ### Ordenação
107
+ ```
108
+ GET /api/v1/users?sort=created_at&order=desc
109
+ ```
110
+
111
+ ---
112
+
113
+ ## 6. Autenticação
114
+
115
+ **Método**: {ex: Bearer Token (JWT) via header Authorization}
116
+ **Header**: `Authorization: Bearer {token}`
117
+ **Refresh**: {ex: via POST /api/v1/auth/refresh com refresh token em httpOnly cookie}
118
+
119
+ ---
120
+
121
+ ## 7. Validação
122
+
123
+ | Regra | Descrição |
124
+ |:---|:---|
125
+ | Validação no backend | TODA input é validada no servidor, independente do frontend |
126
+ | Mensagens de erro | Retornar campo + mensagem específica |
127
+ | Formato de erro de validação | `{"error": {"code": "VALIDATION_ERROR", "details": [{"field": "email", "message": "Email inválido"}]}}` |
128
+ ```
@@ -0,0 +1,76 @@
1
+ # Template: Padrões Arquiteturais do Projeto
2
+
3
+ Use este template para gerar `.specs/standards/architecture.md`. Preencha com as respostas do onboarding.
4
+
5
+ ```markdown
6
+ # Padrões Arquiteturais do Projeto
7
+
8
+ **Projeto**: {nome do projeto}
9
+ **Última atualização**: {data}
10
+
11
+ ---
12
+
13
+ ## 1. Padrão Arquitetural Base
14
+
15
+ **Padrão**: {ex: Domain-Driven Design (DDD)}
16
+ **Justificativa**: {por que este padrão}
17
+
18
+ ### Camadas e Responsabilidades
19
+
20
+ | Camada | Responsabilidade | Pode importar de | NÃO pode importar de |
21
+ |:---|:---|:---|:---|
22
+ | {ex: Domain} | {ex: Entidades, Value Objects, regras de negócio} | {nenhuma} | {Application, Infrastructure, Presentation} |
23
+ | {ex: Application} | {ex: Use Cases, DTOs, Ports} | {Domain} | {Infrastructure, Presentation} |
24
+ | {ex: Infrastructure} | {ex: Repositories, API clients, DB} | {Domain, Application} | {Presentation} |
25
+ | {ex: Presentation} | {ex: Controllers, Views, Components} | {Application} | {Domain, Infrastructure} |
26
+
27
+ ### Estrutura de Diretórios Padrão
28
+
29
+ ```
30
+ src/
31
+ ├── {camada1}/
32
+ ├── {camada2}/
33
+ ├── {camada3}/
34
+ └── {camada4}/
35
+ ```
36
+
37
+ ---
38
+
39
+ ## 2. Padrões Avançados
40
+
41
+ ### {ex: Event Sourcing}
42
+ - **Usado em**: {módulos/contextos onde se aplica}
43
+ - **NÃO usado em**: {módulos onde NÃO se aplica}
44
+ - **Implementação**: {detalhes técnicos}
45
+
46
+ ### {ex: BFF (Backend for Frontend)}
47
+ - **Escopo**: {cada frontend tem seu BFF? ou BFF único?}
48
+ - **Regra**: {BFF contém lógica de negócio? Ou apenas orquestra?}
49
+
50
+ ### {ex: CQRS (Command Query Responsibility Segregation)}
51
+ - **Usado em**: {onde se aplica}
52
+ - **Command**: {como são os commands}
53
+ - **Query**: {como são as queries}
54
+
55
+ ---
56
+
57
+ ## 3. Regras de Dependência
58
+
59
+ > [!IMPORTANT]
60
+ > Estas regras NUNCA devem ser violadas. Violação é classificada como 🔴 Crítica no Code Review.
61
+
62
+ 1. {ex: Domain NUNCA importa de Infrastructure}
63
+ 2. {ex: Use Cases orquestram, NUNCA contêm lógica de domínio pura}
64
+ 3. {ex: Cada Aggregate tem seu próprio Repository}
65
+ 4. {ex: Repositories retornam Domain Entities, não DTOs}
66
+
67
+ ---
68
+
69
+ ## 4. Princípios de Design
70
+
71
+ | Princípio | Como aplicamos |
72
+ |:---|:---|
73
+ | {ex: SSOT} | {ex: Estado vive no banco. Cache é derivado, nunca fonte primária} |
74
+ | {ex: Separation of Concerns} | {ex: Cada módulo tem responsabilidade única} |
75
+ | {ex: Fail Fast} | {ex: Validar inputs na borda do sistema} |
76
+ ```
@@ -0,0 +1,114 @@
1
+ # Template: Boas Práticas e Padrões de Código
2
+
3
+ Use este template para gerar `.specs/standards/coding-standards.md`. Preencha com as respostas do onboarding.
4
+
5
+ ```markdown
6
+ # Boas Práticas e Padrões de Código
7
+
8
+ **Projeto**: {nome do projeto}
9
+ **Última atualização**: {data}
10
+
11
+ ---
12
+
13
+ ## 1. Princípios Adotados
14
+
15
+ | Princípio | O que significa NESTE projeto | Exemplo |
16
+ |:---|:---|:---|
17
+ | **SSOT** (Single Source of Truth) | {ex: Estado vive no banco. Cache é derivado.} | {ex: Não manter contadores em 2 tabelas} |
18
+ | **DRY** (Don't Repeat Yourself) | {ex: Extrair quando repetir ≥ 2 vezes} | {ex: apiClient centralizado, não fetch repetido} |
19
+ | **KISS** (Keep It Simple) | {ex: Preferir solução simples à elegante} | {ex: Usar map/filter ao invés de reduce complexo} |
20
+ | **YAGNI** (You Aren't Gonna Need It) | {ex: Não implementar features "por garantia"} | {ex: Não criar abstração genérica para 1 uso} |
21
+ | **SOLID** | {quais princípios do SOLID o projeto segue explicitamente} | — |
22
+
23
+ ---
24
+
25
+ ## 2. Regras de Abstração
26
+
27
+ ### Quando Extrair uma Função
28
+ - {ex: Quando o bloco é usado ≥ 2 vezes}
29
+ - {ex: Quando o bloco tem mais de 10 linhas e pode ter nome descritivo}
30
+ - {ex: Quando o bloco faz algo semanticamente independente}
31
+
32
+ ### Quando Criar um Componente
33
+ - {ex: Quando a UI é reutilizada em ≥ 2 lugares}
34
+ - {ex: Quando o componente tem mais de ~100 linhas}
35
+ - {ex: Quando tem estado ou lógica própria}
36
+
37
+ ### Quando Criar um Hook (React)
38
+ - {ex: Quando lógica stateful é usada em ≥ 2 componentes}
39
+ - {ex: Quando o componente fica mais limpo separando a lógica}
40
+
41
+ ### Quando Criar um Service
42
+ - {ex: Quando a lógica de negócio não pertence ao componente/controller}
43
+ - {ex: Quando a mesma operação é usada em múltiplos endpoints/páginas}
44
+
45
+ ---
46
+
47
+ ## 3. Tratamento de Erros
48
+
49
+ ### Estratégia por Camada
50
+
51
+ | Camada | Estratégia |
52
+ |:---|:---|
53
+ | **Domain** | {ex: Lançar custom exceptions (DomainError, ValidationError)} |
54
+ | **Application/Service** | {ex: Capturar domain errors, traduzir para DTOs de erro} |
55
+ | **API/Controller** | {ex: Error handler global, mapear exceptions para HTTP status} |
56
+ | **Frontend** | {ex: Error Boundary para crashes, toast para erros de ação} |
57
+
58
+ ### Custom Exceptions (se aplicável)
59
+ ```typescript
60
+ // Hierarquia de erros do projeto
61
+ class AppError extends Error { code: string; statusCode: number; }
62
+ class ValidationError extends AppError { fields: FieldError[]; }
63
+ class NotFoundError extends AppError { }
64
+ class UnauthorizedError extends AppError { }
65
+ class ConflictError extends AppError { }
66
+ ```
67
+
68
+ ### Mensagens de Erro
69
+ - {ex: Mensagens voltadas ao usuário, nunca stack traces}
70
+ - {ex: Logging do erro completo no servidor, mensagem limpa no client}
71
+ - {ex: Códigos de erro padronizados (ERROR_CODE) para o frontend mapear}
72
+
73
+ ---
74
+
75
+ ## 4. Logging
76
+
77
+ ### Estratégia
78
+ - **Formato**: {ex: Structured logging (JSON)}
79
+ - **Níveis**: {ex: error, warn, info, debug}
80
+ - **Ferramenta**: {ex: pino, winston, console estruturado}
81
+
82
+ ### O que Logar
83
+
84
+ | Nível | Quando usar | Exemplo |
85
+ |:---|:---|:---|
86
+ | `error` | Falhas que impedem a operação | Erro de conexão DB, exception não tratada |
87
+ | `warn` | Situações anormais mas recuperáveis | Rate limit próximo, fallback ativado |
88
+ | `info` | Eventos de negócio importantes | Usuário criado, pagamento processado |
89
+ | `debug` | Detalhes para debugging | Query SQL executada, payload recebido |
90
+
91
+ ### O que NUNCA Logar
92
+ - Senhas, tokens, chaves de API
93
+ - Dados pessoais sensíveis (CPF, cartão de crédito)
94
+ - Payloads completos de request em produção
95
+
96
+ ---
97
+
98
+ ## 5. Testes (se aplicável)
99
+
100
+ ### Estratégia
101
+ - **Tipo principal**: {ex: Testes manuais via manual-tests.md}
102
+ - **Cobertura mínima**: {ex: N/A — foco em testes manuais}
103
+ - **Quando automatizar**: {ex: Lógica de domínio crítica (cálculos, validações)}
104
+
105
+ ---
106
+
107
+ ## 6. Performance
108
+
109
+ ### Regras Gerais
110
+ - {ex: Queries de listagem DEVEM ter paginação (máximo 100 por página)}
111
+ - {ex: N+1 queries são proibidas — usar eager loading / join}
112
+ - {ex: Imagens devem ser otimizadas (WebP, lazy loading)}
113
+ - {ex: Bundle splitting para rotas de frontend}
114
+ ```
@@ -0,0 +1,137 @@
1
+ # Template: Design System do Projeto
2
+
3
+ Use este template para gerar `.specs/standards/design-system.md`. Preencha com as respostas do onboarding. Se o projeto é backend-only, criar o arquivo com conteúdo "N/A — projeto backend-only".
4
+
5
+ ```markdown
6
+ # Design System
7
+
8
+ **Projeto**: {nome do projeto}
9
+ **Última atualização**: {data}
10
+
11
+ ---
12
+
13
+ ## 1. Paleta de Cores
14
+
15
+ ### Cores Primárias
16
+ | Token | Valor | Uso |
17
+ |:---|:---|:---|
18
+ | `--color-primary-50` | {ex: #e8f0fe} | Backgrounds suaves |
19
+ | `--color-primary-100` | {ex: #d2e3fc} | Hover em backgrounds |
20
+ | `--color-primary-500` | {ex: #4285f4} | Ações primárias, links |
21
+ | `--color-primary-700` | {ex: #1a73e8} | Hover em ações primárias |
22
+ | `--color-primary-900` | {ex: #174ea6} | Texto em destaque |
23
+
24
+ ### Cores de Superfície
25
+ | Token | Valor | Uso |
26
+ |:---|:---|:---|
27
+ | `--color-surface` | {ex: #ffffff} | Background de cards, modals |
28
+ | `--color-surface-variant` | {ex: #f8f9fa} | Background de seções alternadas |
29
+ | `--color-on-surface` | {ex: #1f1f1f} | Texto sobre surfaces |
30
+ | `--color-on-surface-secondary` | {ex: #5f6368} | Texto secundário |
31
+ | `--color-outline` | {ex: #dadce0} | Bordas, divisores |
32
+
33
+ ### Cores Semânticas
34
+ | Token | Valor | Uso |
35
+ |:---|:---|:---|
36
+ | `--color-error` | {ex: #d32f2f} | Erros, validação |
37
+ | `--color-success` | {ex: #0f9d58} | Sucesso, confirmação |
38
+ | `--color-warning` | {ex: #f9ab00} | Alertas, avisos |
39
+ | `--color-info` | {ex: #4285f4} | Informações |
40
+
41
+ ### Modo Escuro (se aplicável)
42
+ | Token Light | Token Dark | Valor Dark |
43
+ |:---|:---|:---|
44
+ | `--color-surface` | `--color-surface-dark` | {ex: #1e1e1e} |
45
+
46
+ ---
47
+
48
+ ## 2. Tipografia
49
+
50
+ ### Fontes
51
+ | Token | Valor | Uso |
52
+ |:---|:---|:---|
53
+ | `--font-family` | {ex: 'Inter', sans-serif} | Texto geral |
54
+ | `--font-family-heading` | {ex: 'Outfit', sans-serif} | Headings |
55
+ | `--font-family-mono` | {ex: 'JetBrains Mono', monospace} | Código |
56
+
57
+ ### Tamanhos
58
+ | Token | Valor | Line Height | Uso |
59
+ |:---|:---|:---|:---|
60
+ | `--text-xs` | {ex: 0.75rem} | {ex: 1rem} | Labels, captions |
61
+ | `--text-sm` | {ex: 0.875rem} | {ex: 1.25rem} | Body small |
62
+ | `--text-base` | {ex: 1rem} | {ex: 1.5rem} | Body default |
63
+ | `--text-lg` | {ex: 1.125rem} | {ex: 1.75rem} | Body large |
64
+ | `--text-xl` | {ex: 1.25rem} | {ex: 1.75rem} | Heading 4 |
65
+ | `--text-2xl` | {ex: 1.5rem} | {ex: 2rem} | Heading 3 |
66
+ | `--text-3xl` | {ex: 1.875rem} | {ex: 2.25rem} | Heading 2 |
67
+ | `--text-4xl` | {ex: 2.25rem} | {ex: 2.5rem} | Heading 1 |
68
+
69
+ ### Pesos
70
+ | Token | Valor | Uso |
71
+ |:---|:---|:---|
72
+ | `--font-regular` | {ex: 400} | Texto normal |
73
+ | `--font-medium` | {ex: 500} | Ênfase suave |
74
+ | `--font-semibold` | {ex: 600} | Headings, labels |
75
+ | `--font-bold` | {ex: 700} | Destaque forte |
76
+
77
+ ---
78
+
79
+ ## 3. Espaçamento
80
+
81
+ | Token | Valor | Uso |
82
+ |:---|:---|:---|
83
+ | `--spacing-xs` | {ex: 0.25rem (4px)} | Espaço mínimo |
84
+ | `--spacing-sm` | {ex: 0.5rem (8px)} | Dentro de componentes |
85
+ | `--spacing-md` | {ex: 1rem (16px)} | Entre elementos |
86
+ | `--spacing-lg` | {ex: 1.5rem (24px)} | Entre seções |
87
+ | `--spacing-xl` | {ex: 2rem (32px)} | Entre blocos |
88
+ | `--spacing-2xl` | {ex: 3rem (48px)} | Entre seções maiores |
89
+
90
+ ---
91
+
92
+ ## 4. Bordas e Sombras
93
+
94
+ ### Border Radius
95
+ | Token | Valor | Uso |
96
+ |:---|:---|:---|
97
+ | `--radius-sm` | {ex: 4px} | Botões, inputs |
98
+ | `--radius-md` | {ex: 8px} | Cards |
99
+ | `--radius-lg` | {ex: 12px} | Modals, containers |
100
+ | `--radius-full` | {ex: 9999px} | Avatars, badges |
101
+
102
+ ### Shadows
103
+ | Token | Valor | Uso |
104
+ |:---|:---|:---|
105
+ | `--shadow-sm` | {ex: 0 1px 2px rgba(0,0,0,0.05)} | Cards sutis |
106
+ | `--shadow-md` | {ex: 0 4px 6px rgba(0,0,0,0.07)} | Cards elevados |
107
+ | `--shadow-lg` | {ex: 0 10px 15px rgba(0,0,0,0.1)} | Modals, dropdowns |
108
+
109
+ ---
110
+
111
+ ## 5. Componentes Base
112
+
113
+ | Componente | Background | Padding | Radius | Shadow |
114
+ |:---|:---|:---|:---|:---|
115
+ | Card | `--color-surface` | `--spacing-lg` | `--radius-md` | `--shadow-sm` |
116
+ | Button Primary | `--color-primary-500` | `--spacing-sm` `--spacing-md` | `--radius-sm` | none |
117
+ | Button Secondary | transparent | `--spacing-sm` `--spacing-md` | `--radius-sm` | none |
118
+ | Input | `--color-surface` | `--spacing-sm` `--spacing-md` | `--radius-sm` | inset border |
119
+ | Modal | `--color-surface` | `--spacing-xl` | `--radius-lg` | `--shadow-lg` |
120
+ | Badge | `--color-primary-50` | `--spacing-xs` `--spacing-sm` | `--radius-full` | none |
121
+
122
+ ---
123
+
124
+ ## 6. Breakpoints (Responsividade)
125
+
126
+ | Token | Valor | Dispositivo |
127
+ |:---|:---|:---|
128
+ | `--breakpoint-sm` | {ex: 640px} | Mobile landscape |
129
+ | `--breakpoint-md` | {ex: 768px} | Tablet |
130
+ | `--breakpoint-lg` | {ex: 1024px} | Desktop |
131
+ | `--breakpoint-xl` | {ex: 1280px} | Desktop largo |
132
+ ```
133
+
134
+ ## Regra para o Agente
135
+
136
+ > [!IMPORTANT]
137
+ > Quando o design system está definido, o agente NUNCA deve usar valores hardcoded para cores, espaçamentos, tipografia ou border-radius. SEMPRE usar os tokens definidos neste documento.