spec-first-copilot 0.4.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 (49) hide show
  1. package/README.md +156 -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 +194 -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 +180 -181
  18. package/templates/.github/skills/sf-dev/SKILL.md +349 -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 +178 -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}/feature/tasks.template.md +115 -115
  40. package/templates/{docs/_templates → .github/templates}/global/progresso_global.template.md +57 -57
  41. package/templates/docs/_templates/estrutura/Arquitetura.template.md +0 -82
  42. package/templates/docs/_templates/estrutura/Infraestrutura.template.md +0 -104
  43. package/templates/docs/_templates/estrutura/Modelo_Dados.template.md +0 -99
  44. package/templates/docs/_templates/estrutura/Stack.template.md +0 -78
  45. package/templates/docs/_templates/estrutura/Visao.template.md +0 -82
  46. /package/templates/docs/{Desenvolvimento/.gitkeep → .gitkeep} +0 -0
  47. /package/templates/{docs/Estrutura → workspace/Input}/.gitkeep +0 -0
  48. /package/templates/{docs/PM → workspace/Input/setup_projeto}/.gitkeep +0 -0
  49. /package/templates/{docs/PM/setup_projeto → workspace/Output}/.gitkeep +0 -0
@@ -1,115 +1,115 @@
1
- # Tasks — {{AREA}} — {{FEATURE}}
2
-
3
- > Checklist de implementação organizado por **fases** e **prioridade**.
4
- > O Coder consulta o `sdd.md` para detalhes técnicos.
5
- > Este arquivo define O QUE fazer, EM QUE ORDEM, e ONDE.
6
-
7
- ---
8
-
9
- ## Meta
10
-
11
- | Campo | Valor |
12
- |-------|-------|
13
- | Feature | `{{FEATURE}}` |
14
- | Área | {{AREA}} |
15
- | SDD | [`sdd.md`](./sdd.md) {{SDD_SECTIONS}} |
16
- | Total de tasks | {{TOTAL}} |
17
- | Depende de | {{AREA_DEPENDENCIES}} |
18
-
19
- ---
20
-
21
- <!--
22
- =============================================================================
23
- INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
24
- =============================================================================
25
-
26
- COMO GERAR ESTE ARQUIVO:
27
-
28
- 1. Ler o SDD completo da feature
29
- 2. Identificar TODAS as áreas afetadas (banco, back, front, mobile, infra...)
30
- 3. Para CADA área, gerar um arquivo `{area}_tasks.md` usando este template
31
- 4. Áreas são DINÂMICAS — determinadas pelo SDD, não pré-definidas
32
-
33
- COMO DEFINIR FASES:
34
-
35
- - Agrupar tasks por etapa lógica de implementação
36
- - Fases são SEQUENCIAIS dentro da área (Fase 2 depende de Fase 1)
37
- - Usar prioridade P1/P2/P3 por fase
38
- - Nomear fases de forma descritiva (não só "Fase 1")
39
- - Exemplos de fases por área:
40
-
41
- BANCO: Setup → Schema → Índices → Seeds
42
- BACKEND: Setup → DTOs/Validações → Repository/Service → Controller → Testes
43
- FRONTEND: Setup/Rotas → Componentes → Telas → Polish
44
- MOBILE: Setup → Navegação → Telas → Offline → Push
45
- INFRA: Provisão → Config → Deploy → Monitoramento
46
-
47
- COMO ESCREVER CADA TASK:
48
-
49
- - Formato checklist: `- [ ] **ID**: Título [Tamanho]`
50
- - ID: {PREFIXO}-{NNN} sequencial (BANCO-001, BACK-001, FRONT-001, MOBILE-001...)
51
- - Título: verbo no infinitivo + o que fazer
52
- - Tamanho: S (< 30min), M (30min-2h), L (2h+)
53
- - Fase: número da fase de entrega (do PRD §11) — OBRIGATÓRIO
54
- - Repo: nome do repo (de projetos.yaml) — OBRIGATÓRIO
55
- - Arquivos: EXATAMENTE quais files criar ou alterar (caminhos RELATIVOS ao repo)
56
- - SDD: seção específica (§3.1, §5 POST /rota, §6 Tela X)
57
- - Depende: IDs de tasks (mesma área ou cross-area)
58
-
59
- REGRAS:
60
-
61
- - Task deve ser AUTOCONTIDA: Coder lê SDD + esta task, nada mais
62
- - NÃO duplicar conteúdo do SDD — apenas referenciar seções
63
- - NÃO incluir status — vive só no Progresso.md
64
- - Depende cross-area é permitido (FRONT-004 depende de BACK-009)
65
- - "Regras desta área" = convenções específicas extraídas do SDD e docs/Estrutura
66
-
67
- =============================================================================
68
- -->
69
-
70
- ## Fase 1 — {{FASE_NOME}} [{{PRIORIDADE}}]
71
-
72
- > {{FASE_CONTEXTO — 1 linha explicando o propósito da fase}}
73
- <!-- Opcional: "Depende de: Área X Fase Y concluída" -->
74
-
75
- - [ ] **{{PREFIXO}}-001**: {{Título descritivo}} [{{S|M|L}}]
76
- - Fase: {{N}} — {{Nome fase de entrega}}
77
- - Repo: `{{repo_name}}`
78
- - Arquivos: `{{caminho/arquivo.ext}}`
79
- - SDD: {{§N seção específica}}
80
- - Depende: {{ID ou —}}
81
-
82
- - [ ] **{{PREFIXO}}-002**: {{Título descritivo}} [{{S|M|L}}]
83
- - Fase: {{N}} — {{Nome fase de entrega}}
84
- - Repo: `{{repo_name}}`
85
- - Arquivos: `{{caminho/arquivo1.ext}}`, `{{caminho/arquivo2.ext}}`
86
- - SDD: {{§N.M subseção}}
87
- - Depende: {{PREFIXO}}-001
88
-
89
- ---
90
-
91
- ## Fase 2 — {{FASE_NOME}} [{{PRIORIDADE}}]
92
-
93
- > {{FASE_CONTEXTO}}
94
-
95
- - [ ] **{{PREFIXO}}-003**: {{Título}} [{{S|M|L}}]
96
- - Fase: {{N}} — {{Nome fase de entrega}}
97
- - Repo: `{{repo_name}}`
98
- - Arquivos: `{{caminho/}}`
99
- - SDD: {{§N}}
100
- - Depende: {{PREFIXO}}-001, {{OUTRA_AREA}}-001
101
-
102
- <!-- Repetir fases conforme necessário -->
103
-
104
- ---
105
-
106
- ## Regras desta área
107
-
108
- <!-- Extraídas do SDD e docs/Estrutura/ — específicas para esta área -->
109
- 1. {{Regra 1}}
110
- 2. {{Regra 2}}
111
-
112
- ---
113
-
114
- > **Legenda tamanho**: S = < 30min · M = 30min-2h · L = 2h+
115
- > **Legenda prioridade**: P1 = bloqueia outras áreas · P2 = importante · P3 = nice-to-have
1
+ # Tasks — {{AREA}} — {{FEATURE}}
2
+
3
+ > Checklist de implementação organizado por **fases** e **prioridade**.
4
+ > O Coder consulta o `sdd.md` para detalhes técnicos.
5
+ > Este arquivo define O QUE fazer, EM QUE ORDEM, e ONDE.
6
+
7
+ ---
8
+
9
+ ## Meta
10
+
11
+ | Campo | Valor |
12
+ |-------|-------|
13
+ | Feature | `{{FEATURE}}` |
14
+ | Área | {{AREA}} |
15
+ | SDD | [`sdd.md`](./sdd.md) {{SDD_SECTIONS}} |
16
+ | Total de tasks | {{TOTAL}} |
17
+ | Depende de | {{AREA_DEPENDENCIES}} |
18
+
19
+ ---
20
+
21
+ <!--
22
+ =============================================================================
23
+ INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
24
+ =============================================================================
25
+
26
+ COMO GERAR ESTE ARQUIVO:
27
+
28
+ 1. Ler o SDD completo da feature
29
+ 2. Identificar TODAS as áreas afetadas (banco, back, front, mobile, infra...)
30
+ 3. Para CADA área, gerar um arquivo `{area}_tasks.md` usando este template
31
+ 4. Áreas são DINÂMICAS — determinadas pelo SDD, não pré-definidas
32
+
33
+ COMO DEFINIR FASES:
34
+
35
+ - Agrupar tasks por etapa lógica de implementação
36
+ - Fases são SEQUENCIAIS dentro da área (Fase 2 depende de Fase 1)
37
+ - Usar prioridade P1/P2/P3 por fase
38
+ - Nomear fases de forma descritiva (não só "Fase 1")
39
+ - Exemplos de fases por área:
40
+
41
+ BANCO: Setup → Schema → Índices → Seeds
42
+ BACKEND: Setup → DTOs/Validações → Repository/Service → Controller → Testes
43
+ FRONTEND: Setup/Rotas → Componentes → Telas → Polish
44
+ MOBILE: Setup → Navegação → Telas → Offline → Push
45
+ INFRA: Provisão → Config → Deploy → Monitoramento
46
+
47
+ COMO ESCREVER CADA TASK:
48
+
49
+ - Formato checklist: `- [ ] **ID**: Título [Tamanho]`
50
+ - ID: {PREFIXO}-{NNN} sequencial (BANCO-001, BACK-001, FRONT-001, MOBILE-001...)
51
+ - Título: verbo no infinitivo + o que fazer
52
+ - Tamanho: S (< 30min), M (30min-2h), L (2h+)
53
+ - Fase: número da fase de entrega (do PRD §11) — OBRIGATÓRIO
54
+ - Repo: nome do repo (de projetos.yaml) — OBRIGATÓRIO
55
+ - Arquivos: EXATAMENTE quais files criar ou alterar (caminhos RELATIVOS ao repo)
56
+ - SDD: seção específica (§3.1, §5 POST /rota, §6 Tela X)
57
+ - Depende: IDs de tasks (mesma área ou cross-area)
58
+
59
+ REGRAS:
60
+
61
+ - Task deve ser AUTOCONTIDA: Coder lê SDD + esta task, nada mais
62
+ - NÃO duplicar conteúdo do SDD — apenas referenciar seções
63
+ - NÃO incluir status — vive só no Progresso.md
64
+ - Depende cross-area é permitido (FRONT-004 depende de BACK-009)
65
+ - "Regras desta área" = convenções específicas extraídas do SDD e docs
66
+
67
+ =============================================================================
68
+ -->
69
+
70
+ ## Fase 1 — {{FASE_NOME}} [{{PRIORIDADE}}]
71
+
72
+ > {{FASE_CONTEXTO — 1 linha explicando o propósito da fase}}
73
+ <!-- Opcional: "Depende de: Área X Fase Y concluída" -->
74
+
75
+ - [ ] **{{PREFIXO}}-001**: {{Título descritivo}} [{{S|M|L}}]
76
+ - Fase: {{N}} — {{Nome fase de entrega}}
77
+ - Repo: `{{repo_name}}`
78
+ - Arquivos: `{{caminho/arquivo.ext}}`
79
+ - SDD: {{§N seção específica}}
80
+ - Depende: {{ID ou —}}
81
+
82
+ - [ ] **{{PREFIXO}}-002**: {{Título descritivo}} [{{S|M|L}}]
83
+ - Fase: {{N}} — {{Nome fase de entrega}}
84
+ - Repo: `{{repo_name}}`
85
+ - Arquivos: `{{caminho/arquivo1.ext}}`, `{{caminho/arquivo2.ext}}`
86
+ - SDD: {{§N.M subseção}}
87
+ - Depende: {{PREFIXO}}-001
88
+
89
+ ---
90
+
91
+ ## Fase 2 — {{FASE_NOME}} [{{PRIORIDADE}}]
92
+
93
+ > {{FASE_CONTEXTO}}
94
+
95
+ - [ ] **{{PREFIXO}}-003**: {{Título}} [{{S|M|L}}]
96
+ - Fase: {{N}} — {{Nome fase de entrega}}
97
+ - Repo: `{{repo_name}}`
98
+ - Arquivos: `{{caminho/}}`
99
+ - SDD: {{§N}}
100
+ - Depende: {{PREFIXO}}-001, {{OUTRA_AREA}}-001
101
+
102
+ <!-- Repetir fases conforme necessário -->
103
+
104
+ ---
105
+
106
+ ## Regras desta área
107
+
108
+ <!-- Extraídas do SDD e docs/ — específicas para esta área -->
109
+ 1. {{Regra 1}}
110
+ 2. {{Regra 2}}
111
+
112
+ ---
113
+
114
+ > **Legenda tamanho**: S = < 30min · M = 30min-2h · L = 2h+
115
+ > **Legenda prioridade**: P1 = bloqueia outras áreas · P2 = importante · P3 = nice-to-have
@@ -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.
@@ -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
- | | | | |