spec-first-copilot 0.4.0 → 0.5.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +162 -148
- package/bin/cli.js +52 -52
- package/lib/init.js +89 -89
- package/package.json +11 -4
- package/templates/.ai/memory/napkin.md +68 -68
- package/templates/.github/agents/backend-coder.md +215 -215
- package/templates/.github/agents/db-coder.md +165 -165
- package/templates/.github/agents/doc-writer.md +48 -51
- package/templates/.github/agents/frontend-coder.md +222 -222
- package/templates/.github/agents/infra-coder.md +341 -341
- package/templates/.github/agents/reviewer.md +99 -99
- package/templates/.github/agents/security-reviewer.md +153 -153
- package/templates/.github/copilot-instructions.md +218 -175
- package/templates/.github/instructions/docs.instructions.md +123 -123
- package/templates/.github/instructions/sensitive-files.instructions.md +32 -32
- package/templates/{docs/Desenvolvimento → .github}/rules.md +229 -229
- package/templates/.github/skills/sf-design/SKILL.md +209 -181
- package/templates/.github/skills/sf-dev/SKILL.md +354 -349
- package/templates/.github/skills/sf-discovery/SKILL.md +405 -405
- package/templates/.github/skills/sf-extract/SKILL.md +284 -284
- package/templates/.github/skills/sf-feature/SKILL.md +130 -130
- package/templates/.github/skills/sf-merge-delta/SKILL.md +145 -142
- package/templates/.github/skills/sf-plan/SKILL.md +180 -178
- package/templates/.github/skills/sf-session-finish/SKILL.md +120 -120
- package/templates/.github/skills/sf-setup-projeto/SKILL.md +123 -123
- package/templates/{docs/_templates/estrutura/API.template.md → .github/templates/estrutura/apiContracts.template.md} +151 -144
- package/templates/.github/templates/estrutura/architecture.template.md +158 -0
- package/templates/{docs/_templates/estrutura/Seguranca.template.md → .github/templates/estrutura/conventions.template.md} +202 -138
- package/templates/{docs/_templates/estrutura/ADRs.template.md → .github/templates/estrutura/decisions.template.md} +99 -91
- package/templates/.github/templates/estrutura/domain.template.md +148 -0
- package/templates/{docs/_templates → .github/templates}/feature/PRD.template.md +256 -256
- package/templates/{docs/_templates → .github/templates}/feature/Progresso.template.md +136 -136
- package/templates/{docs/_templates → .github/templates}/feature/TRD.template.md +204 -200
- package/templates/{docs/_templates → .github/templates}/feature/backlog-extraido.template.md +154 -154
- package/templates/{docs/_templates → .github/templates}/feature/context.template.md +42 -42
- package/templates/{docs/_templates → .github/templates}/feature/extract-log.template.md +38 -38
- package/templates/{docs/_templates → .github/templates}/feature/projetos.template.yaml +73 -73
- package/templates/{docs/_templates → .github/templates}/feature/sdd.template.md +372 -372
- package/templates/{docs/_templates → .github/templates}/global/progresso_global.template.md +57 -57
- package/templates/.github/templates/specs/brief.template.md +47 -0
- package/templates/.github/templates/specs/contracts.template.md +82 -0
- package/templates/.github/templates/specs/scenarios.template.md +79 -0
- package/templates/.github/templates/specs/tasks.template.md +61 -0
- package/templates/docs/_templates/estrutura/Arquitetura.template.md +0 -82
- package/templates/docs/_templates/estrutura/Infraestrutura.template.md +0 -104
- package/templates/docs/_templates/estrutura/Modelo_Dados.template.md +0 -99
- package/templates/docs/_templates/estrutura/Stack.template.md +0 -78
- package/templates/docs/_templates/estrutura/Visao.template.md +0 -82
- package/templates/docs/_templates/feature/tasks.template.md +0 -115
- /package/templates/docs/{Desenvolvimento → specs}/.gitkeep +0 -0
- /package/templates/{docs/Estrutura → workspace/Input}/.gitkeep +0 -0
- /package/templates/{docs/PM → workspace/Input/setup_projeto}/.gitkeep +0 -0
- /package/templates/{docs/PM/setup_projeto → workspace/Output}/.gitkeep +0 -0
|
@@ -1,178 +1,180 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sf-plan
|
|
3
|
-
description: |
|
|
4
|
-
Planejamento. Gera tasks por fase de entrega e área.
|
|
5
|
-
Trigger: /sf-plan
|
|
6
|
-
author: GustavoMaritan
|
|
7
|
-
version: 1.0.0
|
|
8
|
-
date: 2026-04-08
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# Skill: /sf-plan
|
|
12
|
-
|
|
13
|
-
> Skill atômica de planejamento. Lê SDD e gera tasks
|
|
14
|
-
|
|
15
|
-
## Tipo
|
|
16
|
-
Atômica — Single-agent
|
|
17
|
-
|
|
18
|
-
## Uso
|
|
19
|
-
```
|
|
20
|
-
/sf-plan <nome>
|
|
21
|
-
```
|
|
22
|
-
Exemplo: `/sf-plan feat_cadastro_cliente`
|
|
23
|
-
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
## Agente
|
|
27
|
-
|
|
28
|
-
| Campo | Valor |
|
|
29
|
-
|-------|-------|
|
|
30
|
-
| **Papel** | Planejador técnico — decompõe especificação em tasks atômicas, ordenadas e com dependências explícitas |
|
|
31
|
-
| **Modelo** | Opus |
|
|
32
|
-
| **Comportamento** | Metódico e exaustivo. Cada task deve ser auto-contida (coder lê SDD §N + task, nada mais). Prioriza ordem de execução correta sobre paralelismo. Nunca cria task sem referência ao SDD. |
|
|
33
|
-
|
|
34
|
-
---
|
|
35
|
-
|
|
36
|
-
## Pré-condições
|
|
37
|
-
|
|
38
|
-
| # | Validação | Se falhar |
|
|
39
|
-
|---|-----------|-----------|
|
|
40
|
-
| 1 | Argumento `nome` foi informado | Parar → "Informe o nome. Ex: /sf-plan feat_cadastro_cliente" |
|
|
41
|
-
| 2 | `
|
|
42
|
-
| 3 | `sdd.md` existe na pasta | Parar → "SDD não encontrado. Execute /sf-design {nome}" |
|
|
43
|
-
|
|
44
|
-
## Passos
|
|
45
|
-
|
|
46
|
-
### 1. Ler contexto
|
|
47
|
-
- Ler `.context.md` → validar status
|
|
48
|
-
- Ler `sdd.md` completo
|
|
49
|
-
- Ler `
|
|
50
|
-
- Ler `
|
|
51
|
-
- Ler `docs
|
|
52
|
-
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
| §
|
|
67
|
-
| §
|
|
68
|
-
| §
|
|
69
|
-
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
> DOC
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
- [ ] INFRA-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
INFRA-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
Usando template
|
|
125
|
-
|
|
126
|
-
- Resumo por Área × Fase com contagem de tasks
|
|
127
|
-
- Status por fase: ⬜ pendente | 🔄 em andamento | ✅ concluída
|
|
128
|
-
- **Ordem de execução** com paralelismos:
|
|
129
|
-
```
|
|
130
|
-
1. BANCO Fase 1
|
|
131
|
-
2. BANCO Fase 2 + BACK Fase 1 — podem paralelizar
|
|
132
|
-
3. BACK Fase 2
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
| `
|
|
161
|
-
| `
|
|
162
|
-
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
-
|
|
167
|
-
-
|
|
168
|
-
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
|
175
|
-
|
|
176
|
-
|
|
|
177
|
-
|
|
|
178
|
-
|
|
|
1
|
+
---
|
|
2
|
+
name: sf-plan
|
|
3
|
+
description: |
|
|
4
|
+
Planejamento. Gera tasks por fase de entrega e área.
|
|
5
|
+
Trigger: /sf-plan
|
|
6
|
+
author: GustavoMaritan
|
|
7
|
+
version: 1.0.0
|
|
8
|
+
date: 2026-04-08
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Skill: /sf-plan
|
|
12
|
+
|
|
13
|
+
> Skill atômica de planejamento. Lê SDD e gera `docs/specs/{nome}/tasks.md` (arquivo único) + `workspace/Output/{nome}/Progresso.md`.
|
|
14
|
+
|
|
15
|
+
## Tipo
|
|
16
|
+
Atômica — Single-agent
|
|
17
|
+
|
|
18
|
+
## Uso
|
|
19
|
+
```
|
|
20
|
+
/sf-plan <nome>
|
|
21
|
+
```
|
|
22
|
+
Exemplo: `/sf-plan feat_cadastro_cliente`
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Agente
|
|
27
|
+
|
|
28
|
+
| Campo | Valor |
|
|
29
|
+
|-------|-------|
|
|
30
|
+
| **Papel** | Planejador técnico — decompõe especificação em tasks atômicas, ordenadas e com dependências explícitas |
|
|
31
|
+
| **Modelo** | Opus |
|
|
32
|
+
| **Comportamento** | Metódico e exaustivo. Cada task deve ser auto-contida (coder lê SDD §N + task, nada mais). Prioriza ordem de execução correta sobre paralelismo. Nunca cria task sem referência ao SDD. |
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Pré-condições
|
|
37
|
+
|
|
38
|
+
| # | Validação | Se falhar |
|
|
39
|
+
|---|-----------|-----------|
|
|
40
|
+
| 1 | Argumento `nome` foi informado | Parar → "Informe o nome. Ex: /sf-plan feat_cadastro_cliente" |
|
|
41
|
+
| 2 | `workspace/Output/{nome}/.context.md` existe com status `design_done` | Se anterior → "Execute /sf-design {nome} primeiro". Se posterior → "Tasks já foram geradas (status: {status})" |
|
|
42
|
+
| 3 | `sdd.md` existe na pasta | Parar → "SDD não encontrado. Execute /sf-design {nome}" |
|
|
43
|
+
|
|
44
|
+
## Passos
|
|
45
|
+
|
|
46
|
+
### 1. Ler contexto
|
|
47
|
+
- Ler `.context.md` → validar status
|
|
48
|
+
- Ler `workspace/Output/{nome}/sdd.md` completo
|
|
49
|
+
- Ler `docs/specs/{nome}/contracts.md` e `scenarios.md` (projeções já geradas pelo /sf-design)
|
|
50
|
+
- Ler `projetos.yaml` (manifesto de repos — mapeamento área → repo)
|
|
51
|
+
- Ler `docs/` (architecture, domain, conventions — para convenções por área)
|
|
52
|
+
- Ler `.github/rules.md` (padrões de código, commit, branch)
|
|
53
|
+
- Carregar template `.github/templates/specs/tasks.template.md`
|
|
54
|
+
|
|
55
|
+
### 2. Identificar fases de entrega
|
|
56
|
+
Ler PRD §11 (Fases de Entrega) — cada fase vira um agrupamento de tasks:
|
|
57
|
+
- Fases são sequenciais: Fase 2 depende de Fase 1 concluída
|
|
58
|
+
- Cada fase tem entregável e critério de done
|
|
59
|
+
- O `/dev` pode rodar por fase: `/sf-dev feat_nome --fase 1`
|
|
60
|
+
|
|
61
|
+
### 3. Identificar áreas afetadas (por fase)
|
|
62
|
+
Para cada fase de entrega, mapear seções do SDD para áreas de tasks:
|
|
63
|
+
|
|
64
|
+
| Seção do SDD | Área | Condição |
|
|
65
|
+
|-------------|------|----------|
|
|
66
|
+
| §3 Modelo de dados | BANCO | Se há entidades/migrations |
|
|
67
|
+
| §5 Endpoints API | BACK | Se há endpoints definidos |
|
|
68
|
+
| §6 Componentes e telas | FRONT | Se há UI especificada |
|
|
69
|
+
| §8 Integrações externas | INFRA | Se há infra/serviços externos |
|
|
70
|
+
| Outras | MOBILE, DEVOPS, etc. | Conforme necessidade do SDD |
|
|
71
|
+
|
|
72
|
+
> **Nota**: Área DOC NÃO existe mais no setup. docs/ é gerado pelo /sf-design (passo 3).
|
|
73
|
+
> DOC só aparece em features se houver necessidade explícita de documentação adicional.
|
|
74
|
+
|
|
75
|
+
Áreas são **dinâmicas** — só cria o que o SDD exige. Não criar área vazia.
|
|
76
|
+
|
|
77
|
+
**Área INFRA obrigatória no setup:**
|
|
78
|
+
Sempre gerar estas tasks no setup (antes de qualquer código):
|
|
79
|
+
```
|
|
80
|
+
- [ ] INFRA-001: Validar e configurar ambiente local [M]
|
|
81
|
+
(detectar OS, instalar Docker/.NET/Node, verificar portas)
|
|
82
|
+
- [ ] INFRA-002: Criar docker-compose.yml + Dockerfiles [M]
|
|
83
|
+
- [ ] INFRA-003: Hello world — subir stack completa e validar [M]
|
|
84
|
+
(docker compose up, migrations, health check, frontend carrega)
|
|
85
|
+
```
|
|
86
|
+
INFRA-001 é a PRIMEIRA task executada no /sf-dev do setup (antes de BANCO, BACK, FRONT).
|
|
87
|
+
INFRA-003 é a ÚLTIMA task (após tudo, como validação final).
|
|
88
|
+
Setup só é `done` quando INFRA-003 passa.
|
|
89
|
+
|
|
90
|
+
### 4. Gerar `docs/specs/{nome}/tasks.md` (arquivo único)
|
|
91
|
+
|
|
92
|
+
Gerar UM arquivo só em `docs/specs/{nome}/tasks.md` contendo **todas as tasks**
|
|
93
|
+
em uma tabela única com coluna `Área`. Agrupadas por fase de entrega (PRD §11).
|
|
94
|
+
|
|
95
|
+
**Tabela única:**
|
|
96
|
+
|
|
97
|
+
```markdown
|
|
98
|
+
| ID | Área | Fase | Tam | Título | Repo | Arquivos | Depende de | Ref spec | Ref CA |
|
|
99
|
+
|----|------|------|-----|--------|------|----------|-----------|----------|--------|
|
|
100
|
+
| BANCO-001 | BANCO | 1 | S | Migration clientes | api | src/Migrations/001_clientes.cs | — | SDD §3.1 | — |
|
|
101
|
+
| BACK-001 | BACK | 1 | M | Endpoint POST /clientes | api | src/Api/Controllers/... | BANCO-001 | SDD §5.1 | CA-001 |
|
|
102
|
+
| FRONT-001 | FRONT | 2 | M | Tela cadastro | web | src/pages/clientes/new.tsx | BACK-001 | SDD §6.1 | CA-002 |
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**Regras de decomposição:**
|
|
106
|
+
1. Cada task é **atômica** — implementável sem consultar nada além de `docs/specs/{nome}/` + `rules.md`
|
|
107
|
+
2. **Repo obrigatório** — consultar `projetos.yaml` para mapear área → repo. Caminhos de arquivo são relativos à raiz do repo
|
|
108
|
+
3. **Área** é uma coluna, não mais um arquivo. Valores: BANCO, BACK, FRONT, INFRA, DOC, MOBILE, etc.
|
|
109
|
+
4. Tamanhos realistas: **S** (<30min), **M** (30min-2h), **L** (2h+)
|
|
110
|
+
5. Se uma task é L, avaliar se pode ser quebrada em M+S
|
|
111
|
+
6. IDs sequenciais **por área**: BANCO-001, BANCO-002, BACK-001, BACK-002
|
|
112
|
+
7. IDs nunca reutilizados — se uma task for removida, o ID é aposentado
|
|
113
|
+
8. Dependências explícitas — inclusive cross-area (FRONT-001 depende BACK-001)
|
|
114
|
+
9. `Ref spec`: referência a seção do SDD (fonte humana) — ex: `SDD §3.1`
|
|
115
|
+
10. `Ref CA`: ID do critério de aceite em `docs/specs/{nome}/scenarios.md` (CA-001, CA-002...) — pode ser `—`
|
|
116
|
+
|
|
117
|
+
**Organização lógica dentro da tabela:**
|
|
118
|
+
- Ordenar por Fase → Área → ID
|
|
119
|
+
- Dependências garantem ordem de execução; a ordenação na tabela é só visual
|
|
120
|
+
|
|
121
|
+
### 5. Gerar `workspace/Output/{nome}/Progresso.md` (tracking)
|
|
122
|
+
|
|
123
|
+
`Progresso.md` fica em **workspace/Output** (é user tracking, não spec).
|
|
124
|
+
Usando template `.github/templates/feature/Progresso.template.md`:
|
|
125
|
+
|
|
126
|
+
- Resumo por Área × Fase com contagem de tasks (derivado de `docs/specs/{nome}/tasks.md`)
|
|
127
|
+
- Status por fase: ⬜ pendente | 🔄 em andamento | ✅ concluída
|
|
128
|
+
- **Ordem de execução** com paralelismos:
|
|
129
|
+
```
|
|
130
|
+
1. BANCO Fase 1 — primeiro sempre
|
|
131
|
+
2. BANCO Fase 2 + BACK Fase 1 — podem paralelizar
|
|
132
|
+
3. FRONT após BACK Fase 2
|
|
133
|
+
...
|
|
134
|
+
```
|
|
135
|
+
- Totais por área e geral
|
|
136
|
+
- Checklist pós-conclusão (merge delta, atualizar progresso global, napkin)
|
|
137
|
+
|
|
138
|
+
**Regra**: status vive SÓ em Progresso.md. `docs/specs/{nome}/tasks.md` é o plano imutável (até re-planejar).
|
|
139
|
+
|
|
140
|
+
### 6. Atualizar progresso global
|
|
141
|
+
Adicionar entrada em `workspace/Output/progresso.md`:
|
|
142
|
+
|
|
143
|
+
```markdown
|
|
144
|
+
| {nome} | plan_done | BANCO: 0/N | BACK: 0/N | FRONT: 0/N |
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### 7. Atualizar `.context.md`
|
|
148
|
+
```yaml
|
|
149
|
+
status: "plan_done"
|
|
150
|
+
ultima_skill: "/sf-plan"
|
|
151
|
+
atualizado_em: "{{ISO_DATETIME}}"
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Saídas
|
|
157
|
+
|
|
158
|
+
| Arquivo | Descrição |
|
|
159
|
+
|---------|-----------|
|
|
160
|
+
| `docs/specs/{nome}/tasks.md` | Tabela única de tasks com coluna Área |
|
|
161
|
+
| `workspace/Output/{nome}/Progresso.md` | Dashboard da feature com ordem de execução (tracking) |
|
|
162
|
+
| `workspace/Output/progresso.md` (global) | Atualizado com nova feature |
|
|
163
|
+
| `.context.md` | Atualizado com status `plan_done` |
|
|
164
|
+
|
|
165
|
+
## Pós-condições
|
|
166
|
+
- `docs/specs/{nome}/tasks.md` é único arquivo de plano — coder lê daqui
|
|
167
|
+
- Cada task é auto-contida com referência a `docs/specs/{nome}/` (não ao SDD direto)
|
|
168
|
+
- Dependências resolvíveis (não há ciclos)
|
|
169
|
+
- Ordem de execução definida em `Progresso.md`
|
|
170
|
+
- Feature pronta para `/sf-dev`
|
|
171
|
+
|
|
172
|
+
## Erros
|
|
173
|
+
|
|
174
|
+
| Erro | Ação |
|
|
175
|
+
|------|------|
|
|
176
|
+
| Nome não informado | Parar, mostrar exemplo |
|
|
177
|
+
| Status não é design_done | Parar, sugerir skill correspondente |
|
|
178
|
+
| SDD não encontrado | Parar, sugerir /sf-design |
|
|
179
|
+
| SDD com seções vazias obrigatórias | Parar, listar o que falta — sugerir voltar ao /sf-design |
|
|
180
|
+
| Dependência circular detectada | Parar, reportar o ciclo e sugerir reorganização |
|
|
@@ -1,120 +1,120 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sf-session-finish
|
|
3
|
-
description: |
|
|
4
|
-
Encerrar sessão. Salva estado, atualiza napkin, gera retomada.md.
|
|
5
|
-
Trigger: /sf-session-finish
|
|
6
|
-
author: GustavoMaritan
|
|
7
|
-
version: 1.0.0
|
|
8
|
-
date: 2026-04-08
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# Skill: /sf-session-finish
|
|
12
|
-
|
|
13
|
-
> Encerra a sessão de trabalho de forma organizada.
|
|
14
|
-
> Consolida estado, atualiza memória, gera ponto de retomada para a próxima sessão.
|
|
15
|
-
|
|
16
|
-
## Tipo
|
|
17
|
-
Utilitária — roda a qualquer momento
|
|
18
|
-
|
|
19
|
-
## Uso
|
|
20
|
-
```
|
|
21
|
-
/sf-session-finish
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
## Passos
|
|
27
|
-
|
|
28
|
-
### 1. Levantar estado atual de cada feature/setup
|
|
29
|
-
|
|
30
|
-
Para cada `.context.md` em `
|
|
31
|
-
- Ler status atual
|
|
32
|
-
- Ler Progresso.md (se existir) → % concluído, fase atual
|
|
33
|
-
- Identificar tasks em andamento (`- [ ]` com dependências resolvidas)
|
|
34
|
-
|
|
35
|
-
### 2. Verificar working tree dos repos
|
|
36
|
-
|
|
37
|
-
Para cada repo em `projetos/`:
|
|
38
|
-
```bash
|
|
39
|
-
cd projetos/{repo}
|
|
40
|
-
git status --short
|
|
41
|
-
git log --oneline -3
|
|
42
|
-
```
|
|
43
|
-
- Listar mudanças não commitadas
|
|
44
|
-
- Listar branches ativas
|
|
45
|
-
- Se há working tree sujo → avisar (sugerir commit antes de pausar)
|
|
46
|
-
|
|
47
|
-
### 3. Atualizar `.ai/memory/napkin.md`
|
|
48
|
-
|
|
49
|
-
Adicionar/atualizar seção `## Sessão Atual` com:
|
|
50
|
-
- Data da sessão
|
|
51
|
-
- O que foi feito (tasks concluídas, fases entregues)
|
|
52
|
-
- O que estava em andamento (task atual, bloqueios)
|
|
53
|
-
- Decisões tomadas durante a sessão
|
|
54
|
-
- Armadilhas encontradas (se houver novos aprendizados)
|
|
55
|
-
|
|
56
|
-
### 4. Gerar resumo de retomada
|
|
57
|
-
|
|
58
|
-
Criar/atualizar `
|
|
59
|
-
|
|
60
|
-
```markdown
|
|
61
|
-
# Ponto de Retomada — {{DATA}}
|
|
62
|
-
|
|
63
|
-
> Gerado pelo /sf-session-finish. Leia este arquivo ao iniciar a próxima sessão.
|
|
64
|
-
|
|
65
|
-
## Estado geral
|
|
66
|
-
|
|
67
|
-
| Feature/Setup | Status | Fase atual | % | Próxima ação |
|
|
68
|
-
|---------------|--------|------------|---|-------------|
|
|
69
|
-
| {{nome}} | {{status}} | Fase {{N}} | {{%}} | {{ação}} |
|
|
70
|
-
|
|
71
|
-
## Repos — estado do git
|
|
72
|
-
|
|
73
|
-
| Repo | Branch ativa | Working tree | Último commit |
|
|
74
|
-
|------|-------------|-------------|---------------|
|
|
75
|
-
| {{repo}} | {{branch}} | limpo/sujo | {{commit msg}} |
|
|
76
|
-
|
|
77
|
-
## O que estava em andamento
|
|
78
|
-
|
|
79
|
-
- Task: {{AREA-NNN}} — {{descrição}}
|
|
80
|
-
- Bloqueios: {{se houver}}
|
|
81
|
-
- Decisões pendentes: {{se houver}}
|
|
82
|
-
|
|
83
|
-
## Para retomar
|
|
84
|
-
|
|
85
|
-
1. {{Passo 1 — ex: "Subir infra: docker compose up -d"}}
|
|
86
|
-
2. {{Passo 2 — ex: "Continuar /sf-dev feat_mvp --fase 2"}}
|
|
87
|
-
3. {{Passo 3 — ex: "Resolver ambiguidade X do PRD"}}
|
|
88
|
-
|
|
89
|
-
## Aprendizados desta sessão
|
|
90
|
-
|
|
91
|
-
- {{Decisão ou armadilha que vale registrar}}
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
### 5. Informar ao usuário
|
|
95
|
-
|
|
96
|
-
```
|
|
97
|
-
✅ Sessão encerrada. Estado salvo em:
|
|
98
|
-
- `.ai/memory/napkin.md` — memória atualizada
|
|
99
|
-
- `
|
|
100
|
-
|
|
101
|
-
Para retomar na próxima sessão:
|
|
102
|
-
1. Ler retomada.md
|
|
103
|
-
2. Seguir os passos listados em "Para retomar"
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
---
|
|
107
|
-
|
|
108
|
-
## Saídas
|
|
109
|
-
|
|
110
|
-
| Arquivo | Descrição |
|
|
111
|
-
|---------|-----------|
|
|
112
|
-
| `.ai/memory/napkin.md` | Sessão atual atualizada |
|
|
113
|
-
| `
|
|
114
|
-
|
|
115
|
-
## Notas
|
|
116
|
-
|
|
117
|
-
- Não modifica .context.md (o status da pipeline não muda ao pausar)
|
|
118
|
-
- Não faz commit automático — se tem working tree sujo, avisa mas não força
|
|
119
|
-
- Pode ser chamada a qualquer momento, não só no final do dia
|
|
120
|
-
- O arquivo `retomada.md` é sobrescrito a cada /sf-session-finish (é ponto atual, não histórico)
|
|
1
|
+
---
|
|
2
|
+
name: sf-session-finish
|
|
3
|
+
description: |
|
|
4
|
+
Encerrar sessão. Salva estado, atualiza napkin, gera retomada.md.
|
|
5
|
+
Trigger: /sf-session-finish
|
|
6
|
+
author: GustavoMaritan
|
|
7
|
+
version: 1.0.0
|
|
8
|
+
date: 2026-04-08
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Skill: /sf-session-finish
|
|
12
|
+
|
|
13
|
+
> Encerra a sessão de trabalho de forma organizada.
|
|
14
|
+
> Consolida estado, atualiza memória, gera ponto de retomada para a próxima sessão.
|
|
15
|
+
|
|
16
|
+
## Tipo
|
|
17
|
+
Utilitária — roda a qualquer momento
|
|
18
|
+
|
|
19
|
+
## Uso
|
|
20
|
+
```
|
|
21
|
+
/sf-session-finish
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Passos
|
|
27
|
+
|
|
28
|
+
### 1. Levantar estado atual de cada feature/setup
|
|
29
|
+
|
|
30
|
+
Para cada `.context.md` em `workspace/Output/*/`:
|
|
31
|
+
- Ler status atual
|
|
32
|
+
- Ler Progresso.md (se existir) → % concluído, fase atual
|
|
33
|
+
- Identificar tasks em andamento (`- [ ]` com dependências resolvidas)
|
|
34
|
+
|
|
35
|
+
### 2. Verificar working tree dos repos
|
|
36
|
+
|
|
37
|
+
Para cada repo em `projetos/`:
|
|
38
|
+
```bash
|
|
39
|
+
cd projetos/{repo}
|
|
40
|
+
git status --short
|
|
41
|
+
git log --oneline -3
|
|
42
|
+
```
|
|
43
|
+
- Listar mudanças não commitadas
|
|
44
|
+
- Listar branches ativas
|
|
45
|
+
- Se há working tree sujo → avisar (sugerir commit antes de pausar)
|
|
46
|
+
|
|
47
|
+
### 3. Atualizar `.ai/memory/napkin.md`
|
|
48
|
+
|
|
49
|
+
Adicionar/atualizar seção `## Sessão Atual` com:
|
|
50
|
+
- Data da sessão
|
|
51
|
+
- O que foi feito (tasks concluídas, fases entregues)
|
|
52
|
+
- O que estava em andamento (task atual, bloqueios)
|
|
53
|
+
- Decisões tomadas durante a sessão
|
|
54
|
+
- Armadilhas encontradas (se houver novos aprendizados)
|
|
55
|
+
|
|
56
|
+
### 4. Gerar resumo de retomada
|
|
57
|
+
|
|
58
|
+
Criar/atualizar `workspace/Output/retomada.md`:
|
|
59
|
+
|
|
60
|
+
```markdown
|
|
61
|
+
# Ponto de Retomada — {{DATA}}
|
|
62
|
+
|
|
63
|
+
> Gerado pelo /sf-session-finish. Leia este arquivo ao iniciar a próxima sessão.
|
|
64
|
+
|
|
65
|
+
## Estado geral
|
|
66
|
+
|
|
67
|
+
| Feature/Setup | Status | Fase atual | % | Próxima ação |
|
|
68
|
+
|---------------|--------|------------|---|-------------|
|
|
69
|
+
| {{nome}} | {{status}} | Fase {{N}} | {{%}} | {{ação}} |
|
|
70
|
+
|
|
71
|
+
## Repos — estado do git
|
|
72
|
+
|
|
73
|
+
| Repo | Branch ativa | Working tree | Último commit |
|
|
74
|
+
|------|-------------|-------------|---------------|
|
|
75
|
+
| {{repo}} | {{branch}} | limpo/sujo | {{commit msg}} |
|
|
76
|
+
|
|
77
|
+
## O que estava em andamento
|
|
78
|
+
|
|
79
|
+
- Task: {{AREA-NNN}} — {{descrição}}
|
|
80
|
+
- Bloqueios: {{se houver}}
|
|
81
|
+
- Decisões pendentes: {{se houver}}
|
|
82
|
+
|
|
83
|
+
## Para retomar
|
|
84
|
+
|
|
85
|
+
1. {{Passo 1 — ex: "Subir infra: docker compose up -d"}}
|
|
86
|
+
2. {{Passo 2 — ex: "Continuar /sf-dev feat_mvp --fase 2"}}
|
|
87
|
+
3. {{Passo 3 — ex: "Resolver ambiguidade X do PRD"}}
|
|
88
|
+
|
|
89
|
+
## Aprendizados desta sessão
|
|
90
|
+
|
|
91
|
+
- {{Decisão ou armadilha que vale registrar}}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### 5. Informar ao usuário
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
✅ Sessão encerrada. Estado salvo em:
|
|
98
|
+
- `.ai/memory/napkin.md` — memória atualizada
|
|
99
|
+
- `workspace/Output/retomada.md` — ponto de retomada
|
|
100
|
+
|
|
101
|
+
Para retomar na próxima sessão:
|
|
102
|
+
1. Ler retomada.md
|
|
103
|
+
2. Seguir os passos listados em "Para retomar"
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Saídas
|
|
109
|
+
|
|
110
|
+
| Arquivo | Descrição |
|
|
111
|
+
|---------|-----------|
|
|
112
|
+
| `.ai/memory/napkin.md` | Sessão atual atualizada |
|
|
113
|
+
| `workspace/Output/retomada.md` | Ponto de retomada com estado completo |
|
|
114
|
+
|
|
115
|
+
## Notas
|
|
116
|
+
|
|
117
|
+
- Não modifica .context.md (o status da pipeline não muda ao pausar)
|
|
118
|
+
- Não faz commit automático — se tem working tree sujo, avisa mas não força
|
|
119
|
+
- Pode ser chamada a qualquer momento, não só no final do dia
|
|
120
|
+
- O arquivo `retomada.md` é sobrescrito a cada /sf-session-finish (é ponto atual, não histórico)
|