spec-first-claude 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 (37) hide show
  1. package/README.md +144 -147
  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/.claude/agents/backend-coder.md +215 -215
  7. package/templates/.claude/agents/db-coder.md +165 -165
  8. package/templates/.claude/agents/doc-writer.md +51 -51
  9. package/templates/.claude/agents/frontend-coder.md +222 -222
  10. package/templates/.claude/agents/infra-coder.md +341 -341
  11. package/templates/.claude/agents/reviewer.md +99 -99
  12. package/templates/.claude/agents/security-reviewer.md +153 -153
  13. package/templates/.claude/commands/design.md +107 -107
  14. package/templates/.claude/commands/dev.md +189 -167
  15. package/templates/.claude/commands/extract.md +137 -137
  16. package/templates/.claude/commands/feature.md +60 -60
  17. package/templates/.claude/commands/merge-delta.md +70 -70
  18. package/templates/.claude/commands/plan.md +86 -86
  19. package/templates/.claude/commands/{pausar.md → session-finish.md} +83 -83
  20. package/templates/.claude/commands/setup-projeto.md +68 -68
  21. package/templates/.claude/settings.local.json +6 -6
  22. package/templates/CLAUDE.md +198 -199
  23. package/templates/docs/Desenvolvimento/rules.md +229 -229
  24. package/templates/docs/_templates/estrutura/ADRs.template.md +91 -91
  25. package/templates/docs/_templates/estrutura/API.template.md +144 -144
  26. package/templates/docs/_templates/estrutura/Arquitetura.template.md +82 -82
  27. package/templates/docs/_templates/estrutura/Infraestrutura.template.md +104 -104
  28. package/templates/docs/_templates/estrutura/Modelo_Dados.template.md +99 -99
  29. package/templates/docs/_templates/estrutura/Seguranca.template.md +138 -138
  30. package/templates/docs/_templates/estrutura/Stack.template.md +78 -78
  31. package/templates/docs/_templates/estrutura/Visao.template.md +82 -82
  32. package/templates/docs/_templates/feature/Progresso.template.md +136 -136
  33. package/templates/docs/_templates/feature/backlog-extraido.template.md +154 -154
  34. package/templates/docs/_templates/feature/context.template.md +42 -42
  35. package/templates/docs/_templates/feature/extract-log.template.md +38 -38
  36. package/templates/docs/_templates/feature/projetos.template.yaml +73 -73
  37. package/templates/docs/_templates/global/progresso_global.template.md +57 -57
