spec-first-copilot 0.3.0 → 0.5.0-beta.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 (44) hide show
  1. package/README.md +38 -30
  2. package/lib/init.js +2 -2
  3. package/package.json +31 -23
  4. package/templates/.ai/memory/napkin.md +1 -1
  5. package/templates/.github/agents/db-coder.md +1 -1
  6. package/templates/.github/agents/doc-writer.md +12 -15
  7. package/templates/.github/agents/security-reviewer.md +1 -1
  8. package/templates/.github/copilot-instructions.md +61 -43
  9. package/templates/.github/instructions/docs.instructions.md +12 -12
  10. package/templates/.github/instructions/sensitive-files.instructions.md +10 -10
  11. package/templates/{docs/Desenvolvimento → .github}/rules.md +2 -2
  12. package/templates/.github/skills/sf-design/SKILL.md +26 -27
  13. package/templates/.github/skills/sf-dev/SKILL.md +30 -7
  14. package/templates/.github/skills/sf-discovery/SKILL.md +405 -405
  15. package/templates/.github/skills/sf-extract/SKILL.md +9 -9
  16. package/templates/.github/skills/sf-feature/SKILL.md +21 -21
  17. package/templates/.github/skills/sf-merge-delta/SKILL.md +21 -18
  18. package/templates/.github/skills/sf-plan/SKILL.md +8 -8
  19. package/templates/.github/skills/{sf-pausar → sf-session-finish}/SKILL.md +10 -10
  20. package/templates/.github/skills/sf-setup-projeto/SKILL.md +20 -20
  21. package/templates/{docs/_templates/estrutura/API.template.md → .github/templates/estrutura/apiContracts.template.md} +24 -17
  22. package/templates/.github/templates/estrutura/architecture.template.md +158 -0
  23. package/templates/{docs/_templates/estrutura/Seguranca.template.md → .github/templates/estrutura/conventions.template.md} +74 -10
  24. package/templates/{docs/_templates/estrutura/ADRs.template.md → .github/templates/estrutura/decisions.template.md} +21 -13
  25. package/templates/.github/templates/estrutura/domain.template.md +148 -0
  26. package/templates/{docs/_templates → .github/templates}/feature/PRD.template.md +256 -256
  27. package/templates/{docs/_templates → .github/templates}/feature/Progresso.template.md +2 -2
  28. package/templates/{docs/_templates → .github/templates}/feature/TRD.template.md +204 -200
  29. package/templates/{docs/_templates → .github/templates}/feature/context.template.md +1 -1
  30. package/templates/{docs/_templates → .github/templates}/feature/projetos.template.yaml +1 -1
  31. package/templates/{docs/_templates → .github/templates}/feature/sdd.template.md +372 -372
  32. package/templates/{docs/_templates → .github/templates}/feature/tasks.template.md +115 -115
  33. package/templates/docs/_templates/estrutura/Arquitetura.template.md +0 -82
  34. package/templates/docs/_templates/estrutura/Infraestrutura.template.md +0 -104
  35. package/templates/docs/_templates/estrutura/Modelo_Dados.template.md +0 -99
  36. package/templates/docs/_templates/estrutura/Stack.template.md +0 -78
  37. package/templates/docs/_templates/estrutura/Visao.template.md +0 -82
  38. /package/templates/{docs/_templates → .github/templates}/feature/backlog-extraido.template.md +0 -0
  39. /package/templates/{docs/_templates → .github/templates}/feature/extract-log.template.md +0 -0
  40. /package/templates/{docs/_templates → .github/templates}/global/progresso_global.template.md +0 -0
  41. /package/templates/docs/{Desenvolvimento/.gitkeep → .gitkeep} +0 -0
  42. /package/templates/{docs/Estrutura → workspace/Input}/.gitkeep +0 -0
  43. /package/templates/{docs/PM → workspace/Input/setup_projeto}/.gitkeep +0 -0
  44. /package/templates/{docs/PM/setup_projeto → workspace/Output}/.gitkeep +0 -0
