spec-first-claude 0.1.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 (44) hide show
  1. package/bin/cli.js +52 -0
  2. package/package.json +25 -0
  3. package/templates/.ai/memory/napkin.md +68 -0
  4. package/templates/.claude/agents/backend-coder.md +215 -0
  5. package/templates/.claude/agents/db-coder.md +165 -0
  6. package/templates/.claude/agents/doc-writer.md +51 -0
  7. package/templates/.claude/agents/frontend-coder.md +222 -0
  8. package/templates/.claude/agents/infra-coder.md +341 -0
  9. package/templates/.claude/agents/reviewer.md +99 -0
  10. package/templates/.claude/agents/security-reviewer.md +153 -0
  11. package/templates/.claude/commands/design.md +107 -0
  12. package/templates/.claude/commands/dev.md +167 -0
  13. package/templates/.claude/commands/discovery.md +405 -0
  14. package/templates/.claude/commands/extract.md +137 -0
  15. package/templates/.claude/commands/feature.md +60 -0
  16. package/templates/.claude/commands/merge-delta.md +70 -0
  17. package/templates/.claude/commands/pausar.md +83 -0
  18. package/templates/.claude/commands/plan.md +86 -0
  19. package/templates/.claude/commands/setup-projeto.md +68 -0
  20. package/templates/.claude/settings.local.json +6 -0
  21. package/templates/CLAUDE.md +199 -0
  22. package/templates/docs/Desenvolvimento/.gitkeep +0 -0
  23. package/templates/docs/Desenvolvimento/rules.md +229 -0
  24. package/templates/docs/Estrutura/.gitkeep +0 -0
  25. package/templates/docs/PM/.gitkeep +0 -0
  26. package/templates/docs/PM/setup_projeto/.gitkeep +0 -0
  27. package/templates/docs/_templates/estrutura/ADRs.template.md +91 -0
  28. package/templates/docs/_templates/estrutura/API.template.md +144 -0
  29. package/templates/docs/_templates/estrutura/Arquitetura.template.md +82 -0
  30. package/templates/docs/_templates/estrutura/Infraestrutura.template.md +104 -0
  31. package/templates/docs/_templates/estrutura/Modelo_Dados.template.md +99 -0
  32. package/templates/docs/_templates/estrutura/Seguranca.template.md +138 -0
  33. package/templates/docs/_templates/estrutura/Stack.template.md +78 -0
  34. package/templates/docs/_templates/estrutura/Visao.template.md +82 -0
  35. package/templates/docs/_templates/feature/PRD.template.md +256 -0
  36. package/templates/docs/_templates/feature/Progresso.template.md +136 -0
  37. package/templates/docs/_templates/feature/TRD.template.md +200 -0
  38. package/templates/docs/_templates/feature/backlog-extraido.template.md +154 -0
  39. package/templates/docs/_templates/feature/context.template.md +42 -0
  40. package/templates/docs/_templates/feature/extract-log.template.md +38 -0
  41. package/templates/docs/_templates/feature/projetos.template.yaml +73 -0
  42. package/templates/docs/_templates/feature/sdd.template.md +372 -0
  43. package/templates/docs/_templates/feature/tasks.template.md +115 -0
  44. package/templates/docs/_templates/global/progresso_global.template.md +57 -0
