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.
- package/README.md +148 -148
- package/bin/cli.js +52 -52
- package/lib/init.js +89 -89
- 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,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 |
|