spec-first-copilot 0.7.0 → 0.8.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.
@@ -1,204 +1,204 @@
1
- ---
2
- name: sf-dev
3
- description: |
4
- Desenvolvimento. Implementa tasks com loop implement/test/review.
5
- Trigger: /sf-dev
6
- author: GustavoMaritan
7
- version: 1.0.0
8
- date: 2026-04-08
9
- ---
10
-
11
- # /sf-dev $ARGUMENTS
12
-
13
- Skill atômica de execução. Implementa tasks em loop até quality gate aprovado.
14
- $ARGUMENTS = nome (ex: feat_mvp)
15
- Flags opcionais: --fase 1 (RECOMENDADO) | --area banco | --task BACK-003
16
-
17
- ## Agents por área (perfis em `.github/agents/`)
18
-
19
- | Área | Agente | Stack | Modelo |
20
- |------|--------|-------|--------|
21
- | DB | DB Coder | PostgreSQL 16 | Sonnet (S/M) / Opus (L) |
22
- | BACK | Backend Coder | .NET 8 / C# | Sonnet (S/M) / Opus (L) |
23
- | FRONT | Frontend Coder | React + Fusion | Sonnet (S/M) / Opus (L) |
24
- | INFRA | Infra Coder | Docker | Sonnet (S/M) / Opus (L) |
25
- | DOC | Doc Writer | — | Sonnet |
26
- | Todas | Reviewer | — | Sonnet |
27
- | Todas | Security Reviewer | — | Opus |
28
-
29
- Agente selecionado pelo prefixo: BACK-* → Backend Coder, DB-* → DB Coder, etc.
30
- Ler o perfil do agente em `.github/agents/` antes de implementar.
31
-
32
- ## Pré-condições
33
-
34
- | # | Validação | Se falhar |
35
- |---|-----------|-----------|
36
- | 1 | $ARGUMENTS informado | Parar |
37
- | 2 | `.context.md` com status `plan_done` ou `dev_in_progress` | Se anterior → "/sf-plan primeiro" |
38
- | 3 | `specs/{nome}/tasks.md` e `workspace/Output/{nome}/Progresso.md` existem | Parar |
39
- | 4 | `specs/{nome}/` populado (brief, contracts, scenarios, tasks) | Parar — "/sf-design não rodou" |
40
- | 5 | `rules.md` existe | Parar |
41
- | 6 | `projetos.yaml` existe | Parar → "Execute /sf-design primeiro" |
42
- | 7 | Infra local rodando (`docker compose ps` → healthy) | Parar → "Suba a infra: `docker compose up -d`" |
43
-
44
- ## Fluxo de execução
45
-
46
- ```
47
- ╔═══════════════════════════════════════════════╗
48
- ║ LOOP POR TASK ║
49
- ║ ║
50
- ║ 1. Selecionar agente pela área ║
51
- ║ 2. Ler perfil do agente (.github/agents/) ║
52
- ║ 3. Implementar código + testes unit ║
53
- ║ 4. Rodar testes unit ║
54
- ║ → Falhou? Corrigir → volta pro 4 ║
55
- ║ → 5 falhas? Parar, reportar ║
56
- ║ 5. Rodar lint ║
57
- ║ → Falhou? Corrigir → volta pro 5 ║
58
- ║ 6. Commit: tipo(TASK-ID): descrição ║
59
- ║ 7. Review (quality gate) ║
60
- ║ → Reprovado? Corrigir → volta pro 4 ║
61
- ║ → 3 reprovações? Escalar pro usuário ║
62
- ║ 8. Marcar task concluída ✅ ║
63
- ╚═══════════════════════════════════════════════╝
64
- ↓ (todas tasks da fase)
65
- ╔═══════════════════════════════════════════════╗
66
- ║ VALIDAÇÃO POR FASE ║
67
- ║ 1. Rodar testes integration da área ║
68
- ║ → Falhou? Fix → loop (max 3) ║
69
- ╚═══════════════════════════════════════════════╝
70
- ↓ (tudo concluído)
71
- ╔═══════════════════════════════════════════════╗
72
- ║ SECURITY REVIEW (cross-area) ║
73
- ║ 1. Security Reviewer audita todo código ║
74
- ║ → CRÍTICO/ALTO? Coder corrige → re-audit ║
75
- ║ → 2 falhas? Escalar pro usuário ║
76
- ║ 2. Aprovado → prosseguir para E2E ║
77
- ╚═══════════════════════════════════════════════╝
78
- ↓ (security aprovado)
79
- ╔═══════════════════════════════════════════════╗
80
- ║ VALIDAÇÃO POR FEATURE ║
81
- ║ 1. Rodar E2E (scenarios.md — CAs) ║
82
- ║ → Falhou? Identificar → fix → loop (max 3)║
83
- ║ 2. Tudo passou? → prosseguir ║
84
- ╚═══════════════════════════════════════════════╝
85
- ↓ (E2E aprovado, só features)
86
- ╔═══════════════════════════════════════════════╗
87
- ║ MERGE-DOCS (automático, só features) ║
88
- ║ 1. Ler PRD + TRD aprovados ║
89
- ║ 2. Diff semântico vs docs/ atual ║
90
- ║ 3. Aplicar ADDED/MODIFIED em docs/ ║
91
- ║ 4. Registrar changelog em cada doc alterado ║
92
- ║ 5. dev_done → done ✅ ║
93
- ╚═══════════════════════════════════════════════╝
94
- ```
95
-
96
- ## Multi-repo + Git Workflow
97
-
98
- ### Contexto inicial
99
- - Ler `projetos.yaml` → mapeamento área → repo → path local
100
- - Validar que repos em `projetos/` existem (se não, INFRA-001 ainda não rodou)
101
-
102
- ### Passo 1 — Verificar working tree (OBRIGATÓRIO)
103
- Em cada repo afetado: `git status`
104
- - Se working tree sujo → sugerir commit ou stash antes de prosseguir
105
- - NUNCA começar a codar com working tree sujo
106
-
107
- ### INFRA-001 (setup — primeira execução)
108
- No setup, INFRA-001 cria/clona os repos:
109
- - Ler `projetos.yaml` → para cada repo:
110
- - Se `existing: true` → `git clone {repo} projetos/{name}`
111
- - Se `existing: false` → criar repo (`gh repo create {repo} --private`) + clone
112
- - Criar estrutura base em cada repo (conforme stack)
113
-
114
- ### Passo 2 — Branch por fase (NUNCA na main)
115
- Para cada repo afetado por esta fase:
116
- ```bash
117
- cd projetos/{repo_path}
118
- git checkout main && git pull origin main
119
- git checkout -b feature/{nome}_fase{N}
120
- ```
121
- - NUNCA desenvolver direto na main
122
-
123
- ## Implementação por task
124
-
125
- 1. **Navegar**: ler campo `Repo:` da task → `cd projetos/{repo_path}/`
126
- 2. **Ler**: task completa + `specs/{nome}/brief.md` + `contracts.md` + `scenarios.md` (NUNCA ler PRD/TRD direto — só as projeções em specs/) + perfil do agente + `.github/rules.md`
127
- 3. **Implementar**: código nos arquivos listados (caminhos relativos ao repo)
128
- 4. **Testar**: testes unit nos arquivos de teste listados na task
129
- 5. **Commit**: no repo do serviço — `tipo(TASK-ID): descrição curta`
130
- 6. **Review**: quality gate (compilar, testes, lint, conformidade com specs/, convenções)
131
-
132
- ## Quality gate (Reviewer)
133
-
134
- | Check | Critério |
135
- |-------|----------|
136
- | Compila | Sem erros |
137
- | Testes unit | Passam |
138
- | Lint | Limpo |
139
- | Conformidade spec | Contratos, tipos, regras conforme `specs/{nome}/contracts.md` |
140
- | Convenções | rules.md respeitado |
141
- | Sem TODOs | Injustificados |
142
- | Sem secrets | Hardcoded |
143
- | Arquivos corretos | Só os listados na task modificados |
144
-
145
- ## Limites de retry
146
-
147
- | Nível | Limite | Ação ao exceder |
148
- |-------|--------|-----------------|
149
- | Test unit | 5 por task | Parar, reportar |
150
- | Review | 3 por task | Escalar pro usuário |
151
- | Integration | 3 por fase | Parar, reportar |
152
- | Security | 2 por feature | Escalar findings não resolvidos |
153
- | E2E | 3 por feature | Parar, reportar |
154
-
155
- ## Passo 3 — Ao terminar fase: PR + ambiente ON
156
-
157
- 1. Atualizar Progresso.md com status da fase
158
- 2. Push da branch em cada repo: `git push origin feature/{nome}_fase{N}`
159
- 3. Abrir PR com template detalhado (ver rules.md → Template de PR):
160
- - Tasks concluídas, testes passando, como testar manualmente
161
- - `gh pr create`
162
- 4. Deixar ambiente local rodando:
163
- - `docker compose up -d` (infra)
164
- - `dotnet run` / `npm run dev` (apps nos repos)
165
- - Informar URLs ao usuário
166
- 5. **PARAR e aguardar** — merge é MANUAL pelo usuário
167
-
168
- ## Passo 4 — Aguardar aprovação
169
-
170
- - O agente NUNCA faz merge
171
- - Se o usuário pedir ajustes → corrigir na mesma branch, push, atualizar PR
172
-
173
- ## Passo 5 — Após merge (quando usuário confirmar)
174
-
175
- ```bash
176
- cd projetos/{repo_path}
177
- git checkout main && git pull origin main
178
- git branch -d feature/{nome}_fase{N}
179
- git remote prune origin
180
- ```
181
-
182
- ## Merge-Docs automático (só features)
183
-
184
- Após E2E aprovado, SE `.context.md → first_run=false`:
185
-
186
- 1. Chamar inline `/sf-merge-docs {nome}` (ver `.github/skills/sf-merge-docs/SKILL.md`)
187
- 2. Integrator (Opus) faz diff semântico entre PRD+TRD aprovados e docs/ atual
188
- 3. Aplica ADDED/MODIFIED em cada doc afetado
189
- 4. Registra changelog em cada doc alterado
190
- 5. Valida consistência cross-doc (reporta, não bloqueia)
191
-
192
- Se `first_run=true` → **pular** merge-docs automático (docs/ já foi criado pelo /sf-design).
193
-
194
- Se `/sf-merge-docs` falhar → reportar mas não derrubar `/sf-dev`. User pode re-rodar manual.
195
-
196
- > `/sf-merge-docs` continua existindo como command atômico pra re-execução manual.
197
- > Mesma semântica sempre — idempotente, não duplica conteúdo.
198
-
199
- ## Atualizar `.context.md`
200
- ```yaml
201
- status: "dev_in_progress" # durante
202
- status: "dev_done" # ao final das tasks (antes do merge-docs)
203
- status: "done" # após merge-docs aplicado (ou pulado em first_run)
204
- ```
1
+ ---
2
+ name: sf-dev
3
+ description: |
4
+ Desenvolvimento. Implementa tasks com loop implement/test/review.
5
+ Trigger: /sf-dev
6
+ author: GustavoMaritan
7
+ version: 1.0.0
8
+ date: 2026-04-08
9
+ ---
10
+
11
+ # /sf-dev $ARGUMENTS
12
+
13
+ Skill atômica de execução. Implementa tasks em loop até quality gate aprovado.
14
+ $ARGUMENTS = nome (ex: feat_mvp)
15
+ Flags opcionais: --fase 1 (RECOMENDADO) | --area banco | --task BACK-003
16
+
17
+ ## Agents por área (perfis em `.github/agents/`)
18
+
19
+ | Área | Agente | Stack | Modelo |
20
+ |------|--------|-------|--------|
21
+ | DB | DB Coder | PostgreSQL 16 | Sonnet (S/M) / Opus (L) |
22
+ | BACK | Backend Coder | .NET 8 / C# | Sonnet (S/M) / Opus (L) |
23
+ | FRONT | Frontend Coder | React + Fusion | Sonnet (S/M) / Opus (L) |
24
+ | INFRA | Infra Coder | Docker | Sonnet (S/M) / Opus (L) |
25
+ | DOC | Doc Writer | — | Sonnet |
26
+ | Todas | Reviewer | — | Sonnet |
27
+ | Todas | Security Reviewer | — | Opus |
28
+
29
+ Agente selecionado pelo prefixo: BACK-* → Backend Coder, DB-* → DB Coder, etc.
30
+ Ler o perfil do agente em `.github/agents/` antes de implementar.
31
+
32
+ ## Pré-condições
33
+
34
+ | # | Validação | Se falhar |
35
+ |---|-----------|-----------|
36
+ | 1 | $ARGUMENTS informado | Parar |
37
+ | 2 | `.context.md` com status `plan_done` ou `dev_in_progress` | Se anterior → "/sf-plan primeiro" |
38
+ | 3 | `specs/{nome}/tasks.md` e `workspace/Output/{nome}/Progresso.md` existem | Parar |
39
+ | 4 | `specs/{nome}/` populado (brief, contracts, scenarios, tasks) | Parar — "/sf-design não rodou" |
40
+ | 5 | `rules.md` existe | Parar |
41
+ | 6 | `projetos.yaml` existe | Parar → "Execute /sf-design primeiro" |
42
+ | 7 | Infra local rodando (`docker compose ps` → healthy) | Parar → "Suba a infra: `docker compose up -d`" |
43
+
44
+ ## Fluxo de execução
45
+
46
+ ```
47
+ ╔═══════════════════════════════════════════════╗
48
+ ║ LOOP POR TASK ║
49
+ ║ ║
50
+ ║ 1. Selecionar agente pela área ║
51
+ ║ 2. Ler perfil do agente (.github/agents/) ║
52
+ ║ 3. Implementar código + testes unit ║
53
+ ║ 4. Rodar testes unit ║
54
+ ║ → Falhou? Corrigir → volta pro 4 ║
55
+ ║ → 5 falhas? Parar, reportar ║
56
+ ║ 5. Rodar lint ║
57
+ ║ → Falhou? Corrigir → volta pro 5 ║
58
+ ║ 6. Commit: tipo(TASK-ID): descrição ║
59
+ ║ 7. Review (quality gate) ║
60
+ ║ → Reprovado? Corrigir → volta pro 4 ║
61
+ ║ → 3 reprovações? Escalar pro usuário ║
62
+ ║ 8. Marcar task concluída ✅ ║
63
+ ╚═══════════════════════════════════════════════╝
64
+ ↓ (todas tasks da fase)
65
+ ╔═══════════════════════════════════════════════╗
66
+ ║ VALIDAÇÃO POR FASE ║
67
+ ║ 1. Rodar testes integration da área ║
68
+ ║ → Falhou? Fix → loop (max 3) ║
69
+ ╚═══════════════════════════════════════════════╝
70
+ ↓ (tudo concluído)
71
+ ╔═══════════════════════════════════════════════╗
72
+ ║ SECURITY REVIEW (cross-area) ║
73
+ ║ 1. Security Reviewer audita todo código ║
74
+ ║ → CRÍTICO/ALTO? Coder corrige → re-audit ║
75
+ ║ → 2 falhas? Escalar pro usuário ║
76
+ ║ 2. Aprovado → prosseguir para E2E ║
77
+ ╚═══════════════════════════════════════════════╝
78
+ ↓ (security aprovado)
79
+ ╔═══════════════════════════════════════════════╗
80
+ ║ VALIDAÇÃO POR FEATURE ║
81
+ ║ 1. Rodar E2E (scenarios.md — CAs) ║
82
+ ║ → Falhou? Identificar → fix → loop (max 3)║
83
+ ║ 2. Tudo passou? → prosseguir ║
84
+ ╚═══════════════════════════════════════════════╝
85
+ ↓ (E2E aprovado, só features)
86
+ ╔═══════════════════════════════════════════════╗
87
+ ║ MERGE-DOCS (automático, só features) ║
88
+ ║ 1. Ler PRD + TRD aprovados ║
89
+ ║ 2. Diff semântico vs docs/ atual ║
90
+ ║ 3. Aplicar ADDED/MODIFIED em docs/ ║
91
+ ║ 4. Registrar changelog em cada doc alterado ║
92
+ ║ 5. dev_done → done ✅ ║
93
+ ╚═══════════════════════════════════════════════╝
94
+ ```
95
+
96
+ ## Multi-repo + Git Workflow
97
+
98
+ ### Contexto inicial
99
+ - Ler `projetos.yaml` → mapeamento área → repo → path local
100
+ - Validar que repos em `projetos/` existem (se não, INFRA-001 ainda não rodou)
101
+
102
+ ### Passo 1 — Verificar working tree (OBRIGATÓRIO)
103
+ Em cada repo afetado: `git status`
104
+ - Se working tree sujo → sugerir commit ou stash antes de prosseguir
105
+ - NUNCA começar a codar com working tree sujo
106
+
107
+ ### INFRA-001 (setup — primeira execução)
108
+ No setup, INFRA-001 cria/clona os repos:
109
+ - Ler `projetos.yaml` → para cada repo:
110
+ - Se `existing: true` → `git clone {repo} projetos/{name}`
111
+ - Se `existing: false` → criar repo (`gh repo create {repo} --private`) + clone
112
+ - Criar estrutura base em cada repo (conforme stack)
113
+
114
+ ### Passo 2 — Branch por fase (NUNCA na main)
115
+ Para cada repo afetado por esta fase:
116
+ ```bash
117
+ cd projetos/{repo_path}
118
+ git checkout main && git pull origin main
119
+ git checkout -b feature/{nome}_fase{N}
120
+ ```
121
+ - NUNCA desenvolver direto na main
122
+
123
+ ## Implementação por task
124
+
125
+ 1. **Navegar**: ler campo `Repo:` da task → `cd projetos/{repo_path}/`
126
+ 2. **Ler**: task completa + `specs/{nome}/brief.md` + `contracts.md` + `scenarios.md` (NUNCA ler PRD/TRD direto — só as projeções em specs/) + perfil do agente + `.github/rules.md`
127
+ 3. **Implementar**: código nos arquivos listados (caminhos relativos ao repo)
128
+ 4. **Testar**: testes unit nos arquivos de teste listados na task
129
+ 5. **Commit**: no repo do serviço — `tipo(TASK-ID): descrição curta`
130
+ 6. **Review**: quality gate (compilar, testes, lint, conformidade com specs/, convenções)
131
+
132
+ ## Quality gate (Reviewer)
133
+
134
+ | Check | Critério |
135
+ |-------|----------|
136
+ | Compila | Sem erros |
137
+ | Testes unit | Passam |
138
+ | Lint | Limpo |
139
+ | Conformidade spec | Contratos, tipos, regras conforme `specs/{nome}/contracts.md` |
140
+ | Convenções | rules.md respeitado |
141
+ | Sem TODOs | Injustificados |
142
+ | Sem secrets | Hardcoded |
143
+ | Arquivos corretos | Só os listados na task modificados |
144
+
145
+ ## Limites de retry
146
+
147
+ | Nível | Limite | Ação ao exceder |
148
+ |-------|--------|-----------------|
149
+ | Test unit | 5 por task | Parar, reportar |
150
+ | Review | 3 por task | Escalar pro usuário |
151
+ | Integration | 3 por fase | Parar, reportar |
152
+ | Security | 2 por feature | Escalar findings não resolvidos |
153
+ | E2E | 3 por feature | Parar, reportar |
154
+
155
+ ## Passo 3 — Ao terminar fase: PR + ambiente ON
156
+
157
+ 1. Atualizar Progresso.md com status da fase
158
+ 2. Push da branch em cada repo: `git push origin feature/{nome}_fase{N}`
159
+ 3. Abrir PR com template detalhado (ver rules.md → Template de PR):
160
+ - Tasks concluídas, testes passando, como testar manualmente
161
+ - `gh pr create`
162
+ 4. Deixar ambiente local rodando:
163
+ - `docker compose up -d` (infra)
164
+ - `dotnet run` / `npm run dev` (apps nos repos)
165
+ - Informar URLs ao usuário
166
+ 5. **PARAR e aguardar** — merge é MANUAL pelo usuário
167
+
168
+ ## Passo 4 — Aguardar aprovação
169
+
170
+ - O agente NUNCA faz merge
171
+ - Se o usuário pedir ajustes → corrigir na mesma branch, push, atualizar PR
172
+
173
+ ## Passo 5 — Após merge (quando usuário confirmar)
174
+
175
+ ```bash
176
+ cd projetos/{repo_path}
177
+ git checkout main && git pull origin main
178
+ git branch -d feature/{nome}_fase{N}
179
+ git remote prune origin
180
+ ```
181
+
182
+ ## Merge-Docs automático (só features)
183
+
184
+ Após E2E aprovado, SE `.context.md → first_run=false`:
185
+
186
+ 1. Chamar inline `/sf-merge-docs {nome}` (ver `.github/skills/sf-merge-docs/SKILL.md`)
187
+ 2. Integrator (Opus) faz diff semântico entre PRD+TRD aprovados e docs/ atual
188
+ 3. Aplica ADDED/MODIFIED em cada doc afetado
189
+ 4. Registra changelog em cada doc alterado
190
+ 5. Valida consistência cross-doc (reporta, não bloqueia)
191
+
192
+ Se `first_run=true` → **pular** merge-docs automático (docs/ já foi criado pelo /sf-design).
193
+
194
+ Se `/sf-merge-docs` falhar → reportar mas não derrubar `/sf-dev`. User pode re-rodar manual.
195
+
196
+ > `/sf-merge-docs` continua existindo como command atômico pra re-execução manual.
197
+ > Mesma semântica sempre — idempotente, não duplica conteúdo.
198
+
199
+ ## Atualizar `.context.md`
200
+ ```yaml
201
+ status: "dev_in_progress" # durante
202
+ status: "dev_done" # ao final das tasks (antes do merge-docs)
203
+ status: "done" # após merge-docs aplicado (ou pulado em first_run)
204
+ ```