@@ -1,107 +1,107 @@
1
- # /design $ARGUMENTS
2
-
3
- Skill atômica de design. Lê PRD/TRD aprovado e gera SDD.
4
- $ARGUMENTS = nome (ex: setup_projeto, feat_cadastro_cliente)
5
-
6
- ## Agente: Architect (Opus)
7
- Técnico e preciso. Gera contratos completos. Toda decisão tem justificativa.
8
-
9
- ## Pré-condições
10
-
11
- | # | Validação | Se falhar |
12
- |---|-----------|-----------|
13
- | 1 | $ARGUMENTS informado | Parar |
14
- | 2 | `.context.md` existe com status `extract_done` ou `approved` | Se anterior → "/extract primeiro". Se posterior → "SDD já gerado" |
15
- | 3 | PRD.md ou TRD.md existe | Parar → "/extract primeiro" |
16
- | 4 | `docs/Estrutura/` populado (para features) | Parar → "/setup-projeto primeiro" (não aplica para tipo=setup) |
17
-
18
- ## Passos
19
-
20
- ### 1. Checkpoint de aprovação
21
- Se status é `extract_done`:
22
- - Perguntar: "O PRD/TRD foi revisado e está aprovado? (s/n)"
23
- - Se SIM → atualizar .context.md para `approved` → continuar
24
- - Se NÃO → parar
25
-
26
- ### 2. Verificar ambiguidades
27
- - Ler seção de ambiguidades (§13 PRD / §9 TRD)
28
- - Se há perguntas sem resposta → PARAR, listar pendentes
29
-
30
- ### 3. Gerar docs/Estrutura/ (APENAS para setup)
31
-
32
- > Este passo só executa quando tipo=setup. Para features, docs/Estrutura/ já existe.
33
-
34
- Ler TRD e gerar os 8 docs de `docs/Estrutura/` usando os templates correspondentes:
35
-
36
- | TRD Seção | Doc gerado | Template |
37
- |-----------|-----------|---------|
38
- | §1 Visão + §8 Módulos | Visao.md | `_templates/estrutura/Visao.template.md` |
39
- | §2 Stack | Stack.md | `_templates/estrutura/Stack.template.md` |
40
- | §3 Arquitetura | Arquitetura.md | `_templates/estrutura/Arquitetura.template.md` |
41
- | §4 Modelo de Dados | Modelo_Dados.md | `_templates/estrutura/Modelo_Dados.template.md` |
42
- | §5 API | API.md | `_templates/estrutura/API.template.md` |
43
- | §6 Infra | Infraestrutura.md | `_templates/estrutura/Infraestrutura.template.md` |
44
- | §7 Segurança | Seguranca.md | `_templates/estrutura/Seguranca.template.md` |
45
- | SDD §2 (após gerar) | ADRs.md | `_templates/estrutura/ADRs.template.md` |
46
-
47
- Regras:
48
- - Ler template → preencher TODAS seções com dados do TRD
49
- - Remover bloco `<!-- INSTRUÇÕES -->` do doc gerado
50
- - Changelog inicia vazio (primeira geração)
51
- - Se TRD não tem dados pra uma seção → marcar "A definir"
52
- - ADRs.md é gerado APÓS o SDD (usa §2 Decisões de Design)
53
-
54
- ### 3b. Gerar `projetos.yaml` (APENAS para setup)
55
-
56
- Mapeia a arquitetura do TRD §3 para repositórios independentes.
57
- Cada serviço = 1 repo. Os repos serão criados/clonados pelo /dev (INFRA-001).
58
-
59
- 1. Identificar serviços separados no TRD §3 (api, worker, web, mobile, etc.)
60
- 2. Perguntar ao usuário:
61
- - Organização/usuário do GitHub (ex: `empresa`)
62
- - Nome base do projeto (ex: `meu-projeto`)
63
- - Se algum repo já existe (para clonar em vez de criar)
64
- 3. Gerar `projetos.yaml` na raiz usando template `projetos.template.yaml`
65
- 4. Mapear áreas de task para repos:
66
- - BACK → api (ou worker, se separado)
67
- - BANCO → api (se usa EF migrations) ou repo próprio
68
- - FRONT → web
69
- - MOBILE → mobile
70
- - INFRA → todos (cross-repo)
71
- 5. Validar: cada área DEVE mapear para exatamente 1 repo
72
-
73
- **Regra**: Se o TRD indica API e Worker como serviços separados, DEVEM ser repos separados.
74
- Nunca juntar serviços que o TRD definiu como distintos.
75
-
76
- ### 4. Carregar contexto
77
- - PRD.md ou TRD.md completo
78
- - `docs/Estrutura/` (agora já populado, mesmo no setup)
79
- - `docs/Desenvolvimento/rules.md`
80
- - Template `sdd.template.md`
81
-
82
- ### 5. Gerar SDD
83
- 11 seções obrigatórias (usar template). Para cada seção:
84
- - §1 Visão geral — escopo claro
85
- - §2 Decisões de design — mini-ADRs com justificativa
86
- - §3 Modelo de dados — tipos EXATOS, constraints, índices
87
- - §4 Regras e validações — ref PRD §N RN-NNN, mensagens de erro
88
- - §5 Endpoints API — contratos JSON completos, erros com códigos
89
- - §6 Componentes e telas — estados (loading/empty/error/success)
90
- - §7 Fluxos de dados — sequências front→back
91
- - §8 Integrações externas — timeout, retry, fallback
92
- - §9 Estratégia de testes — framework, estrutura, CAs mapeados
93
- - §10 Fora do escopo — lista explícita
94
- - §11 Delta Specs — ADDED/MODIFIED/REMOVED
95
-
96
- **Setup**: §4-§8 podem ser N/A (normal).
97
- **Feature**: todas seções aplicáveis preenchidas.
98
-
99
- ### 6. Gerar ADRs.md (setup — complemento do passo 3)
100
- Após gerar SDD §2, criar ADRs.md com as decisões iniciais de arquitetura.
101
-
102
- ### 7. Atualizar `.context.md`
103
- ```yaml
104
- status: "design_done"
105
- ultima_skill: "/design"
106
- atualizado_em: "{{ISO_DATETIME}}"
107
- ```
1
+ # /design $ARGUMENTS
2
+
3
+ Skill atômica de design. Lê PRD/TRD aprovado e gera SDD.
4
+ $ARGUMENTS = nome (ex: setup_projeto, feat_cadastro_cliente)
5
+
6
+ ## Agente: Architect (Opus)
7
+ Técnico e preciso. Gera contratos completos. Toda decisão tem justificativa.
8
+
9
+ ## Pré-condições
10
+
11
+ | # | Validação | Se falhar |
12
+ |---|-----------|-----------|
13
+ | 1 | $ARGUMENTS informado | Parar |
14
+ | 2 | `.context.md` existe com status `extract_done` ou `approved` | Se anterior → "/extract primeiro". Se posterior → "SDD já gerado" |
15
+ | 3 | PRD.md ou TRD.md existe | Parar → "/extract primeiro" |
16
+ | 4 | `docs/Estrutura/` populado (para features) | Parar → "/setup-projeto primeiro" (não aplica para tipo=setup) |
17
+
18
+ ## Passos
19
+
20
+ ### 1. Checkpoint de aprovação
21
+ Se status é `extract_done`:
22
+ - Perguntar: "O PRD/TRD foi revisado e está aprovado? (s/n)"
23
+ - Se SIM → atualizar .context.md para `approved` → continuar
24
+ - Se NÃO → parar
25
+
26
+ ### 2. Verificar ambiguidades
27
+ - Ler seção de ambiguidades (§13 PRD / §9 TRD)
28
+ - Se há perguntas sem resposta → PARAR, listar pendentes
29
+
30
+ ### 3. Gerar docs/Estrutura/ (APENAS para setup)
31
+
32
+ > Este passo só executa quando tipo=setup. Para features, docs/Estrutura/ já existe.
33
+
34
+ Ler TRD e gerar os 8 docs de `docs/Estrutura/` usando os templates correspondentes:
35
+
36
+ | TRD Seção | Doc gerado | Template |
37
+ |-----------|-----------|---------|
38
+ | §1 Visão + §8 Módulos | Visao.md | `_templates/estrutura/Visao.template.md` |
39
+ | §2 Stack | Stack.md | `_templates/estrutura/Stack.template.md` |
40
+ | §3 Arquitetura | Arquitetura.md | `_templates/estrutura/Arquitetura.template.md` |
41
+ | §4 Modelo de Dados | Modelo_Dados.md | `_templates/estrutura/Modelo_Dados.template.md` |
42
+ | §5 API | API.md | `_templates/estrutura/API.template.md` |
43
+ | §6 Infra | Infraestrutura.md | `_templates/estrutura/Infraestrutura.template.md` |
44
+ | §7 Segurança | Seguranca.md | `_templates/estrutura/Seguranca.template.md` |
45
+ | SDD §2 (após gerar) | ADRs.md | `_templates/estrutura/ADRs.template.md` |
46
+
47
+ Regras:
48
+ - Ler template → preencher TODAS seções com dados do TRD
49
+ - Remover bloco `<!-- INSTRUÇÕES -->` do doc gerado
50
+ - Changelog inicia vazio (primeira geração)
51
+ - Se TRD não tem dados pra uma seção → marcar "A definir"
52
+ - ADRs.md é gerado APÓS o SDD (usa §2 Decisões de Design)
53
+
54
+ ### 3b. Gerar `projetos.yaml` (APENAS para setup)
55
+
56
+ Mapeia a arquitetura do TRD §3 para repositórios independentes.
57
+ Cada serviço = 1 repo. Os repos serão criados/clonados pelo /dev (INFRA-001).
58
+
59
+ 1. Identificar serviços separados no TRD §3 (api, worker, web, mobile, etc.)
60
+ 2. Perguntar ao usuário:
61
+ - Organização/usuário do GitHub (ex: `empresa`)
62
+ - Nome base do projeto (ex: `meu-projeto`)
63
+ - Se algum repo já existe (para clonar em vez de criar)
64
+ 3. Gerar `projetos.yaml` na raiz usando template `projetos.template.yaml`
65
+ 4. Mapear áreas de task para repos:
66
+ - BACK → api (ou worker, se separado)
67
+ - BANCO → api (se usa EF migrations) ou repo próprio
68
+ - FRONT → web
69
+ - MOBILE → mobile
70
+ - INFRA → todos (cross-repo)
71
+ 5. Validar: cada área DEVE mapear para exatamente 1 repo
72
+
73
+ **Regra**: Se o TRD indica API e Worker como serviços separados, DEVEM ser repos separados.
74
+ Nunca juntar serviços que o TRD definiu como distintos.
75
+
76
+ ### 4. Carregar contexto
77
+ - PRD.md ou TRD.md completo
78
+ - `docs/Estrutura/` (agora já populado, mesmo no setup)
79
+ - `docs/Desenvolvimento/rules.md`
80
+ - Template `sdd.template.md`
81
+
82
+ ### 5. Gerar SDD
83
+ 11 seções obrigatórias (usar template). Para cada seção:
84
+ - §1 Visão geral — escopo claro
85
+ - §2 Decisões de design — mini-ADRs com justificativa
86
+ - §3 Modelo de dados — tipos EXATOS, constraints, índices
87
+ - §4 Regras e validações — ref PRD §N RN-NNN, mensagens de erro
88
+ - §5 Endpoints API — contratos JSON completos, erros com códigos
89
+ - §6 Componentes e telas — estados (loading/empty/error/success)
90
+ - §7 Fluxos de dados — sequências front→back
91
+ - §8 Integrações externas — timeout, retry, fallback
92
+ - §9 Estratégia de testes — framework, estrutura, CAs mapeados
93
+ - §10 Fora do escopo — lista explícita
94
+ - §11 Delta Specs — ADDED/MODIFIED/REMOVED
95
+
96
+ **Setup**: §4-§8 podem ser N/A (normal).
97
+ **Feature**: todas seções aplicáveis preenchidas.
98
+
99
+ ### 6. Gerar ADRs.md (setup — complemento do passo 3)
100
+ Após gerar SDD §2, criar ADRs.md com as decisões iniciais de arquitetura.
101
+
102
+ ### 7. Atualizar `.context.md`
103
+ ```yaml
104
+ status: "design_done"
105
+ ultima_skill: "/design"
106
+ atualizado_em: "{{ISO_DATETIME}}"
107
+ ```
@@ -1,167 +1,189 @@
1
- # /dev $ARGUMENTS
2
-
3
- Skill atômica de execução. Implementa tasks em loop até quality gate aprovado.
4
- $ARGUMENTS = nome (ex: feat_mvp)
5
- Flags opcionais: --fase 1 (RECOMENDADO) | --area banco | --task BACK-003
6
-
7
- ## Agents por área (perfis em `.claude/agents/`)
8
-
9
- | Área | Agente | Stack | Modelo |
10
- |------|--------|-------|--------|
11
- | BANCO | DB Coder | PostgreSQL 16 | Sonnet (S/M) / Opus (L) |
12
- | BACK | Backend Coder | .NET 8 / C# | Sonnet (S/M) / Opus (L) |
13
- | FRONT | Frontend Coder | React + Fusion | Sonnet (S/M) / Opus (L) |
14
- | INFRA | Infra Coder | Docker | Sonnet (S/M) / Opus (L) |
15
- | DOC | Doc Writer | — | Sonnet |
16
- | Todas | Reviewer | — | Sonnet |
17
- | Todas | Security Reviewer | — | Opus |
18
-
19
- Agente selecionado pelo prefixo: BACK-* → Backend Coder, BANCO-* → DB Coder, etc.
20
- Ler o perfil do agente em `.claude/agents/` antes de implementar.
21
-
22
- ## Pré-condições
23
-
24
- | # | Validação | Se falhar |
25
- |---|-----------|-----------|
26
- | 1 | $ARGUMENTS informado | Parar |
27
- | 2 | `.context.md` com status `plan_done` ou `dev_in_progress` | Se anterior → "/plan primeiro" |
28
- | 3 | `*_tasks.md` e `Progresso.md` existem | Parar |
29
- | 4 | `sdd.md` existe | Parar |
30
- | 5 | `rules.md` existe | Parar |
31
- | 6 | `projetos.yaml` existe | Parar → "Execute /design primeiro" |
32
- | 7 | Infra local rodando (`docker compose ps` → healthy) | Parar → "Suba a infra: `docker compose up -d`" |
33
-
34
- ## Fluxo de execução
35
-
36
- ```
37
- ╔═══════════════════════════════════════════════╗
38
- ║ LOOP POR TASK ║
39
- ║ ║
40
- ║ 1. Selecionar agente pela área ║
41
- ║ 2. Ler perfil do agente (.claude/agents/) ║
42
- ║ 3. Implementar código + testes unit ║
43
- ║ 4. Rodar testes unit ║
44
- ║ → Falhou? Corrigir → volta pro 4 ║
45
- ║ → 5 falhas? Parar, reportar ║
46
- ║ 5. Rodar lint ║
47
- ║ → Falhou? Corrigir → volta pro 5 ║
48
- ║ 6. Commit: tipo(TASK-ID): descrição ║
49
- ║ 7. Review (quality gate) ║
50
- ║ → Reprovado? Corrigir → volta pro 4 ║
51
- ║ → 3 reprovações? Escalar pro usuário ║
52
- ║ 8. Marcar task concluída ✅ ║
53
- ╚═══════════════════════════════════════════════╝
54
- ↓ (todas tasks da fase)
55
- ╔═══════════════════════════════════════════════╗
56
- ║ VALIDAÇÃO POR FASE ║
57
- ║ 1. Rodar testes integration da área ║
58
- ║ → Falhou? Fix → loop (max 3) ║
59
- ╚═══════════════════════════════════════════════╝
60
- ↓ (tudo concluído)
61
- ╔═══════════════════════════════════════════════╗
62
- ║ SECURITY REVIEW (cross-area) ║
63
- ║ 1. Security Reviewer audita todo código ║
64
- ║ → CRÍTICO/ALTO? Coder corrige → re-audit ║
65
- ║ → 2 falhas? Escalar pro usuário ║
66
- ║ 2. Aprovado → prosseguir para E2E ║
67
- ╚═══════════════════════════════════════════════╝
68
- ↓ (security aprovado)
69
- ╔═══════════════════════════════════════════════╗
70
- ║ VALIDAÇÃO POR FEATURE ║
71
- ║ 1. Rodar E2E (SDD §9.3 CAs) ║
72
- ║ → Falhou? Identificar → fix → loop (max 3)║
73
- ║ 2. Tudo passou? → dev_done ✅
74
- ╚═══════════════════════════════════════════════╝
75
- ```
76
-
77
- ## Multi-repo + Git Workflow
78
-
79
- ### Contexto inicial
80
- - Ler `projetos.yaml` → mapeamento área → repo → path local
81
- - Validar que repos em `projetos/` existem (se não, INFRA-001 ainda não rodou)
82
-
83
- ### Passo 1 — Verificar working tree (OBRIGATÓRIO)
84
- Em cada repo afetado: `git status`
85
- - Se working tree sujo → sugerir commit ou stash antes de prosseguir
86
- - NUNCA começar a codar com working tree sujo
87
-
88
- ### INFRA-001 (setup — primeira execução)
89
- No setup, INFRA-001 cria/clona os repos:
90
- - Ler `projetos.yaml` para cada repo:
91
- - Se `existing: true` → `git clone {repo} projetos/{name}`
92
- - Se `existing: false` criar repo (`gh repo create {repo} --private`) + clone
93
- - Criar estrutura base em cada repo (conforme stack)
94
-
95
- ### Passo 2 Branch por fase (NUNCA na main)
96
- Para cada repo afetado por esta fase:
97
- ```bash
98
- cd projetos/{repo_path}
99
- git checkout main && git pull origin main
100
- git checkout -b feature/{nome}_fase{N}
101
- ```
102
- - NUNCA desenvolver direto na main
103
-
104
- ## Implementação por task
105
-
106
- 1. **Navegar**: ler campo `Repo:` da task → `cd projetos/{repo_path}/`
107
- 2. **Ler**: task completa + seções do SDD referenciadas + perfil do agente + rules.md
108
- 3. **Implementar**: código nos arquivos listados (caminhos relativos ao repo)
109
- 4. **Testar**: testes unit nos arquivos de teste listados na task
110
- 5. **Commit**: no repo do serviço — `tipo(TASK-ID): descrição curta`
111
- 6. **Review**: quality gate (compilar, testes, lint, conformidade SDD, convenções)
112
-
113
- ## Quality gate (Reviewer)
114
-
115
- | Check | Critério |
116
- |-------|----------|
117
- | Compila | Sem erros |
118
- | Testes unit | Passam |
119
- | Lint | Limpo |
120
- | Conformidade SDD | Contratos, tipos, regras conforme SDD |
121
- | Convenções | rules.md respeitado |
122
- | Sem TODOs | Injustificados |
123
- | Sem secrets | Hardcoded |
124
- | Arquivos corretos | os listados na task modificados |
125
-
126
- ## Limites de retry
127
-
128
- | Nível | Limite | Ação ao exceder |
129
- |-------|--------|-----------------|
130
- | Test unit | 5 por task | Parar, reportar |
131
- | Review | 3 por task | Escalar pro usuário |
132
- | Integration | 3 por fase | Parar, reportar |
133
- | Security | 2 por feature | Escalar findings não resolvidos |
134
- | E2E | 3 por feature | Parar, reportar |
135
-
136
- ## Passo 3 — Ao terminar fase: PR + ambiente ON
137
-
138
- 1. Atualizar Progresso.md com status da fase
139
- 2. Push da branch em cada repo: `git push origin feature/{nome}_fase{N}`
140
- 3. Abrir PR com template detalhado (ver rules.md Template de PR):
141
- - Tasks concluídas, testes passando, como testar manualmente
142
- - `gh pr create`
143
- 4. Deixar ambiente local rodando:
144
- - `docker compose up -d` (infra)
145
- - `dotnet run` / `npm run dev` (apps nos repos)
146
- - Informar URLs ao usuário
147
- 5. **PARAR e aguardar** merge é MANUAL pelo usuário
148
-
149
- ## Passo 4 Aguardar aprovação
150
-
151
- - O agente NUNCA faz merge
152
- - Se o usuário pedir ajustes → corrigir na mesma branch, push, atualizar PR
153
-
154
- ## Passo 5 Após merge (quando usuário confirmar)
155
-
156
- ```bash
157
- cd projetos/{repo_path}
158
- git checkout main && git pull origin main
159
- git branch -d feature/{nome}_fase{N}
160
- git remote prune origin
161
- ```
162
-
163
- ## Atualizar `.context.md`
164
- ```yaml
165
- status: "dev_in_progress" # durante
166
- status: "dev_done" # ao final (todas fases mergeadas)
167
- ```
1
+ # /dev $ARGUMENTS
2
+
3
+ Skill atômica de execução. Implementa tasks em loop até quality gate aprovado.
4
+ $ARGUMENTS = nome (ex: feat_mvp)
5
+ Flags opcionais: --fase 1 (RECOMENDADO) | --area banco | --task BACK-003
6
+
7
+ ## Agents por área (perfis em `.claude/agents/`)
8
+
9
+ | Área | Agente | Stack | Modelo |
10
+ |------|--------|-------|--------|
11
+ | BANCO | DB Coder | PostgreSQL 16 | Sonnet (S/M) / Opus (L) |
12
+ | BACK | Backend Coder | .NET 8 / C# | Sonnet (S/M) / Opus (L) |
13
+ | FRONT | Frontend Coder | React + Fusion | Sonnet (S/M) / Opus (L) |
14
+ | INFRA | Infra Coder | Docker | Sonnet (S/M) / Opus (L) |
15
+ | DOC | Doc Writer | — | Sonnet |
16
+ | Todas | Reviewer | — | Sonnet |
17
+ | Todas | Security Reviewer | — | Opus |
18
+
19
+ Agente selecionado pelo prefixo: BACK-* → Backend Coder, BANCO-* → DB Coder, etc.
20
+ Ler o perfil do agente em `.claude/agents/` antes de implementar.
21
+
22
+ ## Pré-condições
23
+
24
+ | # | Validação | Se falhar |
25
+ |---|-----------|-----------|
26
+ | 1 | $ARGUMENTS informado | Parar |
27
+ | 2 | `.context.md` com status `plan_done` ou `dev_in_progress` | Se anterior → "/plan primeiro" |
28
+ | 3 | `*_tasks.md` e `Progresso.md` existem | Parar |
29
+ | 4 | `sdd.md` existe | Parar |
30
+ | 5 | `rules.md` existe | Parar |
31
+ | 6 | `projetos.yaml` existe | Parar → "Execute /design primeiro" |
32
+ | 7 | Infra local rodando (`docker compose ps` → healthy) | Parar → "Suba a infra: `docker compose up -d`" |
33
+
34
+ ## Fluxo de execução
35
+
36
+ ```
37
+ ╔═══════════════════════════════════════════════╗
38
+ ║ LOOP POR TASK ║
39
+ ║ ║
40
+ ║ 1. Selecionar agente pela área ║
41
+ ║ 2. Ler perfil do agente (.claude/agents/) ║
42
+ ║ 3. Implementar código + testes unit ║
43
+ ║ 4. Rodar testes unit ║
44
+ ║ → Falhou? Corrigir → volta pro 4 ║
45
+ ║ → 5 falhas? Parar, reportar ║
46
+ ║ 5. Rodar lint ║
47
+ ║ → Falhou? Corrigir → volta pro 5 ║
48
+ ║ 6. Commit: tipo(TASK-ID): descrição ║
49
+ ║ 7. Review (quality gate) ║
50
+ ║ → Reprovado? Corrigir → volta pro 4 ║
51
+ ║ → 3 reprovações? Escalar pro usuário ║
52
+ ║ 8. Marcar task concluída ✅ ║
53
+ ╚═══════════════════════════════════════════════╝
54
+ ↓ (todas tasks da fase)
55
+ ╔═══════════════════════════════════════════════╗
56
+ ║ VALIDAÇÃO POR FASE ║
57
+ ║ 1. Rodar testes integration da área ║
58
+ ║ → Falhou? Fix → loop (max 3) ║
59
+ ╚═══════════════════════════════════════════════╝
60
+ ↓ (tudo concluído)
61
+ ╔═══════════════════════════════════════════════╗
62
+ ║ SECURITY REVIEW (cross-area) ║
63
+ ║ 1. Security Reviewer audita todo código ║
64
+ ║ → CRÍTICO/ALTO? Coder corrige → re-audit ║
65
+ ║ → 2 falhas? Escalar pro usuário ║
66
+ ║ 2. Aprovado → prosseguir para E2E ║
67
+ ╚═══════════════════════════════════════════════╝
68
+ ↓ (security aprovado)
69
+ ╔═══════════════════════════════════════════════╗
70
+ ║ VALIDAÇÃO POR FEATURE ║
71
+ ║ 1. Rodar E2E (SDD §9.3 CAs) ║
72
+ ║ → Falhou? Identificar → fix → loop (max 3)║
73
+ ║ 2. Tudo passou? → prosseguir
74
+ ╚═══════════════════════════════════════════════╝
75
+ ↓ (E2E aprovado, só features)
76
+ ╔═══════════════════════════════════════════════╗
77
+ ║ MERGE-DELTA (automático, features) ║
78
+ ║ 1. Ler SDD §11 (Delta Specs) ║
79
+ ║ 2. Aplicar ADDED/MODIFIED/REMOVED em ║
80
+ ║ docs/Estrutura/ ║
81
+ ║ 3. Registrar changelog em cada doc alterado ║
82
+ ║ 4. dev_done ✅ ║
83
+ ╚═══════════════════════════════════════════════╝
84
+ ```
85
+
86
+ ## Multi-repo + Git Workflow
87
+
88
+ ### Contexto inicial
89
+ - Ler `projetos.yaml` mapeamento área → repo → path local
90
+ - Validar que repos em `projetos/` existem (se não, INFRA-001 ainda não rodou)
91
+
92
+ ### Passo 1 Verificar working tree (OBRIGATÓRIO)
93
+ Em cada repo afetado: `git status`
94
+ - Se working tree sujo → sugerir commit ou stash antes de prosseguir
95
+ - NUNCA começar a codar com working tree sujo
96
+
97
+ ### INFRA-001 (setup — primeira execução)
98
+ No setup, INFRA-001 cria/clona os repos:
99
+ - Ler `projetos.yaml` para cada repo:
100
+ - Se `existing: true` → `git clone {repo} projetos/{name}`
101
+ - Se `existing: false` → criar repo (`gh repo create {repo} --private`) + clone
102
+ - Criar estrutura base em cada repo (conforme stack)
103
+
104
+ ### Passo 2 — Branch por fase (NUNCA na main)
105
+ Para cada repo afetado por esta fase:
106
+ ```bash
107
+ cd projetos/{repo_path}
108
+ git checkout main && git pull origin main
109
+ git checkout -b feature/{nome}_fase{N}
110
+ ```
111
+ - NUNCA desenvolver direto na main
112
+
113
+ ## Implementação por task
114
+
115
+ 1. **Navegar**: ler campo `Repo:` da task → `cd projetos/{repo_path}/`
116
+ 2. **Ler**: task completa + seções do SDD referenciadas + perfil do agente + rules.md
117
+ 3. **Implementar**: código nos arquivos listados (caminhos relativos ao repo)
118
+ 4. **Testar**: testes unit nos arquivos de teste listados na task
119
+ 5. **Commit**: no repo do serviço — `tipo(TASK-ID): descrição curta`
120
+ 6. **Review**: quality gate (compilar, testes, lint, conformidade SDD, convenções)
121
+
122
+ ## Quality gate (Reviewer)
123
+
124
+ | Check | Critério |
125
+ |-------|----------|
126
+ | Compila | Sem erros |
127
+ | Testes unit | Passam |
128
+ | Lint | Limpo |
129
+ | Conformidade SDD | Contratos, tipos, regras conforme SDD |
130
+ | Convenções | rules.md respeitado |
131
+ | Sem TODOs | Injustificados |
132
+ | Sem secrets | Hardcoded |
133
+ | Arquivos corretos | os listados na task modificados |
134
+
135
+ ## Limites de retry
136
+
137
+ | Nível | Limite | Ação ao exceder |
138
+ |-------|--------|-----------------|
139
+ | Test unit | 5 por task | Parar, reportar |
140
+ | Review | 3 por task | Escalar pro usuário |
141
+ | Integration | 3 por fase | Parar, reportar |
142
+ | Security | 2 por feature | Escalar findings não resolvidos |
143
+ | E2E | 3 por feature | Parar, reportar |
144
+
145
+ ## Passo 3 Ao terminar fase: PR + ambiente ON
146
+
147
+ 1. Atualizar Progresso.md com status da fase
148
+ 2. Push da branch em cada repo: `git push origin feature/{nome}_fase{N}`
149
+ 3. Abrir PR com template detalhado (ver rules.md → Template de PR):
150
+ - Tasks concluídas, testes passando, como testar manualmente
151
+ - `gh pr create`
152
+ 4. Deixar ambiente local rodando:
153
+ - `docker compose up -d` (infra)
154
+ - `dotnet run` / `npm run dev` (apps nos repos)
155
+ - Informar URLs ao usuário
156
+ 5. **PARAR e aguardar** — merge é MANUAL pelo usuário
157
+
158
+ ## Passo 4 Aguardar aprovação
159
+
160
+ - O agente NUNCA faz merge
161
+ - Se o usuário pedir ajustes → corrigir na mesma branch, push, atualizar PR
162
+
163
+ ## Passo 5 — Após merge (quando usuário confirmar)
164
+
165
+ ```bash
166
+ cd projetos/{repo_path}
167
+ git checkout main && git pull origin main
168
+ git branch -d feature/{nome}_fase{N}
169
+ git remote prune origin
170
+ ```
171
+
172
+ ## Merge-Delta automático (só features)
173
+
174
+ Após E2E aprovado, SE `.context.md` tipo = `feature`:
175
+ 1. Ler SDD §11 (seção Delta Specs: ADDED/MODIFIED/REMOVED)
176
+ 2. Para cada delta, mapear para o doc de `docs/Estrutura/` correspondente
177
+ 3. Aplicar as mudanças (adicionar, modificar ou remover seções)
178
+ 4. Registrar changelog em cada doc alterado: `| {{DATA}} | {{NOME}} | {{TIPO}} | {{DESCRIÇÃO}} |`
179
+ 5. Validar consistência cross-doc (ex: endpoint no API.md referencia tabela no Modelo_Dados.md)
180
+
181
+ Se tipo = `setup` → pular (docs/Estrutura/ já foi criado pelo /design).
182
+
183
+ > O `/merge-delta` continua existindo como command atômico para re-execução manual se necessário.
184
+
185
+ ## Atualizar `.context.md`
186
+ ```yaml
187
+ status: "dev_in_progress" # durante
188
+ status: "dev_done" # ao final (todas fases mergeadas + merge-delta aplicado)
189
+ ```