spec-first-copilot 0.4.0 → 0.5.0-beta.1

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 (53) hide show
  1. package/README.md +162 -148
  2. package/bin/cli.js +52 -52
  3. package/lib/init.js +89 -89
  4. package/package.json +11 -4
  5. package/templates/.ai/memory/napkin.md +68 -68
  6. package/templates/.github/agents/backend-coder.md +215 -215
  7. package/templates/.github/agents/db-coder.md +165 -165
  8. package/templates/.github/agents/doc-writer.md +48 -51
  9. package/templates/.github/agents/frontend-coder.md +222 -222
  10. package/templates/.github/agents/infra-coder.md +341 -341
  11. package/templates/.github/agents/reviewer.md +99 -99
  12. package/templates/.github/agents/security-reviewer.md +153 -153
  13. package/templates/.github/copilot-instructions.md +218 -175
  14. package/templates/.github/instructions/docs.instructions.md +123 -123
  15. package/templates/.github/instructions/sensitive-files.instructions.md +32 -32
  16. package/templates/{docs/Desenvolvimento → .github}/rules.md +229 -229
  17. package/templates/.github/skills/sf-design/SKILL.md +209 -181
  18. package/templates/.github/skills/sf-dev/SKILL.md +354 -349
  19. package/templates/.github/skills/sf-discovery/SKILL.md +405 -405
  20. package/templates/.github/skills/sf-extract/SKILL.md +284 -284
  21. package/templates/.github/skills/sf-feature/SKILL.md +130 -130
  22. package/templates/.github/skills/sf-merge-delta/SKILL.md +145 -142
  23. package/templates/.github/skills/sf-plan/SKILL.md +180 -178
  24. package/templates/.github/skills/sf-session-finish/SKILL.md +120 -120
  25. package/templates/.github/skills/sf-setup-projeto/SKILL.md +123 -123
  26. package/templates/{docs/_templates/estrutura/API.template.md → .github/templates/estrutura/apiContracts.template.md} +151 -144
  27. package/templates/.github/templates/estrutura/architecture.template.md +158 -0
  28. package/templates/{docs/_templates/estrutura/Seguranca.template.md → .github/templates/estrutura/conventions.template.md} +202 -138
  29. package/templates/{docs/_templates/estrutura/ADRs.template.md → .github/templates/estrutura/decisions.template.md} +99 -91
  30. package/templates/.github/templates/estrutura/domain.template.md +148 -0
  31. package/templates/{docs/_templates → .github/templates}/feature/PRD.template.md +256 -256
  32. package/templates/{docs/_templates → .github/templates}/feature/Progresso.template.md +136 -136
  33. package/templates/{docs/_templates → .github/templates}/feature/TRD.template.md +204 -200
  34. package/templates/{docs/_templates → .github/templates}/feature/backlog-extraido.template.md +154 -154
  35. package/templates/{docs/_templates → .github/templates}/feature/context.template.md +42 -42
  36. package/templates/{docs/_templates → .github/templates}/feature/extract-log.template.md +38 -38
  37. package/templates/{docs/_templates → .github/templates}/feature/projetos.template.yaml +73 -73
  38. package/templates/{docs/_templates → .github/templates}/feature/sdd.template.md +372 -372
  39. package/templates/{docs/_templates → .github/templates}/global/progresso_global.template.md +57 -57
  40. package/templates/.github/templates/specs/brief.template.md +47 -0
  41. package/templates/.github/templates/specs/contracts.template.md +82 -0
  42. package/templates/.github/templates/specs/scenarios.template.md +79 -0
  43. package/templates/.github/templates/specs/tasks.template.md +61 -0
  44. package/templates/docs/_templates/estrutura/Arquitetura.template.md +0 -82
  45. package/templates/docs/_templates/estrutura/Infraestrutura.template.md +0 -104
  46. package/templates/docs/_templates/estrutura/Modelo_Dados.template.md +0 -99
  47. package/templates/docs/_templates/estrutura/Stack.template.md +0 -78
  48. package/templates/docs/_templates/estrutura/Visao.template.md +0 -82
  49. package/templates/docs/_templates/feature/tasks.template.md +0 -115
  50. /package/templates/docs/{Desenvolvimento → specs}/.gitkeep +0 -0
  51. /package/templates/{docs/Estrutura → workspace/Input}/.gitkeep +0 -0
  52. /package/templates/{docs/PM → workspace/Input/setup_projeto}/.gitkeep +0 -0
  53. /package/templates/{docs/PM/setup_projeto → workspace/Output}/.gitkeep +0 -0
