spec-first-copilot 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/README.md +148 -148
  2. package/bin/cli.js +52 -52
  3. package/lib/init.js +89 -93
  4. package/package.json +24 -23
  5. package/templates/.ai/memory/napkin.md +68 -68
  6. package/templates/.github/agents/backend-coder.md +215 -215
  7. package/templates/.github/agents/db-coder.md +165 -165
  8. package/templates/.github/agents/doc-writer.md +51 -51
  9. package/templates/.github/agents/frontend-coder.md +222 -222
  10. package/templates/.github/agents/infra-coder.md +341 -341
  11. package/templates/.github/agents/reviewer.md +99 -99
  12. package/templates/.github/agents/security-reviewer.md +153 -153
  13. package/templates/.github/copilot-instructions.md +175 -176
  14. package/templates/.github/instructions/docs.instructions.md +123 -123
  15. package/templates/.github/instructions/sensitive-files.instructions.md +32 -32
  16. package/templates/.github/skills/sf-design/SKILL.md +181 -181
  17. package/templates/.github/skills/sf-dev/SKILL.md +349 -326
  18. package/templates/.github/skills/sf-extract/SKILL.md +284 -284
  19. package/templates/.github/skills/sf-feature/SKILL.md +130 -130
  20. package/templates/.github/skills/sf-merge-delta/SKILL.md +142 -142
  21. package/templates/.github/skills/sf-plan/SKILL.md +178 -178
  22. package/templates/.github/skills/{sf-pausar → sf-session-finish}/SKILL.md +120 -120
  23. package/templates/.github/skills/sf-setup-projeto/SKILL.md +123 -123
  24. package/templates/docs/Desenvolvimento/rules.md +229 -229
  25. package/templates/docs/_templates/estrutura/ADRs.template.md +91 -91
  26. package/templates/docs/_templates/estrutura/API.template.md +144 -144
  27. package/templates/docs/_templates/estrutura/Arquitetura.template.md +82 -82
  28. package/templates/docs/_templates/estrutura/Infraestrutura.template.md +104 -104
  29. package/templates/docs/_templates/estrutura/Modelo_Dados.template.md +99 -99
  30. package/templates/docs/_templates/estrutura/Seguranca.template.md +138 -138
  31. package/templates/docs/_templates/estrutura/Stack.template.md +78 -78
  32. package/templates/docs/_templates/estrutura/Visao.template.md +82 -82
  33. package/templates/docs/_templates/feature/Progresso.template.md +136 -136
  34. package/templates/docs/_templates/feature/backlog-extraido.template.md +154 -154
  35. package/templates/docs/_templates/feature/context.template.md +42 -42
  36. package/templates/docs/_templates/feature/extract-log.template.md +38 -38
  37. package/templates/docs/_templates/feature/projetos.template.yaml +73 -73
  38. package/templates/docs/_templates/global/progresso_global.template.md +57 -57
