spec-first-copilot 0.3.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 -89
  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,130 +1,130 @@
1
- ---
2
- name: sf-feature
3
- description: |
4
- Pipeline de feature. Cria contexto PRD, chama /sf-extract, para no checkpoint.
5
- Trigger: /sf-feature
6
- author: GustavoMaritan
7
- version: 1.0.0
8
- date: 2026-04-08
9
- ---
10
-
11
- # Skill: /sf-feature
12
-
13
- > Orquestrador de feature. Cria contexto PRD, chama `/extract` e para no checkpoint de aprovação.
14
-
15
- ## Tipo
16
- Orquestrador (primeira etapa do pipeline de feature)
17
-
18
- ## Uso
19
- ```
20
- /sf-feature <nome>
21
- ```
22
- Exemplo: `/sf-feature feat_cadastro_cliente`
23
-
24
- ### Convenção de nomes
25
- - Features: `feat_nome_descritivo`
26
- - Bugs: `bug_nome_descritivo`
27
- - Tasks técnicas: `task_nome_descritivo`
28
-
29
- ## Pré-condições
30
-
31
- | # | Validação | Se falhar |
32
- |---|-----------|-----------|
33
- | 1 | Argumento `nome` foi informado | Parar → "Informe o nome da feature. Ex: /sf-feature feat_cadastro_cliente" |
34
- | 2 | `docs/PM/{nome}/` existe | Parar → "Crie a pasta docs/PM/{nome}/ e adicione seus insumos" |
35
- | 3 | Pasta contém pelo menos 1 arquivo (ignorar .gitkeep) | Parar → "Adicione insumos na pasta (aceitos: .md, .txt, .sql, .xml, .html, .json, .csv, .png, .jpg, .pdf — qualquer formato)" |
36
- | 4 | `docs/Estrutura/` está populado (setup já executado) | Parar → "Execute /sf-setup-projeto antes de criar features" |
37
- | 5 | `.context.md` não existe ou status é `not_started` | Se existe com status avançado → "Feature já em andamento (status: {status}). Para re-extrair, use /sf-extract {nome}" |
38
-
39
- ## Passos
40
-
41
- ### 1. Carregar contexto do projeto
42
- Ler `docs/Estrutura/` para entender a arquitetura, stack, modelo de dados e convenções existentes. Esse contexto será passado ao `/extract`.
43
-
44
- ### 2. Criar estrutura
45
- ```
46
- docs/Desenvolvimento/{nome}/
47
- ├── .context.md ← criado agora
48
- └── (PRD.md será criado pelo /extract)
49
- ```
50
-
51
- ### 3. Criar `.context.md`
52
- ```yaml
53
- ---
54
- nome: "{nome}"
55
- tipo: "feature"
56
- documento: "PRD"
57
- pm_path: "docs/PM/{nome}/"
58
- status: "not_started"
59
- ultima_skill: "/sf-feature"
60
- atualizado_em: "{{ISO_DATETIME}}"
61
- ---
62
- ```
63
-
64
- ### 4. Sugerir /sf-discovery (RECOMENDADO)
65
-
66
- Antes de extrair, perguntar ao usuário:
67
- ```
68
- 📋 Insumos encontrados em docs/PM/{nome}/.
69
-
70
- Recomendo rodar /sf-discovery antes da extração para:
71
- - Análise profunda dos insumos
72
- - Identificar gaps e contradições
73
- - Validar entendimento com você
74
-
75
- Quer rodar /sf-discovery docs/PM/{nome}/ agora? (s/n)
76
- Se SIM → rodar discovery, salvar discovery.md, depois continuar com extract
77
- Se NÃO → pular direto para /sf-extract
78
- ```
79
-
80
- Se o usuário aceitar:
81
- - Rodar `/sf-discovery docs/PM/{nome}/`
82
- - Aguardar conclusão — discovery.md salvo em `docs/Desenvolvimento/{nome}/`
83
- - Continuar para o passo 5
84
-
85
- ### 5. Chamar `/sf-extract {nome}`
86
- O `/sf-extract` lê os insumos + discovery.md (se existir), gera o PRD e atualiza status para `extract_done`.
87
-
88
- ### 6. CHECKPOINT — Parar e informar o usuário
89
- Mensagem ao usuário:
90
- ```
91
- ✅ PRD gerado em docs/Desenvolvimento/{nome}/PRD.md
92
-
93
- Revise o documento. Quando estiver satisfeito, execute:
94
- /sf-design {nome}
95
-
96
- Se precisar adicionar mais insumos, coloque na pasta docs/PM/{nome}/
97
- e execute:
98
- /sf-extract {nome}
99
- ```
100
-
101
- **O orquestrador encerra aqui.** O restante do pipeline é responsabilidade do usuário chamar as skills atômicas na ordem:
102
- 1. `/sf-design {nome}` (pergunta aprovação → gera SDD)
103
- 2. `/sf-plan {nome}` (gera tasks + Progresso)
104
- 3. `/sf-dev {nome}` (executa tasks)
105
- 4. `/sf-merge-delta {nome}` (aplica Delta Specs em docs/Estrutura/)
106
-
107
- ## Saídas diretas desta skill
108
- - `docs/Desenvolvimento/{nome}/.context.md`
109
- - `docs/Desenvolvimento/{nome}/PRD.md` (via /extract)
110
- - `docs/Desenvolvimento/{nome}/.extract-log.md` (via /extract)
111
-
112
- ## Saídas indiretas (skills subsequentes)
113
- - `sdd.md` (via /design)
114
- - `*_tasks.md` + `Progresso.md` (via /plan)
115
- - `docs/Estrutura/` atualizado (via /sf-merge-delta após /dev)
116
-
117
- ## Erros
118
-
119
- | Erro | Ação |
120
- |------|------|
121
- | Nome não informado | Parar, mostrar exemplo de uso |
122
- | PM/{nome}/ não existe | Parar, instruir criação |
123
- | PM/{nome}/ vazio | Parar, listar formatos aceitos |
124
- | Estrutura/ não populado | Parar, sugerir /sf-setup-projeto |
125
- | Pipeline já iniciado | Mostrar status atual, sugerir /sf-extract para re-extração ou skill correspondente ao status |
126
-
127
- ## Notas
128
- - Diferente do `/sf-setup-projeto`, pode ser executado **múltiplas vezes** (uma por feature)
129
- - O contexto de `docs/Estrutura/` é carregado para que o `/extract` gere um PRD coerente com a arquitetura existente
130
- - Após `/dev`, o `/merge-delta` atualiza `docs/Estrutura/` com as mudanças da feature
1
+ ---
2
+ name: sf-feature
3
+ description: |
4
+ Pipeline de feature. Cria contexto PRD, chama /sf-extract, para no checkpoint.
5
+ Trigger: /sf-feature
6
+ author: GustavoMaritan
7
+ version: 1.0.0
8
+ date: 2026-04-08
9
+ ---
10
+
11
+ # Skill: /sf-feature
12
+
13
+ > Orquestrador de feature. Cria contexto PRD, chama `/extract` e para no checkpoint de aprovação.
14
+
15
+ ## Tipo
16
+ Orquestrador (primeira etapa do pipeline de feature)
17
+
18
+ ## Uso
19
+ ```
20
+ /sf-feature <nome>
21
+ ```
22
+ Exemplo: `/sf-feature feat_cadastro_cliente`
23
+
24
+ ### Convenção de nomes
25
+ - Features: `feat_nome_descritivo`
26
+ - Bugs: `bug_nome_descritivo`
27
+ - Tasks técnicas: `task_nome_descritivo`
28
+
29
+ ## Pré-condições
30
+
31
+ | # | Validação | Se falhar |
32
+ |---|-----------|-----------|
33
+ | 1 | Argumento `nome` foi informado | Parar → "Informe o nome da feature. Ex: /sf-feature feat_cadastro_cliente" |
34
+ | 2 | `docs/PM/{nome}/` existe | Parar → "Crie a pasta docs/PM/{nome}/ e adicione seus insumos" |
35
+ | 3 | Pasta contém pelo menos 1 arquivo (ignorar .gitkeep) | Parar → "Adicione insumos na pasta (aceitos: .md, .txt, .sql, .xml, .html, .json, .csv, .png, .jpg, .pdf — qualquer formato)" |
36
+ | 4 | `docs/Estrutura/` está populado (setup já executado) | Parar → "Execute /sf-setup-projeto antes de criar features" |
37
+ | 5 | `.context.md` não existe ou status é `not_started` | Se existe com status avançado → "Feature já em andamento (status: {status}). Para re-extrair, use /sf-extract {nome}" |
38
+
39
+ ## Passos
40
+
41
+ ### 1. Carregar contexto do projeto
42
+ Ler `docs/Estrutura/` para entender a arquitetura, stack, modelo de dados e convenções existentes. Esse contexto será passado ao `/extract`.
43
+
44
+ ### 2. Criar estrutura
45
+ ```
46
+ docs/Desenvolvimento/{nome}/
47
+ ├── .context.md ← criado agora
48
+ └── (PRD.md será criado pelo /extract)
49
+ ```
50
+
51
+ ### 3. Criar `.context.md`
52
+ ```yaml
53
+ ---
54
+ nome: "{nome}"
55
+ tipo: "feature"
56
+ documento: "PRD"
57
+ pm_path: "docs/PM/{nome}/"
58
+ status: "not_started"
59
+ ultima_skill: "/sf-feature"
60
+ atualizado_em: "{{ISO_DATETIME}}"
61
+ ---
62
+ ```
63
+
64
+ ### 4. Sugerir /sf-discovery (RECOMENDADO)
65
+
66
+ Antes de extrair, perguntar ao usuário:
67
+ ```
68
+ 📋 Insumos encontrados em docs/PM/{nome}/.
69
+
70
+ Recomendo rodar /sf-discovery antes da extração para:
71
+ - Análise profunda dos insumos
72
+ - Identificar gaps e contradições
73
+ - Validar entendimento com você
74
+
75
+ Quer rodar /sf-discovery docs/PM/{nome}/ agora? (s/n)
76
+ Se SIM → rodar discovery, salvar discovery.md, depois continuar com extract
77
+ Se NÃO → pular direto para /sf-extract
78
+ ```
79
+
80
+ Se o usuário aceitar:
81
+ - Rodar `/sf-discovery docs/PM/{nome}/`
82
+ - Aguardar conclusão — discovery.md salvo em `docs/Desenvolvimento/{nome}/`
83
+ - Continuar para o passo 5
84
+
85
+ ### 5. Chamar `/sf-extract {nome}`
86
+ O `/sf-extract` lê os insumos + discovery.md (se existir), gera o PRD e atualiza status para `extract_done`.
87
+
88
+ ### 6. CHECKPOINT — Parar e informar o usuário
89
+ Mensagem ao usuário:
90
+ ```
91
+ ✅ PRD gerado em docs/Desenvolvimento/{nome}/PRD.md
92
+
93
+ Revise o documento. Quando estiver satisfeito, execute:
94
+ /sf-design {nome}
95
+
96
+ Se precisar adicionar mais insumos, coloque na pasta docs/PM/{nome}/
97
+ e execute:
98
+ /sf-extract {nome}
99
+ ```
100
+
101
+ **O orquestrador encerra aqui.** O restante do pipeline é responsabilidade do usuário chamar as skills atômicas na ordem:
102
+ 1. `/sf-design {nome}` (pergunta aprovação → gera SDD)
103
+ 2. `/sf-plan {nome}` (gera tasks + Progresso)
104
+ 3. `/sf-dev {nome}` (executa tasks)
105
+ 4. `/sf-merge-delta {nome}` (aplica Delta Specs em docs/Estrutura/)
106
+
107
+ ## Saídas diretas desta skill
108
+ - `docs/Desenvolvimento/{nome}/.context.md`
109
+ - `docs/Desenvolvimento/{nome}/PRD.md` (via /extract)
110
+ - `docs/Desenvolvimento/{nome}/.extract-log.md` (via /extract)
111
+
112
+ ## Saídas indiretas (skills subsequentes)
113
+ - `sdd.md` (via /design)
114
+ - `*_tasks.md` + `Progresso.md` (via /plan)
115
+ - `docs/Estrutura/` atualizado (via /sf-merge-delta após /dev)
116
+
117
+ ## Erros
118
+
119
+ | Erro | Ação |
120
+ |------|------|
121
+ | Nome não informado | Parar, mostrar exemplo de uso |
122
+ | PM/{nome}/ não existe | Parar, instruir criação |
123
+ | PM/{nome}/ vazio | Parar, listar formatos aceitos |
124
+ | Estrutura/ não populado | Parar, sugerir /sf-setup-projeto |
125
+ | Pipeline já iniciado | Mostrar status atual, sugerir /sf-extract para re-extração ou skill correspondente ao status |
126
+
127
+ ## Notas
128
+ - Diferente do `/sf-setup-projeto`, pode ser executado **múltiplas vezes** (uma por feature)
129
+ - O contexto de `docs/Estrutura/` é carregado para que o `/extract` gere um PRD coerente com a arquitetura existente
130
+ - Após `/dev`, o `/merge-delta` atualiza `docs/Estrutura/` com as mudanças da feature
@@ -1,142 +1,142 @@
1
- ---
2
- name: sf-merge-delta
3
- description: |
4
- Delta Specs. Aplica mudanças do SDD em docs/Estrutura/.
5
- Trigger: /sf-merge-delta
6
- author: GustavoMaritan
7
- version: 1.0.0
8
- date: 2026-04-08
9
- ---
10
-
11
- # Skill: /sf-merge-delta
12
-
13
- > Skill atômica pós-dev. Aplica Delta Specs do SDD em docs/Estrutura/.
14
- > Última etapa do pipeline de feature — não se aplica a setup.
15
-
16
- ## Tipo
17
- Atômica — Single-agent
18
-
19
- ## Uso
20
- ```
21
- /sf-merge-delta <nome>
22
- ```
23
- Exemplo: `/sf-merge-delta feat_cadastro_cliente`
24
-
25
- ---
26
-
27
- ## Agente
28
-
29
- | Campo | Valor |
30
- |-------|-------|
31
- | **Papel** | Integrador de documentação — aplica mudanças incrementais mantendo consistência global |
32
- | **Modelo** | Sonnet |
33
- | **Comportamento** | Meticuloso com consistência. Aplica apenas o que o Delta Specs diz — não infere mudanças adicionais. Cada alteração gera entrada no changelog. Se há conflito com conteúdo existente, para e pede resolução. |
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-merge-delta feat_cadastro_cliente" |
42
- | 2 | `.context.md` existe com status `dev_done` | Se anterior → "Execute /sf-dev {nome} primeiro" |
43
- | 3 | `.context.md` tipo é `feature` (não `setup`) | Parar → "Setup não usa merge-delta — docs/Estrutura/ foi criado diretamente pelo /sf-dev" |
44
- | 4 | `sdd.md` existe com §11 Delta Specs preenchida | Parar → "Delta Specs não encontrada no SDD" |
45
- | 5 | `docs/Estrutura/` está populado | Parar → "docs/Estrutura/ vazio — execute /sf-setup-projeto primeiro" |
46
-
47
- ## Passos
48
-
49
- ### 1. Ler Delta Specs
50
- Ler `sdd.md` §11 e classificar cada delta:
51
-
52
- | Tipo | Significado | Exemplo |
53
- |------|------------|---------|
54
- | **ADDED** | Elemento novo no sistema | Nova tabela `clientes`, novo endpoint POST /api/v1/clientes |
55
- | **MODIFIED** | Elemento existente alterado | Tabela `usuarios` recebe coluna `telefone` |
56
- | **REMOVED** | Elemento removido do sistema | Endpoint DELETE /api/v1/legacy removido |
57
-
58
- ### 2. Mapear deltas para docs alvo
59
- Cada delta afeta um ou mais docs em `docs/Estrutura/`:
60
-
61
- | Elemento | Doc alvo |
62
- |----------|----------|
63
- | Tabelas, colunas, índices | `Modelo_Dados.md` |
64
- | Endpoints, contratos | `API.md` |
65
- | Decisões de arquitetura | `Arquitetura.md` + `ADRs.md` |
66
- | Mudanças de infra | `Infraestrutura.md` |
67
- | Mudanças de segurança | `Seguranca.md` |
68
- | Mudanças de stack | `Stack.md` |
69
- | Mudanças de visão/escopo | `Visao.md` |
70
-
71
- ### 3. Aplicar cada delta
72
- Para cada delta, no doc alvo:
73
-
74
- **ADDED:**
75
- - Adicionar novo conteúdo na seção apropriada do doc
76
- - Registrar no changelog
77
-
78
- **MODIFIED:**
79
- - Localizar elemento existente no doc
80
- - Aplicar a modificação
81
- - Registrar no changelog
82
-
83
- **REMOVED:**
84
- - Localizar elemento existente no doc
85
- - Remover ou marcar como deprecated (conforme contexto)
86
- - Registrar no changelog
87
-
88
- **Formato do changelog** (no final de cada doc afetado):
89
- ```markdown
90
- ## Changelog
91
-
92
- | Data | Feature | Tipo | Descrição |
93
- |------|---------|------|-----------|
94
- | 2026-04-08 | feat_cadastro_cliente | ADDED | Tabela `clientes`, tabela `clientes_enderecos` |
95
- | 2026-04-08 | feat_cadastro_cliente | ADDED | POST/GET /api/v1/clientes |
96
- ```
97
-
98
- ### 4. Validar consistência
99
- Após todas alterações:
100
- - Verificar que docs não ficaram com referências quebradas
101
- - Verificar que REMOVED não deixou referências órfãs em outros docs
102
- - Se inconsistência detectada → reportar ao usuário, não corrigir automaticamente
103
-
104
- ### 5. Atualizar status
105
- - `.context.md` → status: `done`
106
- - `docs/Desenvolvimento/progresso.md` → feature marcada como concluída
107
- - Informar ao usuário:
108
- ```
109
- ✅ Delta Specs aplicadas em docs/Estrutura/
110
-
111
- Docs atualizados:
112
- - Modelo_Dados.md — ADDED: tabelas clientes, clientes_enderecos
113
- - API.md — ADDED: endpoints POST/GET /api/v1/clientes
114
-
115
- Feature {nome} concluída.
116
- ```
117
-
118
- ---
119
-
120
- ## Saídas
121
-
122
- | Arquivo | Descrição |
123
- |---------|-----------|
124
- | `docs/Estrutura/*.md` | Docs globais atualizados com deltas da feature |
125
- | `progresso.md` (global) | Feature marcada como concluída |
126
- | `.context.md` | Status: `done` |
127
-
128
- ## Pós-condições
129
- - `docs/Estrutura/` reflete o estado real do sistema
130
- - Cada mudança rastreável: changelog → feature → SDD → PRD → insumo
131
- - Feature completamente concluída
132
-
133
- ## Erros
134
-
135
- | Erro | Ação |
136
- |------|------|
137
- | Nome não informado | Parar, mostrar exemplo |
138
- | Status não é dev_done | Parar, sugerir /sf-dev |
139
- | Tipo é setup | Parar, informar que setup não usa merge-delta |
140
- | Delta Specs vazia | Informar (legítimo em refactors internos), marcar como done |
141
- | Elemento MODIFIED/REMOVED não encontrado no doc alvo | Parar, reportar conflito — pedir resolução manual |
142
- | Inconsistência entre docs após merge | Parar, listar inconsistências |
1
+ ---
2
+ name: sf-merge-delta
3
+ description: |
4
+ Delta Specs. Aplica mudanças do SDD em docs/Estrutura/.
5
+ Trigger: /sf-merge-delta
6
+ author: GustavoMaritan
7
+ version: 1.0.0
8
+ date: 2026-04-08
9
+ ---
10
+
11
+ # Skill: /sf-merge-delta
12
+
13
+ > Skill atômica pós-dev. Aplica Delta Specs do SDD em docs/Estrutura/.
14
+ > Última etapa do pipeline de feature — não se aplica a setup.
15
+
16
+ ## Tipo
17
+ Atômica — Single-agent
18
+
19
+ ## Uso
20
+ ```
21
+ /sf-merge-delta <nome>
22
+ ```
23
+ Exemplo: `/sf-merge-delta feat_cadastro_cliente`
24
+
25
+ ---
26
+
27
+ ## Agente
28
+
29
+ | Campo | Valor |
30
+ |-------|-------|
31
+ | **Papel** | Integrador de documentação — aplica mudanças incrementais mantendo consistência global |
32
+ | **Modelo** | Sonnet |
33
+ | **Comportamento** | Meticuloso com consistência. Aplica apenas o que o Delta Specs diz — não infere mudanças adicionais. Cada alteração gera entrada no changelog. Se há conflito com conteúdo existente, para e pede resolução. |
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-merge-delta feat_cadastro_cliente" |
42
+ | 2 | `.context.md` existe com status `dev_done` | Se anterior → "Execute /sf-dev {nome} primeiro" |
43
+ | 3 | `.context.md` tipo é `feature` (não `setup`) | Parar → "Setup não usa merge-delta — docs/Estrutura/ foi criado diretamente pelo /sf-dev" |
44
+ | 4 | `sdd.md` existe com §11 Delta Specs preenchida | Parar → "Delta Specs não encontrada no SDD" |
45
+ | 5 | `docs/Estrutura/` está populado | Parar → "docs/Estrutura/ vazio — execute /sf-setup-projeto primeiro" |
46
+
47
+ ## Passos
48
+
49
+ ### 1. Ler Delta Specs
50
+ Ler `sdd.md` §11 e classificar cada delta:
51
+
52
+ | Tipo | Significado | Exemplo |
53
+ |------|------------|---------|
54
+ | **ADDED** | Elemento novo no sistema | Nova tabela `clientes`, novo endpoint POST /api/v1/clientes |
55
+ | **MODIFIED** | Elemento existente alterado | Tabela `usuarios` recebe coluna `telefone` |
56
+ | **REMOVED** | Elemento removido do sistema | Endpoint DELETE /api/v1/legacy removido |
57
+
58
+ ### 2. Mapear deltas para docs alvo
59
+ Cada delta afeta um ou mais docs em `docs/Estrutura/`:
60
+
61
+ | Elemento | Doc alvo |
62
+ |----------|----------|
63
+ | Tabelas, colunas, índices | `Modelo_Dados.md` |
64
+ | Endpoints, contratos | `API.md` |
65
+ | Decisões de arquitetura | `Arquitetura.md` + `ADRs.md` |
66
+ | Mudanças de infra | `Infraestrutura.md` |
67
+ | Mudanças de segurança | `Seguranca.md` |
68
+ | Mudanças de stack | `Stack.md` |
69
+ | Mudanças de visão/escopo | `Visao.md` |
70
+
71
+ ### 3. Aplicar cada delta
72
+ Para cada delta, no doc alvo:
73
+
74
+ **ADDED:**
75
+ - Adicionar novo conteúdo na seção apropriada do doc
76
+ - Registrar no changelog
77
+
78
+ **MODIFIED:**
79
+ - Localizar elemento existente no doc
80
+ - Aplicar a modificação
81
+ - Registrar no changelog
82
+
83
+ **REMOVED:**
84
+ - Localizar elemento existente no doc
85
+ - Remover ou marcar como deprecated (conforme contexto)
86
+ - Registrar no changelog
87
+
88
+ **Formato do changelog** (no final de cada doc afetado):
89
+ ```markdown
90
+ ## Changelog
91
+
92
+ | Data | Feature | Tipo | Descrição |
93
+ |------|---------|------|-----------|
94
+ | 2026-04-08 | feat_cadastro_cliente | ADDED | Tabela `clientes`, tabela `clientes_enderecos` |
95
+ | 2026-04-08 | feat_cadastro_cliente | ADDED | POST/GET /api/v1/clientes |
96
+ ```
97
+
98
+ ### 4. Validar consistência
99
+ Após todas alterações:
100
+ - Verificar que docs não ficaram com referências quebradas
101
+ - Verificar que REMOVED não deixou referências órfãs em outros docs
102
+ - Se inconsistência detectada → reportar ao usuário, não corrigir automaticamente
103
+
104
+ ### 5. Atualizar status
105
+ - `.context.md` → status: `done`
106
+ - `docs/Desenvolvimento/progresso.md` → feature marcada como concluída
107
+ - Informar ao usuário:
108
+ ```
109
+ ✅ Delta Specs aplicadas em docs/Estrutura/
110
+
111
+ Docs atualizados:
112
+ - Modelo_Dados.md — ADDED: tabelas clientes, clientes_enderecos
113
+ - API.md — ADDED: endpoints POST/GET /api/v1/clientes
114
+
115
+ Feature {nome} concluída.
116
+ ```
117
+
118
+ ---
119
+
120
+ ## Saídas
121
+
122
+ | Arquivo | Descrição |
123
+ |---------|-----------|
124
+ | `docs/Estrutura/*.md` | Docs globais atualizados com deltas da feature |
125
+ | `progresso.md` (global) | Feature marcada como concluída |
126
+ | `.context.md` | Status: `done` |
127
+
128
+ ## Pós-condições
129
+ - `docs/Estrutura/` reflete o estado real do sistema
130
+ - Cada mudança rastreável: changelog → feature → SDD → PRD → insumo
131
+ - Feature completamente concluída
132
+
133
+ ## Erros
134
+
135
+ | Erro | Ação |
136
+ |------|------|
137
+ | Nome não informado | Parar, mostrar exemplo |
138
+ | Status não é dev_done | Parar, sugerir /sf-dev |
139
+ | Tipo é setup | Parar, informar que setup não usa merge-delta |
140
+ | Delta Specs vazia | Informar (legítimo em refactors internos), marcar como done |
141
+ | Elemento MODIFIED/REMOVED não encontrado no doc alvo | Parar, reportar conflito — pedir resolução manual |
142
+ | Inconsistência entre docs após merge | Parar, listar inconsistências |