@@ -1,57 +1,57 @@
1
- # Progresso Geral
2
-
3
- > Visão consolidada de todas as features, bugs e tarefas do projeto.
4
- > Atualizado automaticamente ao final de cada `/plan` e `/dev`.
5
-
6
- ---
7
-
8
- <!--
9
- =============================================================================
10
- INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado na primeira vez)
11
- =============================================================================
12
-
13
- QUANDO USAR: Criado pelo /plan do primeiro setup ou feature. Atualizado por cada /plan e /dev.
14
-
15
- COMO ATUALIZAR:
16
- - Ao criar nova feature (/plan) → adicionar linha na tabela com contadores zerados
17
- - Ao concluir tasks (/dev) → atualizar contadores
18
- - Ao concluir feature (/merge-delta) → status "concluído" ou "done"
19
-
20
- ÁREAS SÃO DINÂMICAS:
21
- - Colunas de área mudam conforme o projeto (BANCO, BACK, FRONT, DOC, INFRA, MOBILE...)
22
- - Cada feature pode ter áreas diferentes
23
- - Usar "—" quando uma feature não tem tasks naquela área
24
-
25
- STATUS USA O VALOR DO .context.md:
26
- - not_started, extract_done, approved, design_done, plan_done, dev_in_progress, dev_done, done
27
-
28
- =============================================================================
29
- -->
30
-
31
- ## Resumo
32
-
33
- | # | Feature | Status | {{AREA_1}} | {{AREA_2}} | {{AREA_N}} | Última atualização |
34
- |---|---------|--------|------------|------------|------------|-------------------|
35
- | 1 | {{NOME}} | {{status}} | 0/N | 0/N | 0/N | {{data}} |
36
-
37
- <!-- Exemplo preenchido:
38
- | 1 | setup_projeto | plan_done | BANCO: 0/7 | BACK: 0/10 | FRONT: 0/3 | DOC: 0/8 | 2026-04-08 |
39
- | 2 | feat_cadastro_cliente | extract_done | — | — | — | — | 2026-04-09 |
40
- -->
41
-
42
- ## Legenda de Status
43
-
44
- | Status | Significado |
45
- |--------|-------------|
46
- | `not_started` | Pipeline iniciado, aguardando extração |
47
- | `extract_done` | PRD/TRD gerado, aguardando aprovação |
48
- | `approved` | Documento aprovado |
49
- | `design_done` | SDD gerado |
50
- | `plan_done` | Tasks geradas, pronto para /dev |
51
- | `dev_in_progress` | /dev em execução |
52
- | `dev_done` | Todas tasks concluídas |
53
- | `done` | Delta specs mergeadas (features) ou docs gerados (setup) |
54
-
55
- ---
56
-
57
- > **Atualização**: Cada skill atualiza este arquivo ao criar ou concluir features.
1
+ # Progresso Geral
2
+
3
+ > Visão consolidada de todas as features, bugs e tarefas do projeto.
4
+ > Atualizado automaticamente ao final de cada `/plan` e `/dev`.
5
+
6
+ ---
7
+
8
+ <!--
9
+ =============================================================================
10
+ INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado na primeira vez)
11
+ =============================================================================
12
+
13
+ QUANDO USAR: Criado pelo /plan do primeiro setup ou feature. Atualizado por cada /plan e /dev.
14
+
15
+ COMO ATUALIZAR:
16
+ - Ao criar nova feature (/plan) → adicionar linha na tabela com contadores zerados
17
+ - Ao concluir tasks (/dev) → atualizar contadores
18
+ - Ao concluir feature (/merge-delta) → status "concluído" ou "done"
19
+
20
+ ÁREAS SÃO DINÂMICAS:
21
+ - Colunas de área mudam conforme o projeto (BANCO, BACK, FRONT, DOC, INFRA, MOBILE...)
22
+ - Cada feature pode ter áreas diferentes
23
+ - Usar "—" quando uma feature não tem tasks naquela área
24
+
25
+ STATUS USA O VALOR DO .context.md:
26
+ - not_started, extract_done, approved, design_done, plan_done, dev_in_progress, dev_done, done
27
+
28
+ =============================================================================
29
+ -->
30
+
31
+ ## Resumo
32
+
33
+ | # | Feature | Status | {{AREA_1}} | {{AREA_2}} | {{AREA_N}} | Última atualização |
34
+ |---|---------|--------|------------|------------|------------|-------------------|
35
+ | 1 | {{NOME}} | {{status}} | 0/N | 0/N | 0/N | {{data}} |
36
+
37
+ <!-- Exemplo preenchido:
38
+ | 1 | setup_projeto | plan_done | BANCO: 0/7 | BACK: 0/10 | FRONT: 0/3 | DOC: 0/8 | 2026-04-08 |
39
+ | 2 | feat_cadastro_cliente | extract_done | — | — | — | — | 2026-04-09 |
40
+ -->
41
+
42
+ ## Legenda de Status
43
+
44
+ | Status | Significado |
45
+ |--------|-------------|
46
+ | `not_started` | Pipeline iniciado, aguardando extração |
47
+ | `extract_done` | PRD/TRD gerado, aguardando aprovação |
48
+ | `approved` | Documento aprovado |
49
+ | `design_done` | SDD gerado |
50
+ | `plan_done` | Tasks geradas, pronto para /dev |
51
+ | `dev_in_progress` | /dev em execução |
52
+ | `dev_done` | Todas tasks concluídas |
53
+ | `done` | Delta specs mergeadas (features) ou docs gerados (setup) |
54
+
55
+ ---
56
+
57
+ > **Atualização**: Cada skill atualiza este arquivo ao criar ou concluir features.
@@ -0,0 +1,47 @@
1
+ # Brief — {{NOME}}
2
+
3
+ > Projeção estruturada do SDD para consumo do agent coder.
4
+ > Gerado automaticamente pelo /sf-design a partir do SDD em `workspace/Output/{{NOME}}/sdd.md`.
5
+
6
+ ---
7
+
8
+ <!--
9
+ =============================================================================
10
+ INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
11
+ =============================================================================
12
+
13
+ ORIGEM: /sf-design — projeção do SDD §1 Visão geral + §2 Decisões + §10 Fora do escopo.
14
+ ATUALIZAÇÃO: Sempre regenerado junto com o SDD. NUNCA editado manualmente.
15
+
16
+ REGRA DE OURO: Se algo aqui diverge do SDD, o SDD vence. Re-rode /sf-design.
17
+
18
+ O brief é o "por quê" + "o quê" destilado. Sem narrativa longa — bullets objetivos.
19
+ O coder lê o brief pra contexto, mas não deriva código daqui.
20
+ Contratos ficam em contracts.md. Cenários ficam em scenarios.md.
21
+
22
+ =============================================================================
23
+ -->
24
+
25
+ ## Problema
26
+
27
+ <!-- 2-3 frases. O que está faltando/quebrado que essa feature resolve. -->
28
+
29
+ ## Solução
30
+
31
+ <!-- High level: como estamos resolvendo. Não é design técnico. -->
32
+
33
+ ## Escopo
34
+
35
+ ### Dentro
36
+ -
37
+
38
+ ### Fora
39
+ -
40
+
41
+ ## Decisões principais
42
+
43
+ <!-- Mini-ADRs inline — cada decisão com justificativa em 1 linha. -->
44
+
45
+ | # | Decisão | Justificativa |
46
+ |---|---------|---------------|
47
+ | 1 | | |
@@ -0,0 +1,82 @@
1
+ # Contracts — {{NOME}}
2
+
3
+ > Projeção estruturada do SDD para consumo do agent coder.
4
+ > Gerado automaticamente pelo /sf-design a partir do SDD em `workspace/Output/{{NOME}}/sdd.md`.
5
+
6
+ ---
7
+
8
+ <!--
9
+ =============================================================================
10
+ INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
11
+ =============================================================================
12
+
13
+ ORIGEM: /sf-design — projeção do SDD §3 Modelo de dados + §4 Regras/validações
14
+ + §5 Endpoints API + §8 Integrações externas.
15
+ ATUALIZAÇÃO: Sempre regenerado junto com o SDD. NUNCA editado manualmente.
16
+
17
+ REGRA DE OURO: Se algo aqui diverge do SDD, o SDD vence. Re-rode /sf-design.
18
+
19
+ O contracts.md é o "o que construir" — contratos executáveis.
20
+ Tipos exatos do banco (não "string"). Request/response JSON completos.
21
+ Regras de negócio com RN-NNN e enforcement points.
22
+
23
+ =============================================================================
24
+ -->
25
+
26
+ ## Dados
27
+
28
+ <!-- Entidades, tabelas, campos, constraints, índices.
29
+ Tipos EXATOS do banco escolhido (varchar(255), não "string"). -->
30
+
31
+ ### {{tabela}}
32
+
33
+ | Coluna | Tipo | Nullable | Default | Constraint |
34
+ |--------|------|----------|---------|------------|
35
+ | | | | | |
36
+
37
+ **Relações:**
38
+ - `campo_id` → `tabela_ref(id)` ON DELETE ...
39
+
40
+ **Índices:**
41
+ - `idx_nome` em `(colunas)` — justificativa
42
+
43
+ ## API
44
+
45
+ <!-- Endpoints com contratos JSON completos. -->
46
+
47
+ ### {{método}} {{rota}}
48
+
49
+ **Auth**: <!-- Bearer / público / role -->
50
+ **Rate limit**: <!-- categoria -->
51
+
52
+ **Request:**
53
+ ```json
54
+ {}
55
+ ```
56
+
57
+ **Response 200:**
58
+ ```json
59
+ {}
60
+ ```
61
+
62
+ **Errors:**
63
+ | Status | Code | Quando |
64
+ |--------|------|--------|
65
+ | 400 | | |
66
+ | 422 | | |
67
+
68
+ ## Integrações externas
69
+
70
+ <!-- Sistemas terceiros que essa feature consome/notifica. -->
71
+
72
+ | Sistema | Direção | Protocolo | Timeout | Retry | Fallback |
73
+ |---------|---------|-----------|---------|-------|----------|
74
+ | | | | | | |
75
+
76
+ ## Regras de negócio
77
+
78
+ <!-- RN-NNN com ponto de enforcement (DB constraint, service, middleware, etc). -->
79
+
80
+ | ID | Regra | Enforcement | Error code |
81
+ |----|-------|-------------|------------|
82
+ | RN-001 | | | |
@@ -0,0 +1,79 @@
1
+ # Scenarios — {{NOME}}
2
+
3
+ > Projeção estruturada do SDD para consumo do agent coder e reviewer.
4
+ > Gerado automaticamente pelo /sf-design a partir do SDD em `workspace/Output/{{NOME}}/sdd.md`.
5
+
6
+ ---
7
+
8
+ <!--
9
+ =============================================================================
10
+ INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
11
+ =============================================================================
12
+
13
+ ORIGEM: /sf-design — projeção do SDD §6 Componentes/telas + §7 Fluxos de dados
14
+ + §9 Estratégia de testes + Critérios de aceite.
15
+ ATUALIZAÇÃO: Sempre regenerado junto com o SDD. NUNCA editado manualmente.
16
+
17
+ REGRA DE OURO: Se algo aqui diverge do SDD, o SDD vence. Re-rode /sf-design.
18
+
19
+ O scenarios.md é o "como validar que funciona" — Given/When/Then testáveis,
20
+ fluxos usuário→front→back, estados de UI (loading/empty/error/success).
21
+
22
+ O REVIEWER usa este arquivo pra validar critérios de aceite após implementação.
23
+ Cada CA-NNN deve ser mapeável a um teste executável.
24
+
25
+ =============================================================================
26
+ -->
27
+
28
+ ## Fluxos principais
29
+
30
+ <!-- Sequências usuário → front → back → resposta. Caminhos de erro inclusos. -->
31
+
32
+ ### Fluxo: {{nome}}
33
+
34
+ ```
35
+ usuário → [ação] → front → [request] → back → [validação+persistência] → resposta
36
+ ```
37
+
38
+ **Caminhos de erro:**
39
+ - Erro X → resposta Y
40
+ - Timeout → retry / fallback
41
+
42
+ ## UI / Componentes
43
+
44
+ <!-- Telas e componentes principais com seus estados. -->
45
+
46
+ ### {{componente}}
47
+
48
+ | Estado | Gatilho | Visual |
49
+ |--------|---------|--------|
50
+ | loading | | |
51
+ | empty | | |
52
+ | error | | |
53
+ | success | | |
54
+
55
+ ## Critérios de Aceite
56
+
57
+ <!-- Given/When/Then. Cada CA deve ser mapeável a um teste. -->
58
+
59
+ ### CA-001: {{título curto}}
60
+
61
+ - **Given**: estado inicial
62
+ - **When**: ação
63
+ - **Then**: resultado esperado
64
+ - **Teste**: `tipo` — `arquivo_de_teste.ext`
65
+
66
+ ### CA-002: {{título curto}}
67
+
68
+ - **Given**:
69
+ - **When**:
70
+ - **Then**:
71
+ - **Teste**:
72
+
73
+ ## Estratégia de testes
74
+
75
+ | Nível | Framework | O que testa | Onde rodam |
76
+ |-------|-----------|-------------|------------|
77
+ | Unit | | lógica isolada | por task |
78
+ | Integration | | entre componentes | por fase |
79
+ | E2E | | CAs completos | por feature |
@@ -0,0 +1,61 @@
1
+ # Tasks — {{NOME}}
2
+
3
+ > Plano de implementação único. Todas as tasks em uma tabela com coluna Área.
4
+ > Gerado pelo /sf-plan a partir do SDD + docs/specs/{{NOME}}/.
5
+
6
+ ---
7
+
8
+ <!--
9
+ =============================================================================
10
+ INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
11
+ =============================================================================
12
+
13
+ ORIGEM: /sf-plan — deriva de sdd.md + contracts.md + scenarios.md
14
+ ATUALIZAÇÃO: /sf-plan re-roda se SDD/contracts/scenarios mudarem.
15
+
16
+ STATUS vive em workspace/Output/{{NOME}}/Progresso.md — NÃO aqui.
17
+ Tasks são só a definição do que precisa ser feito, não o estado.
18
+
19
+ CAMPOS OBRIGATÓRIOS:
20
+ - ID: {ÁREA}-NNN sequencial por área (BANCO-001, BACK-001, FRONT-001, INFRA-001)
21
+ - Área: BANCO | BACK | FRONT | INFRA | DOC
22
+ - Fase: número da fase de entrega (entregáveis contínuos)
23
+ - Tamanho: S (≤2h) | M (meio dia) | L (1-2 dias)
24
+ - Título: ação no imperativo ("Criar tabela clientes")
25
+ - Repo: nome do serviço no projetos.yaml (api, web, worker...)
26
+ - Arquivos: caminhos que a task vai criar/modificar (relativos ao repo)
27
+ - Depende de: outros IDs — cross-area OK
28
+ - Ref spec: seção do SDD que define essa task
29
+ - Ref CA: ID do critério de aceite em scenarios.md (se aplica)
30
+
31
+ REGRAS:
32
+ - IDs estáveis — nunca renumerar após commit
33
+ - Depends_on cross-area é OK (BACK-001 depende de BANCO-001)
34
+ - Toda task deve ter pelo menos 1 teste (unit + optional integration)
35
+ - Tarefas da mesma fase/área rodam em sequência, fases são sequenciais
36
+
37
+ =============================================================================
38
+ -->
39
+
40
+ ## Tasks
41
+
42
+ | ID | Área | Fase | Tam | Título | Repo | Arquivos | Depende de | Ref spec | Ref CA |
43
+ |----|------|------|-----|--------|------|----------|-----------|----------|--------|
44
+ | BANCO-001 | BANCO | 1 | S | | | | — | SDD §3.1 | — |
45
+ | BACK-001 | BACK | 1 | M | | | | BANCO-001 | SDD §5.1 | CA-001 |
46
+
47
+ ## Regras por área
48
+
49
+ <!-- Convenções específicas extraídas do SDD + docs/ (architecture, domain, conventions). -->
50
+
51
+ ### BANCO
52
+ -
53
+
54
+ ### BACK
55
+ -
56
+
57
+ ### FRONT
58
+ -
59
+
60
+ ### INFRA
61
+ -
@@ -1,82 +0,0 @@
1
- # Arquitetura
2
-
3
- > C4 Níveis 2-3 — Containers, componentes, comunicação e padrões adotados.
4
-
5
- ---
6
-
7
- <!--
8
- =============================================================================
9
- INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
10
- =============================================================================
11
-
12
- ORIGEM: Gerado pelo /setup-projeto a partir do TRD §3.
13
- ATUALIZAÇÃO: /merge-delta quando features adicionam containers, componentes significativos ou novos padrões.
14
-
15
- COMO GERAR:
16
- 1. Ler TRD §3 (Arquitetura) — containers, padrões de comunicação, padrões de design
17
- 2. Ler Stack.md — tecnologias já definidas para cada container
18
- 3. Criar diagrama textual C4 Nível 2 (containers e suas conexões)
19
- 4. Para cada container: listar componentes internos (C4 Nível 3)
20
- 5. Documentar padrões de comunicação (sync/async, protocolos)
21
- 6. Documentar padrões de design com justificativa
22
-
23
- REGRAS:
24
- - Diagrama deve mostrar TODOS os containers e suas conexões
25
- - Cada container deve ter: tecnologia, responsabilidade, porta
26
- - Padrões de design precisam de justificativa (não apenas nome)
27
- - Se o sistema usa filas/eventos: documentar tópicos e consumers
28
- - Componentes são internos ao container — não confundir com containers
29
-
30
- =============================================================================
31
- -->
32
-
33
- ## Diagrama de Containers (C4 Nível 2)
34
-
35
- ```
36
- <!-- Representação textual dos containers e suas conexões -->
37
- <!-- Usar formato: [Container] --protocolo--> [Container] -->
38
- ```
39
-
40
- ## Containers
41
-
42
- | Container | Tecnologia | Responsabilidade | Porta | Comunicação |
43
- |-----------|-----------|-----------------|-------|-------------|
44
- | | | | | |
45
-
46
- ## Componentes Principais (C4 Nível 3)
47
-
48
- <!-- Repetir esta seção para cada container que tenha componentes internos relevantes -->
49
-
50
- ### {{Container}}
51
-
52
- | Componente | Responsabilidade | Dependências internas | Dependências externas |
53
- |------------|-----------------|----------------------|----------------------|
54
- | | | | |
55
-
56
- ## Padrões de Comunicação
57
-
58
- ### Síncrona (request/response)
59
-
60
- | De | Para | Protocolo | Formato | Observações |
61
- |----|------|-----------|---------|-------------|
62
- | | | | | |
63
-
64
- ### Assíncrona (eventos/filas)
65
-
66
- | Produtor | Tópico/Fila | Consumer | Formato | Garantia |
67
- |----------|-------------|----------|---------|----------|
68
- | | | | | at-least-once / exactly-once |
69
-
70
- ## Padrões de Design Adotados
71
-
72
- | Padrão | Onde é usado | Justificativa | Ref ADR |
73
- |--------|-------------|---------------|---------|
74
- | | | | |
75
-
76
- ---
77
-
78
- ## Changelog
79
-
80
- | Data | Feature | Tipo | Descrição |
81
- |------|---------|------|-----------|
82
- | | | | |
@@ -1,104 +0,0 @@
1
- # Infraestrutura
2
-
3
- > Ambientes, deploy, CI/CD, variáveis de ambiente, domínios e estratégia de rollback.
4
-
5
- ---
6
-
7
- <!--
8
- =============================================================================
9
- INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
10
- =============================================================================
11
-
12
- ORIGEM: Gerado pelo /setup-projeto a partir do TRD §6.
13
- ATUALIZAÇÃO: /merge-delta quando features adicionam variáveis de ambiente, serviços ou mudam infra.
14
-
15
- COMO GERAR:
16
- 1. Ler TRD §6 (Infraestrutura) — ambientes, deploy, CI/CD
17
- 2. Listar TODOS os ambientes com URLs e propósitos
18
- 3. Pipeline CI/CD deve ser concreto (passos reais, não genéricos)
19
- 4. Variáveis de ambiente: NUNCA colocar valores reais (só exemplos)
20
- 5. Estratégia de rollback é OBRIGATÓRIA
21
-
22
- REGRAS:
23
- - Variáveis de ambiente com valores reais NÃO vão pro repositório
24
- - Cada variável precisa de descrição (não só o nome)
25
- - Pipeline CI/CD deve ter passos claros e ferramentas definidas
26
- - Rollback strategy obrigatória — "como voltar se der errado?"
27
- - Novas variáveis adicionadas via merge-delta devem entrar na tabela
28
-
29
- =============================================================================
30
- -->
31
-
32
- ## Ambientes
33
-
34
- | Ambiente | URL | Banco | Propósito | Branch |
35
- |----------|-----|-------|-----------|--------|
36
- | Local | `localhost:{{PORT}}` | local | Desenvolvimento | qualquer |
37
- | Staging | | | Testes e homologação | develop |
38
- | Produção | | | Usuários finais | main |
39
-
40
- ## Deploy
41
-
42
- ### Estratégia
43
-
44
- | Aspecto | Decisão |
45
- |---------|---------|
46
- | Plataforma | <!-- Docker? Serverless? VPS? Cloud provider? --> |
47
- | Orquestração | <!-- Kubernetes? ECS? PM2? --> |
48
- | Build | <!-- Docker multi-stage? Build nativo? --> |
49
- | Estratégia de deploy | <!-- Rolling? Blue-green? Canary? --> |
50
-
51
- ### Pipeline CI/CD
52
-
53
- ```
54
- push → lint → test → build → deploy(staging) → aprovação → deploy(prod)
55
- ```
56
-
57
- | Etapa | Ferramenta | Trigger | Timeout |
58
- |-------|-----------|---------|---------|
59
- | Lint | <!-- eslint, ruff --> | push | |
60
- | Testes | <!-- jest, pytest --> | push | |
61
- | Build | <!-- docker build --> | push em main/develop | |
62
- | Deploy staging | <!-- CD tool --> | push em develop | |
63
- | Deploy produção | <!-- CD tool --> | aprovação manual | |
64
-
65
- ### Rollback
66
-
67
- | Cenário | Procedimento | Responsável |
68
- |---------|-------------|-------------|
69
- | Bug em produção | <!-- Reverter deploy? Hotfix? --> | |
70
- | Migration com erro | <!-- Rollback da migration? --> | |
71
- | Serviço externo fora | <!-- Fallback? Circuit breaker? --> | |
72
-
73
- ## Variáveis de Ambiente
74
-
75
- > NUNCA colocar valores reais aqui. Apenas nomes, descrição e exemplos.
76
-
77
- | Variável | Ambientes | Obrigatória | Descrição | Exemplo |
78
- |----------|-----------|-------------|-----------|---------|
79
- | `DATABASE_URL` | todos | sim | Conexão com banco | `postgres://user:pass@host:5432/db` |
80
- | `JWT_SECRET` | todos | sim | Chave de assinatura JWT | `sua-chave-secreta-aqui` |
81
- | `NODE_ENV` | todos | sim | Ambiente atual | `development` / `production` |
82
-
83
- ## Domínios e DNS
84
-
85
- | Domínio | Aponta para | Certificado | Gerenciado por |
86
- |---------|-------------|-------------|----------------|
87
- | | | <!-- Let's Encrypt? AWS ACM? --> | |
88
-
89
- ## Monitoramento e Observabilidade
90
-
91
- | Aspecto | Ferramenta | O que monitora |
92
- |---------|-----------|----------------|
93
- | Logs | <!-- Ex: CloudWatch, Datadog --> | |
94
- | APM | <!-- Ex: New Relic, Sentry --> | |
95
- | Uptime | <!-- Ex: Pingdom, UptimeRobot --> | |
96
- | Alertas | <!-- Ex: PagerDuty, Slack --> | |
97
-
98
- ---
99
-
100
- ## Changelog
101
-
102
- | Data | Feature | Tipo | Descrição |
103
- |------|---------|------|-----------|
104
- | | | | |
@@ -1,99 +0,0 @@
1
- # Modelo de Dados
2
-
3
- > Schema completo, relações, índices, convenções de nomenclatura e estratégia de migrations.
4
-
5
- ---
6
-
7
- <!--
8
- =============================================================================
9
- INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
10
- =============================================================================
11
-
12
- ORIGEM: Gerado pelo /setup-projeto a partir do TRD §4.
13
- ATUALIZAÇÃO: /merge-delta a cada feature que adiciona/altera tabelas (Delta Specs do SDD §3 e §11).
14
-
15
- COMO GERAR:
16
- 1. Ler TRD §4 (Modelo de Dados Base) — tabelas iniciais, convenções
17
- 2. Gerar diagrama ER textual com TODAS as relações
18
- 3. Para cada tabela: campos com tipos EXATOS (varchar(255), não "string")
19
- 4. Convenções de nomenclatura são FIXAS após setup — não mudam por feature
20
- 5. Estratégia de migrations deve ser concreta (ferramenta, naming, rollback)
21
-
22
- REGRAS:
23
- - Tipos devem ser do banco escolhido (PostgreSQL, MySQL, etc.), não genéricos
24
- - Toda FK deve ter ON DELETE/ON UPDATE definido
25
- - Índices precisam de justificativa (query que justifica)
26
- - Convenções definidas aqui são LEI — SDDs e tasks seguem à risca
27
- - Diagrama ER deve ser atualizado a cada merge-delta
28
-
29
- =============================================================================
30
- -->
31
-
32
- ## Diagrama ER
33
-
34
- ```
35
- <!-- Representação textual do ER -->
36
- <!-- Formato: [tabela_a] 1---N [tabela_b] (campo_fk) -->
37
- ```
38
-
39
- ## Convenções de Nomenclatura
40
-
41
- | Elemento | Convenção | Exemplo |
42
- |----------|-----------|---------|
43
- | Tabelas | snake_case, plural | `clientes`, `pedidos` |
44
- | Colunas | snake_case | `nome_completo`, `criado_em` |
45
- | PKs | `id` (UUID ou SERIAL) | `id UUID PRIMARY KEY DEFAULT gen_random_uuid()` |
46
- | FKs | `{tabela_singular}_id` | `cliente_id`, `cidade_id` |
47
- | Índices | `idx_{tabela}_{colunas}` | `idx_clientes_cpf` |
48
- | Unique | `uq_{tabela}_{colunas}` | `uq_clientes_email` |
49
- | Timestamps | `criado_em`, `atualizado_em` | `TIMESTAMPTZ NOT NULL DEFAULT now()` |
50
- | Soft delete | `ativo` (boolean) | `ativo BOOLEAN DEFAULT true` |
51
- | Auditoria | `criado_por`, `atualizado_por` | `UUID REFERENCES usuarios(id)` |
52
-
53
- ## Catálogo de Tabelas
54
-
55
- <!-- Repetir bloco para cada tabela -->
56
-
57
- ### {{tabela}}
58
-
59
- > Descrição breve da tabela.
60
-
61
- | Coluna | Tipo | Nullable | Default | Constraint | Descrição |
62
- |--------|------|----------|---------|------------|-----------|
63
- | | | | | | |
64
-
65
- **Relações:**
66
- - `campo_id` → `tabela_ref(id)` — ON DELETE CASCADE / SET NULL / RESTRICT
67
-
68
- **Índices:**
69
-
70
- | Nome | Colunas | Tipo | Justificativa |
71
- |------|---------|------|---------------|
72
- | | | btree / unique / gin | <!-- Qual query justifica este índice? --> |
73
-
74
- ## Estratégia de Migrations
75
-
76
- | Aspecto | Convenção |
77
- |---------|-----------|
78
- | Ferramenta | <!-- Ex: knex, prisma, flyway, alembic --> |
79
- | Nomenclatura | <!-- Ex: 001_create_tabela.sql, YYYYMMDD_descricao --> |
80
- | Rollback | <!-- Toda migration TEM rollback? Testado como? --> |
81
- | Execução | <!-- Sequencial? Transacional? --> |
82
- | Dados existentes | <!-- Como lidar com migrations em tabelas com dados? --> |
83
-
84
- ## Regras Globais de Dados
85
-
86
- | Regra | Descrição |
87
- |-------|-----------|
88
- | Soft delete | <!-- Todas as tabelas usam? Quais exceções? --> |
89
- | Auditoria | <!-- criado_por/atualizado_por em todas? --> |
90
- | Timestamps | <!-- criado_em/atualizado_em obrigatórios? --> |
91
- | Encoding | <!-- UTF-8? Collation? --> |
92
-
93
- ---
94
-
95
- ## Changelog
96
-
97
- | Data | Feature | Tipo | Descrição |
98
- |------|---------|------|-----------|
99
- | | | | |