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,32 +1,32 @@
1
- # Instruções para Arquivos Sensíveis
2
-
3
- > Regras especiais para arquivos que requerem cuidado extra.
4
-
5
- ## Arquivos que NUNCA devem ser modificados pelo agente
6
-
7
- - `docs/PM/**/*` — Insumos brutos do usuário. Somente leitura.
8
- - `.env`, `.env.*` — Variáveis de ambiente com secrets.
9
- - `docs/Estrutura/ADRs.md` — ADRs aceitas são imutáveis (apenas adicionar novas).
10
-
11
- ## Arquivos que requerem aprovação antes de modificar
12
-
13
- - `docs/Estrutura/*` — Documentação global. Só alterar via /merge-delta após /dev.
14
- - `docs/Desenvolvimento/rules.md` — Regras de desenvolvimento. Alteração deve ser explícita.
15
- - `.github/copilot-instructions.md` — Meta-regras. Alteração requer aprovação.
16
- - `.github/skills/*` — Skills do workflow. Alteração requer aprovação.
17
- - `.github/agents/*` — Perfis de agentes. Alteração requer aprovação.
18
-
19
- ## Arquivos com formato rígido (gerados por skills)
20
-
21
- - `docs/Desenvolvimento/*/.context.md` — YAML frontmatter, apenas skills atualizam.
22
- - `docs/Desenvolvimento/*/.extract-log.md` — Append-only, hashes obrigatórios.
23
- - `docs/Desenvolvimento/*/PRD.md` ou `TRD.md` — Seguir template exato.
24
- - `docs/Desenvolvimento/*/sdd.md` — Seguir template, todas as 11 seções + rastreabilidade.
25
- - `docs/Desenvolvimento/*/*_tasks.md` — IDs sequenciais, campos obrigatórios.
26
- - `docs/Desenvolvimento/*/Progresso.md` — Tabelas com formato fixo.
27
-
28
- ## Arquivos que nunca devem conter secrets
29
-
30
- - Qualquer arquivo `.md` em docs/
31
- - `docker-compose.yml` — usar variáveis de ambiente, não valores diretos
32
- - Código fonte — usar `appsettings.json` + environment variables, não hardcoded
1
+ # Instruções para Arquivos Sensíveis
2
+
3
+ > Regras especiais para arquivos que requerem cuidado extra.
4
+
5
+ ## Arquivos que NUNCA devem ser modificados pelo agente
6
+
7
+ - `docs/PM/**/*` — Insumos brutos do usuário. Somente leitura.
8
+ - `.env`, `.env.*` — Variáveis de ambiente com secrets.
9
+ - `docs/Estrutura/ADRs.md` — ADRs aceitas são imutáveis (apenas adicionar novas).
10
+
11
+ ## Arquivos que requerem aprovação antes de modificar
12
+
13
+ - `docs/Estrutura/*` — Documentação global. Só alterar via /merge-delta após /dev.
14
+ - `docs/Desenvolvimento/rules.md` — Regras de desenvolvimento. Alteração deve ser explícita.
15
+ - `.github/copilot-instructions.md` — Meta-regras. Alteração requer aprovação.
16
+ - `.github/skills/*` — Skills do workflow. Alteração requer aprovação.
17
+ - `.github/agents/*` — Perfis de agentes. Alteração requer aprovação.
18
+
19
+ ## Arquivos com formato rígido (gerados por skills)
20
+
21
+ - `docs/Desenvolvimento/*/.context.md` — YAML frontmatter, apenas skills atualizam.
22
+ - `docs/Desenvolvimento/*/.extract-log.md` — Append-only, hashes obrigatórios.
23
+ - `docs/Desenvolvimento/*/PRD.md` ou `TRD.md` — Seguir template exato.
24
+ - `docs/Desenvolvimento/*/sdd.md` — Seguir template, todas as 11 seções + rastreabilidade.
25
+ - `docs/Desenvolvimento/*/*_tasks.md` — IDs sequenciais, campos obrigatórios.
26
+ - `docs/Desenvolvimento/*/Progresso.md` — Tabelas com formato fixo.
27
+
28
+ ## Arquivos que nunca devem conter secrets
29
+
30
+ - Qualquer arquivo `.md` em docs/
31
+ - `docker-compose.yml` — usar variáveis de ambiente, não valores diretos
32
+ - Código fonte — usar `appsettings.json` + environment variables, não hardcoded
@@ -1,181 +1,181 @@
1
- ---
2
- name: sf-design
3
- description: |
4
- Design técnico. Gera SDD a partir do PRD/TRD aprovado.
5
- Trigger: /sf-design
6
- author: GustavoMaritan
7
- version: 1.0.0
8
- date: 2026-04-08
9
- ---
10
-
11
- # Skill: /sf-design
12
-
13
- > Skill atômica de design técnico. Lê PRD/TRD aprovado e gera SDD.
14
- > Responsável pelo checkpoint de aprovação do documento de extração.
15
-
16
- ## Tipo
17
- Atômica — Single-agent
18
-
19
- ## Uso
20
- ```
21
- /sf-design <nome>
22
- ```
23
- Exemplo: `/sf-design feat_cadastro_cliente`
24
-
25
- ---
26
-
27
- ## Agente
28
-
29
- | Campo | Valor |
30
- |-------|-------|
31
- | **Papel** | Arquiteto de software — transforma requisitos aprovados em especificação técnica implementável |
32
- | **Modelo** | Opus |
33
- | **Comportamento** | Técnico e preciso. Gera contratos completos (JSON schemas, SQL DDL, componentes com estados). Toda decisão tem justificativa. Se o PRD/TRD tem gaps, não inventa — para e reporta. |
34
-
35
- ---
36
-
37
- ## Pré-condições
38
-
39
- | # | Validação | Se falhar |
40
- |---|-----------|-----------|
41
- | 1 | Argumento `nome` foi informado | Parar → "Informe o nome. Ex: /sf-design feat_cadastro_cliente" |
42
- | 2 | `docs/Desenvolvimento/{nome}/.context.md` existe | Parar → "Execute /sf-feature {nome} ou /sf-setup-projeto primeiro" |
43
- | 3 | Status é `extract_done` ou `approved` | Se anterior → "Execute /sf-extract primeiro". Se posterior → "SDD já foi gerado (status: {status})" |
44
- | 4 | PRD.md ou TRD.md existe na pasta | Parar → "Documento de extração não encontrado. Execute /sf-extract {nome}" |
45
- | 5 | `docs/Estrutura/` está populado (para features) | Parar → "Execute /sf-setup-projeto primeiro" (não aplica para tipo=setup) |
46
-
47
- ## Passos
48
-
49
- ### 1. Checkpoint de aprovação
50
- Se status é `extract_done` (não `approved`):
51
- ```
52
- Pergunta ao usuário:
53
- "O {PRD/TRD} em docs/Desenvolvimento/{nome}/ foi revisado e está aprovado? (s/n)"
54
-
55
- Se SIM → atualizar .context.md status: approved → continuar
56
- Se NÃO → parar → "Revise o documento e chame /sf-design {nome} quando estiver pronto"
57
- ```
58
-
59
- ### 2. Verificar ambiguidades
60
- Ler seção de ambiguidades do PRD (§13) ou TRD (§9):
61
- - Se há perguntas sem resposta → **PARAR**
62
- - Listar as ambiguidades pendentes
63
- - Instruir: "Responda as ambiguidades no documento e chame /sf-design {nome} novamente"
64
-
65
- ### 3. Gerar docs/Estrutura/ (APENAS para setup)
66
-
67
- > Este passo só executa quando tipo=setup. Para features, docs/Estrutura/ já existe.
68
-
69
- Ler TRD e gerar os 8 docs de `docs/Estrutura/` usando os templates correspondentes:
70
-
71
- | TRD Seção | Doc gerado | Template |
72
- |-----------|-----------|---------|
73
- | §1 Visão + §8 Módulos | Visao.md | `_templates/estrutura/Visao.template.md` |
74
- | §2 Stack | Stack.md | `_templates/estrutura/Stack.template.md` |
75
- | §3 Arquitetura | Arquitetura.md | `_templates/estrutura/Arquitetura.template.md` |
76
- | §4 Modelo de Dados | Modelo_Dados.md | `_templates/estrutura/Modelo_Dados.template.md` |
77
- | §5 API | API.md | `_templates/estrutura/API.template.md` |
78
- | §6 Infra | Infraestrutura.md | `_templates/estrutura/Infraestrutura.template.md` |
79
- | §7 Segurança | Seguranca.md | `_templates/estrutura/Seguranca.template.md` |
80
- | SDD §2 (após gerar) | ADRs.md | `_templates/estrutura/ADRs.template.md` |
81
-
82
- Regras:
83
- - Ler template → preencher TODAS seções com dados do TRD
84
- - Remover bloco `<!-- INSTRUÇÕES -->` do doc gerado
85
- - Changelog inicia vazio (primeira geração)
86
- - Se TRD não tem dados pra uma seção → marcar "A definir"
87
- - ADRs.md é gerado APÓS o SDD (usa §2 Decisões de Design)
88
-
89
- ### 3b. Gerar `projetos.yaml` (APENAS para setup)
90
-
91
- > Mapeia a arquitetura do TRD §3 para repositórios independentes.
92
- > Cada serviço = 1 repo. Os repos serão criados/clonados pelo /sf-dev (INFRA-001).
93
-
94
- Ler TRD §3 (Arquitetura) e §6 (Infra) para identificar os serviços:
95
-
96
- 1. Identificar serviços separados (api, worker, web, mobile, etc.)
97
- 2. Perguntar ao usuário:
98
- - Organização/usuário do GitHub (ex: `empresa`)
99
- - Nome base do projeto (ex: `meu-projeto`)
100
- - Se algum repo já existe (para clonar em vez de criar)
101
- 3. Gerar `projetos.yaml` na raiz usando template `projetos.template.yaml`
102
- 4. Mapear áreas de task para repos:
103
- - BACK → api (ou worker, se separado)
104
- - BANCO → api (se usa EF migrations) ou repo próprio
105
- - FRONT → web
106
- - MOBILE → mobile
107
- - INFRA → todos (cross-repo)
108
- 5. Validar: cada área DEVE mapear para exatamente 1 repo
109
-
110
- **Regra**: Se o TRD indica API e Worker como serviços separados, DEVEM ser repos separados.
111
- Nunca juntar serviços que o TRD definiu como distintos.
112
-
113
- ### 4. Carregar contexto
114
- - Ler PRD.md ou TRD.md completo (conforme `.context.md`)
115
- - Ler `docs/Estrutura/` completo (agora já populado, mesmo no setup)
116
- - Ler `docs/Desenvolvimento/rules.md` (convenções de desenvolvimento)
117
- - Carregar template `docs/_templates/feature/sdd.template.md`
118
-
119
- ### 5. Gerar SDD
120
- Produzir `sdd.md` com as 11 seções obrigatórias:
121
-
122
- | Seção | Conteúdo | Fonte principal |
123
- |-------|----------|-----------------|
124
- | §1 Visão geral | O que, escopo, premissas | PRD §1 / TRD §1 |
125
- | §2 Decisões de design | Mini-ADRs com justificativa | Arquitetura + análise do agente |
126
- | §3 Modelo de dados | Entidades com tipos exatos, constraints, migrations | PRD §3 + Modelo_Dados.md |
127
- | §4 Regras e validações | Ref PRD §5 RN-NNN, mensagens de erro | PRD §5 + §6 |
128
- | §5 Endpoints API | Contratos completos: request/response JSON, status codes | PRD §4 + API.md |
129
- | §6 Componentes e telas | Estados (loading/empty/error), componentes, comportamentos | PRD §7 |
130
- | §7 Fluxos de dados | Sequências usuário→front→back, caminhos de erro | PRD §4 + §9 |
131
- | §8 Integrações externas | Protocolo, timeout, retry, fallback | PRD §8 |
132
- | §9 Estratégia de testes | Framework, estrutura, CAs mapeados a testes | PRD §4 + §10 |
133
- | §10 Fora do escopo | Lista explícita do que NÃO será feito | PRD §12 |
134
- | §11 Delta Specs | ADDED/MODIFIED/REMOVED para merge em docs/Estrutura/ | Análise do agente |
135
-
136
- **Regras de geração:**
137
- 1. SDD deve ser **auto-contido** — o coder lê APENAS o SDD + task, nunca PRD/PM
138
- 2. Toda regra/entidade referencia seção do PRD/TRD (rastreabilidade)
139
- 3. Seções não aplicáveis marcadas `N/A — [motivo]` (ex: §6 em setup sem UI)
140
- 4. Contratos de API com JSON schema completo (request, response, erros)
141
- 5. Modelo de dados com tipos exatos, não genéricos (varchar(255), não "string")
142
- 6. Critérios de aceite testáveis — Given/When/Then, não frases vagas
143
- 7. Delta Specs sempre preenchida, mesmo que vazia (ADDED: nenhum)
144
-
145
- ### 6. Gerar ADRs.md (setup — complemento do passo 3)
146
- Após gerar SDD §2, criar ADRs.md com as decisões iniciais de arquitetura.
147
-
148
- ### 7. Atualizar `.context.md`
149
- ```yaml
150
- status: "design_done"
151
- ultima_skill: "/sf-design"
152
- atualizado_em: "{{ISO_DATETIME}}"
153
- ```
154
-
155
- ---
156
-
157
- ## Saídas
158
-
159
- | Arquivo | Descrição |
160
- |---------|-----------|
161
- | `sdd.md` | Especificação técnica completa e auto-contida |
162
- | `projetos.yaml` | (setup) Manifesto de repos — mapeamento serviço → repo → áreas |
163
- | `docs/Estrutura/*.md` | (setup) 8 docs globais preenchidos do TRD |
164
- | `.context.md` | Atualizado: `approved` → `design_done` |
165
-
166
- ## Pós-condições
167
- - SDD é fonte única de verdade para implementação
168
- - Toda informação para implementar está no SDD — nenhuma consulta externa necessária
169
- - Rastreabilidade: SDD → PRD/TRD → insumos
170
-
171
- ## Erros
172
-
173
- | Erro | Ação |
174
- |------|------|
175
- | Nome não informado | Parar, mostrar exemplo |
176
- | Status anterior a extract_done | Parar, sugerir /sf-extract |
177
- | Status posterior a approved | Informar que SDD já foi gerado |
178
- | Ambiguidades pendentes no PRD/TRD | Parar, listar ambiguidades |
179
- | PRD/TRD não encontrado | Parar, sugerir /sf-extract |
180
- | docs/Estrutura/ vazio (em features) | Parar, sugerir /sf-setup-projeto |
181
- | Informação insuficiente no PRD/TRD para gerar seção | NÃO inventar — marcar seção como incompleta, reportar ao usuário |
1
+ ---
2
+ name: sf-design
3
+ description: |
4
+ Design técnico. Gera SDD a partir do PRD/TRD aprovado.
5
+ Trigger: /sf-design
6
+ author: GustavoMaritan
7
+ version: 1.0.0
8
+ date: 2026-04-08
9
+ ---
10
+
11
+ # Skill: /sf-design
12
+
13
+ > Skill atômica de design técnico. Lê PRD/TRD aprovado e gera SDD.
14
+ > Responsável pelo checkpoint de aprovação do documento de extração.
15
+
16
+ ## Tipo
17
+ Atômica — Single-agent
18
+
19
+ ## Uso
20
+ ```
21
+ /sf-design <nome>
22
+ ```
23
+ Exemplo: `/sf-design feat_cadastro_cliente`
24
+
25
+ ---
26
+
27
+ ## Agente
28
+
29
+ | Campo | Valor |
30
+ |-------|-------|
31
+ | **Papel** | Arquiteto de software — transforma requisitos aprovados em especificação técnica implementável |
32
+ | **Modelo** | Opus |
33
+ | **Comportamento** | Técnico e preciso. Gera contratos completos (JSON schemas, SQL DDL, componentes com estados). Toda decisão tem justificativa. Se o PRD/TRD tem gaps, não inventa — para e reporta. |
34
+
35
+ ---
36
+
37
+ ## Pré-condições
38
+
39
+ | # | Validação | Se falhar |
40
+ |---|-----------|-----------|
41
+ | 1 | Argumento `nome` foi informado | Parar → "Informe o nome. Ex: /sf-design feat_cadastro_cliente" |
42
+ | 2 | `docs/Desenvolvimento/{nome}/.context.md` existe | Parar → "Execute /sf-feature {nome} ou /sf-setup-projeto primeiro" |
43
+ | 3 | Status é `extract_done` ou `approved` | Se anterior → "Execute /sf-extract primeiro". Se posterior → "SDD já foi gerado (status: {status})" |
44
+ | 4 | PRD.md ou TRD.md existe na pasta | Parar → "Documento de extração não encontrado. Execute /sf-extract {nome}" |
45
+ | 5 | `docs/Estrutura/` está populado (para features) | Parar → "Execute /sf-setup-projeto primeiro" (não aplica para tipo=setup) |
46
+
47
+ ## Passos
48
+
49
+ ### 1. Checkpoint de aprovação
50
+ Se status é `extract_done` (não `approved`):
51
+ ```
52
+ Pergunta ao usuário:
53
+ "O {PRD/TRD} em docs/Desenvolvimento/{nome}/ foi revisado e está aprovado? (s/n)"
54
+
55
+ Se SIM → atualizar .context.md status: approved → continuar
56
+ Se NÃO → parar → "Revise o documento e chame /sf-design {nome} quando estiver pronto"
57
+ ```
58
+
59
+ ### 2. Verificar ambiguidades
60
+ Ler seção de ambiguidades do PRD (§13) ou TRD (§9):
61
+ - Se há perguntas sem resposta → **PARAR**
62
+ - Listar as ambiguidades pendentes
63
+ - Instruir: "Responda as ambiguidades no documento e chame /sf-design {nome} novamente"
64
+
65
+ ### 3. Gerar docs/Estrutura/ (APENAS para setup)
66
+
67
+ > Este passo só executa quando tipo=setup. Para features, docs/Estrutura/ já existe.
68
+
69
+ Ler TRD e gerar os 8 docs de `docs/Estrutura/` usando os templates correspondentes:
70
+
71
+ | TRD Seção | Doc gerado | Template |
72
+ |-----------|-----------|---------|
73
+ | §1 Visão + §8 Módulos | Visao.md | `_templates/estrutura/Visao.template.md` |
74
+ | §2 Stack | Stack.md | `_templates/estrutura/Stack.template.md` |
75
+ | §3 Arquitetura | Arquitetura.md | `_templates/estrutura/Arquitetura.template.md` |
76
+ | §4 Modelo de Dados | Modelo_Dados.md | `_templates/estrutura/Modelo_Dados.template.md` |
77
+ | §5 API | API.md | `_templates/estrutura/API.template.md` |
78
+ | §6 Infra | Infraestrutura.md | `_templates/estrutura/Infraestrutura.template.md` |
79
+ | §7 Segurança | Seguranca.md | `_templates/estrutura/Seguranca.template.md` |
80
+ | SDD §2 (após gerar) | ADRs.md | `_templates/estrutura/ADRs.template.md` |
81
+
82
+ Regras:
83
+ - Ler template → preencher TODAS seções com dados do TRD
84
+ - Remover bloco `<!-- INSTRUÇÕES -->` do doc gerado
85
+ - Changelog inicia vazio (primeira geração)
86
+ - Se TRD não tem dados pra uma seção → marcar "A definir"
87
+ - ADRs.md é gerado APÓS o SDD (usa §2 Decisões de Design)
88
+
89
+ ### 3b. Gerar `projetos.yaml` (APENAS para setup)
90
+
91
+ > Mapeia a arquitetura do TRD §3 para repositórios independentes.
92
+ > Cada serviço = 1 repo. Os repos serão criados/clonados pelo /sf-dev (INFRA-001).
93
+
94
+ Ler TRD §3 (Arquitetura) e §6 (Infra) para identificar os serviços:
95
+
96
+ 1. Identificar serviços separados (api, worker, web, mobile, etc.)
97
+ 2. Perguntar ao usuário:
98
+ - Organização/usuário do GitHub (ex: `empresa`)
99
+ - Nome base do projeto (ex: `meu-projeto`)
100
+ - Se algum repo já existe (para clonar em vez de criar)
101
+ 3. Gerar `projetos.yaml` na raiz usando template `projetos.template.yaml`
102
+ 4. Mapear áreas de task para repos:
103
+ - BACK → api (ou worker, se separado)
104
+ - BANCO → api (se usa EF migrations) ou repo próprio
105
+ - FRONT → web
106
+ - MOBILE → mobile
107
+ - INFRA → todos (cross-repo)
108
+ 5. Validar: cada área DEVE mapear para exatamente 1 repo
109
+
110
+ **Regra**: Se o TRD indica API e Worker como serviços separados, DEVEM ser repos separados.
111
+ Nunca juntar serviços que o TRD definiu como distintos.
112
+
113
+ ### 4. Carregar contexto
114
+ - Ler PRD.md ou TRD.md completo (conforme `.context.md`)
115
+ - Ler `docs/Estrutura/` completo (agora já populado, mesmo no setup)
116
+ - Ler `docs/Desenvolvimento/rules.md` (convenções de desenvolvimento)
117
+ - Carregar template `docs/_templates/feature/sdd.template.md`
118
+
119
+ ### 5. Gerar SDD
120
+ Produzir `sdd.md` com as 11 seções obrigatórias:
121
+
122
+ | Seção | Conteúdo | Fonte principal |
123
+ |-------|----------|-----------------|
124
+ | §1 Visão geral | O que, escopo, premissas | PRD §1 / TRD §1 |
125
+ | §2 Decisões de design | Mini-ADRs com justificativa | Arquitetura + análise do agente |
126
+ | §3 Modelo de dados | Entidades com tipos exatos, constraints, migrations | PRD §3 + Modelo_Dados.md |
127
+ | §4 Regras e validações | Ref PRD §5 RN-NNN, mensagens de erro | PRD §5 + §6 |
128
+ | §5 Endpoints API | Contratos completos: request/response JSON, status codes | PRD §4 + API.md |
129
+ | §6 Componentes e telas | Estados (loading/empty/error), componentes, comportamentos | PRD §7 |
130
+ | §7 Fluxos de dados | Sequências usuário→front→back, caminhos de erro | PRD §4 + §9 |
131
+ | §8 Integrações externas | Protocolo, timeout, retry, fallback | PRD §8 |
132
+ | §9 Estratégia de testes | Framework, estrutura, CAs mapeados a testes | PRD §4 + §10 |
133
+ | §10 Fora do escopo | Lista explícita do que NÃO será feito | PRD §12 |
134
+ | §11 Delta Specs | ADDED/MODIFIED/REMOVED para merge em docs/Estrutura/ | Análise do agente |
135
+
136
+ **Regras de geração:**
137
+ 1. SDD deve ser **auto-contido** — o coder lê APENAS o SDD + task, nunca PRD/PM
138
+ 2. Toda regra/entidade referencia seção do PRD/TRD (rastreabilidade)
139
+ 3. Seções não aplicáveis marcadas `N/A — [motivo]` (ex: §6 em setup sem UI)
140
+ 4. Contratos de API com JSON schema completo (request, response, erros)
141
+ 5. Modelo de dados com tipos exatos, não genéricos (varchar(255), não "string")
142
+ 6. Critérios de aceite testáveis — Given/When/Then, não frases vagas
143
+ 7. Delta Specs sempre preenchida, mesmo que vazia (ADDED: nenhum)
144
+
145
+ ### 6. Gerar ADRs.md (setup — complemento do passo 3)
146
+ Após gerar SDD §2, criar ADRs.md com as decisões iniciais de arquitetura.
147
+
148
+ ### 7. Atualizar `.context.md`
149
+ ```yaml
150
+ status: "design_done"
151
+ ultima_skill: "/sf-design"
152
+ atualizado_em: "{{ISO_DATETIME}}"
153
+ ```
154
+
155
+ ---
156
+
157
+ ## Saídas
158
+
159
+ | Arquivo | Descrição |
160
+ |---------|-----------|
161
+ | `sdd.md` | Especificação técnica completa e auto-contida |
162
+ | `projetos.yaml` | (setup) Manifesto de repos — mapeamento serviço → repo → áreas |
163
+ | `docs/Estrutura/*.md` | (setup) 8 docs globais preenchidos do TRD |
164
+ | `.context.md` | Atualizado: `approved` → `design_done` |
165
+
166
+ ## Pós-condições
167
+ - SDD é fonte única de verdade para implementação
168
+ - Toda informação para implementar está no SDD — nenhuma consulta externa necessária
169
+ - Rastreabilidade: SDD → PRD/TRD → insumos
170
+
171
+ ## Erros
172
+
173
+ | Erro | Ação |
174
+ |------|------|
175
+ | Nome não informado | Parar, mostrar exemplo |
176
+ | Status anterior a extract_done | Parar, sugerir /sf-extract |
177
+ | Status posterior a approved | Informar que SDD já foi gerado |
178
+ | Ambiguidades pendentes no PRD/TRD | Parar, listar ambiguidades |
179
+ | PRD/TRD não encontrado | Parar, sugerir /sf-extract |
180
+ | docs/Estrutura/ vazio (em features) | Parar, sugerir /sf-setup-projeto |
181
+ | Informação insuficiente no PRD/TRD para gerar seção | NÃO inventar — marcar seção como incompleta, reportar ao usuário |