spec-first-copilot 0.2.0 → 0.4.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 (38) hide show
  1. package/README.md +148 -148
  2. package/bin/cli.js +52 -52
  3. package/lib/init.js +89 -93
  4. package/package.json +24 -23
  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 +51 -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 +175 -176
  14. package/templates/.github/instructions/docs.instructions.md +123 -123
  15. package/templates/.github/instructions/sensitive-files.instructions.md +32 -32
  16. package/templates/.github/skills/sf-design/SKILL.md +181 -181
  17. package/templates/.github/skills/sf-dev/SKILL.md +349 -326
  18. package/templates/.github/skills/sf-extract/SKILL.md +284 -284
  19. package/templates/.github/skills/sf-feature/SKILL.md +130 -130
  20. package/templates/.github/skills/sf-merge-delta/SKILL.md +142 -142
  21. package/templates/.github/skills/sf-plan/SKILL.md +178 -178
  22. package/templates/.github/skills/{sf-pausar → sf-session-finish}/SKILL.md +120 -120
  23. package/templates/.github/skills/sf-setup-projeto/SKILL.md +123 -123
  24. package/templates/docs/Desenvolvimento/rules.md +229 -229
  25. package/templates/docs/_templates/estrutura/ADRs.template.md +91 -91
  26. package/templates/docs/_templates/estrutura/API.template.md +144 -144
  27. package/templates/docs/_templates/estrutura/Arquitetura.template.md +82 -82
  28. package/templates/docs/_templates/estrutura/Infraestrutura.template.md +104 -104
  29. package/templates/docs/_templates/estrutura/Modelo_Dados.template.md +99 -99
  30. package/templates/docs/_templates/estrutura/Seguranca.template.md +138 -138
  31. package/templates/docs/_templates/estrutura/Stack.template.md +78 -78
  32. package/templates/docs/_templates/estrutura/Visao.template.md +82 -82
  33. package/templates/docs/_templates/feature/Progresso.template.md +136 -136
  34. package/templates/docs/_templates/feature/backlog-extraido.template.md +154 -154
  35. package/templates/docs/_templates/feature/context.template.md +42 -42
  36. package/templates/docs/_templates/feature/extract-log.template.md +38 -38
  37. package/templates/docs/_templates/feature/projetos.template.yaml +73 -73
  38. package/templates/docs/_templates/global/progresso_global.template.md +57 -57