@@ -1,326 +1,349 @@
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 | `docs/Desenvolvimento/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? → dev_done ✅
119
- │ ╚═══════════════════════════════════════════════╝
120
- ```
121
-
122
- ---
123
-
124
- ## Passos detalhados
125
-
126
- ### 1. Carregar contexto
127
- - Ler `.context.md` validar status
128
- - Ler `projetos.yaml` mapeamento área → repo → path local
129
- - Ler `Progresso.md` → ordem de execução e estado atual
130
- - Ler `rules.md` → convenções
131
- - Ler `sdd.md` → fonte de verdade (§9 para estratégia de testes)
132
- - Carregar perfil do agente correspondente à área
133
- - Validar que repos em `projetos/` existem (se não, INFRA-001 ainda não rodou)
134
-
135
- ### 2. Preparar repos (multi-repo)
136
-
137
- #### 2a. Verificar working tree (OBRIGATÓRIO)
138
- Em cada repo que será afetado:
139
- - `git status` verificar se mudanças pendentes
140
- - Se working tree sujo sugerir commit ou stash antes de prosseguir
141
- - NUNCA começar a codar com working tree sujo
142
-
143
- #### 2b. INFRA-001 (setup primeira execução)
144
- No setup, INFRA-001 é responsável por criar/clonar os repos:
145
- - Ler `projetos.yaml` para cada repo:
146
- - Se `existing: true` → `git clone {repo} projetos/{name}`
147
- - Se `existing: false` criar repo no GitHub (`gh repo create {repo} --private`) + clone local
148
- - Criar estrutura base em cada repo (conforme stack: .NET → `dotnet new`, React → `create-react-app`, etc.)
149
- - Criar `projetos/.gitkeep` na raiz (pasta existe mas conteúdo é ignorado)
150
-
151
- #### 2c. Branch por fase (NUNCA na main)
152
- Para cada repo que será afetado por esta fase:
153
- - `cd projetos/{repo_path}`
154
- - `git checkout main && git pull origin main` (garantir main atualizada)
155
- - `git checkout -b feature/{nome}_fase{N}` (se branch não existe)
156
- - Se branch existe → `git checkout feature/{nome}_fase{N}`
157
- - NUNCA desenvolver direto na main
158
-
159
- #### 2c. Resolver próxima task
160
- - Filtrar tasks pendentes (`- [ ]`) conforme modalidade
161
- - Ler campo `Repo:` da task identificar em qual repo trabalhar
162
- - Validar dependências: todas tasks em `Depende:` devem estar `- [x]`
163
- - Se dependência pendente → listar o que falta
164
-
165
- ### 3. Loop por task
166
-
167
- #### 3a. Implementar
168
- - Ler campo `Repo:` da task → navegar para `projetos/{repo_path}/`
169
- - Selecionar agente pela área da task (BACK-* → Backend Coder)
170
- - Selecionar modelo pelo tamanho (S/M Sonnet, L → Opus)
171
- - Input para o agente:
172
- - Task completa (ID, título, arquivos, SDD ref, dependências)
173
- - Seções do SDD referenciadas (apenas as seções necessárias)
174
- - Perfil do agente (`.github/agents/*.md`)
175
- - `rules.md`
176
- - **Working directory**: `projetos/{repo_path}/` (caminhos de arquivo são relativos ao repo)
177
- - Agente implementa código **E testes unit** na mesma task
178
-
179
- #### 3b. Test loop
180
- ```
181
- Rodar testes unit passou? → continuar
182
- falhou? agente analisa erro corrige → rodar de novo
183
- 5 falhas seguidas? parar, reportar ao usuário
184
- ```
185
-
186
- #### 3c. Lint
187
- ```
188
- Rodar lint → passou? → continuar
189
- falhou? agente corrige → rodar de novo
190
- ```
191
-
192
- #### 3d. Commit (no repo do serviço)
193
- - Working directory: `projetos/{repo_path}/`
194
- - `git add` + `git commit -m "tipo(TASK-ID): descrição curta"`
195
- - Commit acontece no repo do serviço, NÃO no projeto-base
196
- - Corpo opcional se Senior Coder tomou decisão (mini-ADR)
197
-
198
- #### 3e. Review
199
- - Spawn Reviewer (Sonnet) com: código + testes + quality gate checklist
200
- - Se APROVADO → marcar task `- [x]`, atualizar Progresso.md
201
- - Se REPROVADO → agente recebe problemas, corrige, volta pro 3b
202
- - Limite: **3 reprovações** escalar pro usuário
203
-
204
- ### 4. Validação por fase
205
- Ao concluir todas tasks de uma fase:
206
- - Rodar testes integration da área (SDD §9.1)
207
- - Se falhou → identificar causa, corrigir no código da task afetada, recommit
208
- - Se passou → avançar pra próxima fase
209
-
210
- ### 5. Security Review (cross-area)
211
- Ao concluir todas tasks de todas áreas, ANTES dos testes E2E:
212
- - Spawn Security Reviewer (Opus) com: todo código produzido + SDD §5 + Seguranca.md
213
- - Audita 6 categorias: Auth, AuthZ, Injeção, Dados Sensíveis, Headers, Banco
214
- - Se findings CRÍTICO ou ALTO:
215
- - Identificar área responsável (BACK, FRONT, BANCO, INFRA)
216
- - Coder da área corrige → recommit
217
- - Security Reviewer reavalia apenas os findings
218
- - Se aprovadoprosseguir para E2E
219
- - Limite: **2 tentativas** → escalar pro usuário
220
-
221
- ### 6. Validação por feature
222
- Ao concluir security review com aprovação:
223
- - Rodar testes E2E (SDD §9.3 cada CA deve ter teste correspondente)
224
- - Se falhou:
225
- - Identificar qual CA falhou
226
- - Mapear pra task/área responsável
227
- - Criar fix inline (não cria nova task)
228
- - Rodar E2E de novo
229
- - Se passoudev_done
230
-
231
- ### 7. Finalizar fase — PR + ambiente ON
232
- Ao concluir todos testes da fase:
233
-
234
- 1. **Atualizar Progresso.md** com status da fase
235
- 2. **Push da branch** em cada repo afetado:
236
- ```bash
237
- cd projetos/{repo_path}
238
- git push origin feature/{nome}_fase{N}
239
- ```
240
- 3. **Abrir PR** em cada repo com template detalhado (ver `rules.md` → Template de PR):
241
- - Tasks concluídas, testes passando, como testar manualmente
242
- - Usar `gh pr create`
243
- 4. **Deixar ambiente local rodando**:
244
- - `docker compose up -d` (infra)
245
- - `dotnet run` / `npm run dev` (apps)
246
- - Informar URLs ao usuário
247
- 5. **PARAR e aguardar** — o usuário testa manualmente e aprova o PR
248
- - O agente NUNCA faz merge — merge é manual pelo usuário
249
- - Se o usuário pedir ajustes → corrigir na mesma branch, push, atualizar PR
250
-
251
- ### 8. Após merge (quando usuário confirmar)
252
- ```bash
253
- # Em cada repo afetado:
254
- cd projetos/{repo_path}
255
- git checkout main
256
- git pull origin main
257
- git branch -d feature/{nome}_fase{N}
258
- git remote prune origin
259
- ```
260
-
261
- ### 9. Atualizar `.context.md`
262
- ```yaml
263
- status: "dev_in_progress" # durante execução
264
- # ou
265
- status: "dev_done" # todas fases + integration + security + E2E passaram
266
- ultima_skill: "/sf-dev"
267
- atualizado_em: "{{ISO_DATETIME}}"
268
- ```
269
-
270
- ---
271
-
272
- ## Limites de retry
273
-
274
- | Nível | Limite | Ação ao exceder |
275
- |-------|--------|-----------------|
276
- | Test loop (unit) | 5 tentativas por task | Parar, reportar erro persistente |
277
- | Review loop | 3 reprovações por task | Parar, escalar pro usuário |
278
- | Integration fix | 3 tentativas por fase | Parar, reportar ao usuário |
279
- | Security fix | 2 tentativas por feature | Parar, escalar findings não resolvidos |
280
- | E2E fix | 3 tentativas por feature | Parar, reportar ao usuário |
281
-
282
- Mensagem de escalação:
283
- ```
284
- ⚠️ Task {ID} não passou após {N} tentativas.
285
- Problemas persistentes:
286
- 1. ...
287
- 2. ...
288
- Ação necessária: revisar SDD ou intervir manualmente.
289
- ```
290
-
291
- ---
292
-
293
- ## Saídas
294
-
295
- | Saída | Descrição |
296
- |-------|-----------|
297
- | Código implementado | Em `projetos/{repo}/` arquivos criados/modificados conforme tasks |
298
- | Testes | Unit + integration + E2E nos repos correspondentes |
299
- | Commits | 1 commit por task no repo do serviço: `tipo(TASK-ID): descrição` |
300
- | Branches | `feature/{nome}` criado em cada repo afetado |
301
- | `*_tasks.md` | Tasks marcadas como concluídas (no projeto-base) |
302
- | `Progresso.md` | Atualizado com status real (no projeto-base) |
303
- | `progresso.md` (global) | Atualizado (no projeto-base) |
304
- | `.context.md` | Status atualizado (no projeto-base) |
305
-
306
- ## Pós-condições
307
- - Todas tasks concluídas = status `dev_done`
308
- - Quality gate aprovado em cada task
309
- - Integration tests passam por fase
310
- - Security Review aprovado (zero findings CRÍTICO/ALTO)
311
- - E2E tests passam por feature (todos CAs do SDD §9.3)
312
- - Pronto para `/merge-delta` (se feature) ou conclusão (se setup)
313
-
314
- ## Erros
315
-
316
- | Erro | Ação |
317
- |------|------|
318
- | Nome não informado | Parar, mostrar exemplo |
319
- | Status anterior a plan_done | Parar, sugerir skill correspondente |
320
- | Dependência não concluída | Parar, listar dependências pendentes |
321
- | Test loop excedeu limite | Parar, reportar erro + stack trace |
322
- | Review excedeu 3 tentativas | Parar, escalar com lista de problemas |
323
- | Integration/E2E persistente | Parar, reportar CAs que falharam |
324
- | SDD ambíguo | Parar, reportar ambiguidade |
325
- | --task com ID inexistente | Parar, listar tasks disponíveis |
326
- | --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 | `*_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 | `docs/Desenvolvimento/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/Estrutura/ ║
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 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 já 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 falhou identificar causa, corrigir no código da task afetada, recommit
218
+ - Se passouavanç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 + Seguranca.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/Estrutura/` 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 API.md referencia tabela no Modelo_Dados.md)
279
+
280
+ Se tipo = `setup` pular (docs/Estrutura/ 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/Estrutura/ 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 |