@@ -0,0 +1,158 @@
1
+ # Arquitetura
2
+
3
+ > Arquitetura do sistema: containers, componentes, stack tecnológica, ambientes e deploy.
4
+ > C4 Níveis 2-3 + camadas da stack + infraestrutura de runtime.
5
+
6
+ ---
7
+
8
+ <!--
9
+ =============================================================================
10
+ INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
11
+ =============================================================================
12
+
13
+ ORIGEM: Gerado pelo /setup-projeto a partir do TRD §2 (Stack), §3 (Arquitetura)
14
+ e §6 (Infraestrutura — ambientes, deploy, CI/CD, rollback).
15
+ ATUALIZAÇÃO: /merge-delta quando features adicionam containers, componentes,
16
+ dependências de stack ou mudam ambientes/deploy.
17
+
18
+ COMO GERAR:
19
+ 1. Ler TRD §3 (Arquitetura) — containers, padrões de comunicação, padrões de design
20
+ 2. Ler TRD §2 (Stack) — tecnologias por camada, versões
21
+ 3. Ler TRD §6 (Infraestrutura) — ambientes, deploy, CI/CD, rollback
22
+ 4. Montar diagrama C4 Nível 2 mostrando TODOS os containers e conexões
23
+ 5. Para cada container relevante, listar componentes internos (C4 Nível 3)
24
+ 6. Documentar stack principal com versões EXATAS (não "latest")
25
+ 7. Documentar ambientes (URLs, bancos, branches) e pipeline CI/CD concreto
26
+
27
+ O QUE NÃO VAI AQUI:
28
+ - Variáveis de ambiente → conventions.md
29
+ - Monitoramento e observabilidade → conventions.md
30
+ - Segurança (auth, CORS, rate limiting) → conventions.md
31
+ - Alternativas descartadas de stack → conventions.md
32
+ - Entidades e modelo de dados → domain.md
33
+
34
+ REGRAS:
35
+ - Versões fixadas (18.3.1, não ^18.0.0)
36
+ - Cada container tem: tecnologia, responsabilidade, porta, tipo de comunicação
37
+ - Padrões de design precisam de justificativa (não apenas nome)
38
+ - Pipeline CI/CD deve ser concreto — passos reais e ferramentas
39
+ - Rollback strategy obrigatória — "como voltar se der errado?"
40
+
41
+ =============================================================================
42
+ -->
43
+
44
+ ## Diagrama de Containers (C4 Nível 2)
45
+
46
+ ```
47
+ <!-- Representação textual dos containers e suas conexões -->
48
+ <!-- Usar formato: [Container] --protocolo--> [Container] -->
49
+ ```
50
+
51
+ ## Containers
52
+
53
+ | Container | Tecnologia | Responsabilidade | Porta | Comunicação |
54
+ |-----------|-----------|-----------------|-------|-------------|
55
+ | | | | | |
56
+
57
+ ## Componentes Principais (C4 Nível 3)
58
+
59
+ <!-- Repetir esta seção para cada container que tenha componentes internos relevantes -->
60
+
61
+ ### {{Container}}
62
+
63
+ | Componente | Responsabilidade | Dependências internas | Dependências externas |
64
+ |------------|-----------------|----------------------|----------------------|
65
+ | | | | |
66
+
67
+ ## Padrões de Comunicação
68
+
69
+ ### Síncrona (request/response)
70
+
71
+ | De | Para | Protocolo | Formato | Observações |
72
+ |----|------|-----------|---------|-------------|
73
+ | | | | | |
74
+
75
+ ### Assíncrona (eventos/filas)
76
+
77
+ | Produtor | Tópico/Fila | Consumer | Formato | Garantia |
78
+ |----------|-------------|----------|---------|----------|
79
+ | | | | | at-least-once / exactly-once |
80
+
81
+ ## Padrões de Design Adotados
82
+
83
+ | Padrão | Onde é usado | Justificativa | Ref decisão |
84
+ |--------|-------------|---------------|-------------|
85
+ | | | | |
86
+
87
+ ## Stack Principal
88
+
89
+ | Camada | Tecnologia | Versão | Justificativa |
90
+ |--------|-----------|--------|---------------|
91
+ | Frontend | | | |
92
+ | Backend | | | |
93
+ | Banco de Dados | | | |
94
+ | ORM/Query Builder | | | |
95
+ | Autenticação | | | |
96
+ | Testes | | | |
97
+ | CI/CD | | | |
98
+
99
+ <!-- Adicionar camadas conforme necessidade: Mobile, Cache, Fila, Monitoramento, etc. -->
100
+
101
+ ## Bibliotecas e Dependências por Camada
102
+
103
+ <!-- Repetir bloco para cada camada com dependências relevantes -->
104
+
105
+ ### {{Camada}}
106
+
107
+ | Pacote | Versão | Para quê |
108
+ |--------|--------|----------|
109
+ | | | |
110
+
111
+ ## Ambientes
112
+
113
+ | Ambiente | URL | Banco | Propósito | Branch |
114
+ |----------|-----|-------|-----------|--------|
115
+ | Local | `localhost:{{PORT}}` | local | Desenvolvimento | qualquer |
116
+ | Staging | | | Testes e homologação | develop |
117
+ | Produção | | | Usuários finais | main |
118
+
119
+ ## Deploy
120
+
121
+ ### Estratégia
122
+
123
+ | Aspecto | Decisão |
124
+ |---------|---------|
125
+ | Plataforma | <!-- Docker? Serverless? VPS? Cloud provider? --> |
126
+ | Orquestração | <!-- Kubernetes? ECS? PM2? --> |
127
+ | Build | <!-- Docker multi-stage? Build nativo? --> |
128
+ | Estratégia de deploy | <!-- Rolling? Blue-green? Canary? --> |
129
+
130
+ ### Pipeline CI/CD
131
+
132
+ ```
133
+ push → lint → test → build → deploy(staging) → aprovação → deploy(prod)
134
+ ```
135
+
136
+ | Etapa | Ferramenta | Trigger | Timeout |
137
+ |-------|-----------|---------|---------|
138
+ | Lint | <!-- eslint, ruff --> | push | |
139
+ | Testes | <!-- jest, pytest --> | push | |
140
+ | Build | <!-- docker build --> | push em main/develop | |
141
+ | Deploy staging | <!-- CD tool --> | push em develop | |
142
+ | Deploy produção | <!-- CD tool --> | aprovação manual | |
143
+
144
+ ### Rollback
145
+
146
+ | Cenário | Procedimento | Responsável |
147
+ |---------|-------------|-------------|
148
+ | Bug em produção | <!-- Reverter deploy? Hotfix? --> | |
149
+ | Migration com erro | <!-- Rollback da migration? --> | |
150
+ | Serviço externo fora | <!-- Fallback? Circuit breaker? --> | |
151
+
152
+ ---
153
+
154
+ ## Changelog
155
+
156
+ | Data | Feature | Tipo | Descrição |
157
+ |------|---------|------|-----------|
158
+ | | | | |
@@ -1,6 +1,8 @@
1
- # Segurança
1
+ # Convenções
2
2
 