@@ -0,0 +1,83 @@
1
+ # /pausar
2
+
3
+ Encerra a sessão de trabalho de forma organizada.
4
+ Consolida estado, atualiza memória, gera ponto de retomada para a próxima sessão.
5
+
6
+ ## Passos
7
+
8
+ ### 1. Levantar estado atual
9
+
10
+ Para cada `.context.md` em `docs/Desenvolvimento/*/`:
11
+ - Status atual + Progresso.md (% concluído, fase atual)
12
+ - Tasks em andamento
13
+
14
+ ### 2. Verificar working tree dos repos
15
+
16
+ Para cada repo em `projetos/`:
17
+ ```bash
18
+ cd projetos/{repo}
19
+ git status --short
20
+ git log --oneline -3
21
+ ```
22
+ - Se working tree sujo → avisar (sugerir commit antes de pausar)
23
+
24
+ ### 3. Atualizar `.ai/memory/napkin.md`
25
+
26
+ Atualizar seção `## Sessão Atual` com:
27
+ - Data, o que foi feito, o que estava em andamento
28
+ - Decisões tomadas, armadilhas encontradas
29
+
30
+ ### 4. Gerar resumo de retomada
31
+
32
+ Criar/atualizar `docs/Desenvolvimento/retomada.md`:
33
+
34
+ ```markdown
35
+ # Ponto de Retomada — {{DATA}}
36
+
37
+ > Gerado pelo /pausar. Leia este arquivo ao iniciar a próxima sessão.
38
+
39
+ ## Estado geral
40
+
41
+ | Feature/Setup | Status | Fase atual | % | Próxima ação |
42
+ |---------------|--------|------------|---|-------------|
43
+ | {{nome}} | {{status}} | Fase {{N}} | {{%}} | {{ação}} |
44
+
45
+ ## Repos — estado do git
46
+
47
+ | Repo | Branch ativa | Working tree | Último commit |
48
+ |------|-------------|-------------|---------------|
49
+ | {{repo}} | {{branch}} | limpo/sujo | {{commit msg}} |
50
+
51
+ ## O que estava em andamento
52
+
53
+ - Task: {{AREA-NNN}} — {{descrição}}
54
+ - Bloqueios: {{se houver}}
55
+ - Decisões pendentes: {{se houver}}
56
+
57
+ ## Para retomar
58
+
59
+ 1. {{Passo 1 — ex: "Subir infra: docker compose up -d"}}
60
+ 2. {{Passo 2 — ex: "Continuar /dev feat_mvp --fase 2"}}
61
+ 3. {{Passo 3 — ex: "Resolver ambiguidade X do PRD"}}
62
+
63
+ ## Aprendizados desta sessão
64
+
65
+ - {{Decisão ou armadilha que vale registrar}}
66
+ ```
67
+
68
+ ### 5. Informar ao usuário
69
+
70
+ ```
71
+ ✅ Sessão encerrada. Estado salvo em:
72
+ - `.ai/memory/napkin.md` — memória atualizada
73
+ - `docs/Desenvolvimento/retomada.md` — ponto de retomada
74
+
75
+ Para retomar:
76
+ 1. Ler retomada.md
77
+ 2. Seguir os passos listados
78
+ ```
79
+
80
+ ## Notas
81
+ - Não modifica .context.md (status da pipeline não muda)
82
+ - Não faz commit automático — avisa se working tree sujo
83
+ - `retomada.md` é sobrescrito a cada /pausar (ponto atual, não histórico)
@@ -0,0 +1,86 @@
1
+ # /plan $ARGUMENTS
2
+
3
+ Skill atômica de planejamento. Lê SDD e gera tasks por área + Progresso.
4
+ $ARGUMENTS = nome (ex: setup_projeto, feat_cadastro_cliente)
5
+
6
+ ## Agente: Planner (Opus)
7
+ Metódico e exaustivo. Cada task auto-contida. Prioriza ordem correta.
8
+
9
+ ## Pré-condições
10
+
11
+ | # | Validação | Se falhar |
12
+ |---|-----------|-----------|
13
+ | 1 | $ARGUMENTS informado | Parar |
14
+ | 2 | `.context.md` com status `design_done` | Se anterior → "/design primeiro". Se posterior → "Tasks já geradas" |
15
+ | 3 | `sdd.md` existe | Parar → "/design primeiro" |
16
+
17
+ ## Passos
18
+
19
+ ### 1. Ler contexto
20
+ - SDD completo + `projetos.yaml` + `docs/Estrutura/` + `rules.md`
21
+ - Template `tasks.template.md` + `Progresso.template.md`
22
+
23
+ ### 2. Identificar fases de entrega
24
+ Ler PRD §11 (Fases de Entrega) — cada fase vira um agrupamento de tasks:
25
+ - Fases são sequenciais: Fase 2 depende de Fase 1 concluída
26
+ - Cada fase tem entregável e critério de done
27
+ - O `/dev` pode rodar por fase: `/dev feat_nome --fase 1`
28
+
29
+ ### 3. Identificar áreas (por fase)
30
+
31
+ | Seção SDD | Área |
32
+ |-----------|------|
33
+ | §3 Modelo de dados | BANCO |
34
+ | §5 Endpoints API | BACK |
35
+ | §6 Componentes/Telas | FRONT |
36
+ | §8 Integrações | INFRA |
37
+ | Outras | MOBILE, DEVOPS, etc. conforme SDD |
38
+
39
+ > **Nota**: Área DOC NÃO existe mais no setup. docs/Estrutura/ é gerado pelo /design (passo 3).
40
+ > DOC só aparece em features se houver necessidade explícita de documentação adicional.
41
+
42
+ Áreas são DINÂMICAS — só criar as que o SDD exige.
43
+
44
+ **Área INFRA obrigatória no setup:**
45
+ Sempre gerar estas tasks no setup (antes de qualquer código):
46
+ ```
47
+ - [ ] INFRA-001: Validar e configurar ambiente local [M]
48
+ (detectar OS, instalar Docker/.NET/Node, verificar portas)
49
+ - [ ] INFRA-002: Criar docker-compose.yml + Dockerfiles [M]
50
+ - [ ] INFRA-003: Hello world — subir stack completa e validar [M]
51
+ (docker compose up, migrations, health check, frontend carrega)
52
+ ```
53
+ INFRA-001 é a PRIMEIRA task executada no /dev do setup (antes de BANCO, BACK, FRONT).
54
+ INFRA-003 é a ÚLTIMA task (após tudo, como validação final).
55
+ Setup só é `done` quando INFRA-003 passa.
56
+
57
+ ### 4. Gerar tasks por fase × área
58
+ Para cada área → `{area}_tasks.md`, agrupadas por fase de entrega:
59
+ ```markdown
60
+ - [ ] **AREA-NNN**: Título [Tamanho]
61
+ - Fase: {{N}} — {{Nome da fase de entrega}}
62
+ - Repo: `{{repo_name}}` (de projetos.yaml)
63
+ - Arquivos: `caminho/arquivo.ext` (relativo à raiz do repo)
64
+ - Testes: `caminho/teste.ext`
65
+ - SDD: §N.N — Referência específica
66
+ - Depende: AREA-NNN (ou —)
67
+ ```
68
+
69
+ Regras:
70
+ - **Repo obrigatório** — consultar `projetos.yaml` para mapear área → repo. Caminhos relativos ao repo
71
+ - Tamanhos: S (<30min), M (30min-2h), L (2h+). L → avaliar se quebra em M+S
72
+ - IDs sequenciais por área, nunca reutilizar
73
+ - Dependências cross-area permitidas
74
+ - Fases sequenciais: P1 (bloqueia), P2 (importante), P3 (nice-to-have)
75
+ - Cada task inclui campo Testes (arquivo de teste correspondente)
76
+
77
+ ### 5. Gerar Progresso.md (por fase de entrega)
78
+ - Resumo Área × Fase com contagem
79
+ - Ordem de execução com paralelismos
80
+ - Checklist pós-conclusão
81
+
82
+ ### 6. Atualizar progresso global + `.context.md`
83
+ ```yaml
84
+ status: "plan_done"
85
+ ultima_skill: "/plan"
86
+ ```
@@ -0,0 +1,68 @@
1
+ # /setup-projeto
2
+
3
+ Orquestrador de bootstrap do projeto. Executa uma única vez.
4
+ Cria contexto TRD, chama /extract e para no checkpoint de aprovação.
5
+
6
+ ## Execução
7
+
8
+ Siga EXATAMENTE os passos da skill em ordem. Leia o arquivo completo antes de agir.
9
+
10
+ ### Pré-condições — validar TODAS antes de prosseguir
11
+
12
+ | # | Validação | Se falhar |
13
+ |---|-----------|-----------|
14
+ | 1 | `docs/PM/setup_projeto/` existe | Parar → "Crie a pasta docs/PM/setup_projeto/ e adicione seus insumos" |
15
+ | 2 | Pasta contém pelo menos 1 arquivo (ignorar .gitkeep) | Parar → "Adicione insumos na pasta (aceitos: .md, .txt, .sql, .xml, .html, .json, .csv, .png, .jpg, .pdf — qualquer formato)" |
16
+ | 3 | `docs/Estrutura/` está vazio ou contém apenas .gitkeep | Parar → "Setup já foi executado. Use /feature para novas funcionalidades" |
17
+ | 4 | `docs/Desenvolvimento/setup_projeto/.context.md` não existe ou status é `not_started` | Parar → "Setup já está em andamento. Verifique o status em .context.md" |
18
+
19
+ ### Passos
20
+
21
+ 1. Criar `docs/Desenvolvimento/setup_projeto/` se não existir
22
+
23
+ 2. Criar `.context.md`:
24
+ ```yaml
25
+ ---
26
+ nome: "setup_projeto"
27
+ tipo: "setup"
28
+ documento: "TRD"
29
+ pm_path: "docs/PM/setup_projeto/"
30
+ status: "not_started"
31
+ ultima_skill: "/setup-projeto"
32
+ atualizado_em: "{{ISO_DATETIME}}"
33
+ ---
34
+ ```
35
+
36
+ 3. Sugerir /sf-discovery (RECOMENDADO):
37
+ ```
38
+ 📋 Recomendo rodar /sf-discovery antes da extração para análise profunda dos insumos.
39
+ Quer rodar /sf-discovery docs/PM/setup_projeto/ agora? (s/n)
40
+ ```
41
+ Se SIM → rodar discovery, salvar discovery.md em docs/Desenvolvimento/setup_projeto/
42
+ Se NÃO → pular direto para extract
43
+
44
+ 4. Executar /extract setup_projeto (seguir o command /extract)
45
+
46
+ 5. CHECKPOINT — Parar e informar:
47
+ ```
48
+ ✅ TRD gerado em docs/Desenvolvimento/setup_projeto/TRD.md
49
+
50
+ Revise o documento. Quando estiver satisfeito, execute:
51
+ /design setup_projeto
52
+
53
+ Se precisar adicionar mais insumos, coloque na pasta docs/PM/setup_projeto/
54
+ e execute:
55
+ /extract setup_projeto
56
+ ```
57
+
58
+ **O orquestrador encerra aqui.** Próximos passos do usuário:
59
+ 1. `/design setup_projeto` (pergunta aprovação → gera SDD + docs/Estrutura/ + projetos.yaml)
60
+ 2. `/plan setup_projeto` (gera tasks com campo Repo por task)
61
+ 3. `/dev setup_projeto` (INFRA-001 cria/clona repos em projetos/, executa tasks nos repos corretos)
62
+
63
+ ### Notas
64
+ - Esta skill roda UMA ÚNICA VEZ por projeto
65
+ - docs/Estrutura/ é gerado pelo /design (passo 3), não por tasks DOC
66
+ - `projetos.yaml` é gerado pelo /design (passo 3b) — mapeia serviços para repos
67
+ - Repos são criados/clonados pelo /dev (INFRA-001) dentro de `projetos/`
68
+ - /merge-delta NÃO se aplica ao setup (é criação, não atualização)
@@ -0,0 +1,6 @@
1
+ {
2
+ "enabledMcpjsonServers": [
3
+ "supabase"
4
+ ],
5
+ "enableAllProjectMcpServers": true
6
+ }
@@ -0,0 +1,199 @@
1
+ # CLAUDE.md — Projeto
2
+
3
+ > Regras globais para TODAS as interações neste projeto.
4
+ > Lido automaticamente no início de cada sessão.
5
+
6
+ ---
7
+
8
+ ## Inicialização (executar no início de cada sessão)
9
+
10
+ ### 1. Verificar dependências do workflow
11
+
12
+ | Dependência | Caminho | Se não existir |
13
+ |-------------|---------|----------------|
14
+ | Napkin (memória) | `.ai/memory/napkin.md` | Criar com formato padrão |
15
+ | Templates | `docs/_templates/` | ERRO — projeto não está configurado |
16
+ | Commands | `.claude/commands/` | ERRO — projeto não está configurado |
17
+ | Agents | `.claude/agents/` | ERRO — projeto não está configurado |
18
+ | Rules | `docs/Desenvolvimento/rules.md` | ERRO — projeto não está configurado |
19
+ | Retomada | `docs/Desenvolvimento/retomada.md` | OK — primeira sessão |
20
+
21
+ ### 2. Validar acesso a todos commands
22
+
23
+ Verificar que TODOS os 9 commands estão acessíveis:
24
+
25
+ | Command | Caminho |
26
+ |---------|---------|
27
+ | `/setup-projeto` | `.claude/commands/setup-projeto.md` |
28
+ | `/feature` | `.claude/commands/feature.md` |
29
+ | `/discovery` | `.claude/commands/discovery.md` |
30
+ | `/extract` | `.claude/commands/extract.md` |
31
+ | `/design` | `.claude/commands/design.md` |
32
+ | `/plan` | `.claude/commands/plan.md` |
33
+ | `/dev` | `.claude/commands/dev.md` |
34
+ | `/merge-delta` | `.claude/commands/merge-delta.md` |
35
+ | `/pausar` | `.claude/commands/pausar.md` |
36
+
37
+ Se algum command não for encontrado → avisar o usuário.
38
+
39
+ ### 3. Carregar contexto
40
+
41
+ 1. Ler `.ai/memory/napkin.md` — decisões e padrões acumulados
42
+ 2. Ler `docs/Desenvolvimento/retomada.md` (se existir) — ponto de retomada da última sessão
43
+ 3. Ler `docs/Estrutura/` (se existir) — contexto global do projeto
44
+ 4. Ler `docs/Desenvolvimento/rules.md` — regras de desenvolvimento
45
+
46
+ ---
47
+
48
+ ## Identidade do Projeto
49
+
50
+ Este é um projeto que utiliza desenvolvimento **spec-first** assistido por IA.
51
+ Nenhum código é escrito sem especificação aprovada (SDD).
52
+
53
+ ### Arquitetura: Projeto-base vs Repos de código
54
+
55
+ ```
56
+ ESTE REPO (projeto-base) = ORQUESTRADOR
57
+ ├── docs/ ← specs, PRDs, SDDs, tasks (fonte de verdade)
58
+ ├── projetos.yaml ← manifesto de repos
59
+ └── projetos/ ← repos de código (gitignored, cada um com .git próprio)
60
+ ├── api/ ← repo: org/projeto-api
61
+ ├── web/ ← repo: org/projeto-web
62
+ └── worker/ ← repo: org/projeto-worker
63
+ ```
64
+
65
+ **Regra clara**:
66
+ - **Specs, docs, tasks, progresso** → ficam NESTE repo (projeto-base)
67
+ - **Código, testes, Dockerfiles, CI** → ficam nos repos em `projetos/`
68
+ - **Commits de código** → nos repos do serviço, NUNCA no projeto-base
69
+ - **Git workflow (branches, PRs, merge)** → se aplica aos repos em `projetos/`
70
+
71
+ ## Pipeline do Workflow
72
+
73
+ ```
74
+ docs/PM/ (qualquer arquivo)
75
+ ↓ /setup-projeto (uma vez) ou /feature (por feature)
76
+ /sf-discovery → análise profunda dos insumos (RECOMENDADO, opcional)
77
+
78
+ /extract → PRD ou TRD (checkpoint — usuário revisa e aprova)
79
+
80
+ /design → SDD + projetos.yaml + docs/Estrutura/ (setup)
81
+
82
+ /plan → *_tasks.md + Progresso.md (tasks com campo Repo:)
83
+
84
+ /dev → INFRA-001 cria repos → código nos repos (Security Review pós-dev)
85
+
86
+ /merge-delta → docs/Estrutura/ atualizado (apenas para features)
87
+ ```
88
+
89
+ ## Commands disponíveis (slash commands)
90
+
91
+ | Command | Tipo | O que faz |
92
+ |---------|------|-----------|
93
+ | `/setup-projeto` | Orquestrador | Bootstrap: cria .context.md, chama /extract, para no checkpoint. Roda UMA vez |
94
+ | `/feature <nome>` | Orquestrador | Feature: cria .context.md tipo PRD, chama /extract, para no checkpoint |
95
+ | `/discovery <path>` | Utilitária | Análise profunda dos insumos (RECOMENDADO antes do /extract) |
96
+ | `/extract <nome>` | Atômico | Lê docs/PM/{nome}/ → gera PRD ou TRD. Re-executável para novos insumos |
97
+ | `/design <nome>` | Atômico | Pergunta aprovação → gera SDD a partir do PRD/TRD |
98
+ | `/plan <nome>` | Atômico | Lê SDD → gera tasks por área + Progresso.md |
99
+ | `/dev <nome>` | Atômico | Implementa tasks com loop (implement → test → review). Agents por área |
100
+ | `/merge-delta <nome>` | Atômico | Aplica SDD §11 Delta Specs em docs/Estrutura/ |
101
+ | `/pausar` | Utilitária | Encerra sessão: salva estado, atualiza napkin, gera retomada.md |
102
+
103
+ ## Agents especializados (usados pelo /dev)
104
+
105
+ | Agent | Área | Stack padrão | Perfil |
106
+ |-------|------|-------------|--------|
107
+ | Backend Coder | BACK | .NET 8 / C# | `.claude/agents/backend-coder.md` |
108
+ | Frontend Coder | FRONT | React + Fusion | `.claude/agents/frontend-coder.md` |
109
+ | DB Coder | BANCO | PostgreSQL 16 | `.claude/agents/db-coder.md` |
110
+ | Infra Coder | INFRA | Docker | `.claude/agents/infra-coder.md` |
111
+ | Doc Writer | DOC | — | `.claude/agents/doc-writer.md` |
112
+ | Reviewer | Todas | — | `.claude/agents/reviewer.md` |
113
+ | Security Reviewer | Todas | — | `.claude/agents/security-reviewer.md` |
114
+
115
+ ## Estado da pipeline (`.context.md`)
116
+
117
+ Cada feature/setup tem um `.context.md` em `docs/Desenvolvimento/{nome}/`:
118
+
119
+ ```
120
+ not_started → extract_done → approved → design_done → plan_done → dev_in_progress → dev_done → done
121
+ ```
122
+
123
+ Antes de executar qualquer command, verificar o status no `.context.md`. Cada command só avança se o status anterior está correto. Apenas commands atualizam `.context.md` — o usuário nunca edita manualmente.
124
+
125
+ ## Regras Invioláveis
126
+
127
+ 1. **Spec-first**: NUNCA gerar código sem SDD aprovado
128
+ 2. **PM é sagrado**: NUNCA modificar arquivos em `docs/PM/`
129
+ 3. **Extração rígida**: categorias fixas do template, sem texto narrativo, ambiguidades são BLOQUEANTES
130
+ 4. **SDD é auto-contido**: coder lê APENAS SDD + task, NUNCA PRD/PM diretamente
131
+ 5. **Memória ativa**: ler napkin.md no início, atualizar ao descobrir padrões/armadilhas
132
+ 6. **Progresso atualizado**: atualizar Progresso.md ao concluir cada task
133
+ 7. **Delta Specs**: todo SDD tem §11 ADDED/MODIFIED/REMOVED — obrigatório
134
+ 8. **Testes junto com código**: implementar e testar na mesma task, não separar
135
+ 9. **Não commitar sem pedir**: sempre perguntar antes de commitar
136
+
137
+ ## Estrutura de Documentação
138
+
139
+ ```
140
+ docs/
141
+ ├── PM/ ← Insumos brutos (QUALQUER formato — nunca modificar)
142
+ │ ├── setup_projeto/ ← Insumos de bootstrap
143
+ │ └── feat_*/ ← Insumos por feature
144
+ ├── _templates/ ← 18 templates (feature/7 + estrutura/8 + global/1 + projetos.yaml + backlog + extract-log)
145
+ ├── Estrutura/ ← Retrato global do projeto (gerado pelo /design)
146
+ └── Desenvolvimento/ ← Artefatos por feature
147
+ ├── rules.md ← Regras de desenvolvimento
148
+ └── {nome}/ ← PRD/TRD, SDD, *_tasks.md, Progresso.md, .context.md, .extract-log.md
149
+ projetos/ ← Repos de serviços (gitignored, cada um com .git próprio)
150
+ projetos.yaml ← Manifesto: serviço → repo → áreas → stack
151
+ ```
152
+
153
+ ## Convenções
154
+
155
+ - **Pastas**: `feat_nome`, `bug_nome`, `task_nome` (snake_case com prefixo)
156
+ - **Task IDs**: `AREA-NNN` (BANCO-001, BACK-001, FRONT-001)
157
+ - **Regras de negócio**: `RN-NNN` (IDs estáveis, nunca renumerar)
158
+ - **Commits**: `tipo(TASK-ID): descrição` (feat, fix, refactor, test, docs, chore)
159
+ - **Branches**: `feature/feat_nome`, `bugfix/bug_nome`, `task/task_nome`
160
+
161
+ ## Quando Parar e Perguntar
162
+
163
+ - `docs/PM/{nome}/` vazio ou inexistente → PARAR
164
+ - Ambiguidade na extração → listar como pergunta BLOQUEANTE, PARAR
165
+ - `.context.md` com status incompatível com o command → PARAR, informar status atual
166
+ - Task com dependência não concluída → avisar, não pular
167
+ - Dúvida sobre regra de negócio → perguntar, NUNCA assumir
168
+ - Quality gate reprovado 3x → escalar pro usuário
169
+
170
+ ## Arquivos Sensíveis
171
+
172
+ ### NUNCA modificar
173
+ - `docs/PM/**/*` — Insumos brutos. Somente leitura.
174
+ - `.env`, `.env.*` — Secrets.
175
+ - `docs/Estrutura/ADRs.md` — ADRs aceitas são imutáveis (apenas adicionar novas).
176
+
177
+ ### Requerem aprovação
178
+ - `docs/Estrutura/*` — Só alterar via /merge-delta após /dev.
179
+ - `docs/Desenvolvimento/rules.md` — Alteração explícita.
180
+ - `CLAUDE.md` — Meta-regras. Alteração requer aprovação.
181
+ - `.claude/commands/*`, `.claude/agents/*` — Alteração requer aprovação.
182
+
183
+ ### Formato rígido (gerados por commands)
184
+ - `.context.md` — YAML frontmatter, apenas commands atualizam.
185
+ - `.extract-log.md` — Append-only, hashes obrigatórios.
186
+ - `PRD.md`, `TRD.md`, `sdd.md` — Seguir template exato.
187
+ - `*_tasks.md` — IDs sequenciais, campos obrigatórios.
188
+ - `Progresso.md` — Tabelas com formato fixo.
189
+
190
+ ## Referências
191
+
192
+ | Doc | Onde |
193
+ |-----|------|
194
+ | Rules de dev | `docs/Desenvolvimento/rules.md` |
195
+ | Memória | `.ai/memory/napkin.md` |
196
+ | Commands | `.claude/commands/*.md` |
197
+ | Agents | `.claude/agents/*.md` |
198
+ | Templates | `docs/_templates/` |
199
+ | Estrutura do sistema | `docs/Estrutura/*.md` (após setup) |
File without changes
@@ -0,0 +1,229 @@
1
+ # Regras de Desenvolvimento
2
+
3
+ > Regras que todos os agentes de desenvolvimento devem seguir.
4
+ > Lido pelo Coder/Senior Coder e Reviewer antes de cada task.
5
+ > Aplicado globalmente a todas as features.
6
+
7
+ ---
8
+
9
+ <!--
10
+ =============================================================================
11
+ INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
12
+ =============================================================================
13
+
14
+ QUANDO LER: Toda vez que /dev executar uma task. Obrigatório.
15
+ QUEM LÊ: Coder, Senior Coder e Reviewer.
16
+ COMO USAR: Regras aqui são LEI — não são sugestões. Violações reprovam a task no quality gate.
17
+
18
+ PERSONALIZAÇÃO: Este arquivo é editado manualmente pelo time.
19
+ As regras abaixo são o padrão do framework. O time pode:
20
+ - Adicionar regras específicas da stack
21
+ - Remover regras que não se aplicam
22
+ - Ajustar convenções ao projeto
23
+
24
+ =============================================================================
25
+ -->
26
+
27
+ ## Regras Invioláveis
28
+
29
+ 1. **Spec-first**: Nenhuma task pode ser executada sem SDD aprovado
30
+ 2. **SDD é a fonte**: O coder lê APENAS o SDD + task — nunca consulta PRD ou PM diretamente
31
+ 3. **Um commit por task**: Cada task gera exatamente 1 commit
32
+ 4. **Sem invenção**: Se o SDD não especifica, o coder NÃO assume — para e reporta
33
+ 5. **Entregáveis contínuos**: Toda feature é faseada em entregáveis incrementais. Cada fase entrega valor ao usuário e pode ir para produção independentemente. Nunca "tudo ou nada" — sempre "pequeno e constante"
34
+ 6. **Nunca na main**: Todo código é desenvolvido em branch própria. Merge apenas via PR aprovado pelo usuário
35
+
36
+ ## Convenções de Código
37
+
38
+ ### Padrão geral
39
+ - Todo código segue as convenções de `docs/Estrutura/Stack.md`
40
+ - Nomes em inglês (código) — documentação em português
41
+ - Sem código morto (comentado) — se não usa, apaga
42
+ - Sem secrets hardcoded — sempre variáveis de ambiente
43
+
44
+ ### Backend
45
+ - Testes obrigatórios: mínimo happy path + 1 cenário de erro
46
+ - Validação de input na borda (controller/handler) — não no service
47
+ - Erros de negócio: usar códigos definidos em `docs/Estrutura/API.md`
48
+ - Tipos explícitos (sem `any`, `object`, `dynamic` genéricos)
49
+
50
+ ### Frontend
51
+ - Componentes tipados com props documentadas
52
+ - Estados explícitos: loading, empty, error, success
53
+ - Sem lógica de negócio no componente — delegar para hooks/services
54
+
55
+ ### Banco de dados
56
+ - Toda migration tem rollback testado
57
+ - Execução sequencial — nunca pular migrations
58
+ - Seeds apenas para ambiente de desenvolvimento
59
+
60
+ ## Convenções de Git
61
+
62
+ > **Escopo**: Estas regras se aplicam aos **repositórios em `projetos/`** (api, web, worker, etc.).
63
+ > O projeto-base em si é o orquestrador — specs e docs ficam aqui, código fica nos repos.
64
+
65
+ ### Commits
66
+ ```
67
+ tipo(TASK-ID): descrição curta
68
+
69
+ Corpo opcional com detalhes.
70
+
71
+ Refs: feat_cadastro_cliente
72
+ ```
73
+
74
+ | Tipo | Quando usar |
75
+ |------|-------------|
76
+ | `feat` | Nova funcionalidade |
77
+ | `fix` | Correção de bug |
78
+ | `refactor` | Mudança sem alterar comportamento |
79
+ | `test` | Adição/alteração de testes |
80
+ | `docs` | Documentação |
81
+ | `chore` | Configuração, build, CI |
82
+
83
+ ### Branches
84
+ ```
85
+ feature/feat_cadastro_cliente
86
+ feature/feat_mvp_fase1
87
+ bugfix/bug_cpf_duplicado
88
+ task/task_otimizar_listagem
89
+ ```
90
+
91
+ | Regra | Descrição |
92
+ |-------|-----------|
93
+ | Base | Sempre a partir de `main` atualizada (origin) |
94
+ | Merge | Via Pull Request aprovado pelo usuário — NUNCA merge automático |
95
+ | Conflitos | Resolver antes de mergear — nunca force push em branch compartilhada |
96
+
97
+ ### Git Workflow (5 passos obrigatórios)
98
+
99
+ O /dev DEVE seguir este fluxo para CADA fase de entrega:
100
+
101
+ #### Passo 1 — Antes de codar
102
+ ```bash
103
+ # Verificar working tree limpo
104
+ git status
105
+ # Se há mudanças pendentes → sugerir commit ou stash antes de prosseguir
106
+ # NUNCA começar a codar com working tree sujo
107
+ ```
108
+
109
+ #### Passo 2 — Criar branch
110
+ ```bash
111
+ # Atualizar main a partir do remote
112
+ git checkout main
113
+ git pull origin main
114
+
115
+ # Criar branch para a fase
116
+ git checkout -b feature/{nome}_fase{N}
117
+ # Ex: feature/feat_mvp_fase1
118
+ ```
119
+ - Branch criada no **repo do serviço** (projetos/api, projetos/web, etc.)
120
+ - Se a fase afeta múltiplos repos → branch com mesmo nome em cada um
121
+ - NUNCA desenvolver direto na main
122
+
123
+ #### Passo 3 — Ao terminar a fase
124
+ ```bash
125
+ # Atualizar Progresso.md com status da fase
126
+ # Push da branch
127
+ git push origin feature/{nome}_fase{N}
128
+
129
+ # Abrir PR com template detalhado (ver seção abaixo)
130
+ gh pr create --title "..." --body "..."
131
+ ```
132
+ - Deixar ambiente local **rodando** (docker compose up + dotnet run + npm run dev)
133
+ - Informar ao usuário que o ambiente está ON para testes manuais
134
+
135
+ #### Passo 4 — Aguardar aprovação
136
+ ```
137
+ ⏸️ PARAR e aguardar.
138
+ - O usuário revisa o PR, testa manualmente o ambiente local
139
+ - Merge é MANUAL — o agente NUNCA faz merge
140
+ - Se o usuário pedir ajustes → corrigir na mesma branch, push, atualizar PR
141
+ ```
142
+
143
+ #### Passo 5 — Após merge (quando usuário confirmar)
144
+ ```bash
145
+ # Atualizar main local
146
+ git checkout main
147
+ git pull origin main
148
+
149
+ # Limpar branches mergeadas
150
+ git branch -d feature/{nome}_fase{N}
151
+ git remote prune origin
152
+ ```
153
+
154
+ ### Template de Pull Request
155
+
156
+ Todo PR aberto pelo /dev DEVE seguir este formato:
157
+
158
+ ```markdown
159
+ ## Fase {N} — {Nome da fase}
160
+
161
+ ### O que foi entregue
162
+ - [ ] {Entregável 1 da fase}
163
+ - [ ] {Entregável 2 da fase}
164
+
165
+ ### Tasks concluídas
166
+ | Task | Descrição | Testes |
167
+ |------|-----------|--------|
168
+ | BACK-001 | Criar endpoint X | ✅ unit + integration |
169
+ | BANCO-001 | Migration tabela Y | ✅ rollback testado |
170
+ | FRONT-001 | Tela de cadastro | ✅ unit |
171
+
172
+ ### Testes
173
+ - ✅ Unit tests passando ({N}/{N})
174
+ - ✅ Integration tests passando ({N}/{N})
175
+ - ✅ Security Review aprovado
176
+ - ⬜ E2E (aguardando teste manual do usuário)
177
+
178
+ ### Como testar manualmente
179
+ 1. Ambiente já está rodando em:
180
+ - API: http://localhost:8080
181
+ - Web: http://localhost:3000
182
+ - Banco: localhost:5432
183
+ 2. Fluxo para testar:
184
+ - {Passo 1 do teste manual}
185
+ - {Passo 2 do teste manual}
186
+ - {Resultado esperado}
187
+
188
+ ### Observações
189
+ - {Decisões tomadas, trade-offs, pontos de atenção}
190
+ ```
191
+
192
+ ## Quality Gate (por task)
193
+
194
+ > Checklist obrigatório. O Reviewer valida TODOS os itens antes de aprovar.
195
+
196
+ - [ ] Código compila sem erros
197
+ - [ ] Testes passam (se aplicável à task)
198
+ - [ ] Lint limpo (sem warnings não justificados)
199
+ - [ ] Critérios de aceite da task atendidos (ref SDD §9)
200
+ - [ ] Sem TODOs no código sem justificativa
201
+ - [ ] Sem secrets hardcoded
202
+ - [ ] Commit segue convenção: `tipo(TASK-ID): descrição`
203
+ - [ ] Arquivos listados na task foram os únicos modificados (sem side effects)
204
+
205
+ ## Regras por Stack
206
+
207
+ > Seção opcional. Adicionar regras específicas da tecnologia escolhida.
208
+ > Exemplos abaixo — remover/ajustar conforme o projeto.
209
+
210
+ <!--
211
+ ### Node.js / TypeScript
212
+ - ESLint + Prettier como formatador
213
+ - Strict mode no tsconfig
214
+ - Path aliases configurados (@/modules, @/shared)
215
+
216
+ ### Python
217
+ - Ruff como linter/formatter
218
+ - Type hints obrigatórios (mypy strict)
219
+ - Virtual environment (venv ou poetry)
220
+
221
+ ### React / Next.js
222
+ - Server Components por padrão, Client Components só quando necessário
223
+ - Zustand ou Context para estado global (não Redux)
224
+ - Tailwind CSS para estilos
225
+ -->
226
+
227
+ ---
228
+
229
+ > **Atualização**: Editado manualmente pelo time. Aplicado globalmente a todas as features.
File without changes
File without changes
File without changes