specifica-br 1.2.2 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +114 -44
- package/dist/boilerplate/commands/executar-task.md +133 -0
- package/dist/boilerplate/commands/gerar-contexto.md +1462 -0
- package/dist/boilerplate/commands/gerar-prd.md +289 -0
- package/dist/boilerplate/commands/gerar-tasks.md +168 -0
- package/dist/boilerplate/commands/gerar-techspec.md +1467 -0
- package/dist/boilerplate/commands/gerar-visao.md +731 -0
- package/dist/boilerplate/commands/realizar-codereview.md +288 -0
- package/dist/boilerplate/opencode-commands/executar-task.md +55 -48
- package/dist/boilerplate/opencode-commands/gerar-contexto.md +1462 -0
- package/dist/boilerplate/opencode-commands/gerar-prd.md +232 -40
- package/dist/boilerplate/opencode-commands/gerar-tasks.md +112 -31
- package/dist/boilerplate/opencode-commands/gerar-techspec.md +1464 -80
- package/dist/boilerplate/opencode-commands/gerar-visao.md +731 -0
- package/dist/boilerplate/opencode-commands/realizar-codereview.md +288 -0
- package/dist/boilerplate/skills/product-manager/SKILL.md +32 -0
- package/dist/boilerplate/skills/techspec-generator/SKILL.md +489 -0
- package/dist/boilerplate/skills/techspec-generator/references/api-contracts.md +421 -0
- package/dist/boilerplate/skills/techspec-generator/references/architecture-patterns.md +316 -0
- package/dist/boilerplate/skills/techspec-generator/references/database-modeling.md +436 -0
- package/dist/boilerplate/skills/techspec-generator/references/observability-testing.md +436 -0
- package/dist/boilerplate/skills/techspec-generator/references/security-hardening.md +238 -0
- package/dist/boilerplate/skills/techspec-generator/references/ux-ui-accessibility.md +511 -0
- package/dist/boilerplate/specs-templates/architecture-template.md +736 -0
- package/dist/boilerplate/specs-templates/codereview-template.md +95 -0
- package/dist/boilerplate/specs-templates/prd-template.md +101 -19
- package/dist/boilerplate/specs-templates/product_vision-template.md +284 -0
- package/dist/boilerplate/specs-templates/task-template.md +64 -18
- package/dist/boilerplate/specs-templates/tasks-template.md +12 -4
- package/dist/boilerplate/specs-templates/techspec-template.md +1227 -89
- package/dist/boilerplate/templates/architecture-template.md +736 -0
- package/dist/boilerplate/templates/codereview-template.md +95 -0
- package/dist/boilerplate/templates/prd-template.md +167 -0
- package/dist/boilerplate/templates/product_vision-template.md +284 -0
- package/dist/boilerplate/templates/task-template.md +169 -0
- package/dist/boilerplate/templates/tasks-template.md +15 -0
- package/dist/boilerplate/templates/techspec-template.md +1306 -0
- package/dist/commands/help.js +33 -11
- package/dist/commands/init.js +39 -43
- package/dist/tools-mapping.json +32 -0
- package/dist/types/init.d.ts +14 -17
- package/dist/utils/file-service.d.ts +5 -3
- package/dist/utils/file-service.js +168 -56
- package/dist/utils/message-formatter.d.ts +2 -1
- package/dist/utils/message-formatter.js +39 -22
- package/package.json +1 -1
|
@@ -0,0 +1,489 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: techspec-generator
|
|
3
|
+
description: Gerador de Especificacoes Tecnicas (Tech Specs) com expertise completa de Tech Lead, Arquiteto de Software, DBA, DevOps, Security Engineer e UI/UX Developer. Use esta skill SEMPRE quando o usuario solicitar criacao, refinamento ou analise de especificacoes tecnicas, tech specs, design de componentes, modelagem de dados, decisoes arquiteturais ou qualquer tarefa relacionada a definicao tecnica de software. Esta skill e obrigatoria para o comando /gerar-techspec e deve ser usada sempre que houver trabalho envolvendo especificacao tecnica, design de API, modelagem de banco de dados, decisao arquitetural, estrategia de testes, planejamento de infraestrutura ou revisao de viabilidade tecnica.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill: TechSpec Generator
|
|
7
|
+
|
|
8
|
+
Skill especializada em geracao de Especificacoes Tecnicas (Tech Specs) com a expertise completa de um time tecnico sênior.
|
|
9
|
+
|
|
10
|
+
Esta skill fornece todas as habilidades necessárias para traduzir requisitos de negócio (PRDs) em especificações técnicas de baixo nível, precisas e implementáveis, mantendo aderência total aos padrões do projeto.
|
|
11
|
+
|
|
12
|
+
## 1. Visão Geral e Propósito
|
|
13
|
+
|
|
14
|
+
### 1.1. Contexto no Workflow SDD (Spec Driven Development)
|
|
15
|
+
|
|
16
|
+
Esta skill é parte central do workflow de desenvolvimento orientado a especificações. Ela se integra com:
|
|
17
|
+
- **Comando:** `/gerar-techspec` - usa esta skill obrigatoriamente
|
|
18
|
+
- **Template:** `@specs/templates/techspec-template.md` - estrutura da TechSpec gerada
|
|
19
|
+
- **Contexto obrigatório:** `README.md`, `AGENTS.md`, código existente
|
|
20
|
+
- **Contexto opcional:** `specs/core/architecture.md` - arquitetura global do projeto
|
|
21
|
+
- **Entrada:** `./specs/features/[feature]/prd.md` - PRD aprovado
|
|
22
|
+
- **Saída:** `./specs/features/[feature]/techspec.md`
|
|
23
|
+
|
|
24
|
+
### 1.2. Quando Usar Esta Skill
|
|
25
|
+
|
|
26
|
+
Esta skill DEVE ser usada quando:
|
|
27
|
+
- Usuário solicita "criar tech spec", "especificação técnica", "design técnico"
|
|
28
|
+
- Usuário pede "como implementar [feature]", "qual arquitetura usar"
|
|
29
|
+
- Usuário menciona "modelagem de dados", "design de API", "contratos"
|
|
30
|
+
- Usuário precisa decidir entre abordagens técnicas (síncrono vs assíncrono, SQL vs NoSQL)
|
|
31
|
+
- Qualquer tarefa envolvendo tradução de requisitos em decisões técnicas explícitas
|
|
32
|
+
|
|
33
|
+
### 1.3. O Que Esta Skill Faz
|
|
34
|
+
|
|
35
|
+
Transforma PRDs aprovados em Tech Specs completas através de:
|
|
36
|
+
- **Análise de contexto** (stack, padrões, convenções do projeto)
|
|
37
|
+
- **Exploração de código** (validar padrões contra realidade)
|
|
38
|
+
- **Mapeamento de requisitos** (PRD → decisões técnicas)
|
|
39
|
+
- **Clarificação** (resolver lacunas com entrevista estruturada)
|
|
40
|
+
- **Especificação** (gerar documento implementável por dev júnior)
|
|
41
|
+
|
|
42
|
+
### 1.4. Princípio Fundamental
|
|
43
|
+
|
|
44
|
+
O comando `gerar-techspec.md` define o **PROCESSO** (o que fazer em cada passo). Esta skill define a **EXPERTISE** (como pensar sobre cada decisão técnica). Juntos, garantem Tech Specs de alta qualidade.
|
|
45
|
+
|
|
46
|
+
## 2. Habilidades Core (Competências Técnicas)
|
|
47
|
+
|
|
48
|
+
### 2.1. Decisão Técnica Fundamentada (Tech Lead)
|
|
49
|
+
|
|
50
|
+
**Objetivo:** Toda decisão técnica deve ser explícita, justificada e citada.
|
|
51
|
+
|
|
52
|
+
**O que fazer:**
|
|
53
|
+
- Documentar trade-offs de cada decisão (prós, contras, impacto)
|
|
54
|
+
- Usar matriz de decisão quando houver múltiplas opções
|
|
55
|
+
- Justificar por que a opção escolhida é melhor que as alternativas
|
|
56
|
+
- Citar fonte do padrão (AGENTS.md, código existente, feature similar)
|
|
57
|
+
- Avaliar impacto no projeto (complexidade, curva de aprendizado, manutenibilidade)
|
|
58
|
+
|
|
59
|
+
**Framework de Decisão:**
|
|
60
|
+
```
|
|
61
|
+
DECISÃO: [o que foi decidido]
|
|
62
|
+
OPÇÕES CONSIDERADAS: [A, B, C]
|
|
63
|
+
JUSTIFICATIVA: [por que esta opção]
|
|
64
|
+
TRADE-OFFS: [o que ganho vs o que perco]
|
|
65
|
+
FONTE: [AGENTS.md linha X / Feature Y / Convenção Z]
|
|
66
|
+
IMPACTO: [complexidade, manutenibilidade, performance]
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**Exemplo:**
|
|
70
|
+
- Decisão: "Usar Redis para cache de sessões"
|
|
71
|
+
- Justificativa: "Projeto já usa Redis (docker-compose.yml). TTL de 5min consistente com padrão existente em SessionService."
|
|
72
|
+
- Trade-off: "Adiciona dependência de Redis para autenticação (se Redis cai, sessões são perdidas). Mitigação: fallback para JWT stateless."
|
|
73
|
+
|
|
74
|
+
### 2.2. Design Arquitetural (Arquiteto de Software)
|
|
75
|
+
|
|
76
|
+
**Objetivo:** Selecionar e aplicar padrões arquiteturais adequados ao contexto.
|
|
77
|
+
|
|
78
|
+
**O que fazer:**
|
|
79
|
+
- Identificar paradigma do projeto (Clean Arch, DDD, Hexagonal, MVC)
|
|
80
|
+
- Garantir que novas features respeitam o paradigma existente
|
|
81
|
+
- Definir separação de camadas e direção de dependências
|
|
82
|
+
- Aplicar padrões de design (Repository, Strategy, Factory, Observer)
|
|
83
|
+
- Detectar e sinalizar violações arquiteturais
|
|
84
|
+
|
|
85
|
+
**Referência detalhada:** `references/architecture-patterns.md`
|
|
86
|
+
|
|
87
|
+
**Padrões de verificação:**
|
|
88
|
+
| Verificação | O que validar |
|
|
89
|
+
|:---|:---|
|
|
90
|
+
| Direção de dependências | Domain não depende de ninguém? Infrastructure depende de Application? |
|
|
91
|
+
| Separação de responsabilidades | Controller sem lógica de negócio? Handler sem acesso a DB? |
|
|
92
|
+
| Consistência com projeto | Nova feature segue mesmo padrão de features existentes? |
|
|
93
|
+
| Princípios SOLID | Cada classe tem uma responsabilidade? Interfaces são segregadas? |
|
|
94
|
+
|
|
95
|
+
### 2.3. Design de Componentes (Arquiteto de Software)
|
|
96
|
+
|
|
97
|
+
**Objetivo:** Definir componentes com responsabilidades claras e dependências explícitas.
|
|
98
|
+
|
|
99
|
+
**O que fazer:**
|
|
100
|
+
- Cada componente pertence a exatamente UMA camada arquitetural
|
|
101
|
+
- Responsabilidade única e específica (não "gerencia pedidos", mas "processa comando de criação de pedido")
|
|
102
|
+
- Dependências apenas de camadas permitidas (nunca para cima)
|
|
103
|
+
- Interfaces para contratos entre camadas
|
|
104
|
+
|
|
105
|
+
**Formato obrigatório:**
|
|
106
|
+
```
|
|
107
|
+
| Nome | Camada | Tipo | Responsabilidade | Dependências Permitidas |
|
|
108
|
+
|:---|:---|:---|:---|:---|
|
|
109
|
+
| CreateOrderHandler | Application | Handler | Processa comando de criação | IOrderRepository, IEventBus |
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### 2.4. Modelagem de Banco de Dados (DBA / Data Modeler)
|
|
113
|
+
|
|
114
|
+
**Objetivo:** Projetar schemas de dados precisos, eficientes e consistentes.
|
|
115
|
+
|
|
116
|
+
**O que fazer:**
|
|
117
|
+
- Tipos de dados específicos (VARCHAR(255), não "string"; DECIMAL(10,2), não "number")
|
|
118
|
+
- Constraints explícitas (PK, FK, Unique, Not Null, CHECK)
|
|
119
|
+
- Índices justificados (qual query este índice otimiza?)
|
|
120
|
+
- Relacionamentos documentados (1:1, 1:N, N:N) com cascade behavior
|
|
121
|
+
- Convenções de nomenclatura alinhadas ao projeto (snake_case, PascalCase, etc.)
|
|
122
|
+
- Estratégia de migração (qual ferramenta, qual padrão de nomenclatura)
|
|
123
|
+
|
|
124
|
+
**Referência detalhada:** `references/database-modeling.md`
|
|
125
|
+
|
|
126
|
+
**Checklist de modelagem:**
|
|
127
|
+
- [ ] Tipos específicos com tamanhos
|
|
128
|
+
- [ ] PK com estratégia definida (UUID, auto-increment, SERIAL)
|
|
129
|
+
- [ ] FKs com onDelete/onUpdate behavior
|
|
130
|
+
- [ ] Índices para queries frequentes
|
|
131
|
+
- [ ] Constraints de integridade (CHECK, UNIQUE)
|
|
132
|
+
- [ ] Campos de auditoria (created_at, updated_at)
|
|
133
|
+
- [ ] Soft delete vs hard delete (justificado)
|
|
134
|
+
|
|
135
|
+
### 2.5. Design de API (Backend Sênior)
|
|
136
|
+
|
|
137
|
+
**Objetivo:** Definir contratos de API exatos, completos e não-ambíguos.
|
|
138
|
+
|
|
139
|
+
**O que fazer:**
|
|
140
|
+
- Endpoint completo (método, rota com versão, headers)
|
|
141
|
+
- Request payload com tipos e validações
|
|
142
|
+
- Response para TODOS os status codes (200, 201, 400, 404, 422, 500)
|
|
143
|
+
- Error responses com código, mensagem e details estruturados
|
|
144
|
+
- Idempotência onde aplicável
|
|
145
|
+
- Paginação, filtros e ordenação quando aplicável
|
|
146
|
+
|
|
147
|
+
**Referência detalhada:** `references/api-contracts.md`
|
|
148
|
+
|
|
149
|
+
**Anti-patterns:**
|
|
150
|
+
- Endpoint sem versão (`/orders` vs `/api/v1/orders`)
|
|
151
|
+
- Response sem error cases
|
|
152
|
+
- Request sem tipos específicos
|
|
153
|
+
- Status codes genéricos (só 200 e 500)
|
|
154
|
+
|
|
155
|
+
### 2.6. Design de Frontend / UI/UX (UI/UX Developer)
|
|
156
|
+
|
|
157
|
+
**Objetivo:** Especificar componentes, estados e interações de frontend.
|
|
158
|
+
|
|
159
|
+
**O que fazer:**
|
|
160
|
+
- Mapear componentes existentes do projeto (design system, UI library)
|
|
161
|
+
- Especificar composição de componentes (Layout > Page > Section > Component)
|
|
162
|
+
- Definir estados de UI (loading, error, empty, success, skeleton)
|
|
163
|
+
- Especificar validação de formulários (inline, em tempo real, submit)
|
|
164
|
+
- Garantir acessibilidade (ARIA labels, navegação por teclado, contraste)
|
|
165
|
+
- Especificar responsividade (breakpoints, mobile-first)
|
|
166
|
+
|
|
167
|
+
**Referência detalhada:** `references/ux-ui-accessibility.md`
|
|
168
|
+
|
|
169
|
+
**Estados obrigatórios para cada tela:**
|
|
170
|
+
| Estado | O que mostrar |
|
|
171
|
+
|:---|:---|
|
|
172
|
+
| Loading | Skeleton screen ou spinner com aria-label |
|
|
173
|
+
| Error | Mensagem específica + ação de retry |
|
|
174
|
+
| Empty | Estado vazio com call-to-action |
|
|
175
|
+
| Success | Feedback visual + redirecionamento (se aplicável) |
|
|
176
|
+
| Validation | Erro inline abaixo do campo |
|
|
177
|
+
|
|
178
|
+
### 2.7. Design de Integrações (Integration Architect)
|
|
179
|
+
|
|
180
|
+
**Objetivo:** Projetar integrações resilientes entre sistemas.
|
|
181
|
+
|
|
182
|
+
**O que fazer:**
|
|
183
|
+
- Definir padrão de comunicação (síncrono vs assíncrono, REST vs mensageria)
|
|
184
|
+
- Eventos/mensagens com payload estruturado e correlation ID
|
|
185
|
+
- Estratégia de retry (tentativas, backoff, circuit breaker)
|
|
186
|
+
- Idempotência para operações assíncronas
|
|
187
|
+
- Contrato de integração (timeout, SLA, formato de erro)
|
|
188
|
+
|
|
189
|
+
**Formato de evento:**
|
|
190
|
+
```
|
|
191
|
+
Event: OrderCreated
|
|
192
|
+
Source: CreateOrderHandler (Application Layer)
|
|
193
|
+
Queue/Topic: orders.events
|
|
194
|
+
Payload: { orderId, customerId, totalAmount, correlationId }
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**Checklist de integração:**
|
|
198
|
+
- [ ] Timeout definido para cada chamada externa
|
|
199
|
+
- [ ] Retry com backoff exponencial (número de tentativas especificado)
|
|
200
|
+
- [ ] Fallback/compensating transaction para falhas
|
|
201
|
+
- [ ] Idempotência para consumers de eventos
|
|
202
|
+
- [ ] Correlation ID para tracing distribuído
|
|
203
|
+
- [ ] Dead letter queue para mensagens com falha persistente
|
|
204
|
+
|
|
205
|
+
### 2.8. Programação Sênior (Dev Sênior)
|
|
206
|
+
|
|
207
|
+
**Objetivo:** Garantir que a especificação resulte em código limpo e idiomático.
|
|
208
|
+
|
|
209
|
+
**O que fazer:**
|
|
210
|
+
- Aplicar SOLID em cada decisão de design
|
|
211
|
+
- Especificar tratamento de erros (exception types, result patterns)
|
|
212
|
+
- Definir validações com regras explícitas (não "validar dados")
|
|
213
|
+
- Especificar logging estruturado (quais dados, qual nível, qual contexto)
|
|
214
|
+
- Garantir que o plano de implementação seja granular e modular
|
|
215
|
+
|
|
216
|
+
**Padrões de código para especificar:**
|
|
217
|
+
- Error handling: Exception types ou Result<T> pattern?
|
|
218
|
+
- Validação: Attributes/Decorators, FluentValidation, Zod, manual?
|
|
219
|
+
- DI: Constructor injection, method injection?
|
|
220
|
+
- Async: Task/async-await patterns, CancellationToken?
|
|
221
|
+
|
|
222
|
+
### 2.9. DevOps / Infraestrutura (DevOps Engineer)
|
|
223
|
+
|
|
224
|
+
**Objetivo:** Especificar requisitos de infraestrutura e deployment.
|
|
225
|
+
|
|
226
|
+
**O que fazer:**
|
|
227
|
+
- Documentar serviços de Docker existentes e novos necessários
|
|
228
|
+
- Definir variáveis de ambiente necessárias
|
|
229
|
+
- Especificar requisitos de CI/CD (testes, lint, build, deploy)
|
|
230
|
+
- Estratégia de deploy (blue-green, canary, rolling)
|
|
231
|
+
- Configuração específica (recursos, limites, secrets)
|
|
232
|
+
|
|
233
|
+
**Referência quando aplicável:** `references/security-hardening.md`
|
|
234
|
+
|
|
235
|
+
**Checklist DevOps:**
|
|
236
|
+
- [ ] Novos serviços em docker-compose? (justificar)
|
|
237
|
+
- [ ] Variáveis de ambiente documentadas (nomes, não valores)
|
|
238
|
+
- [ ] Migrations incluídas no pipeline?
|
|
239
|
+
- [ ] Health check endpoints necessários?
|
|
240
|
+
- [ ] Secrets management definido?
|
|
241
|
+
|
|
242
|
+
### 2.10. Segurança (Security Engineer)
|
|
243
|
+
|
|
244
|
+
**Objetivo:** Garantir que a especificação trate segurança de forma explícita.
|
|
245
|
+
|
|
246
|
+
**O que fazer:**
|
|
247
|
+
- Especificar autenticação (JWT, OAuth2, API Keys, Session)
|
|
248
|
+
- Definir autorização por endpoint (roles, permissions, ownership)
|
|
249
|
+
- Identificar dados sensíveis e estratégia de proteção (criptografia, masking)
|
|
250
|
+
- Input sanitization (XSS, SQL Injection, CSRF)
|
|
251
|
+
- Rate limiting quando aplicável
|
|
252
|
+
|
|
253
|
+
**Referência detalhada:** `references/security-hardening.md`
|
|
254
|
+
|
|
255
|
+
**Matriz de segurança por endpoint:**
|
|
256
|
+
| Endpoint | Auth Required | Role/Permission | Dados Sensíveis | Rate Limit |
|
|
257
|
+
|:---|:---|:---|:---|:---|
|
|
258
|
+
| POST /api/v1/orders | JWT Bearer | customer ou admin | Nenhum | 10 req/min |
|
|
259
|
+
| GET /api/v1/orders/{id} | JWT Bearer | owner ou admin | - | 100 req/min |
|
|
260
|
+
|
|
261
|
+
### 2.11. Observabilidade (SRE)
|
|
262
|
+
|
|
263
|
+
**Objetivo:** Definir logging, métricas e tracing para a feature.
|
|
264
|
+
|
|
265
|
+
**O que fazer:**
|
|
266
|
+
- Logging estruturado (quais eventos, qual nível, quais dados incluir)
|
|
267
|
+
- Métricas por tipo (Counter para contagens, Histogram para distribuições, Gauge para estado atual)
|
|
268
|
+
- Distributed tracing com correlation ID
|
|
269
|
+
- Alertas quando aplicável
|
|
270
|
+
|
|
271
|
+
**Referência detalhada:** `references/observability-testing.md`
|
|
272
|
+
|
|
273
|
+
**Padrão de log:**
|
|
274
|
+
```
|
|
275
|
+
Level: INFO | When: Pedido criado | Context: { orderId, customerId, totalAmount, correlationId }
|
|
276
|
+
Level: ERROR | When: Falha pagamento | Context: { orderId, errorCode, correlationId }
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
**NUNCA logar:** senhas, tokens, dados de cartão, PII não-mascarado.
|
|
280
|
+
|
|
281
|
+
### 2.12. Estratégia de Testes (QA Engineer)
|
|
282
|
+
|
|
283
|
+
**Objetivo:** Definir abordagem de testes por camada e criticidade.
|
|
284
|
+
|
|
285
|
+
**O que fazer:**
|
|
286
|
+
- Pirâmide de testes: muitos unitários, alguns integração, poucos e2e
|
|
287
|
+
- Testes por camada (Domain, Application, Infrastructure, Interface)
|
|
288
|
+
- Fixtures e factories para dados de teste
|
|
289
|
+
- Coverage mínimo esperado
|
|
290
|
+
- Cenários críticos que DEVEM ter testes
|
|
291
|
+
|
|
292
|
+
**Referência detalhada:** `references/observability-testing.md`
|
|
293
|
+
|
|
294
|
+
**Distribuição sugerida:**
|
|
295
|
+
| Camada | Tipo | Framework | O que testar |
|
|
296
|
+
|:---|:---|:---|:---|
|
|
297
|
+
| Domain | Unit | xUnit/Jest/Vitest | Entidades, Value Objects, regras de negócio |
|
|
298
|
+
| Application | Unit | Mesmo | Handlers, Commands, validação |
|
|
299
|
+
| Infrastructure | Integration | Mesmo + TestContainers | Repositories, external services |
|
|
300
|
+
| Interface | Integration/E2E | Playwright/Cypress | Endpoints, fluxos completos |
|
|
301
|
+
|
|
302
|
+
### 2.13. Gestão de Performance (Performance Engineer)
|
|
303
|
+
|
|
304
|
+
**Objetivo:** Identificar e mitigar gargalos de performance na especificação.
|
|
305
|
+
|
|
306
|
+
**O que fazer:**
|
|
307
|
+
- Identificar queries N+1 potenciais e especificar eager loading
|
|
308
|
+
- Definir estratégia de cache (onde, quanto tempo, invalidação)
|
|
309
|
+
- Especificar paginação para listagens
|
|
310
|
+
- Identificar operações pesadas para processamento assíncrono
|
|
311
|
+
- Especificar índices de banco para queries frequentes
|
|
312
|
+
|
|
313
|
+
**Checklist de performance:**
|
|
314
|
+
- [ ] Queries com JOIN: eager loading especificado?
|
|
315
|
+
- [ ] Listagens: paginação definida (default, max, cursor/offset)?
|
|
316
|
+
- [ ] Dados frequentes: cache com TTL e estratégia de invalidação?
|
|
317
|
+
- [ ] Operações pesadas: background job/queue?
|
|
318
|
+
- [ ] Frontend: lazy loading, code splitting?
|
|
319
|
+
|
|
320
|
+
### 2.14. Análise de Risco Técnico (Risk Analyst)
|
|
321
|
+
|
|
322
|
+
**Objetivo:** Identificar riscos técnicos e definir mitigações.
|
|
323
|
+
|
|
324
|
+
**O que fazer:**
|
|
325
|
+
- Listar dependências críticas (APIs externas, serviços, bibliotecas)
|
|
326
|
+
- Identificar pontos de falha únicos (single points of failure)
|
|
327
|
+
- Avaliar complexidade técnica da implementação
|
|
328
|
+
- Definir plano de contingência para riscos altos
|
|
329
|
+
|
|
330
|
+
**Formato:**
|
|
331
|
+
| Risco | Probabilidade | Impacto | Mitigação | Contingência |
|
|
332
|
+
|:---|:---|:---|:---|:---|
|
|
333
|
+
| API de pagamento indisponível | Média | Alto | Retry 3x com backoff | Fila para processamento posterior |
|
|
334
|
+
| Concorrência em estoque | Baixa | Alto | Optimistic locking | Notificar usuário e sugerir retry |
|
|
335
|
+
|
|
336
|
+
### 2.15. Comunicação Técnica Específica (Tech Writer)
|
|
337
|
+
|
|
338
|
+
**Objetivo:** Garantir que a TechSpec seja implementável sem ambiguidade.
|
|
339
|
+
|
|
340
|
+
**O que fazer:**
|
|
341
|
+
- Usar termos específicos (não "banco SQL" mas "PostgreSQL 15+")
|
|
342
|
+
- Incluir exemplos concretos (JSON exato, não "payload genérico")
|
|
343
|
+
- Documentar anti-patterns (o que NÃO fazer)
|
|
344
|
+
- Referenciar código existente como exemplo ("seguir padrão de UserRepository")
|
|
345
|
+
- Usar tabelas e JSONs para otimizar contexto (preferir a texto corrido)
|
|
346
|
+
|
|
347
|
+
**Regra de implementabilidade:**
|
|
348
|
+
Se um desenvolvedor júnior não conseguir implementar a feature lendo apenas a TechSpec, ela precisa de mais detalhes.
|
|
349
|
+
|
|
350
|
+
## 3. Integração com o Comando `gerar-techspec.md`
|
|
351
|
+
|
|
352
|
+
O comando define 6 passos obrigatórios. A skill se integra em cada passo:
|
|
353
|
+
|
|
354
|
+
| Passo do Comando | Habilidades da Skill |
|
|
355
|
+
|:---|:---|
|
|
356
|
+
| **Passo 0:** Arquitetura Global | 2.2 (Design Arquitetural) |
|
|
357
|
+
| **Passo 1:** Contexto e Padrões | 2.8 (Prog. Sênior), 2.15 (Comunicação) |
|
|
358
|
+
| **Passo 2:** Código Existente | 2.2, 2.4, 2.5, 2.6, 2.9 (todas de detecção) |
|
|
359
|
+
| **Passo 3:** Requisitos e Lacunas | 2.1 (Decisão Técnica), 2.14 (Risco) |
|
|
360
|
+
| **Passo 4:** Clarificação | 2.1, 2.14, 2.15 |
|
|
361
|
+
| **Passo 5:** Validação | Todas as habilidades (validação cruzada) |
|
|
362
|
+
| **Passo 6:** Geração | Todas as habilidades (preenchimento do template) |
|
|
363
|
+
|
|
364
|
+
**Quando consultar referências detalhadas:**
|
|
365
|
+
- `references/architecture-patterns.md` - ao tomar decisões arquiteturais (Passos 0, 2, 5)
|
|
366
|
+
- `references/database-modeling.md` - ao projetar schema (Passo 6, seção 3)
|
|
367
|
+
- `references/api-contracts.md` - ao definir endpoints (Passo 6, seção 4)
|
|
368
|
+
- `references/ux-ui-accessibility.md` - ao especificar frontend (Passo 6, seção 5)
|
|
369
|
+
- `references/security-hardening.md` - ao definir segurança (Passo 6, seção 7)
|
|
370
|
+
- `references/observability-testing.md` - ao definir logging/testes (Passo 6, seções 6, 8)
|
|
371
|
+
|
|
372
|
+
## 4. Regras de Ouro (Golden Rules)
|
|
373
|
+
|
|
374
|
+
### 4.1. Especificidade
|
|
375
|
+
|
|
376
|
+
Toda decisão técnica deve ser:
|
|
377
|
+
- **EXPLÍCITA:** "PostgreSQL 14+ com extensão UUID" | Não: "banco SQL"
|
|
378
|
+
- **JUSTIFICADA:** "Redis porque X" | Não: "Redis"
|
|
379
|
+
- **CITADA:** "Conforme padrão Y em AGENTS.md" | Não: "Seguir padrão"
|
|
380
|
+
- **IMPLEMENTÁVEL:** Dev júnior consegue seguir sem perguntas
|
|
381
|
+
|
|
382
|
+
### 4.2. Zero Assunções
|
|
383
|
+
|
|
384
|
+
- Não assumir nada que não esteja no PRD, README.md, AGENTS.md ou código
|
|
385
|
+
- Se não encontrou evidência no código, PERGUNTE
|
|
386
|
+
- Se o PRD e o código conflitam, PERGUNTE
|
|
387
|
+
- Se não sabe qual biblioteca usar, verifique package.json/requirements.txt PRIMEIRO
|
|
388
|
+
|
|
389
|
+
### 4.3. Aderência a Padrões
|
|
390
|
+
|
|
391
|
+
- Qualquer decisão técnica DEVE respeitar invariantes do projeto
|
|
392
|
+
- Novas bibliotecas só se justificadas em seção dedicada
|
|
393
|
+
- Quando em dúvida entre inovação e consistência: escolha consistência
|
|
394
|
+
|
|
395
|
+
### 4.4. Human-in-the-Loop
|
|
396
|
+
|
|
397
|
+
- Perguntar antes de decidir (especialmente com conflitos)
|
|
398
|
+
- Apresentar 2-3 opções com trade-offs
|
|
399
|
+
- Máximo 8 perguntas por rodada
|
|
400
|
+
- Maior impacto primeiro
|
|
401
|
+
|
|
402
|
+
### 4.5. Implementabilidade
|
|
403
|
+
|
|
404
|
+
- TechSpec = blueprint para dev júnior
|
|
405
|
+
- Se alguém precisa perguntar "qual biblioteca?", a spec falhou
|
|
406
|
+
- Se alguém precisa perguntar "onde coloco isso?", a spec falhou
|
|
407
|
+
- Se alguém precisa perguntar "qual tipo de dado?", a spec falhou
|
|
408
|
+
|
|
409
|
+
## 5. Melhores Práticas para Tech Specs
|
|
410
|
+
|
|
411
|
+
### 5.1. Anti-Patterns Comuns
|
|
412
|
+
|
|
413
|
+
| Anti-Pattern | Por que é ruim | Como evitar |
|
|
414
|
+
|:---|:---|:---|
|
|
415
|
+
| **"Usar ORM"** sem especificar qual | Ambiguidade | "Prisma ORM (padrão do projeto)" |
|
|
416
|
+
| **"Tabela de pedidos"** sem colunas | Incompleto | Listar todas colunas com tipos e constraints |
|
|
417
|
+
| **"Endpoint para criar"** sem detalhes | Vago | Método, rota, request/response, status codes |
|
|
418
|
+
| **"Tratar erros"** sem especificar | Genérico | Qual erro? Qual status? Qual mensagem? |
|
|
419
|
+
| **"Fazer testes"** sem estratégia | Inútil | Quais testes? De qual camada? Com qual framework? |
|
|
420
|
+
| **"Usar cache"** sem detalhes | Especulação | Qual tecnologia? TTL? Invaliação? Justificativa? |
|
|
421
|
+
| **Componentes sem camada** | Violação arquitetural | Todo componente tem camada e dependências explícitas |
|
|
422
|
+
| **Diagrama especulativo** | Desperdiça contexto | Apenas componentes mencionados no PRD |
|
|
423
|
+
|
|
424
|
+
### 5.2. Padrões de Qualidade por Seção do Template
|
|
425
|
+
|
|
426
|
+
| Seção | Requisito Mínimo | Referência da Skill |
|
|
427
|
+
|:---|:---|:---|
|
|
428
|
+
| **1. Introdução** | Paradigma + tecnologias + padrões em 150 palavras | 2.2, 2.15 |
|
|
429
|
+
| **2. Arquitetura** | Context diagram + tabela de componentes | 2.2, 2.3 |
|
|
430
|
+
| **3. Dados** | Entidades com tipos, constraints, relacionamentos | 2.4, 2.13 |
|
|
431
|
+
| **4. Interfaces** | Endpoints completos com request/response | 2.5, 2.10 |
|
|
432
|
+
| **5. Lógica** | Fluxo principal + edge cases com decisões | 2.7, 2.8, 2.14 |
|
|
433
|
+
| **6. Observabilidade** | Logs + métricas + tracing | 2.11 |
|
|
434
|
+
| **7. Segurança** | Auth + dados sensíveis + rate limit | 2.10 |
|
|
435
|
+
| **8. Implementação** | Plano modular, máximo 10 passos | 2.8, 2.12 |
|
|
436
|
+
|
|
437
|
+
### 5.3. Validação de Completude
|
|
438
|
+
|
|
439
|
+
Antes de finalizar a TechSpec, verificar:
|
|
440
|
+
|
|
441
|
+
**Dados:**
|
|
442
|
+
- [ ] Toda tabela tem PK definida com tipo
|
|
443
|
+
- [ ] Toda FK tem onDelete/onUpdate behavior
|
|
444
|
+
- [ ] Índices justificados para queries frequentes
|
|
445
|
+
- [ ] Migração necessária identificada
|
|
446
|
+
|
|
447
|
+
**APIs:**
|
|
448
|
+
- [ ] Todo endpoint tem método, rota e versão
|
|
449
|
+
- [ ] Todo endpoint tem request e response com tipos
|
|
450
|
+
- [ ] Status codes cobrem sucesso, erro de validação, não encontrado e erro interno
|
|
451
|
+
- [ ] Headers necessários documentados (auth, content-type)
|
|
452
|
+
|
|
453
|
+
**Lógica:**
|
|
454
|
+
- [ ] Fluxo principal com passos numerados
|
|
455
|
+
- [ ] Cada validação tem ação específica em caso de falha
|
|
456
|
+
- [ ] Edge cases mapeados com comportamento definido
|
|
457
|
+
- [ ] Concorrência tratada quando aplicável
|
|
458
|
+
|
|
459
|
+
**Implementação:**
|
|
460
|
+
- [ ] Máximo 10 passos
|
|
461
|
+
- [ ] Cada passo é independente (pode virar task)
|
|
462
|
+
- [ ] Cada passo foca em UMA camada tecnológica
|
|
463
|
+
- [ ] Ordem lógica com dependências claras
|
|
464
|
+
|
|
465
|
+
## 6. Gestão de Status
|
|
466
|
+
|
|
467
|
+
**Fluxo obrigatório:** DRAFT → IN_PROGRESS → APPROVED
|
|
468
|
+
|
|
469
|
+
| De | Para | Trigger |
|
|
470
|
+
|:---|:---|:---|
|
|
471
|
+
| DRAFT | IN_PROGRESS | Primeira pergunta de clarificação feita |
|
|
472
|
+
| IN_PROGRESS | APPROVED | Validação completa com zero problemas de alta/média severidade |
|
|
473
|
+
|
|
474
|
+
**NUNCA** alterar status para APPROVED sem validação completa de todos os checkpoints.
|
|
475
|
+
|
|
476
|
+
## 7. Referências Detalhadas
|
|
477
|
+
|
|
478
|
+
Para aprofundamento em cada domínio técnico, consulte:
|
|
479
|
+
|
|
480
|
+
- **Padrões arquiteturais e decisões de design:** `references/architecture-patterns.md`
|
|
481
|
+
- **Modelagem de banco de dados e migrations:** `references/database-modeling.md`
|
|
482
|
+
- **Design de APIs e contratos:** `references/api-contracts.md`
|
|
483
|
+
- **Usabilidade, acessibilidade e design de interfaces:** `references/ux-ui-accessibility.md`
|
|
484
|
+
- **Segurança e hardening:** `references/security-hardening.md`
|
|
485
|
+
- **Observabilidade, métricas e testes:** `references/observability-testing.md`
|
|
486
|
+
|
|
487
|
+
---
|
|
488
|
+
|
|
489
|
+
Use esta skill sempre que trabalhar com `/gerar-techspec` ou qualquer tarefa de especificação técnica.
|