3
- > Autenticação, autorização, CORS, rate limiting, LGPD, auditoria e proteção de dados.
3
+ > Regras transversais do sistema: autenticação, autorização, CORS, rate limiting,
4
+ > LGPD, auditoria, variáveis de ambiente, monitoramento, códigos de erro de domínio
5
+ > e versionamento de dependências. Padrões que todo código segue.
4
6
 
5
7
  ---
6
8
 
@@ -9,15 +11,27 @@
9
11
  INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
10
12
  =============================================================================
11
13
 
12
- ORIGEM: Gerado pelo /setup-projeto a partir do TRD §7.
13
- ATUALIZAÇÃO: /merge-delta quando features adicionam permissões, dados pessoais ou políticas.
14
+ ORIGEM: Gerado pelo /setup-projeto a partir do TRD §7 (Segurança),
15
+ §6 (Infra env vars, domínios, monitoramento), §5 (API — códigos de erro
16
+ de domínio) e §2 (Stack — alternativas descartadas, versionamento).
17
+ ATUALIZAÇÃO: /merge-delta quando features adicionam permissões, papéis,
18
+ dados pessoais, variáveis de ambiente, códigos de erro ou alteram políticas.
14
19
 
15
20
  COMO GERAR:
16
21
  1. Ler TRD §7 (Segurança) — autenticação, autorização, CORS, LGPD
