spec-first-copilot 0.5.0-beta.0 → 0.5.0-beta.2

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,349 +1,354 @@
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
- # Skill: /sf-dev
12
-
13
- > Skill atômica de execução. Implementa tasks em loop (implement → test → fix → review)
14
- > até quality gate aprovado, depois valida integração e E2E por feature.
15
-
16
- ## Tipo
17
- Atômica — Multi-agent (agentes especializados por área)
18
-
19
- ## Uso
20
- ```
21
- /sf-dev <nome>
22
- /sf-dev <nome> --area banco
23
- /sf-dev <nome> --task BACK-003
24
- ```
25
-
26
- ---
27
-
28
- ## Agentes
29
-
30
- Cada área tem seu agente especializado. Perfis completos em `.github/agents/`.
31
-
32
- | Área | Agente | Perfil | Modelo |
33
- |------|--------|--------|--------|
34
- | BANCO | DB Coder | `agents/db-coder.md` | Sonnet (S/M) / Opus (L) |
35
- | BACK | Backend Coder | `agents/backend-coder.md` | Sonnet (S/M) / Opus (L) |
36
- | FRONT | Frontend Coder | `agents/frontend-coder.md` | Sonnet (S/M) / Opus (L) |
37
- | INFRA | Infra Coder | `agents/infra-coder.md` | Sonnet (S/M) / Opus (L) |
38
- | DOC | Doc Writer | `agents/doc-writer.md` | Sonnet |
39
- | — | Reviewer | `agents/reviewer.md` | Sonnet |
40
- | — | Security Reviewer | `agents/security-reviewer.md` | Opus |
41
-
42
- O agente é selecionado pelo prefixo da task: `BANCO-*` → DB Coder, `BACK-*` → Backend Coder, etc.
43
-
44
- ---
45
-
46
- ## Pré-condições
47
-
48
- | # | Validação | Se falhar |
49
- |---|-----------|-----------|
50
- | 1 | Argumento `nome` foi informado | Parar → "Informe o nome. Ex: /sf-dev feat_cadastro_cliente" |
51
- | 2 | `.context.md` existe com status `plan_done` ou `dev_in_progress` | Se anterior → "Execute /sf-plan {nome} primeiro" |
52
- | 3 | `*_tasks.md` e `Progresso.md` existem | Parar → "Tasks não encontradas. Execute /sf-plan {nome}" |
53
- | 4 | `sdd.md` existe | Parar → "SDD não encontrado" |
54
- | 5 | `.github/rules.md` existe | Parar → "rules.md não encontrado" |
55
- | 6 | `projetos.yaml` existe na raiz | Parar → "Execute /sf-design primeiro (gera projetos.yaml)" |
56
- | 7 | Infra local rodando (`docker compose ps` → containers healthy) | Parar → "Suba a infra primeiro: `docker compose up -d` e aguarde healthy" |
57
-
58
- > **Nota**: A validação #7 verifica se os containers de infra (banco, redis, etc.) estão rodando.
59
- > Não valida apps (api, web) — essas são iniciadas durante o /dev.
60
-
61
- ## Modalidades
62
-
63
- | Modo | Comando | Comportamento |
64
- |------|---------|---------------|
65
- | **Por fase** | `/sf-dev feat_nome --fase 1` | Todas tasks da fase de entrega (RECOMENDADO) |
66
- | **Completo** | `/sf-dev feat_nome` | Executa todas tasks pendentes, respeitando ordem de fases |
67
- | **Por área** | `/sf-dev feat_nome --area banco` | Só tasks da área especificada |
68
- | **Task individual** | `/sf-dev feat_nome --task BACK-003` | Só a task especificada (valida dependências) |
69
-
70
- > **Recomendado**: Usar `--fase N` para desenvolvimento incremental. Cada fase gera 1 PR.
71
-
72
- ---
73
-
74
- ## Fluxo de Execução
75
-
76
- ```
77
- /sf-dev feat_nome
78
-
79
- │ ╔═══════════════════════════════════════════════╗
80
- │ ║ LOOP POR TASK ║
81
- │ ║ ║
82
- │ ║ 1. Selecionar agente pela área (BACK-* etc) ║
83
- │ ║ 2. Agente implementa código + testes unit ║
84
- │ ║ 3. Rodar testes unit ║
85
- │ ║ → Falhou? Agente corrige → volta pro 3 ║
86
- │ ║ 4. Rodar lint ║
87
- │ ║ → Falhou? Agente corrige → volta pro 4 ║
88
- │ ║ 5. Commit: tipo(TASK-ID): descrição ║
89
- │ ║ 6. Reviewer valida quality gate ║
90
- │ ║ → Reprovado? Agente corrige → volta pro 3 ║
91
- │ ║ → 3 reprovações? Escalar pro usuário ║
92
- │ ║ 7. Marcar task concluída ✅ ║
93
- │ ║ 8. Atualizar Progresso.md ║
94
- │ ╚═══════════════════════════════════════════════╝
95
- │ ↓ (todas tasks da fase concluídas)
96
- │ ╔═══════════════════════════════════════════════╗
97
- │ ║ VALIDAÇÃO POR FASE ║
98
- │ ║ ║
99
- │ ║ 1. Rodar testes integration da área/fase ║
100
- │ ║ → Falhou? Criar fix inline → loop ║
101
- │ ║ 2. Fase aprovada → próxima fase ║
102
- │ ╚═══════════════════════════════════════════════╝
103
- │ ↓ (todas fases/áreas concluídas)
104
- │ ╔═══════════════════════════════════════════════╗
105
- │ ║ SECURITY REVIEW (cross-area) ║
106
- │ ║ ║
107
- │ ║ 1. Security Reviewer audita todo código ║
108
- │ ║ → CRÍTICO/ALTO? Coder corrige → re-audit ║
109
- │ ║ → 2 falhas? Escalar pro usuário ║
110
- │ ║ 2. Aprovado → prosseguir para E2E ║
111
- │ ╚═══════════════════════════════════════════════╝
112
- │ ↓ (security aprovado)
113
- │ ╔═══════════════════════════════════════════════╗
114
- │ ║ VALIDAÇÃO POR FEATURE ║
115
- │ ║ ║
116
- │ ║ 1. Rodar testes E2E (SDD §9.3 CAs)
117
- │ ║ → Falhou? Identificar task → fix → loop ║
118
- │ ║ 2. Todos CAs passam? → prosseguir ║
119
- │ ╚═══════════════════════════════════════════════╝
120
- │ ↓ (E2E aprovado, só features)
121
- │ ╔═══════════════════════════════════════════════╗
122
- │ ║ MERGE-DELTA (automático, só features) ║
123
- │ ║ ║
124
- │ ║ 1. Ler SDD §11 (Delta Specs) ║
125
- │ ║ 2. Aplicar ADDED/MODIFIED/REMOVED em ║
126
- │ ║ docs/ ║
127
- │ ║ 3. Registrar changelog em cada doc alterado ║
128
- │ ║ 4. dev_done ✅ ║
129
- │ ╚═══════════════════════════════════════════════╝
130
- ```
131
-
132
- ---
133
-
134
- ## Passos detalhados
135
-
136
- ### 1. Carregar contexto
137
- - Ler `.context.md` → validar status
138
- - Ler `projetos.yaml` → mapeamento área → repo → path local
139
- - Ler `Progresso.md` → ordem de execução e estado atual
140
- - Ler `rules.md` → convenções
141
- - Ler `sdd.md` → fonte de verdade (§9 para estratégia de testes)
142
- - Carregar perfil do agente correspondente à área
143
- - Validar que repos em `projetos/` existem (se não, INFRA-001 ainda não rodou)
144
-
145
- ### 2. Preparar repos (multi-repo)
146
-
147
- #### 2a. Verificar working tree (OBRIGATÓRIO)
148
- Em cada repo que será afetado:
149
- - `git status` — verificar se há mudanças pendentes
150
- - Se working tree sujo → sugerir commit ou stash antes de prosseguir
151
- - NUNCA começar a codar com working tree sujo
152
-
153
- #### 2b. INFRA-001 (setup primeira execução)
154
- No setup, INFRA-001 é responsável por criar/clonar os repos:
155
- - Ler `projetos.yaml`para cada repo:
156
- - Se `existing: true` `git clone {repo} projetos/{name}`
157
- - Se `existing: false` → criar repo no GitHub (`gh repo create {repo} --private`) + clone local
158
- - Criar estrutura base em cada repo (conforme stack: .NET → `dotnet new`, React → `create-react-app`, etc.)
159
- - Criar `projetos/.gitkeep` na raiz (pasta existe mas conteúdo é ignorado)
160
-
161
- #### 2c. Branch por fase (NUNCA na main)
162
- Para cada repo que será afetado por esta fase:
163
- - `cd projetos/{repo_path}`
164
- - `git checkout main && git pull origin main` (garantir main atualizada)
165
- - `git checkout -b feature/{nome}_fase{N}` (se branch não existe)
166
- - Se branch existe `git checkout feature/{nome}_fase{N}`
167
- - NUNCA desenvolver direto na main
168
-
169
- #### 2c. Resolver próxima task
170
- - Filtrar tasks pendentes (`- [ ]`) conforme modalidade
171
- - Ler campo `Repo:` da task identificar em qual repo trabalhar
172
- - Validar dependências: todas tasks em `Depende:` devem estar `- [x]`
173
- - Se dependência pendente → listar o que falta
174
-
175
- ### 3. Loop por task
176
-
177
- #### 3a. Implementar
178
- - Ler campo `Repo:` da task navegar para `projetos/{repo_path}/`
179
- - Selecionar agente pela área da task (BACK-* → Backend Coder)
180
- - Selecionar modelo pelo tamanho (S/M → Sonnet, L → Opus)
181
- - Input para o agente:
182
- - Task completa (ID, título, arquivos, SDD ref, dependências)
183
- - Seções do SDD referenciadas (apenas as seções necessárias)
184
- - Perfil do agente (`.github/agents/*.md`)
185
- - `rules.md`
186
- - **Working directory**: `projetos/{repo_path}/` (caminhos de arquivo são relativos ao repo)
187
- - Agente implementa código **E testes unit** na mesma task
188
-
189
- #### 3b. Test loop
190
- ```
191
- Rodar testes unit passou? continuar
192
- falhou? agente analisa erro corrige rodar de novo
193
- → 5 falhas seguidas? → parar, reportar ao usuário
194
- ```
195
-
196
- #### 3c. Lint
197
- ```
198
- Rodar lint passou? → continuar
199
- → falhou? → agente corrige → rodar de novo
200
- ```
201
-
202
- #### 3d. Commit (no repo do serviço)
203
- - Working directory: `projetos/{repo_path}/`
204
- - `git add` + `git commit -m "tipo(TASK-ID): descrição curta"`
205
- - Commit acontece no repo do serviço, NÃO no projeto-base
206
- - Corpo opcional se Senior Coder tomou decisão (mini-ADR)
207
-
208
- #### 3e. Review
209
- - Spawn Reviewer (Sonnet) com: código + testes + quality gate checklist
210
- - Se APROVADO marcar task `- [x]`, atualizar Progresso.md
211
- - Se REPROVADO agente recebe problemas, corrige, volta pro 3b
212
- - Limite: **3 reprovações** → escalar pro usuário
213
-
214
- ### 4. Validação por fase
215
- Ao concluir todas tasks de uma fase:
216
- - Rodar testes integration da área (SDD §9.1)
217
- - Se falhouidentificar causa, corrigir no código da task afetada, recommit
218
- - Se passou → avançar pra próxima fase
219
-
220
- ### 5. Security Review (cross-area)
221
- Ao concluir todas tasks de todas áreas, ANTES dos testes E2E:
222
- - Spawn Security Reviewer (Opus) com: todo código produzido + SDD §5 + conventions.md
223
- - Audita 6 categorias: Auth, AuthZ, Injeção, Dados Sensíveis, Headers, Banco
224
- - Se findings CRÍTICO ou ALTO:
225
- - Identificar área responsável (BACK, FRONT, BANCO, INFRA)
226
- - Coder da área corrige recommit
227
- - Security Reviewer reavalia apenas os findings
228
- - Se aprovado prosseguir para E2E
229
- - Limite: **2 tentativas** escalar pro usuário
230
-
231
- ### 6. Validação por feature
232
- Ao concluir security review com aprovação:
233
- - Rodar testes E2E (SDD §9.3 — cada CA deve ter teste correspondente)
234
- - Se falhou:
235
- - Identificar qual CA falhou
236
- - Mapear pra task/área responsável
237
- - Criar fix inline (não cria nova task)
238
- - Rodar E2E de novo
239
- - Se passou → prosseguir para merge-delta (features) ou dev_done (setup)
240
-
241
- ### 7. Finalizar fase — PR + ambiente ON
242
- Ao concluir todos testes da fase:
243
-
244
- 1. **Atualizar Progresso.md** com status da fase
245
- 2. **Push da branch** em cada repo afetado:
246
- ```bash
247
- cd projetos/{repo_path}
248
- git push origin feature/{nome}_fase{N}
249
- ```
250
- 3. **Abrir PR** em cada repo com template detalhado (ver `rules.md` → Template de PR):
251
- - Tasks concluídas, testes passando, como testar manualmente
252
- - Usar `gh pr create`
253
- 4. **Deixar ambiente local rodando**:
254
- - `docker compose up -d` (infra)
255
- - `dotnet run` / `npm run dev` (apps)
256
- - Informar URLs ao usuário
257
- 5. **PARAR e aguardar** — o usuário testa manualmente e aprova o PR
258
- - O agente NUNCA faz merge — merge é manual pelo usuário
259
- - Se o usuário pedir ajustes → corrigir na mesma branch, push, atualizar PR
260
-
261
- ### 8. Após merge (quando usuário confirmar)
262
- ```bash
263
- # Em cada repo afetado:
264
- cd projetos/{repo_path}
265
- git checkout main
266
- git pull origin main
267
- git branch -d feature/{nome}_fase{N}
268
- git remote prune origin
269
- ```
270
-
271
- ### 9. Merge-Delta automático (só features)
272
-
273
- Após E2E aprovado, SE `.context.md` tipo = `feature`:
274
- 1. Ler SDD §11 (seção Delta Specs: ADDED/MODIFIED/REMOVED)
275
- 2. Para cada delta, mapear para o doc de `docs/` correspondente
276
- 3. Aplicar as mudanças (adicionar, modificar ou remover seções)
277
- 4. Registrar changelog em cada doc alterado: `| {{DATA}} | {{NOME}} | {{TIPO}} | {{DESCRIÇÃO}} |`
278
- 5. Validar consistência cross-doc (ex: endpoint no apiContracts.md referencia tabela no domain.md)
279
-
280
- Se tipo = `setup` pular (docs/ foi criado pelo /design).
281
-
282
- > O `/sf-merge-delta` continua existindo como skill atômica para re-execução manual se necessário.
283
-
284
- ### 10. Atualizar `.context.md`
285
- ```yaml
286
- status: "dev_in_progress" # durante execução
287
- # ou
288
- status: "dev_done" # todas fases + integration + security + E2E + merge-delta
289
- ultima_skill: "/sf-dev"
290
- atualizado_em: "{{ISO_DATETIME}}"
291
- ```
292
-
293
- ---
294
-
295
- ## Limites de retry
296
-
297
- | Nível | Limite | Ação ao exceder |
298
- |-------|--------|-----------------|
299
- | Test loop (unit) | 5 tentativas por task | Parar, reportar erro persistente |
300
- | Review loop | 3 reprovações por task | Parar, escalar pro usuário |
301
- | Integration fix | 3 tentativas por fase | Parar, reportar ao usuário |
302
- | Security fix | 2 tentativas por feature | Parar, escalar findings não resolvidos |
303
- | E2E fix | 3 tentativas por feature | Parar, reportar ao usuário |
304
-
305
- Mensagem de escalação:
306
- ```
307
- ⚠️ Task {ID} não passou após {N} tentativas.
308
- Problemas persistentes:
309
- 1. ...
310
- 2. ...
311
- Ação necessária: revisar SDD ou intervir manualmente.
312
- ```
313
-
314
- ---
315
-
316
- ## Saídas
317
-
318
- | Saída | Descrição |
319
- |-------|-----------|
320
- | Código implementado | Em `projetos/{repo}/` — arquivos criados/modificados conforme tasks |
321
- | Testes | Unit + integration + E2E nos repos correspondentes |
322
- | Commits | 1 commit por task no repo do serviço: `tipo(TASK-ID): descrição` |
323
- | Branches | `feature/{nome}` criado em cada repo afetado |
324
- | `*_tasks.md` | Tasks marcadas como concluídas (no projeto-base) |
325
- | `Progresso.md` | Atualizado com status real (no projeto-base) |
326
- | `progresso.md` (global) | Atualizado (no projeto-base) |
327
- | `.context.md` | Status atualizado (no projeto-base) |
328
-
329
- ## Pós-condições
330
- - Todas tasks concluídas = status `dev_done`
331
- - Quality gate aprovado em cada task
332
- - Integration tests passam por fase
333
- - Security Review aprovado (zero findings CRÍTICO/ALTO)
334
- - E2E tests passam por feature (todos CAs do SDD §9.3)
335
- - Merge-delta aplicado automaticamente (features) docs/ atualizado
336
-
337
- ## Erros
338
-
339
- | Erro | Ação |
340
- |------|------|
341
- | Nome não informado | Parar, mostrar exemplo |
342
- | Status anterior a plan_done | Parar, sugerir skill correspondente |
343
- | Dependência não concluída | Parar, listar dependências pendentes |
344
- | Test loop excedeu limite | Parar, reportar erro + stack trace |
345
- | Review excedeu 3 tentativas | Parar, escalar com lista de problemas |
346
- | Integration/E2E persistente | Parar, reportar CAs que falharam |
347
- | SDD ambíguo | Parar, reportar ambiguidade |
348
- | --task com ID inexistente | Parar, listar tasks disponíveis |
349
- | --area com área inexistente | Parar, listar áreas disponíveis |
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
+ # Skill: /sf-dev
12
+
13
+ > Skill atômica de execução. Implementa tasks em loop (implement → test → fix → review)
14
+ > até quality gate aprovado, depois valida integração e E2E por feature.
15
+
16
+ ## Tipo
17
+ Atômica — Multi-agent (agentes especializados por área)
18
+
19
+ ## Uso
20
+ ```
21
+ /sf-dev <nome>
22
+ /sf-dev <nome> --area banco
23
+ /sf-dev <nome> --task BACK-003
24
+ ```
25
+
26
+ ---
27
+
28
+ ## Agentes
29
+
30
+ Cada área tem seu agente especializado. Perfis completos em `.github/agents/`.
31
+
32
+ | Área | Agente | Perfil | Modelo |
33
+ |------|--------|--------|--------|
34
+ | BANCO | DB Coder | `agents/db-coder.md` | Sonnet (S/M) / Opus (L) |
35
+ | BACK | Backend Coder | `agents/backend-coder.md` | Sonnet (S/M) / Opus (L) |
36
+ | FRONT | Frontend Coder | `agents/frontend-coder.md` | Sonnet (S/M) / Opus (L) |
37
+ | INFRA | Infra Coder | `agents/infra-coder.md` | Sonnet (S/M) / Opus (L) |
38
+ | DOC | Doc Writer | `agents/doc-writer.md` | Sonnet |
39
+ | — | Reviewer | `agents/reviewer.md` | Sonnet |
40
+ | — | Security Reviewer | `agents/security-reviewer.md` | Opus |
41
+
42
+ O agente é selecionado pelo prefixo da task: `BANCO-*` → DB Coder, `BACK-*` → Backend Coder, etc.
43
+
44
+ ---
45
+
46
+ ## Pré-condições
47
+
48
+ | # | Validação | Se falhar |
49
+ |---|-----------|-----------|
50
+ | 1 | Argumento `nome` foi informado | Parar → "Informe o nome. Ex: /sf-dev feat_cadastro_cliente" |
51
+ | 2 | `.context.md` existe com status `plan_done` ou `dev_in_progress` | Se anterior → "Execute /sf-plan {nome} primeiro" |
52
+ | 3 | `specs/{nome}/tasks.md` e `workspace/Output/{nome}/Progresso.md` existem | Parar → "Tasks não encontradas. Execute /sf-plan {nome}" |
53
+ | 4 | `specs/{nome}/` populado (brief, contracts, scenarios, tasks) | Parar → "Projeções do SDD não encontradas. Execute /sf-design {nome}" |
54
+ | 5 | `.github/rules.md` existe | Parar → "rules.md não encontrado" |
55
+ | 6 | `projetos.yaml` existe na raiz | Parar → "Execute /sf-design primeiro (gera projetos.yaml)" |
56
+ | 7 | Infra local rodando (`docker compose ps` → containers healthy) | Parar → "Suba a infra primeiro: `docker compose up -d` e aguarde healthy" |
57
+
58
+ > **Nota**: A validação #7 verifica se os containers de infra (banco, redis, etc.) estão rodando.
59
+ > Não valida apps (api, web) — essas são iniciadas durante o /dev.
60
+
61
+ ## Modalidades
62
+
63
+ | Modo | Comando | Comportamento |
64
+ |------|---------|---------------|
65
+ | **Por fase** | `/sf-dev feat_nome --fase 1` | Todas tasks da fase de entrega (RECOMENDADO) |
66
+ | **Completo** | `/sf-dev feat_nome` | Executa todas tasks pendentes, respeitando ordem de fases |
67
+ | **Por área** | `/sf-dev feat_nome --area banco` | Só tasks da área especificada |
68
+ | **Task individual** | `/sf-dev feat_nome --task BACK-003` | Só a task especificada (valida dependências) |
69
+
70
+ > **Recomendado**: Usar `--fase N` para desenvolvimento incremental. Cada fase gera 1 PR.
71
+
72
+ ---
73
+
74
+ ## Fluxo de Execução
75
+
76
+ ```
77
+ /sf-dev feat_nome
78
+
79
+ │ ╔═══════════════════════════════════════════════╗
80
+ │ ║ LOOP POR TASK ║
81
+ │ ║ ║
82
+ │ ║ 1. Selecionar agente pela área (BACK-* etc) ║
83
+ │ ║ 2. Agente implementa código + testes unit ║
84
+ │ ║ 3. Rodar testes unit ║
85
+ │ ║ → Falhou? Agente corrige → volta pro 3 ║
86
+ │ ║ 4. Rodar lint ║
87
+ │ ║ → Falhou? Agente corrige → volta pro 4 ║
88
+ │ ║ 5. Commit: tipo(TASK-ID): descrição ║
89
+ │ ║ 6. Reviewer valida quality gate ║
90
+ │ ║ → Reprovado? Agente corrige → volta pro 3 ║
91
+ │ ║ → 3 reprovações? Escalar pro usuário ║
92
+ │ ║ 7. Marcar task concluída ✅ ║
93
+ │ ║ 8. Atualizar Progresso.md ║
94
+ │ ╚═══════════════════════════════════════════════╝
95
+ │ ↓ (todas tasks da fase concluídas)
96
+ │ ╔═══════════════════════════════════════════════╗
97
+ │ ║ VALIDAÇÃO POR FASE ║
98
+ │ ║ ║
99
+ │ ║ 1. Rodar testes integration da área/fase ║
100
+ │ ║ → Falhou? Criar fix inline → loop ║
101
+ │ ║ 2. Fase aprovada → próxima fase ║
102
+ │ ╚═══════════════════════════════════════════════╝
103
+ │ ↓ (todas fases/áreas concluídas)
104
+ │ ╔═══════════════════════════════════════════════╗
105
+ │ ║ SECURITY REVIEW (cross-area) ║
106
+ │ ║ ║
107
+ │ ║ 1. Security Reviewer audita todo código ║
108
+ │ ║ → CRÍTICO/ALTO? Coder corrige → re-audit ║
109
+ │ ║ → 2 falhas? Escalar pro usuário ║
110
+ │ ║ 2. Aprovado → prosseguir para E2E ║
111
+ │ ╚═══════════════════════════════════════════════╝
112
+ │ ↓ (security aprovado)
113
+ │ ╔═══════════════════════════════════════════════╗
114
+ │ ║ VALIDAÇÃO POR FEATURE ║
115
+ │ ║ ║
116
+ │ ║ 1. Rodar testes E2E (scenarios.md CAs)
117
+ │ ║ → Falhou? Identificar task → fix → loop ║
118
+ │ ║ 2. Todos CAs passam? → prosseguir ║
119
+ │ ╚═══════════════════════════════════════════════╝
120
+ │ ↓ (E2E aprovado, só features)
121
+ │ ╔═══════════════════════════════════════════════╗
122
+ │ ║ MERGE-DELTA (automático, só features) ║
123
+ │ ║ ║
124
+ │ ║ 1. Ler SDD §11 (Delta Specs) ║
125
+ │ ║ 2. Aplicar ADDED/MODIFIED/REMOVED em ║
126
+ │ ║ docs/ ║
127
+ │ ║ 3. Registrar changelog em cada doc alterado ║
128
+ │ ║ 4. dev_done ✅ ║
129
+ │ ╚═══════════════════════════════════════════════╝
130
+ ```
131
+
132
+ ---
133
+
134
+ ## Passos detalhados
135
+
136
+ ### 1. Carregar contexto
137
+ - Ler `.context.md` → validar status
138
+ - Ler `projetos.yaml` → mapeamento área → repo → path local
139
+ - Ler `workspace/Output/{nome}/Progresso.md` → ordem de execução e estado atual
140
+ - Ler `.github/rules.md` → convenções
141
+ - Ler `specs/{nome}/brief.md` → contexto do que está sendo construído
142
+ - Ler `specs/{nome}/contracts.md` contratos de dados, API, integrações
143
+ - Ler `specs/{nome}/scenarios.md` fluxos, UI, critérios de aceite (CAs)
144
+ - Ler `specs/{nome}/tasks.md` → tabela única de tasks
145
+ - Carregar perfil do agente correspondente à área da task
146
+ - Validar que repos em `projetos/` existem (se não, INFRA-001 ainda não rodou)
147
+
148
+ **Regra**: o coder NUNCA o SDD direto (`workspace/Output/{nome}/sdd.md`). O SDD é narrativo pro humano. Os agents leem apenas as projeções em `specs/{nome}/`.
149
+
150
+ ### 2. Preparar repos (multi-repo)
151
+
152
+ #### 2a. Verificar working tree (OBRIGATÓRIO)
153
+ Em cada repo que será afetado:
154
+ - `git status` verificar se mudanças pendentes
155
+ - Se working tree sujo sugerir commit ou stash antes de prosseguir
156
+ - NUNCA começar a codar com working tree sujo
157
+
158
+ #### 2b. INFRA-001 (setup primeira execução)
159
+ No setup, INFRA-001 é responsável por criar/clonar os repos:
160
+ - Ler `projetos.yaml` → para cada repo:
161
+ - Se `existing: true` `git clone {repo} projetos/{name}`
162
+ - Se `existing: false` → criar repo no GitHub (`gh repo create {repo} --private`) + clone local
163
+ - Criar estrutura base em cada repo (conforme stack: .NET → `dotnet new`, React → `create-react-app`, etc.)
164
+ - Criar `projetos/.gitkeep` na raiz (pasta existe mas conteúdo é ignorado)
165
+
166
+ #### 2c. Branch por fase (NUNCA na main)
167
+ Para cada repo que será afetado por esta fase:
168
+ - `cd projetos/{repo_path}`
169
+ - `git checkout main && git pull origin main` (garantir main atualizada)
170
+ - `git checkout -b feature/{nome}_fase{N}` (se branch não existe)
171
+ - Se branch existe`git checkout feature/{nome}_fase{N}`
172
+ - NUNCA desenvolver direto na main
173
+
174
+ #### 2c. Resolver próxima task
175
+ - Filtrar tasks pendentes (`- [ ]`) conforme modalidade
176
+ - Ler campo `Repo:` da task → identificar em qual repo trabalhar
177
+ - Validar dependências: todas tasks em `Depende:` devem estar `- [x]`
178
+ - Se dependência pendente listar o que falta
179
+
180
+ ### 3. Loop por task
181
+
182
+ #### 3a. Implementar
183
+ - Ler campo `Repo:` da task navegar para `projetos/{repo_path}/`
184
+ - Selecionar agente pela área da task (BACK-* → Backend Coder)
185
+ - Selecionar modelo pelo tamanho (S/M → Sonnet, L → Opus)
186
+ - Input para o agente:
187
+ - Task completa (ID, título, arquivos, SDD ref, dependências)
188
+ - Seções do SDD referenciadas (apenas as seções necessárias)
189
+ - Perfil do agente (`.github/agents/*.md`)
190
+ - `rules.md`
191
+ - **Working directory**: `projetos/{repo_path}/` (caminhos de arquivo são relativos ao repo)
192
+ - Agente implementa código **E testes unit** na mesma task
193
+
194
+ #### 3b. Test loop
195
+ ```
196
+ Rodar testes unit → passou? → continuar
197
+ → falhou? → agente analisa erro → corrige → rodar de novo
198
+ 5 falhas seguidas? → parar, reportar ao usuário
199
+ ```
200
+
201
+ #### 3c. Lint
202
+ ```
203
+ Rodar lint passou? → continuar
204
+ falhou? agente corrige rodar de novo
205
+ ```
206
+
207
+ #### 3d. Commit (no repo do serviço)
208
+ - Working directory: `projetos/{repo_path}/`
209
+ - `git add` + `git commit -m "tipo(TASK-ID): descrição curta"`
210
+ - Commit acontece no repo do serviço, NÃO no projeto-base
211
+ - Corpo opcional se Senior Coder tomou decisão (mini-ADR)
212
+
213
+ #### 3e. Review
214
+ - Spawn Reviewer (Sonnet) com: código + testes + quality gate checklist
215
+ - Se APROVADO marcar task `- [x]`, atualizar Progresso.md
216
+ - Se REPROVADO agente recebe problemas, corrige, volta pro 3b
217
+ - Limite: **3 reprovações** escalar pro usuário
218
+
219
+ ### 4. Validação por fase
220
+ Ao concluir todas tasks de uma fase:
221
+ - Rodar testes integration da área (scenarios.md estratégia de testes)
222
+ - Se falhou identificar causa, corrigir no código da task afetada, recommit
223
+ - Se passou avançar pra próxima fase
224
+
225
+ ### 5. Security Review (cross-area)
226
+ Ao concluir todas tasks de todas áreas, ANTES dos testes E2E:
227
+ - Spawn Security Reviewer (Opus) com: todo código produzido + specs/{nome}/contracts.md (endpoints/auth) + docs/conventions.md
228
+ - Audita 6 categorias: Auth, AuthZ, Injeção, Dados Sensíveis, Headers, Banco
229
+ - Se findings CRÍTICO ou ALTO:
230
+ - Identificar área responsável (BACK, FRONT, BANCO, INFRA)
231
+ - Coder da área corrige → recommit
232
+ - Security Reviewer reavalia apenas os findings
233
+ - Se aprovado prosseguir para E2E
234
+ - Limite: **2 tentativas** → escalar pro usuário
235
+
236
+ ### 6. Validação por feature
237
+ Ao concluir security review com aprovação:
238
+ - Rodar testes E2E (cada CA de `specs/{nome}/scenarios.md` deve ter teste correspondente)
239
+ - Se falhou:
240
+ - Identificar qual CA falhou
241
+ - Mapear pra task/área responsável
242
+ - Criar fix inline (não cria nova task)
243
+ - Rodar E2E de novo
244
+ - Se passou prosseguir para merge-delta (features) ou dev_done (setup)
245
+
246
+ ### 7. Finalizar fase — PR + ambiente ON
247
+ Ao concluir todos testes da fase:
248
+
249
+ 1. **Atualizar Progresso.md** com status da fase
250
+ 2. **Push da branch** em cada repo afetado:
251
+ ```bash
252
+ cd projetos/{repo_path}
253
+ git push origin feature/{nome}_fase{N}
254
+ ```
255
+ 3. **Abrir PR** em cada repo com template detalhado (ver `rules.md` → Template de PR):
256
+ - Tasks concluídas, testes passando, como testar manualmente
257
+ - Usar `gh pr create`
258
+ 4. **Deixar ambiente local rodando**:
259
+ - `docker compose up -d` (infra)
260
+ - `dotnet run` / `npm run dev` (apps)
261
+ - Informar URLs ao usuário
262
+ 5. **PARAR e aguardar** — o usuário testa manualmente e aprova o PR
263
+ - O agente NUNCA faz merge — merge é manual pelo usuário
264
+ - Se o usuário pedir ajustes → corrigir na mesma branch, push, atualizar PR
265
+
266
+ ### 8. Após merge (quando usuário confirmar)
267
+ ```bash
268
+ # Em cada repo afetado:
269
+ cd projetos/{repo_path}
270
+ git checkout main
271
+ git pull origin main
272
+ git branch -d feature/{nome}_fase{N}
273
+ git remote prune origin
274
+ ```
275
+
276
+ ### 9. Merge-Delta automático ( features)
277
+
278
+ Após E2E aprovado, SE `.context.md` tipo = `feature`:
279
+ 1. Ler `workspace/Output/{nome}/sdd.md` §11 (seção Delta Specs: ADDED/MODIFIED/REMOVED) — esta é a ÚNICA leitura do SDD direto pelo pipeline, porque deltas são fonte humana
280
+ 2. Para cada delta, mapear para o doc de `docs/` correspondente
281
+ 3. Aplicar as mudanças (adicionar, modificar ou remover seções)
282
+ 4. Registrar changelog em cada doc alterado: `| {{DATA}} | {{NOME}} | {{TIPO}} | {{DESCRIÇÃO}} |`
283
+ 5. Validar consistência cross-doc (ex: endpoint no apiContracts.md referencia tabela no domain.md)
284
+
285
+ Se tipo = `setup` → pular (docs/ já foi criado pelo /design).
286
+
287
+ > O `/sf-merge-delta` continua existindo como skill atômica para re-execução manual se necessário.
288
+
289
+ ### 10. Atualizar `.context.md`
290
+ ```yaml
291
+ status: "dev_in_progress" # durante execução
292
+ # ou
293
+ status: "dev_done" # todas fases + integration + security + E2E + merge-delta
294
+ ultima_skill: "/sf-dev"
295
+ atualizado_em: "{{ISO_DATETIME}}"
296
+ ```
297
+
298
+ ---
299
+
300
+ ## Limites de retry
301
+
302
+ | Nível | Limite | Ação ao exceder |
303
+ |-------|--------|-----------------|
304
+ | Test loop (unit) | 5 tentativas por task | Parar, reportar erro persistente |
305
+ | Review loop | 3 reprovações por task | Parar, escalar pro usuário |
306
+ | Integration fix | 3 tentativas por fase | Parar, reportar ao usuário |
307
+ | Security fix | 2 tentativas por feature | Parar, escalar findings não resolvidos |
308
+ | E2E fix | 3 tentativas por feature | Parar, reportar ao usuário |
309
+
310
+ Mensagem de escalação:
311
+ ```
312
+ ⚠️ Task {ID} não passou após {N} tentativas.
313
+ Problemas persistentes:
314
+ 1. ...
315
+ 2. ...
316
+ Ação necessária: revisar SDD ou intervir manualmente.
317
+ ```
318
+
319
+ ---
320
+
321
+ ## Saídas
322
+
323
+ | Saída | Descrição |
324
+ |-------|-----------|
325
+ | Código implementado | Em `projetos/{repo}/` arquivos criados/modificados conforme tasks |
326
+ | Testes | Unit + integration + E2E nos repos correspondentes |
327
+ | Commits | 1 commit por task no repo do serviço: `tipo(TASK-ID): descrição` |
328
+ | Branches | `feature/{nome}` criado em cada repo afetado |
329
+ | `workspace/Output/{nome}/Progresso.md` | Tasks marcadas como concluídas (no projeto-base) |
330
+ | `Progresso.md` | Atualizado com status real (no projeto-base) |
331
+ | `progresso.md` (global) | Atualizado (no projeto-base) |
332
+ | `.context.md` | Status atualizado (no projeto-base) |
333
+
334
+ ## Pós-condições
335
+ - Todas tasks concluídas = status `dev_done`
336
+ - Quality gate aprovado em cada task
337
+ - Integration tests passam por fase
338
+ - Security Review aprovado (zero findings CRÍTICO/ALTO)
339
+ - E2E tests passam por feature (todos CAs do `specs/{nome}/scenarios.md`)
340
+ - Merge-delta aplicado automaticamente (features) — docs/ atualizado
341
+
342
+ ## Erros
343
+
344
+ | Erro | Ação |
345
+ |------|------|
346
+ | Nome não informado | Parar, mostrar exemplo |
347
+ | Status anterior a plan_done | Parar, sugerir skill correspondente |
348
+ | Dependência não concluída | Parar, listar dependências pendentes |
349
+ | Test loop excedeu limite | Parar, reportar erro + stack trace |
350
+ | Review excedeu 3 tentativas | Parar, escalar com lista de problemas |
351
+ | Integration/E2E persistente | Parar, reportar CAs que falharam |
352
+ | SDD ambíguo | Parar, reportar ambiguidade |
353
+ | --task com ID inexistente | Parar, listar tasks disponíveis |
354
+ | --area com área inexistente | Parar, listar áreas disponíveis |