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.
- package/README.md +162 -148
- package/bin/cli.js +52 -52
- package/lib/init.js +89 -89
- package/package.json +11 -4
- package/templates/.ai/memory/napkin.md +68 -68
- package/templates/.github/agents/backend-coder.md +215 -215
- package/templates/.github/agents/db-coder.md +165 -165
- package/templates/.github/agents/doc-writer.md +48 -51
- package/templates/.github/agents/frontend-coder.md +222 -222
- package/templates/.github/agents/infra-coder.md +341 -341
- package/templates/.github/agents/reviewer.md +99 -99
- package/templates/.github/agents/security-reviewer.md +153 -153
- package/templates/.github/copilot-instructions.md +218 -175
- package/templates/.github/instructions/docs.instructions.md +123 -123
- package/templates/.github/instructions/sensitive-files.instructions.md +32 -32
- package/templates/{docs/Desenvolvimento → .github}/rules.md +229 -229
- package/templates/.github/skills/sf-design/SKILL.md +209 -181
- package/templates/.github/skills/sf-dev/SKILL.md +354 -349
- package/templates/.github/skills/sf-discovery/SKILL.md +405 -405
- package/templates/.github/skills/sf-extract/SKILL.md +284 -284
- package/templates/.github/skills/sf-feature/SKILL.md +130 -130
- package/templates/.github/skills/sf-merge-delta/SKILL.md +145 -142
- package/templates/.github/skills/sf-plan/SKILL.md +180 -178
- package/templates/.github/skills/sf-session-finish/SKILL.md +120 -120
- package/templates/.github/skills/sf-setup-projeto/SKILL.md +123 -123
- package/templates/{docs/_templates/estrutura/API.template.md → .github/templates/estrutura/apiContracts.template.md} +151 -144
- package/templates/.github/templates/estrutura/architecture.template.md +158 -0
- package/templates/{docs/_templates/estrutura/Seguranca.template.md → .github/templates/estrutura/conventions.template.md} +202 -138
- package/templates/{docs/_templates/estrutura/ADRs.template.md → .github/templates/estrutura/decisions.template.md} +99 -91
- package/templates/.github/templates/estrutura/domain.template.md +148 -0
- package/templates/{docs/_templates → .github/templates}/feature/PRD.template.md +256 -256
- package/templates/{docs/_templates → .github/templates}/feature/Progresso.template.md +136 -136
- package/templates/{docs/_templates → .github/templates}/feature/TRD.template.md +204 -200
- package/templates/{docs/_templates → .github/templates}/feature/backlog-extraido.template.md +154 -154
- package/templates/{docs/_templates → .github/templates}/feature/context.template.md +42 -42
- package/templates/{docs/_templates → .github/templates}/feature/extract-log.template.md +38 -38
- package/templates/{docs/_templates → .github/templates}/feature/projetos.template.yaml +73 -73
- package/templates/{docs/_templates → .github/templates}/feature/sdd.template.md +372 -372
- package/templates/{docs/_templates → .github/templates}/global/progresso_global.template.md +57 -57
- package/templates/.github/templates/specs/brief.template.md +47 -0
- package/templates/.github/templates/specs/contracts.template.md +82 -0
- package/templates/.github/templates/specs/scenarios.template.md +79 -0
- package/templates/.github/templates/specs/tasks.template.md +61 -0
- package/templates/docs/_templates/estrutura/Arquitetura.template.md +0 -82
- package/templates/docs/_templates/estrutura/Infraestrutura.template.md +0 -104
- package/templates/docs/_templates/estrutura/Modelo_Dados.template.md +0 -99
- package/templates/docs/_templates/estrutura/Stack.template.md +0 -78
- package/templates/docs/_templates/estrutura/Visao.template.md +0 -82
- package/templates/docs/_templates/feature/tasks.template.md +0 -115
- /package/templates/docs/{Desenvolvimento → specs}/.gitkeep +0 -0
- /package/templates/{docs/Estrutura → workspace/Input}/.gitkeep +0 -0
- /package/templates/{docs/PM → workspace/Input/setup_projeto}/.gitkeep +0 -0
- /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
|
-
| | | | |
|