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.
- package/README.md +148 -148
- package/bin/cli.js +52 -52
- package/lib/init.js +89 -93
- package/package.json +24 -23
- 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 +51 -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 +175 -176
- package/templates/.github/instructions/docs.instructions.md +123 -123
- package/templates/.github/instructions/sensitive-files.instructions.md +32 -32
- package/templates/.github/skills/sf-design/SKILL.md +181 -181
- package/templates/.github/skills/sf-dev/SKILL.md +349 -326
- 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 +142 -142
- package/templates/.github/skills/sf-plan/SKILL.md +178 -178
- package/templates/.github/skills/{sf-pausar → sf-session-finish}/SKILL.md +120 -120
- package/templates/.github/skills/sf-setup-projeto/SKILL.md +123 -123
- package/templates/docs/Desenvolvimento/rules.md +229 -229
- package/templates/docs/_templates/estrutura/ADRs.template.md +91 -91
- package/templates/docs/_templates/estrutura/API.template.md +144 -144
- package/templates/docs/_templates/estrutura/Arquitetura.template.md +82 -82
- package/templates/docs/_templates/estrutura/Infraestrutura.template.md +104 -104
- package/templates/docs/_templates/estrutura/Modelo_Dados.template.md +99 -99
- package/templates/docs/_templates/estrutura/Seguranca.template.md +138 -138
- package/templates/docs/_templates/estrutura/Stack.template.md +78 -78
- package/templates/docs/_templates/estrutura/Visao.template.md +82 -82
- package/templates/docs/_templates/feature/Progresso.template.md +136 -136
- package/templates/docs/_templates/feature/backlog-extraido.template.md +154 -154
- package/templates/docs/_templates/feature/context.template.md +42 -42
- package/templates/docs/_templates/feature/extract-log.template.md +38 -38
- package/templates/docs/_templates/feature/projetos.template.yaml +73 -73
- 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 |
|