17
- 2. Autenticação: método, expiração, hash, refresh strategy
18
- 3. Autorização: papéis e matriz de permissões (RBAC/ABAC)
19
- 4. LGPD: mapear TODOS dados pessoais com base legal
20
- 5. Auditoria: definir O QUE é logado, ONDE e POR QUANTO TEMPO
22
+ 2. Ler TRD §6 (Infra) — variáveis de ambiente, domínios, monitoramento
23
+ 3. Ler TRD §5 (API) — códigos de erro do domínio (reutilizáveis)
24
+ 4. Ler TRD §2 (Stack) alternativas descartadas e versionamento de dependências
25
+ 5. Autenticação: método, expiração, hash, refresh strategy
26
+ 6. Autorização: papéis e matriz de permissões (RBAC/ABAC)
27
+ 7. LGPD: mapear TODOS dados pessoais com base legal específica
28
+ 8. Auditoria: O QUE é logado, ONDE, POR QUANTO TEMPO
29
+ 9. Variáveis de ambiente: NUNCA valores reais, só exemplos
30
+
31
+ O QUE NÃO VAI AQUI:
32
+ - Rotas, paginação, filtros, catálogo de endpoints → apiContracts.md
33
+ - Containers, ambientes, deploy → architecture.md
34
+ - Entidades, tabelas → domain.md
21
35
 
22
36
  REGRAS:
23
37
  - Matriz de permissões é DINÂMICA — cresce a cada feature (via merge-delta)
@@ -25,7 +39,8 @@ REGRAS:
25
39
  - Nunca armazenar senhas em texto plano (hash obrigatório)
26
40
  - Secrets nunca no código — sempre variáveis de ambiente
27
41
  - Rate limiting obrigatório em endpoints públicos (login, registro)
28
- - Auditoria obrigatória para operações destrutivas (delete, update de dados sensíveis)
42
+ - Auditoria obrigatória para operações destrutivas
43
+ - Códigos de erro do domínio são globais — reutilizáveis por múltiplos endpoints
29
44
 
30
45
  =============================================================================
31
46
  -->
@@ -105,7 +120,7 @@ REGRAS:
105
120
 
106
121
  | Direito | Implementação | Endpoint/Fluxo |
107
122
  |---------|--------------|----------------|
108
- | Acesso aos dados | | <!-- Como o usuário acessa? --> |
123
+ | Acesso aos dados | | |
109
124
  | Correção | | |
110
125
  | Exclusão (right to be forgotten) | | <!-- Soft delete? Hard delete? Anonimização? --> |
111
126
  | Portabilidade | | <!-- Formato de exportação? --> |
@@ -129,6 +144,55 @@ REGRAS:
129
144
  | Dados sensíveis em repouso | <!-- Criptografia? Quais campos? --> |
130
145
  | Backup | <!-- Criptografado? Frequência? --> |
131
146
 
