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.
- package/README.md +144 -147
- package/bin/cli.js +52 -52
- package/lib/init.js +89 -93
- package/package.json +24 -23
- package/templates/.ai/memory/napkin.md +68 -68
- package/templates/.claude/agents/backend-coder.md +215 -215
- package/templates/.claude/agents/db-coder.md +165 -165
- package/templates/.claude/agents/doc-writer.md +51 -51
- package/templates/.claude/agents/frontend-coder.md +222 -222
- package/templates/.claude/agents/infra-coder.md +341 -341
- package/templates/.claude/agents/reviewer.md +99 -99
- package/templates/.claude/agents/security-reviewer.md +153 -153
- package/templates/.claude/commands/design.md +107 -107
- package/templates/.claude/commands/dev.md +189 -167
- package/templates/.claude/commands/extract.md +137 -137
- package/templates/.claude/commands/feature.md +60 -60
- package/templates/.claude/commands/merge-delta.md +70 -70
- package/templates/.claude/commands/plan.md +86 -86
- package/templates/.claude/commands/{pausar.md → session-finish.md} +83 -83
- package/templates/.claude/commands/setup-projeto.md +68 -68
- package/templates/.claude/settings.local.json +6 -6
- package/templates/CLAUDE.md +198 -199
- package/templates/docs/Desenvolvimento/rules.md +229 -229
- package/templates/docs/_templates/estrutura/ADRs.template.md +91 -91
- package/templates/docs/_templates/estrutura/API.template.md +144 -144
- package/templates/docs/_templates/estrutura/Arquitetura.template.md +82 -82
- package/templates/docs/_templates/estrutura/Infraestrutura.template.md +104 -104
- package/templates/docs/_templates/estrutura/Modelo_Dados.template.md +99 -99
- package/templates/docs/_templates/estrutura/Seguranca.template.md +138 -138
- package/templates/docs/_templates/estrutura/Stack.template.md +78 -78
- package/templates/docs/_templates/estrutura/Visao.template.md +82 -82
- package/templates/docs/_templates/feature/Progresso.template.md +136 -136
- package/templates/docs/_templates/feature/backlog-extraido.template.md +154 -154
- package/templates/docs/_templates/feature/context.template.md +42 -42
- package/templates/docs/_templates/feature/extract-log.template.md +38 -38
- package/templates/docs/_templates/feature/projetos.template.yaml +73 -73
- package/templates/docs/_templates/global/progresso_global.template.md +57 -57
|
@@ -1,229 +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.
|
|
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.
|
|
@@ -1,91 +1,91 @@
|
|
|
1
|
-
# ADRs — Architecture Decision Records
|
|
2
|
-
|
|
3
|
-
> Registro de decisões arquiteturais com contexto, alternativas e consequências.
|
|
4
|
-
> Cada decisão é imutável após aceita. Novas decisões podem substituir anteriores.
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
<!--
|
|
9
|
-
=============================================================================
|
|
10
|
-
INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
|
|
11
|
-
=============================================================================
|
|
12
|
-
|
|
13
|
-
ORIGEM: Criado pelo /setup-projeto com ADRs iniciais (stack, arquitetura base).
|
|
14
|
-
ATUALIZAÇÃO: Novas ADRs adicionadas quando:
|
|
15
|
-
- /setup-projeto define stack e arquitetura (ADRs iniciais)
|
|
16
|
-
- /design gera SDD §2 com decisões de design significativas
|
|
17
|
-
- /merge-delta detecta mudança de stack ou padrão
|
|
18
|
-
- Usuário toma decisão que impacta arquitetura
|
|
19
|
-
|
|
20
|
-
COMO GERAR:
|
|
21
|
-
1. Para cada decisão significativa, criar ADR com TODOS os campos
|
|
22
|
-
2. Contexto: POR QUE essa decisão foi necessária (não apenas "precisávamos")
|
|
23
|
-
3. Alternativas: OBRIGATÓRIO listar ao menos 1 alternativa (com motivo da rejeição)
|
|
24
|
-
4. Consequências: o que MUDA por causa da decisão (positivo E negativo)
|
|
25
|
-
|
|
26
|
-
REGRAS:
|
|
27
|
-
- IDs sequenciais: ADR-001, ADR-002... nunca reutilizar
|
|
28
|
-
- NUNCA editar ADR com status "aceita" — criar nova com "substituída por ADR-XXX"
|
|
29
|
-
- Status "proposta" = ainda em discussão, não implementar até aceitar
|
|
30
|
-
- Toda mudança de stack, banco, framework DEVE ter ADR
|
|
31
|
-
- ADRs são APPEND-ONLY — histórico importa
|
|
32
|
-
|
|
33
|
-
QUANDO CRIAR ADR:
|
|
34
|
-
- Escolha de tecnologia/framework
|
|
35
|
-
- Mudança de padrão de design
|
|
36
|
-
- Decisão de infra (cloud provider, DB engine)
|
|
37
|
-
- Trade-off significativo (performance vs simplicidade, etc.)
|
|
38
|
-
|
|
39
|
-
QUANDO NÃO CRIAR ADR:
|
|
40
|
-
- Escolha de nome de variável
|
|
41
|
-
- Implementação seguindo padrão já definido
|
|
42
|
-
- Bug fix
|
|
43
|
-
- Refactor sem mudança de interface
|
|
44
|
-
|
|
45
|
-
=============================================================================
|
|
46
|
-
-->
|
|
47
|
-
|
|
48
|
-
## Índice
|
|
49
|
-
|
|
50
|
-
| ADR | Título | Status | Data |
|
|
51
|
-
|-----|--------|--------|------|
|
|
52
|
-
| ADR-001 | {{Título}} | proposta / aceita / substituída / descartada | |
|
|
53
|
-
|
|
54
|
-
## Formato
|
|
55
|
-
|
|
56
|
-
Cada ADR segue este modelo:
|
|
57
|
-
|
|
58
|
-
```markdown
|
|
59
|
-
### ADR-NNN: Título da Decisão
|
|
60
|
-
- **Status**: proposta | aceita | substituída por ADR-XXX | descartada
|
|
61
|
-
- **Data**: YYYY-MM-DD
|
|
62
|
-
- **Contexto**: Por que essa decisão foi necessária?
|
|
63
|
-
- **Decisão**: O que decidimos?
|
|
64
|
-
- **Alternativas consideradas**:
|
|
65
|
-
1. Alternativa A — rejeitada porque...
|
|
66
|
-
2. Alternativa B — rejeitada porque...
|
|
67
|
-
- **Consequências**:
|
|
68
|
-
- Positivas: ...
|
|
69
|
-
- Negativas: ...
|
|
70
|
-
- Riscos: ...
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
---
|
|
74
|
-
|
|
75
|
-
## Decisões
|
|
76
|
-
|
|
77
|
-
### ADR-001: {{Título}}
|
|
78
|
-
- **Status**: aceita
|
|
79
|
-
- **Data**:
|
|
80
|
-
- **Contexto**:
|
|
81
|
-
- **Decisão**:
|
|
82
|
-
- **Alternativas consideradas**:
|
|
83
|
-
1. —
|
|
84
|
-
- **Consequências**:
|
|
85
|
-
- Positivas:
|
|
86
|
-
- Negativas:
|
|
87
|
-
- Riscos:
|
|
88
|
-
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
> **Regra**: ADRs aceitas são imutáveis. Para reverter uma decisão, crie nova ADR com status "substituída por ADR-XXX" na ADR original.
|
|
1
|
+
# ADRs — Architecture Decision Records
|
|
2
|
+
|
|
3
|
+
> Registro de decisões arquiteturais com contexto, alternativas e consequências.
|
|
4
|
+
> Cada decisão é imutável após aceita. Novas decisões podem substituir anteriores.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!--
|
|
9
|
+
=============================================================================
|
|
10
|
+
INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
|
|
11
|
+
=============================================================================
|
|
12
|
+
|
|
13
|
+
ORIGEM: Criado pelo /setup-projeto com ADRs iniciais (stack, arquitetura base).
|
|
14
|
+
ATUALIZAÇÃO: Novas ADRs adicionadas quando:
|
|
15
|
+
- /setup-projeto define stack e arquitetura (ADRs iniciais)
|
|
16
|
+
- /design gera SDD §2 com decisões de design significativas
|
|
17
|
+
- /merge-delta detecta mudança de stack ou padrão
|
|
18
|
+
- Usuário toma decisão que impacta arquitetura
|
|
19
|
+
|
|
20
|
+
COMO GERAR:
|
|
21
|
+
1. Para cada decisão significativa, criar ADR com TODOS os campos
|
|
22
|
+
2. Contexto: POR QUE essa decisão foi necessária (não apenas "precisávamos")
|
|
23
|
+
3. Alternativas: OBRIGATÓRIO listar ao menos 1 alternativa (com motivo da rejeição)
|
|
24
|
+
4. Consequências: o que MUDA por causa da decisão (positivo E negativo)
|
|
25
|
+
|
|
26
|
+
REGRAS:
|
|
27
|
+
- IDs sequenciais: ADR-001, ADR-002... nunca reutilizar
|
|
28
|
+
- NUNCA editar ADR com status "aceita" — criar nova com "substituída por ADR-XXX"
|
|
29
|
+
- Status "proposta" = ainda em discussão, não implementar até aceitar
|
|
30
|
+
- Toda mudança de stack, banco, framework DEVE ter ADR
|
|
31
|
+
- ADRs são APPEND-ONLY — histórico importa
|
|
32
|
+
|
|
33
|
+
QUANDO CRIAR ADR:
|
|
34
|
+
- Escolha de tecnologia/framework
|
|
35
|
+
- Mudança de padrão de design
|
|
36
|
+
- Decisão de infra (cloud provider, DB engine)
|
|
37
|
+
- Trade-off significativo (performance vs simplicidade, etc.)
|
|
38
|
+
|
|
39
|
+
QUANDO NÃO CRIAR ADR:
|
|
40
|
+
- Escolha de nome de variável
|
|
41
|
+
- Implementação seguindo padrão já definido
|
|
42
|
+
- Bug fix
|
|
43
|
+
- Refactor sem mudança de interface
|
|
44
|
+
|
|
45
|
+
=============================================================================
|
|
46
|
+
-->
|
|
47
|
+
|
|
48
|
+
## Índice
|
|
49
|
+
|
|
50
|
+
| ADR | Título | Status | Data |
|
|
51
|
+
|-----|--------|--------|------|
|
|
52
|
+
| ADR-001 | {{Título}} | proposta / aceita / substituída / descartada | |
|
|
53
|
+
|
|
54
|
+
## Formato
|
|
55
|
+
|
|
56
|
+
Cada ADR segue este modelo:
|
|
57
|
+
|
|
58
|
+
```markdown
|
|
59
|
+
### ADR-NNN: Título da Decisão
|
|
60
|
+
- **Status**: proposta | aceita | substituída por ADR-XXX | descartada
|
|
61
|
+
- **Data**: YYYY-MM-DD
|
|
62
|
+
- **Contexto**: Por que essa decisão foi necessária?
|
|
63
|
+
- **Decisão**: O que decidimos?
|
|
64
|
+
- **Alternativas consideradas**:
|
|
65
|
+
1. Alternativa A — rejeitada porque...
|
|
66
|
+
2. Alternativa B — rejeitada porque...
|
|
67
|
+
- **Consequências**:
|
|
68
|
+
- Positivas: ...
|
|
69
|
+
- Negativas: ...
|
|
70
|
+
- Riscos: ...
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Decisões
|
|
76
|
+
|
|
77
|
+
### ADR-001: {{Título}}
|
|
78
|
+
- **Status**: aceita
|
|
79
|
+
- **Data**:
|
|
80
|
+
- **Contexto**:
|
|
81
|
+
- **Decisão**:
|
|
82
|
+
- **Alternativas consideradas**:
|
|
83
|
+
1. —
|
|
84
|
+
- **Consequências**:
|
|
85
|
+
- Positivas:
|
|
86
|
+
- Negativas:
|
|
87
|
+
- Riscos:
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
> **Regra**: ADRs aceitas são imutáveis. Para reverter uma decisão, crie nova ADR com status "substituída por ADR-XXX" na ADR original.
|