@@ -1,99 +1,99 @@
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
- | | | | |
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
+ | | | | |
@@ -1,138 +1,138 @@
1
- # Segurança
2
-
3
- > Autenticação, autorização, CORS, rate limiting, LGPD, auditoria e proteção de dados.
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 §7.
13
- ATUALIZAÇÃO: /merge-delta quando features adicionam permissões, dados pessoais ou políticas.
14
-
15
- COMO GERAR:
16
- 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
21
-
22
- REGRAS:
23
- - Matriz de permissões é DINÂMICA — cresce a cada feature (via merge-delta)
24
- - Dados pessoais da LGPD precisam de base legal ESPECÍFICA
25
- - Nunca armazenar senhas em texto plano (hash obrigatório)
26
- - Secrets nunca no código — sempre variáveis de ambiente
27
- - Rate limiting obrigatório em endpoints públicos (login, registro)
28
- - Auditoria obrigatória para operações destrutivas (delete, update de dados sensíveis)
29
-
30
- =============================================================================
31
- -->
32
-
33
- ## Autenticação
34
-
35
- | Aspecto | Implementação |
36
- |---------|--------------|
37
- | Método | <!-- JWT? Session? OAuth2? --> |
38
- | Expiração access token | <!-- Ex: 15min --> |
39
- | Refresh token | <!-- Existe? Expiração? Rotação? --> |
40
- | Hash de senha | <!-- bcrypt rounds? argon2? --> |
41
- | Header | <!-- Authorization: Bearer {token} --> |
42
- | Armazenamento (client) | <!-- httpOnly cookie? localStorage? --> |
43
-
44
- ### Fluxo de autenticação
45
-
46
- ```
47
- <!-- Descrever o fluxo: login → token → refresh → logout -->
48
- ```
49
-
50
- ## Autorização
51
-
52
- ### Modelo
53
-
54
- | Aspecto | Decisão |
55
- |---------|---------|
56
- | Tipo | <!-- RBAC / ABAC / RBAC + ABAC --> |
57
- | Onde é verificado | <!-- Middleware? Decorator? Service? --> |
58
- | Granularidade | <!-- Por rota? Por recurso? Por campo? --> |
59
-
60
- ### Papéis
61
-
62
- | Papel | Descrição | Herda de |
63
- |-------|-----------|----------|
64
- | | | <!-- Hierarquia: admin herda de user? --> |
65
-
66
- ### Matriz de Permissões
67
-
68
- > Atualizada a cada feature via /merge-delta.
69
-
70
- | Recurso | Ação | {{role_1}} | {{role_2}} | {{role_N}} |
71
- |---------|------|------------|------------|------------|
72
- | | criar | | | |
73
- | | ler | | | |
74
- | | editar | | | |
75
- | | deletar | | | |
76
-
77
- ## CORS
78
-
79
- | Aspecto | Configuração |
80
- |---------|-------------|
81
- | Allowed Origins | <!-- Configurável por ambiente --> |
82
- | Allowed Methods | `GET, POST, PUT, PATCH, DELETE` |
83
- | Allowed Headers | `Authorization, Content-Type` |
84
- | Credentials | <!-- true/false --> |
85
- | Max Age | <!-- Preflight cache em segundos --> |
86
-
87
- ## Rate Limiting
88
-
89
- | Categoria | Limite | Janela | Resposta |
90
- |-----------|--------|--------|----------|
91
- | Login/Registro | <!-- Ex: 5 req --> | <!-- Ex: 15min --> | 429 + Retry-After |
92
- | API autenticada | <!-- Ex: 100 req --> | <!-- Ex: 1min --> | 429 + Retry-After |
93
- | API pública | <!-- Ex: 30 req --> | <!-- Ex: 1min --> | 429 + Retry-After |
94
- | Upload | <!-- Ex: 10 req --> | <!-- Ex: 1h --> | 429 + Retry-After |
95
-
96
- ## LGPD / Privacidade
97
-
98
- ### Dados pessoais coletados
99
-
100
- | Dado | Base legal | Finalidade | Retenção | Criptografado? |
101
- |------|-----------|------------|----------|----------------|
102
- | | <!-- Consentimento / Contrato / Legítimo interesse / Obrigação legal --> | | | |
103
-
104
- ### Direitos do titular
105
-
106
- | Direito | Implementação | Endpoint/Fluxo |
107
- |---------|--------------|----------------|
108
- | Acesso aos dados | | <!-- Como o usuário acessa? --> |
109
- | Correção | | |
110
- | Exclusão (right to be forgotten) | | <!-- Soft delete? Hard delete? Anonimização? --> |
111
- | Portabilidade | | <!-- Formato de exportação? --> |
112
- | Revogação de consentimento | | |
113
-
114
- ## Auditoria
115
-
116
- | O que é logado | Quando | Onde armazena | Retenção |
117
- |----------------|--------|---------------|----------|
118
- | Login/Logout | sempre | | |
119
- | Alteração de dados sensíveis | sempre | | |
120
- | Operações destrutivas (DELETE) | sempre | | |
121
- | Falhas de autenticação | sempre | | |
122
- | Mudanças de permissão | sempre | | |
123
-
124
- ## Proteção de Dados em Trânsito e Repouso
125
-
126
- | Aspecto | Implementação |
127
- |---------|--------------|
128
- | TLS | <!-- Versão mínima? --> |
129
- | Dados sensíveis em repouso | <!-- Criptografia? Quais campos? --> |
130
- | Backup | <!-- Criptografado? Frequência? --> |
131
-
132
- ---
133
-
134
- ## Changelog
135
-
136
- | Data | Feature | Tipo | Descrição |
137
- |------|---------|------|-----------|
138
- | | | | |
1
+ # Segurança
2
+
3
+ > Autenticação, autorização, CORS, rate limiting, LGPD, auditoria e proteção de dados.
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 §7.
13
+ ATUALIZAÇÃO: /merge-delta quando features adicionam permissões, dados pessoais ou políticas.
14
+
15
+ COMO GERAR:
16
+ 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
21
+
22
+ REGRAS:
23
+ - Matriz de permissões é DINÂMICA — cresce a cada feature (via merge-delta)
24
+ - Dados pessoais da LGPD precisam de base legal ESPECÍFICA
25
+ - Nunca armazenar senhas em texto plano (hash obrigatório)
26
+ - Secrets nunca no código — sempre variáveis de ambiente
27
+ - Rate limiting obrigatório em endpoints públicos (login, registro)
28
+ - Auditoria obrigatória para operações destrutivas (delete, update de dados sensíveis)
29
+
30
+ =============================================================================
31
+ -->
32
+
33
+ ## Autenticação
34
+
35
+ | Aspecto | Implementação |
36
+ |---------|--------------|
37
+ | Método | <!-- JWT? Session? OAuth2? --> |
38
+ | Expiração access token | <!-- Ex: 15min --> |
39
+ | Refresh token | <!-- Existe? Expiração? Rotação? --> |
40
+ | Hash de senha | <!-- bcrypt rounds? argon2? --> |
41
+ | Header | <!-- Authorization: Bearer {token} --> |
42
+ | Armazenamento (client) | <!-- httpOnly cookie? localStorage? --> |
43
+
44
+ ### Fluxo de autenticação
45
+
46
+ ```
47
+ <!-- Descrever o fluxo: login → token → refresh → logout -->
48
+ ```
49
+
50
+ ## Autorização
51
+
52
+ ### Modelo
53
+
54
+ | Aspecto | Decisão |
55
+ |---------|---------|
56
+ | Tipo | <!-- RBAC / ABAC / RBAC + ABAC --> |
57
+ | Onde é verificado | <!-- Middleware? Decorator? Service? --> |
58
+ | Granularidade | <!-- Por rota? Por recurso? Por campo? --> |
59
+
60
+ ### Papéis
61
+
62
+ | Papel | Descrição | Herda de |
63
+ |-------|-----------|----------|
64
+ | | | <!-- Hierarquia: admin herda de user? --> |
65
+
66
+ ### Matriz de Permissões
67
+
68
+ > Atualizada a cada feature via /merge-delta.
69
+
70
+ | Recurso | Ação | {{role_1}} | {{role_2}} | {{role_N}} |
71
+ |---------|------|------------|------------|------------|
72
+ | | criar | | | |
73
+ | | ler | | | |
74
+ | | editar | | | |
75
+ | | deletar | | | |
76
+
77
+ ## CORS
78
+
79
+ | Aspecto | Configuração |
80
+ |---------|-------------|
81
+ | Allowed Origins | <!-- Configurável por ambiente --> |
82
+ | Allowed Methods | `GET, POST, PUT, PATCH, DELETE` |
83
+ | Allowed Headers | `Authorization, Content-Type` |
84
+ | Credentials | <!-- true/false --> |
85
+ | Max Age | <!-- Preflight cache em segundos --> |
86
+
87
+ ## Rate Limiting
88
+
89
+ | Categoria | Limite | Janela | Resposta |
90
+ |-----------|--------|--------|----------|
91
+ | Login/Registro | <!-- Ex: 5 req --> | <!-- Ex: 15min --> | 429 + Retry-After |
92
+ | API autenticada | <!-- Ex: 100 req --> | <!-- Ex: 1min --> | 429 + Retry-After |
93
+ | API pública | <!-- Ex: 30 req --> | <!-- Ex: 1min --> | 429 + Retry-After |
94
+ | Upload | <!-- Ex: 10 req --> | <!-- Ex: 1h --> | 429 + Retry-After |
95
+
96
+ ## LGPD / Privacidade
97
+
98
+ ### Dados pessoais coletados
99
+
100
+ | Dado | Base legal | Finalidade | Retenção | Criptografado? |
101
+ |------|-----------|------------|----------|----------------|
102
+ | | <!-- Consentimento / Contrato / Legítimo interesse / Obrigação legal --> | | | |
103
+
104
+ ### Direitos do titular
105
+
106
+ | Direito | Implementação | Endpoint/Fluxo |
107
+ |---------|--------------|----------------|
108
+ | Acesso aos dados | | <!-- Como o usuário acessa? --> |
109
+ | Correção | | |
110
+ | Exclusão (right to be forgotten) | | <!-- Soft delete? Hard delete? Anonimização? --> |
111
+ | Portabilidade | | <!-- Formato de exportação? --> |
112
+ | Revogação de consentimento | | |
113
+
114
+ ## Auditoria
115
+
116
+ | O que é logado | Quando | Onde armazena | Retenção |
117
+ |----------------|--------|---------------|----------|
118
+ | Login/Logout | sempre | | |
119
+ | Alteração de dados sensíveis | sempre | | |
120
+ | Operações destrutivas (DELETE) | sempre | | |
121
+ | Falhas de autenticação | sempre | | |
122
+ | Mudanças de permissão | sempre | | |
123
+
124
+ ## Proteção de Dados em Trânsito e Repouso
125
+
126
+ | Aspecto | Implementação |
127
+ |---------|--------------|
128
+ | TLS | <!-- Versão mínima? --> |
129
+ | Dados sensíveis em repouso | <!-- Criptografia? Quais campos? --> |
130
+ | Backup | <!-- Criptografado? Frequência? --> |
131
+
132
+ ---
133
+
134
+ ## Changelog
135
+
136
+ | Data | Feature | Tipo | Descrição |
137
+ |------|---------|------|-----------|
138
+ | | | | |
@@ -1,78 +1,78 @@
1
- # Stack Tecnológica
2
-
3
- > Tecnologias escolhidas, versões fixadas, e alternativas descartadas com justificativa.
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 §2.
13
- ATUALIZAÇÃO: /merge-delta quando features introduzem novas tecnologias ou mudanças de stack (raro — deve gerar ADR).
14
-
15
- COMO GERAR:
16
- 1. Ler TRD §2 (Stack e Tecnologias) — todas decisões de tech
17
- 2. Preencher TODAS as camadas, mesmo que "a definir"
18
- 3. Para cada tecnologia: versão EXATA (não "latest")
19
- 4. Justificativa deve ser técnica, não "é popular"
20
- 5. Alternativas descartadas: documentar POR QUE foram rejeitadas (evita rediscussão)
21
-
22
- REGRAS:
23
- - Versões devem ser fixadas (ex: "18.3.1", não "^18.0.0")
24
- - Cada biblioteca/pacote precisa de justificativa (evita bloat)
25
- - Alternativas descartadas previnem que o time rediscuta decisões já tomadas
26
- - Mudanças de stack DEVEM gerar ADR em ADRs.md
27
- - Camadas são dinâmicas — adicionar conforme necessidade (mobile, infra, etc.)
28
-
29
- =============================================================================
30
- -->
31
-
32
- ## Stack Principal
33
-
34
- | Camada | Tecnologia | Versão | Justificativa |
35
- |--------|-----------|--------|---------------|
36
- | Frontend | | | |
37
- | Backend | | | |
38
- | Banco de Dados | | | |
39
- | ORM/Query Builder | | | |
40
- | Autenticação | | | |
41
- | Testes | | | |
42
- | CI/CD | | | |
43
-
44
- <!-- Adicionar camadas conforme necessidade: Mobile, Cache, Fila, Monitoramento, etc. -->
45
-
46
- ## Bibliotecas e Dependências
47
-
48
- <!-- Repetir seção para cada camada que tenha dependências relevantes -->
49
-
50
- ### {{Camada}}
51
-
52
- | Pacote | Versão | Para quê | Alternativa descartada |
53
- |--------|--------|----------|----------------------|
54
- | | | | |
55
-
56
- ## Alternativas Descartadas
57
-
58
- > Decisões já tomadas. Se alguém perguntar "por que não usamos X?", a resposta está aqui.
59
-
60
- | Tecnologia escolhida | Alternativa considerada | Por que descartamos | Ref ADR |
61
- |----------------------|------------------------|---------------------|---------|
62
- | | | | |
63
-
64
- ## Convenções de Versionamento
65
-
66
- | Aspecto | Convenção |
67
- |---------|-----------|
68
- | Versionamento | <!-- Semver? Pinned? --> |
69
- | Lock files | <!-- package-lock.json? yarn.lock? --> |
70
- | Atualização | <!-- Dependabot? Manual? Periodicidade? --> |
71
-
72
- ---
73
-
74
- ## Changelog
75
-
76
- | Data | Feature | Tipo | Descrição |
77
- |------|---------|------|-----------|
78
- | | | | |
1
+ # Stack Tecnológica
2
+
3
+ > Tecnologias escolhidas, versões fixadas, e alternativas descartadas com justificativa.
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 §2.
13
+ ATUALIZAÇÃO: /merge-delta quando features introduzem novas tecnologias ou mudanças de stack (raro — deve gerar ADR).
14
+
15
+ COMO GERAR:
16
+ 1. Ler TRD §2 (Stack e Tecnologias) — todas decisões de tech
17
+ 2. Preencher TODAS as camadas, mesmo que "a definir"
18
+ 3. Para cada tecnologia: versão EXATA (não "latest")
19
+ 4. Justificativa deve ser técnica, não "é popular"
20
+ 5. Alternativas descartadas: documentar POR QUE foram rejeitadas (evita rediscussão)
21
+
22
+ REGRAS:
23
+ - Versões devem ser fixadas (ex: "18.3.1", não "^18.0.0")
24
+ - Cada biblioteca/pacote precisa de justificativa (evita bloat)
25
+ - Alternativas descartadas previnem que o time rediscuta decisões já tomadas
26
+ - Mudanças de stack DEVEM gerar ADR em ADRs.md
27
+ - Camadas são dinâmicas — adicionar conforme necessidade (mobile, infra, etc.)
28
+
29
+ =============================================================================
30
+ -->
31
+
32
+ ## Stack Principal
33
+
34
+ | Camada | Tecnologia | Versão | Justificativa |
35
+ |--------|-----------|--------|---------------|
36
+ | Frontend | | | |
37
+ | Backend | | | |
38
+ | Banco de Dados | | | |
39
+ | ORM/Query Builder | | | |
40
+ | Autenticação | | | |
41
+ | Testes | | | |
42
+ | CI/CD | | | |
43
+
44
+ <!-- Adicionar camadas conforme necessidade: Mobile, Cache, Fila, Monitoramento, etc. -->
45
+
46
+ ## Bibliotecas e Dependências
47
+
48
+ <!-- Repetir seção para cada camada que tenha dependências relevantes -->
49
+
50
+ ### {{Camada}}
51
+
52
+ | Pacote | Versão | Para quê | Alternativa descartada |
53
+ |--------|--------|----------|----------------------|
54
+ | | | | |
55
+
56
+ ## Alternativas Descartadas
57
+
58
+ > Decisões já tomadas. Se alguém perguntar "por que não usamos X?", a resposta está aqui.
59
+
60
+ | Tecnologia escolhida | Alternativa considerada | Por que descartamos | Ref ADR |
61
+ |----------------------|------------------------|---------------------|---------|
62
+ | | | | |
63
+
64
+ ## Convenções de Versionamento
65
+
66
+ | Aspecto | Convenção |
67
+ |---------|-----------|
68
+ | Versionamento | <!-- Semver? Pinned? --> |
69
+ | Lock files | <!-- package-lock.json? yarn.lock? --> |
70
+ | Atualização | <!-- Dependabot? Manual? Periodicidade? --> |
71
+
72
+ ---
73
+
74
+ ## Changelog
75
+
76
+ | Data | Feature | Tipo | Descrição |
77
+ |------|---------|------|-----------|
78
+ | | | | |