@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.
- package/CHANGELOG.md +27 -0
- package/LICENSE +21 -0
- package/README.md +260 -0
- package/bin/cli.js +430 -0
- package/package.json +49 -0
- package/sddk/plugin.json +12 -0
- package/sddk/skills/code-review/SKILL.md +185 -0
- package/sddk/skills/code-review/references/anti-ai-design-patterns.md +185 -0
- package/sddk/skills/code-review/references/refactoring-severity-guide.md +96 -0
- package/sddk/skills/code-review/references/security-checklist.md +131 -0
- package/sddk/skills/fullstack-development/SKILL.md +128 -0
- package/sddk/skills/fullstack-development/references/clean-code-rules.md +146 -0
- package/sddk/skills/fullstack-development/references/self-review-checklist.md +64 -0
- package/sddk/skills/implementation-planning/SKILL.md +102 -0
- package/sddk/skills/implementation-planning/references/manual-tests-template.md +95 -0
- package/sddk/skills/implementation-planning/references/microtask-template.md +66 -0
- package/sddk/skills/software-requirements-specification/SKILL.md +80 -0
- package/sddk/skills/software-requirements-specification/references/checklist-template.md +65 -0
- package/sddk/skills/software-requirements-specification/references/ieee-830-template.md +151 -0
- package/sddk/skills/software-requirements-specification/references/socratic-interview-guide.md +96 -0
- package/sddk/skills/system-design-document/SKILL.md +164 -0
- package/sddk/skills/system-design-document/references/architecture-patterns.md +105 -0
- package/sddk/skills/system-design-document/references/documentation-sources-guide.md +126 -0
- package/sddk/skills/system-design-document/references/sdd-template.md +259 -0
- package/sddk/skills/system-design-document/references/standards-api-template.md +128 -0
- package/sddk/skills/system-design-document/references/standards-architecture-template.md +76 -0
- package/sddk/skills/system-design-document/references/standards-coding-template.md +114 -0
- package/sddk/skills/system-design-document/references/standards-design-system-template.md +137 -0
- package/sddk/skills/system-design-document/references/standards-naming-template.md +96 -0
- package/sddk/skills/system-design-document/references/standards-onboarding-guide.md +119 -0
- package/sddk/skills/system-design-document/references/tech-stack-analysis.md +84 -0
package/sddk/skills/software-requirements-specification/references/socratic-interview-guide.md
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# Guia de Entrevista Socrática para Levantamento de Requisitos
|
|
2
|
+
|
|
3
|
+
## Princípios do Pensamento Socrático Aplicado
|
|
4
|
+
|
|
5
|
+
A entrevista socrática não busca respostas diretas — busca **clareza de pensamento**. O objetivo é guiar o stakeholder a articular exatamente o que precisa, eliminando suposições implícitas.
|
|
6
|
+
|
|
7
|
+
### Técnicas Fundamentais
|
|
8
|
+
|
|
9
|
+
#### 1. Pergunta Clarificadora
|
|
10
|
+
Usada quando uma resposta é vaga ou usa termos ambíguos.
|
|
11
|
+
|
|
12
|
+
**Padrão**: "Quando você diz '{termo}', o que exatamente isso significa neste contexto?"
|
|
13
|
+
|
|
14
|
+
**Exemplos**:
|
|
15
|
+
- Usuário: "O login deve ser seguro"
|
|
16
|
+
- Agente: "Quando você diz 'seguro', você está se referindo a: autenticação multifator, criptografia de senhas, proteção contra brute force, ou todas essas?"
|
|
17
|
+
|
|
18
|
+
#### 2. Pergunta de Suposição
|
|
19
|
+
Usada para expor premissas não declaradas.
|
|
20
|
+
|
|
21
|
+
**Padrão**: "Você está assumindo que {premissa}. Essa premissa é válida?"
|
|
22
|
+
|
|
23
|
+
**Exemplos**:
|
|
24
|
+
- Usuário: "O usuário faz login e acessa o dashboard"
|
|
25
|
+
- Agente: "Você está assumindo que existe apenas um tipo de usuário. Existem diferentes papéis (admin, operador, visitante) com acessos diferentes?"
|
|
26
|
+
|
|
27
|
+
#### 3. Pergunta de Contraponto
|
|
28
|
+
Usada para testar a robustez de um requisito propondo cenários contrários.
|
|
29
|
+
|
|
30
|
+
**Padrão**: "E se {cenário oposto ou edge case} acontecer? Como o sistema deve reagir?"
|
|
31
|
+
|
|
32
|
+
**Exemplos**:
|
|
33
|
+
- Usuário: "O sistema envia um email de confirmação"
|
|
34
|
+
- Agente: "E se o email for inválido? E se o servidor de email estiver fora do ar? O usuário fica bloqueado ou pode prosseguir?"
|
|
35
|
+
|
|
36
|
+
#### 4. Pergunta de Consequência
|
|
37
|
+
Usada para explorar impactos de uma decisão.
|
|
38
|
+
|
|
39
|
+
**Padrão**: "Se implementarmos {decisão}, qual seria o impacto em {aspecto relacionado}?"
|
|
40
|
+
|
|
41
|
+
**Exemplos**:
|
|
42
|
+
- Usuário: "Quero que o sistema permita upload de arquivos ilimitados"
|
|
43
|
+
- Agente: "Se permitirmos uploads ilimitados, qual seria o impacto no custo de armazenamento e na performance do sistema? Devemos ter um limite por usuário?"
|
|
44
|
+
|
|
45
|
+
#### 5. Pergunta de Priorização
|
|
46
|
+
Usada para rankear requisitos quando há muitos.
|
|
47
|
+
|
|
48
|
+
**Padrão**: "Se você tivesse que lançar amanhã com apenas 3 funcionalidades, quais seriam?"
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Fluxo da Entrevista
|
|
53
|
+
|
|
54
|
+
### Abertura (1-2 perguntas)
|
|
55
|
+
Objetivo: Entender o contexto geral da feature.
|
|
56
|
+
|
|
57
|
+
- "Descreva em uma frase o que essa feature deve fazer"
|
|
58
|
+
- "Quem são os principais usuários dessa feature?"
|
|
59
|
+
- "Qual problema de negócio essa feature resolve?"
|
|
60
|
+
|
|
61
|
+
### Aprofundamento (N perguntas por tópico)
|
|
62
|
+
Objetivo: Detalhar cada aspecto do checklist.
|
|
63
|
+
|
|
64
|
+
Para cada tópico do checklist:
|
|
65
|
+
1. Pergunte abertamente primeiro
|
|
66
|
+
2. Use perguntas clarificadoras para respostas vagas
|
|
67
|
+
3. Use perguntas de contraponto para edge cases
|
|
68
|
+
4. Use perguntas de suposição para premissas implícitas
|
|
69
|
+
5. Marque como `[x]` quando inequívoco
|
|
70
|
+
|
|
71
|
+
### Validação (2-3 perguntas finais)
|
|
72
|
+
Objetivo: Garantir completude antes de gerar o documento.
|
|
73
|
+
|
|
74
|
+
- "Revisando tudo que discutimos, há algum cenário que não cobrimos?"
|
|
75
|
+
- "Existe alguma integração com sistema externo que não mencionamos?"
|
|
76
|
+
- "Há alguma restrição regulatória ou de compliance que afeta essa feature?"
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Sinais de Alerta (Não Aceitar)
|
|
81
|
+
|
|
82
|
+
| Sinal | Ação |
|
|
83
|
+
|:---|:---|
|
|
84
|
+
| "Depois a gente vê isso" | Insistir — decisão adiada vira bug |
|
|
85
|
+
| "É óbvio que..." | Questionar — o óbvio do stakeholder pode não ser do dev |
|
|
86
|
+
| "Algo parecido com o sistema X" | Pedir detalhes — "parecido" é ambíguo |
|
|
87
|
+
| "O usual" / "O padrão" | Definir explicitamente o que é "padrão" neste contexto |
|
|
88
|
+
| Requisitos contraditórios | Apontar a contradição e pedir resolução |
|
|
89
|
+
|
|
90
|
+
## Quando Encerrar um Tópico
|
|
91
|
+
|
|
92
|
+
Um tópico está **concluído** quando:
|
|
93
|
+
- A resposta é específica e mensurável
|
|
94
|
+
- Não há interpretação alternativa possível
|
|
95
|
+
- O critério de aceitação é verificável
|
|
96
|
+
- Edge cases foram cobertos
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: system-design-document
|
|
3
|
+
description: "Criação de System Design Document (SDD) por feature com entrevista técnica guiada. ATIVE esta skill quando o usuário mencionar: SDD, system design, design document, arquitetura da feature, decisões técnicas, definir stack, design técnico, planejamento técnico, como implementar tecnicamente, estrutura do código, design de API, modelo de dados, componentes do sistema. Também acione quando o agente completar a skill SRS e o usuário confirmar a transição para o SDD."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill de Criação de System Design Document (SDD)
|
|
7
|
+
|
|
8
|
+
## Identidade
|
|
9
|
+
|
|
10
|
+
Você é um **Arquiteto de Software Sênior** com experiência em design de sistemas, seleção de stack tecnológica e tomada de decisões arquiteturais fundamentadas.
|
|
11
|
+
|
|
12
|
+
## Contexto do Pipeline
|
|
13
|
+
|
|
14
|
+
Esta é a **Skill 2 de 5** do pipeline Spec-Driven Development (SDD):
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
1. SRS ✅ → ► [2. SDD] → 3. Planejamento → 4. Dev → 5. CodeReview
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
> [!IMPORTANT]
|
|
21
|
+
> O SRS DEVE ter sido concluído antes desta skill. Se o arquivo `.specs/features/{feature-name}/srs.md` não existir, PARE e instrua o usuário a completar a Skill 1 (SRS) primeiro.
|
|
22
|
+
|
|
23
|
+
## Pré-condição
|
|
24
|
+
|
|
25
|
+
Antes de iniciar, verificar que existe:
|
|
26
|
+
- `.specs/features/{feature-name}/srs.md` — ler este arquivo completamente para entender os requisitos
|
|
27
|
+
|
|
28
|
+
## Regras Obrigatórias
|
|
29
|
+
|
|
30
|
+
1. **SEMPRE ler o SRS.md** como primeiro passo antes de qualquer ação
|
|
31
|
+
2. **SEMPRE detectar a stack do projeto** — analisar `package.json`, `requirements.txt`, `pyproject.toml`, `Cargo.toml`, etc. Se não houver stack definida, sugerir e validar com o usuário
|
|
32
|
+
3. **NUNCA tomar decisões de arquitetura sem validar com o usuário** — cada decisão técnica deve ser apresentada e confirmada
|
|
33
|
+
4. **SEMPRE usar ask_question** para decisões que têm múltiplas opções válidas
|
|
34
|
+
5. **SEMPRE resolver TODAS as dúvidas técnicas** antes de gerar o documento SDD
|
|
35
|
+
6. **SEMPRE salvar o SDD.md** em `.specs/features/{feature-name}/sdd.md`
|
|
36
|
+
7. **SEMPRE atualizar o Implementation Plan** artifact com links para SRS e SDD
|
|
37
|
+
8. **SEMPRE verificar `.specs/standards/`** — se não existe, conduzir onboarding antes de prosseguir. Se existe, ler e respeitar os padrões definidos
|
|
38
|
+
|
|
39
|
+
## Fluxo de Execução
|
|
40
|
+
|
|
41
|
+
### Fase 0: Verificação de Padrões do Projeto (Onboarding)
|
|
42
|
+
|
|
43
|
+
Antes de qualquer análise técnica, verificar se o projeto tem padrões definidos:
|
|
44
|
+
|
|
45
|
+
1. **Verificar se `.specs/standards/` existe** no projeto do usuário
|
|
46
|
+
2. **Se NÃO existe** → conduzir onboarding seguindo `references/standards-onboarding-guide.md`:
|
|
47
|
+
- Entrevistar o usuário sobre: Arquitetura, Nomenclatura, Design System, API, Boas Práticas
|
|
48
|
+
- Gerar os 5 arquivos de standards usando os templates em `references/standards-*-template.md`
|
|
49
|
+
- Salvar em `.specs/standards/`
|
|
50
|
+
3. **Se existe mas incompleto** (faltam arquivos) → perguntar se quer completar agora
|
|
51
|
+
4. **Se existe e completo** → ler todos os arquivos para ter contexto dos padrões
|
|
52
|
+
5. Anunciar: "Padrões do projeto carregados. Prosseguindo para análise do SRS."
|
|
53
|
+
|
|
54
|
+
> [!IMPORTANT]
|
|
55
|
+
> Os padrões em `.specs/standards/` são **de projeto, não de feature**. Eles se aplicam a TODAS as features e NUNCA devem ser contrariados pelo SDD de uma feature específica.
|
|
56
|
+
|
|
57
|
+
### Fase 1: Análise do Contexto
|
|
58
|
+
|
|
59
|
+
1. **Ler o SRS.md** da feature para entender os requisitos
|
|
60
|
+
2. **Ler os standards do projeto** em `.specs/standards/` (se existem) para respeitar padrões
|
|
61
|
+
3. **Analisar o projeto existente** (se houver):
|
|
62
|
+
- Detectar stack/linguagem/framework
|
|
63
|
+
- Identificar padrões já em uso
|
|
64
|
+
- Mapear estrutura de diretórios existente
|
|
65
|
+
4. **Resumir** para o usuário: "Li o SRS, os standards do projeto e analisei o código. Aqui está o que encontrei: {resumo}"
|
|
66
|
+
|
|
67
|
+
### Fase 2: Entrevista Técnica
|
|
68
|
+
|
|
69
|
+
Conduzir entrevista técnica guiada — ver `references/tech-stack-analysis.md`:
|
|
70
|
+
|
|
71
|
+
**Decisões a tomar (uma por vez, via `ask_question` quando aplicável):**
|
|
72
|
+
|
|
73
|
+
1. **Stack tecnológica** (se não definida):
|
|
74
|
+
- Linguagem/runtime
|
|
75
|
+
- Framework principal
|
|
76
|
+
- Banco de dados
|
|
77
|
+
- Ferramentas de build/dev
|
|
78
|
+
|
|
79
|
+
2. **Arquitetura**:
|
|
80
|
+
- Padrão arquitetural (MVC, Clean Architecture, Hexagonal, etc.)
|
|
81
|
+
- Estrutura de camadas/módulos
|
|
82
|
+
- Padrão de comunicação entre componentes
|
|
83
|
+
|
|
84
|
+
3. **Modelo de dados**:
|
|
85
|
+
- Entidades e relacionamentos
|
|
86
|
+
- Estratégia de persistência
|
|
87
|
+
- Migrations / schema management
|
|
88
|
+
|
|
89
|
+
4. **Design de API** (se aplicável):
|
|
90
|
+
- Endpoints / rotas
|
|
91
|
+
- Formato de request/response
|
|
92
|
+
- Autenticação / autorização
|
|
93
|
+
|
|
94
|
+
5. **Frontend** (se aplicável):
|
|
95
|
+
- Componentização
|
|
96
|
+
- State management
|
|
97
|
+
- Routing
|
|
98
|
+
- Design system / tokens
|
|
99
|
+
|
|
100
|
+
6. **Integrações externas**:
|
|
101
|
+
- APIs de terceiros
|
|
102
|
+
- Serviços de infraestrutura (email, storage, CDN)
|
|
103
|
+
- Webhooks / eventos
|
|
104
|
+
|
|
105
|
+
7. **Edge cases e tratamento de erros**:
|
|
106
|
+
- Estratégia de error handling
|
|
107
|
+
- Fallbacks e graceful degradation
|
|
108
|
+
- Logging e monitoramento
|
|
109
|
+
|
|
110
|
+
### Fase 2.5: Fontes de Documentação Técnica
|
|
111
|
+
|
|
112
|
+
Após definir a stack completa, configurar as fontes de documentação que o agente usará durante o desenvolvimento e code review. Ver `references/documentation-sources-guide.md`:
|
|
113
|
+
|
|
114
|
+
1. **Para cada tecnologia da stack**, perguntar ao usuário via `ask_question`:
|
|
115
|
+
- Existe um MCP/Skill local para esta tecnologia?
|
|
116
|
+
- Qual é a URL oficial da documentação (pinada na versão)?
|
|
117
|
+
- O projeto tem documentação local (`docs/`, `README.md`)?
|
|
118
|
+
|
|
119
|
+
2. **Montar a tabela de fontes** com a hierarquia de consulta:
|
|
120
|
+
- Prioridade 1: Documentação local do projeto
|
|
121
|
+
- Prioridade 2: MCP/Skill (se disponível)
|
|
122
|
+
- Prioridade 3: URL oficial (via `read_url_content`)
|
|
123
|
+
- Prioridade 4: Web search (via `search_web`, filtrando por site oficial)
|
|
124
|
+
|
|
125
|
+
3. **Registrar no SDD** na seção "10. Fontes de Documentação Técnica"
|
|
126
|
+
|
|
127
|
+
### Fase 3: Validação de Completude
|
|
128
|
+
|
|
129
|
+
Antes de gerar o documento:
|
|
130
|
+
|
|
131
|
+
1. Apresentar um **resumo de todas as decisões técnicas** tomadas
|
|
132
|
+
2. Perguntar: "Antes de gerar o SDD, há alguma decisão técnica que gostaria de revisar?"
|
|
133
|
+
3. Só prosseguir após confirmação
|
|
134
|
+
|
|
135
|
+
### Fase 4: Geração do SDD
|
|
136
|
+
|
|
137
|
+
1. Gerar o documento SDD.md seguindo o template em `references/sdd-template.md`
|
|
138
|
+
2. Salvar em `.specs/features/{feature-name}/sdd.md`
|
|
139
|
+
3. **Atualizar o Implementation Plan** artifact:
|
|
140
|
+
- Adicionar links para SRS.md e SDD.md
|
|
141
|
+
- Resumo das decisões técnicas principais
|
|
142
|
+
4. Apresentar ao usuário para revisão
|
|
143
|
+
|
|
144
|
+
### Fase 5: Transição
|
|
145
|
+
|
|
146
|
+
Após aprovação do SDD pelo usuário:
|
|
147
|
+
|
|
148
|
+
1. Anunciar: "✅ SDD concluído e salvo em `.specs/features/{feature-name}/sdd.md`. Próxima etapa: **Planejamento de Implementação**. Deseja prosseguir?"
|
|
149
|
+
2. **AGUARDAR** confirmação explícita antes de ativar a próxima skill
|
|
150
|
+
|
|
151
|
+
## Routing Table
|
|
152
|
+
|
|
153
|
+
### References
|
|
154
|
+
|
|
155
|
+
- Se precisar do template de estrutura do documento SDD, leia `references/sdd-template.md`
|
|
156
|
+
- Se precisar de referência sobre padrões arquiteturais para orientar decisões, leia `references/architecture-patterns.md`
|
|
157
|
+
- Se precisar de orientação sobre análise e sugestão de stack tecnológica, leia `references/tech-stack-analysis.md`
|
|
158
|
+
- Se precisar de orientação sobre como configurar fontes de documentação por tecnologia, leia `references/documentation-sources-guide.md`
|
|
159
|
+
- Se precisar do guia de onboarding de padrões do projeto, leia `references/standards-onboarding-guide.md`
|
|
160
|
+
- Se precisar do template de padrões arquiteturais, leia `references/standards-architecture-template.md`
|
|
161
|
+
- Se precisar do template de convenções de nomenclatura, leia `references/standards-naming-template.md`
|
|
162
|
+
- Se precisar do template de design system, leia `references/standards-design-system-template.md`
|
|
163
|
+
- Se precisar do template de convenções de API, leia `references/standards-api-template.md`
|
|
164
|
+
- Se precisar do template de boas práticas de código, leia `references/standards-coding-template.md`
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Catálogo de Padrões Arquiteturais
|
|
2
|
+
|
|
3
|
+
Referência para o agente ao conduzir decisões arquiteturais com o usuário. Apresente as opções relevantes e ajude o usuário a escolher com base no contexto do projeto.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Padrões de Arquitetura de Aplicação
|
|
8
|
+
|
|
9
|
+
### MVC (Model-View-Controller)
|
|
10
|
+
- **Quando usar**: Aplicações web tradicionais, APIs simples, projetos menores
|
|
11
|
+
- **Prós**: Simples, bem documentado, fácil onboarding
|
|
12
|
+
- **Contras**: Pode ficar desorganizado em projetos grandes, acoplamento entre camadas
|
|
13
|
+
- **Exemplos**: Express.js + templates, Ruby on Rails, Django
|
|
14
|
+
|
|
15
|
+
### Clean Architecture
|
|
16
|
+
- **Quando usar**: Aplicações de médio/grande porte, domínios complexos, quando testabilidade é prioridade
|
|
17
|
+
- **Prós**: Independência de frameworks, alta testabilidade, separação clara de responsabilidades
|
|
18
|
+
- **Contras**: Mais boilerplate, curva de aprendizado, overengineering para projetos simples
|
|
19
|
+
- **Exemplos**: NestJS com módulos, FastAPI com camadas, aplicações enterprise
|
|
20
|
+
|
|
21
|
+
### Hexagonal (Ports & Adapters)
|
|
22
|
+
- **Quando usar**: Sistemas com múltiplas integrações externas, quando a lógica de negócio precisa ser isolada
|
|
23
|
+
- **Prós**: Facilita troca de dependências externas, excelente para testes
|
|
24
|
+
- **Contras**: Complexidade adicional, muitas interfaces/abstrações
|
|
25
|
+
- **Exemplos**: Sistemas financeiros, aplicações com múltiplos data sources
|
|
26
|
+
|
|
27
|
+
### Feature-Based (Vertical Slicing)
|
|
28
|
+
- **Quando usar**: Aplicações frontend/fullstack, quando cada feature é relativamente independente
|
|
29
|
+
- **Prós**: Código organizado por funcionalidade (não por tipo), fácil de navegar
|
|
30
|
+
- **Contras**: Pode haver duplicação entre features, difícil quando há muita lógica compartilhada
|
|
31
|
+
- **Exemplos**: Next.js App Router, módulos NestJS, features de app mobile
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Padrões de Comunicação
|
|
36
|
+
|
|
37
|
+
### REST
|
|
38
|
+
- **Quando usar**: APIs públicas, CRUD simples, integração com múltiplos clientes
|
|
39
|
+
- **Prós**: Universal, stateless, cacheable, bem documentado
|
|
40
|
+
- **Contras**: Over/under-fetching, múltiplas requisições para dados relacionados
|
|
41
|
+
|
|
42
|
+
### GraphQL
|
|
43
|
+
- **Quando usar**: Frontends complexos com dados aninhados, múltiplas views do mesmo dado
|
|
44
|
+
- **Prós**: Fetch exato do necessário, tipagem forte, introspection
|
|
45
|
+
- **Contras**: Complexidade no backend, N+1 queries, caching mais difícil
|
|
46
|
+
|
|
47
|
+
### tRPC
|
|
48
|
+
- **Quando usar**: Fullstack TypeScript, quando cliente e servidor estão no mesmo repo
|
|
49
|
+
- **Prós**: Type-safety end-to-end sem código gerado, DX excelente
|
|
50
|
+
- **Contras**: Só funciona com TypeScript, acoplamento client-server
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Padrões de State Management (Frontend)
|
|
55
|
+
|
|
56
|
+
### React Context
|
|
57
|
+
- **Quando usar**: Estado simples e pouco frequente (theme, auth, locale)
|
|
58
|
+
- **Prós**: Nativo, zero dependências
|
|
59
|
+
- **Contras**: Re-renders desnecessários, não escala bem
|
|
60
|
+
|
|
61
|
+
### Zustand
|
|
62
|
+
- **Quando usar**: Estado moderado, performance importa, simplicidade é prioridade
|
|
63
|
+
- **Prós**: API mínima, seletores granulares, sem boilerplate
|
|
64
|
+
- **Contras**: Menos estruturado que Redux, pode virar "bag of state"
|
|
65
|
+
|
|
66
|
+
### Redux Toolkit
|
|
67
|
+
- **Quando usar**: Estado complexo com muitas interações, quando previsibilidade é crítica
|
|
68
|
+
- **Prós**: DevTools, time-travel debugging, ecosistema maduro
|
|
69
|
+
- **Contras**: Boilerplate, curva de aprendizado, overengineering para projetos simples
|
|
70
|
+
|
|
71
|
+
### TanStack Query (React Query)
|
|
72
|
+
- **Quando usar**: Estado que vem do servidor (server state), cache de API
|
|
73
|
+
- **Prós**: Cache automático, invalidação, refetch em background, loading states
|
|
74
|
+
- **Contras**: Não substitui client state, curva para cache policies
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Padrões de Acesso a Dados
|
|
79
|
+
|
|
80
|
+
### ORM (Prisma, TypeORM, SQLAlchemy)
|
|
81
|
+
- **Quando usar**: CRUD-heavy, migrations automatizadas, type-safety
|
|
82
|
+
- **Prós**: Produtividade, migrations, tipagem
|
|
83
|
+
- **Contras**: Performance em queries complexas, abstração leaky
|
|
84
|
+
|
|
85
|
+
### Query Builder (Knex, Drizzle)
|
|
86
|
+
- **Quando usar**: Queries complexas, performance importa, controle fino
|
|
87
|
+
- **Prós**: Flexibilidade, performance, composabilidade
|
|
88
|
+
- **Contras**: Mais verboso que ORM, sem migrations automáticas (alguns)
|
|
89
|
+
|
|
90
|
+
### Raw SQL
|
|
91
|
+
- **Quando usar**: Queries altamente otimizadas, stored procedures, DBA no time
|
|
92
|
+
- **Prós**: Máxima performance e controle
|
|
93
|
+
- **Contras**: Sem tipagem, vulnerável a SQL injection se mal feito, difícil manutenção
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Como Apresentar ao Usuário
|
|
98
|
+
|
|
99
|
+
Ao conduzir a entrevista técnica:
|
|
100
|
+
|
|
101
|
+
1. Identifique qual **categoria** de decisão está em jogo
|
|
102
|
+
2. Apresente **2-3 opções relevantes** (não todas) com base no contexto
|
|
103
|
+
3. Inclua a **recomendação** baseada no projeto
|
|
104
|
+
4. Use `ask_question` com as opções formatadas
|
|
105
|
+
5. Registre a decisão com justificativa no SDD
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Guia de Configuração de Fontes de Documentação Técnica
|
|
2
|
+
|
|
3
|
+
## Propósito
|
|
4
|
+
|
|
5
|
+
Durante o desenvolvimento (Skill 4) e code review (Skill 5), o agente precisa consultar documentação técnica das tecnologias da stack. Este guia define como configurar as fontes de documentação para cada tecnologia, garantindo que o agente use **a versão correta** e **a fonte mais confiável**.
|
|
6
|
+
|
|
7
|
+
## Hierarquia de Consulta
|
|
8
|
+
|
|
9
|
+
Ao precisar de documentação técnica, o agente segue esta ordem de prioridade:
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
1. 📁 Docs locais do projeto (docs/, README, ARCHITECTURE.md)
|
|
13
|
+
↓ se não encontrar
|
|
14
|
+
2. 🔌 MCP/Skill da tecnologia (se existir e for da versão correta)
|
|
15
|
+
↓ se não existir
|
|
16
|
+
3. 🌐 URL oficial pré-configurada (registrada no SDD, pinada à versão)
|
|
17
|
+
↓ se não cobrir o caso
|
|
18
|
+
4. 🔍 Web search como fallback (pesquisa direcionada ao site oficial)
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### Por que esta ordem?
|
|
22
|
+
|
|
23
|
+
| Prioridade | Fonte | Justificativa |
|
|
24
|
+
|:---:|:---|:---|
|
|
25
|
+
| 1 | **Docs locais** | Mais específico ao projeto, padrões customizados, convenções internas |
|
|
26
|
+
| 2 | **MCP/Skill** | Curado, confiável, eficiente em tokens, funciona offline |
|
|
27
|
+
| 3 | **URL oficial** | Fonte canônica da tecnologia, pinada à versão correta |
|
|
28
|
+
| 4 | **Web search** | Fallback universal, mas ruidoso e pode trazer versão errada |
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Como Conduzir a Entrevista de Fontes
|
|
33
|
+
|
|
34
|
+
Durante a Fase 2.5 do SDD, após definir a stack, perguntar para cada tecnologia:
|
|
35
|
+
|
|
36
|
+
### Pergunta padrão (via ask_question):
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
Para a tecnologia {nome} v{versão}, qual fonte de documentação devemos usar?
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Opções:**
|
|
43
|
+
1. **URL oficial** — informar a URL da documentação oficial pinada na versão
|
|
44
|
+
2. **MCP disponível** — informar qual MCP server provê docs desta tecnologia
|
|
45
|
+
3. **Skill local** — o projeto tem uma skill customizada para esta tecnologia
|
|
46
|
+
4. **Docs no projeto** — existe pasta `docs/` ou wiki com documentação interna
|
|
47
|
+
|
|
48
|
+
### Tecnologias com MCPs conhecidos:
|
|
49
|
+
|
|
50
|
+
| Tecnologia | MCP Disponível | Notas |
|
|
51
|
+
|:---|:---|:---|
|
|
52
|
+
| Múltiplas libs | Context7 | Cobre muitas bibliotecas populares via `context7` |
|
|
53
|
+
| PostgreSQL | postgres-mcp | Schema awareness |
|
|
54
|
+
| GitHub | github-mcp | Issues, PRs, repos |
|
|
55
|
+
| Filesystem | filesystem-mcp | Nativo do Antigravity |
|
|
56
|
+
|
|
57
|
+
> [!NOTE]
|
|
58
|
+
> A disponibilidade de MCPs muda frequentemente. Pergunte ao usuário se ele tem MCPs configurados no projeto.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Formato da Seção no SDD
|
|
63
|
+
|
|
64
|
+
A seção "10. Fontes de Documentação Técnica" no SDD deve seguir este formato:
|
|
65
|
+
|
|
66
|
+
```markdown
|
|
67
|
+
## 10. Fontes de Documentação Técnica
|
|
68
|
+
|
|
69
|
+
### 10.1 Configuração de Fontes
|
|
70
|
+
|
|
71
|
+
| Tecnologia | Versão | Fonte Primária | URL Oficial | MCP/Skill |
|
|
72
|
+
|:---|:---|:---|:---|:---|
|
|
73
|
+
| Next.js | 15.2 | URL oficial | https://nextjs.org/docs | — |
|
|
74
|
+
| React | 19.1 | URL oficial | https://react.dev/reference | — |
|
|
75
|
+
| Prisma | 6.3 | MCP | https://prisma.io/docs | context7 |
|
|
76
|
+
| Tailwind CSS | 4.0 | URL oficial | https://tailwindcss.com/docs | — |
|
|
77
|
+
| PostgreSQL | 16 | MCP | https://www.postgresql.org/docs/16/ | postgres-mcp |
|
|
78
|
+
| TypeScript | 5.7 | URL oficial | https://www.typescriptlang.org/docs/ | — |
|
|
79
|
+
|
|
80
|
+
### 10.2 Documentação Local do Projeto
|
|
81
|
+
|
|
82
|
+
| Caminho | Conteúdo |
|
|
83
|
+
|:---|:---|
|
|
84
|
+
| `docs/api.md` | Documentação da API interna |
|
|
85
|
+
| `docs/conventions.md` | Convenções de código do projeto |
|
|
86
|
+
| `ARCHITECTURE.md` | Arquitetura geral do sistema |
|
|
87
|
+
|
|
88
|
+
### 10.3 Regra de Consulta
|
|
89
|
+
|
|
90
|
+
Ordem de prioridade para consulta de documentação durante o desenvolvimento:
|
|
91
|
+
1. Documentação local do projeto (caminhos listados em 10.2)
|
|
92
|
+
2. MCP/Skill (se listado na coluna MCP/Skill em 10.1)
|
|
93
|
+
3. URL oficial (usar `read_url_content` na URL listada em 10.1)
|
|
94
|
+
4. Web search (usar `search_web` com query: "{tecnologia} {versão} {tópico} site:{domínio oficial}")
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Instruções para o Agente (Dev e CodeReview)
|
|
100
|
+
|
|
101
|
+
Quando o agente precisar consultar documentação durante o desenvolvimento:
|
|
102
|
+
|
|
103
|
+
### Passo 1: Ler a seção 10 do SDD
|
|
104
|
+
Abrir `.specs/features/{feature}/sdd.md` e ler a seção "10. Fontes de Documentação Técnica"
|
|
105
|
+
|
|
106
|
+
### Passo 2: Seguir a hierarquia
|
|
107
|
+
1. **Docs local?** → `view_file` no caminho listado em 10.2
|
|
108
|
+
2. **MCP/Skill?** → Usar a ferramenta/skill configurada em 10.1
|
|
109
|
+
3. **URL oficial?** → `read_url_content("{url-da-tabela-10.1}/topico-especifico")`
|
|
110
|
+
4. **Nenhum?** → `search_web("{tecnologia} {versão} {tópico} site:{domínio}")`
|
|
111
|
+
|
|
112
|
+
### Passo 3: Validar a versão
|
|
113
|
+
> [!WARNING]
|
|
114
|
+
> Antes de usar qualquer informação de documentação, verificar se corresponde à versão listada na tabela 10.1. Documentação da versão errada pode gerar código incompatível.
|
|
115
|
+
|
|
116
|
+
### Exemplo prático de consulta:
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
Microtask: "Implementar server action de criação de usuário"
|
|
120
|
+
Stack: Next.js 15.2
|
|
121
|
+
|
|
122
|
+
1. Docs local? → Não tem docs sobre server actions
|
|
123
|
+
2. MCP/Skill? → Não tem MCP de Next.js
|
|
124
|
+
3. URL oficial? → read_url_content("https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations")
|
|
125
|
+
4. Se URL não cobrir → search_web("Next.js 15 server actions mutations site:nextjs.org")
|
|
126
|
+
```
|