147
+ ## Variáveis de Ambiente
148
+
149
+ > NUNCA colocar valores reais aqui. Apenas nomes, descrição e exemplos.
150
+
151
+ | Variável | Ambientes | Obrigatória | Descrição | Exemplo |
152
+ |----------|-----------|-------------|-----------|---------|
153
+ | `DATABASE_URL` | todos | sim | Conexão com banco | `postgres://user:pass@host:5432/db` |
154
+ | `JWT_SECRET` | todos | sim | Chave de assinatura JWT | `sua-chave-secreta-aqui` |
155
+ | `NODE_ENV` | todos | sim | Ambiente atual | `development` / `production` |
156
+
157
+ ## Domínios e DNS
158
+
159
+ | Domínio | Aponta para | Certificado | Gerenciado por |
160
+ |---------|-------------|-------------|----------------|
161
+ | | | <!-- Let's Encrypt? AWS ACM? --> | |
162
+
163
+ ## Monitoramento e Observabilidade
164
+
165
+ | Aspecto | Ferramenta | O que monitora |
166
+ |---------|-----------|----------------|
167
+ | Logs | <!-- Ex: CloudWatch, Datadog --> | |
168
+ | APM | <!-- Ex: New Relic, Sentry --> | |
169
+ | Uptime | <!-- Ex: Pingdom, UptimeRobot --> | |
170
+ | Alertas | <!-- Ex: PagerDuty, Slack --> | |
171
+
172
+ ## Códigos de Erro do Domínio
173
+
174
+ > Códigos reutilizáveis por múltiplos endpoints. Novos códigos são adicionados via /merge-delta.
175
+
176
+ | Código | Descrição | HTTP padrão |
177
+ |--------|-----------|-------------|
178
+ | <!-- Ex: DUPLICATE_EMAIL --> | <!-- Email já cadastrado --> | <!-- 409 --> |
179
+
180
+ ## Alternativas Tecnológicas Descartadas
181
+
182
+ > Decisões já tomadas. Se alguém perguntar "por que não usamos X?", a resposta está aqui.
183
+
184
+ | Tecnologia escolhida | Alternativa considerada | Por que descartamos | Ref decisão |
185
+ |----------------------|------------------------|---------------------|-------------|
186
+ | | | | |
187
+
188
+ ## Convenções de Versionamento de Dependências
189
+
190
+ | Aspecto | Convenção |
191
+ |---------|-----------|
192
+ | Versionamento | <!-- Semver? Pinned? --> |
193
+ | Lock files | <!-- package-lock.json? yarn.lock? --> |
194
+ | Atualização | <!-- Dependabot? Manual? Periodicidade? --> |
195
+
132
196
  ---
133
197
 
134
198
  ## Changelog
@@ -1,4 +1,4 @@
1
- # ADRs — Architecture Decision Records
1
+ # Decisões — Architecture Decision Records
2
2
 
3
3
  > Registro de decisões arquiteturais com contexto, alternativas e consequências.
4
4
  > Cada decisão é imutável após aceita. Novas decisões podem substituir anteriores.
@@ -10,33 +10,33 @@
10
10
  INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
11
11
  =============================================================================
12
12
 
13
- ORIGEM: Criado pelo /setup-projeto com ADRs iniciais (stack, arquitetura base).
14
- ATUALIZAÇÃO: Novas ADRs adicionadas quando:
15
- - /setup-projeto define stack e arquitetura (ADRs iniciais)
13
+ ORIGEM: Criado pelo /setup-projeto com decisões iniciais (stack, arquitetura base).
14
+ ATUALIZAÇÃO: Novas decisões adicionadas quando:
15
+ - /setup-projeto define stack e arquitetura (decisões iniciais)
16
16
  - /design gera SDD §2 com decisões de design significativas
17
- - /merge-delta detecta mudança de stack ou padrão
17
+ - /merge-delta detecta mudança de stack ou padrão arquitetural
18
18
  - Usuário toma decisão que impacta arquitetura
19
19
 
20
20
  COMO GERAR:
21
- 1. Para cada decisão significativa, criar ADR com TODOS os campos
21
+ 1. Para cada decisão significativa, criar registro com TODOS os campos
22
22
  2. Contexto: POR QUE essa decisão foi necessária (não apenas "precisávamos")
23
23
  3. Alternativas: OBRIGATÓRIO listar ao menos 1 alternativa (com motivo da rejeição)
24
24
  4. Consequências: o que MUDA por causa da decisão (positivo E negativo)
25
25
 
26
26
  REGRAS:
27
27
  - IDs sequenciais: ADR-001, ADR-002... nunca reutilizar
28
- - NUNCA editar ADR com status "aceita" — criar nova com "substituída por ADR-XXX"
28
+ - NUNCA editar decisão com status "aceita" — criar nova com "substituída por ADR-XXX"
29
29
  - Status "proposta" = ainda em discussão, não implementar até aceitar
30
- - Toda mudança de stack, banco, framework DEVE ter ADR
31
- - ADRs são APPEND-ONLY — histórico importa
30
+ - Toda mudança de stack, banco, framework DEVE ter registro aqui
31
+ - Decisões são APPEND-ONLY — histórico importa
32
32
 
33
- QUANDO CRIAR ADR:
33
+ QUANDO CRIAR:
34
34
  - Escolha de tecnologia/framework
35
35
  - Mudança de padrão de design
36
36
  - Decisão de infra (cloud provider, DB engine)
37
37
  - Trade-off significativo (performance vs simplicidade, etc.)
38
38
 
39
- QUANDO NÃO CRIAR ADR:
39
+ QUANDO NÃO CRIAR:
40
40
  - Escolha de nome de variável
41
41
  - Implementação seguindo padrão já definido
42
42
  - Bug fix
@@ -53,7 +53,7 @@ QUANDO NÃO CRIAR ADR:
53
53
 
54
54
  ## Formato
55
55
 
56
- Cada ADR segue este modelo:
56
+ Cada decisão segue este modelo:
57
57
 
58
58
  ```markdown
59
59
  ### ADR-NNN: Título da Decisão
@@ -88,4 +88,12 @@ Cada ADR segue este modelo:
88
88
 
89
89
  ---
90
90
 
91
- > **Regra**: ADRs aceitas são imutáveis. Para reverter uma decisão, crie nova ADR com status "substituída por ADR-XXX" na ADR original.
91
+ > **Regra**: Decisões aceitas são imutáveis. Para reverter, criar nova decisão com status "substituída por ADR-XXX" na original.
92
+
93
+ ---
94
+
95
+ ## Changelog
96
+
97
+ | Data | Feature | Tipo | Descrição |
98
+ |------|---------|------|-----------|
99
+ | | | | |
@@ -0,0 +1,148 @@
1
+ # Domínio
2
+
3
+ > Visão de negócio + modelo de dados.
4
+ > O que o sistema é, quem usa, com o que integra, quais entidades existem e como se relacionam.
5
+
6
+ ---
7
+
8
+ <!--
9
+ =============================================================================
10
+ INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
11
+ =============================================================================
12
+
13
+ ORIGEM: Gerado pelo /setup-projeto a partir do TRD §1 (Visão) e §4 (Modelo de Dados Base).
14
+ ATUALIZAÇÃO: /merge-delta quando features adicionam/alteram tabelas, entidades,
15
+ atores, integrações externas ou termos de domínio.
16
+
17
+ COMO GERAR:
18
+ 1. Ler TRD §1 (Visão do Sistema) — contexto, atores, integrações
19
+ 2. Ler TRD §4 (Modelo de Dados Base) — tabelas iniciais, convenções
20
+ 3. Descrever o sistema em 2-3 frases objetivas (O QUE, PARA QUEM, QUAL PROBLEMA)
21
+ 4. Listar TODOS os atores com permissões gerais (o que PODE e o que NÃO pode)
22
+ 5. Listar TODAS as integrações externas com direção explícita
23
+ 6. Gerar diagrama ER textual com TODAS as relações
24
+ 7. Catálogo de tabelas com tipos EXATOS do banco (varchar(255), não "string")
25
+ 8. Glossário (DDD ubiquitous language) é obrigatório
26
+
27
+ O QUE NÃO VAI AQUI:
28
+ - Roadmap de módulos → vive no backlog faseado, não no Estrutura
29
+ - Containers, stack, deploy → architecture.md
30
+ - Autorização, LGPD, auditoria → conventions.md
31
+
32
+ REGRAS:
33
+ - Atores devem ter permissões gerais claras
34
+ - Integrações devem ter direção explícita (envia/recebe/ambos)
35
+ - Toda FK define ON DELETE/ON UPDATE
36
+ - Índices precisam de justificativa (query que justifica)
37
+ - Convenções de nomenclatura são LEI — SDDs seguem à risca
38
+ - Glossário não é opcional — termos ambíguos geram bugs
39
+
40
+ =============================================================================
41
+ -->
42
+
43
+ ## O que é este sistema?
44
+
45
+ <!-- Descrição em 2-3 frases. O que ele faz, para quem, qual problema resolve. -->
46
+
47
+
48
+ ## Usuários e Papéis
49
+
50
+ | Papel | O que faz | O que NÃO pode fazer | Nível de acesso |
51
+ |-------|-----------|----------------------|-----------------|
52
+ | | | | |
53
+
54
+ ## Integrações Externas
55
+
56
+ | Sistema/Serviço | Tipo (API/Webhook/Arquivo/Fila) | Direção (Envia/Recebe/Ambos) | Descrição | SLA/Disponibilidade |
57
+ |-----------------|--------------------------------|------------------------------|-----------|---------------------|
58
+ | | | | | |
59
+
60
+ ## Restrições e Premissas
61
+
62
+ ### Restrições técnicas
63
+ -
64
+
65
+ ### Restrições de negócio
66
+ -
67
+
68
+ ### Premissas
69
+ -
70
+
71
+ ## Glossário
72
+
73
+ > Termos do domínio usados em todo o projeto. Linguagem ubíqua (DDD).
74
+
75
+ | Termo | Definição | Exemplo de uso |
76
+ |-------|-----------|----------------|
77
+ | | | |
78
+
79
+ ## Modelo de Dados
80
+
81
+ ### Diagrama ER
82
+
83
+ ```
84
+ <!-- Representação textual do ER -->
85
+ <!-- Formato: [tabela_a] 1---N [tabela_b] (campo_fk) -->
86
+ ```
87
+
88
+ ### Convenções de Nomenclatura
89
+
90
+ | Elemento | Convenção | Exemplo |
91
+ |----------|-----------|---------|
92
+ | Tabelas | snake_case, plural | `clientes`, `pedidos` |
93
+ | Colunas | snake_case | `nome_completo`, `criado_em` |
94
+ | PKs | `id` (UUID ou SERIAL) | `id UUID PRIMARY KEY DEFAULT gen_random_uuid()` |
95
+ | FKs | `{tabela_singular}_id` | `cliente_id`, `cidade_id` |
96
+ | Índices | `idx_{tabela}_{colunas}` | `idx_clientes_cpf` |
97
+ | Unique | `uq_{tabela}_{colunas}` | `uq_clientes_email` |
98
+ | Timestamps | `criado_em`, `atualizado_em` | `TIMESTAMPTZ NOT NULL DEFAULT now()` |
99
+ | Soft delete | `ativo` (boolean) | `ativo BOOLEAN DEFAULT true` |
100
+ | Auditoria | `criado_por`, `atualizado_por` | `UUID REFERENCES usuarios(id)` |
101
+
102
+ ### Catálogo de Tabelas
103
+
104
+ <!-- Repetir bloco para cada tabela -->
105
+
106
+ #### {{tabela}}
107
+
108
+ > Descrição breve da tabela.
109
+
110
+ | Coluna | Tipo | Nullable | Default | Constraint | Descrição |
111
+ |--------|------|----------|---------|------------|-----------|
112
+ | | | | | | |
113
+
114
+ **Relações:**
115
+ - `campo_id` → `tabela_ref(id)` — ON DELETE CASCADE / SET NULL / RESTRICT
116
+
117
+ **Índices:**
118
+
119
+ | Nome | Colunas | Tipo | Justificativa |
120
+ |------|---------|------|---------------|
121
+ | | | btree / unique / gin | <!-- Qual query justifica este índice? --> |
122
+
123
+ ### Estratégia de Migrations
124
+
125
+ | Aspecto | Convenção |
126
+ |---------|-----------|
127
+ | Ferramenta | <!-- Ex: knex, prisma, flyway, alembic, EF Core --> |
128
+ | Nomenclatura | <!-- Ex: 001_create_tabela.sql, YYYYMMDD_descricao --> |
129
+ | Rollback | <!-- Toda migration TEM rollback? Testado como? --> |
130
+ | Execução | <!-- Sequencial? Transacional? --> |
131
+ | Dados existentes | <!-- Como lidar com migrations em tabelas com dados? --> |
132
+
133
+ ### Regras Globais de Dados
134
+
135
+ | Regra | Descrição |
136
+ |-------|-----------|
137
+ | Soft delete | <!-- Todas as tabelas usam? Quais exceções? --> |
138
+ | Auditoria | <!-- criado_por/atualizado_por em todas? --> |
139
+ | Timestamps | <!-- criado_em/atualizado_em obrigatórios? --> |
140
+ | Encoding | <!-- UTF-8? Collation? --> |
141
+
142
+ ---
143
+
144
+ ## Changelog
145
+
146
+ | Data | Feature | Tipo | Descrição |
147
+ |------|---------|------|-----------|
148
+ | | | | |