spec-first-copilot 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.
- package/bin/cli.js +52 -0
- package/package.json +25 -0
- package/templates/.ai/memory/napkin.md +68 -0
- package/templates/.github/agents/backend-coder.md +215 -0
- package/templates/.github/agents/db-coder.md +165 -0
- package/templates/.github/agents/doc-writer.md +51 -0
- package/templates/.github/agents/frontend-coder.md +222 -0
- package/templates/.github/agents/infra-coder.md +341 -0
- package/templates/.github/agents/reviewer.md +99 -0
- package/templates/.github/agents/security-reviewer.md +153 -0
- package/templates/.github/copilot-instructions.md +176 -0
- package/templates/.github/instructions/docs.instructions.md +123 -0
- package/templates/.github/instructions/sensitive-files.instructions.md +32 -0
- package/templates/.github/skills/sf-design/SKILL.md +181 -0
- package/templates/.github/skills/sf-dev/SKILL.md +326 -0
- package/templates/.github/skills/sf-discovery/SKILL.md +405 -0
- package/templates/.github/skills/sf-extract/SKILL.md +284 -0
- package/templates/.github/skills/sf-feature/SKILL.md +130 -0
- package/templates/.github/skills/sf-merge-delta/SKILL.md +142 -0
- package/templates/.github/skills/sf-pausar/SKILL.md +120 -0
- package/templates/.github/skills/sf-plan/SKILL.md +178 -0
- package/templates/.github/skills/sf-setup-projeto/SKILL.md +123 -0
- package/templates/docs/Desenvolvimento/.gitkeep +0 -0
- package/templates/docs/Desenvolvimento/rules.md +229 -0
- package/templates/docs/Estrutura/.gitkeep +0 -0
- package/templates/docs/PM/.gitkeep +0 -0
- package/templates/docs/PM/setup_projeto/.gitkeep +0 -0
- package/templates/docs/_templates/estrutura/ADRs.template.md +91 -0
- package/templates/docs/_templates/estrutura/API.template.md +144 -0
- package/templates/docs/_templates/estrutura/Arquitetura.template.md +82 -0
- package/templates/docs/_templates/estrutura/Infraestrutura.template.md +104 -0
- package/templates/docs/_templates/estrutura/Modelo_Dados.template.md +99 -0
- package/templates/docs/_templates/estrutura/Seguranca.template.md +138 -0
- package/templates/docs/_templates/estrutura/Stack.template.md +78 -0
- package/templates/docs/_templates/estrutura/Visao.template.md +82 -0
- package/templates/docs/_templates/feature/PRD.template.md +256 -0
- package/templates/docs/_templates/feature/Progresso.template.md +136 -0
- package/templates/docs/_templates/feature/TRD.template.md +200 -0
- package/templates/docs/_templates/feature/backlog-extraido.template.md +154 -0
- package/templates/docs/_templates/feature/context.template.md +42 -0
- package/templates/docs/_templates/feature/extract-log.template.md +38 -0
- package/templates/docs/_templates/feature/projetos.template.yaml +73 -0
- package/templates/docs/_templates/feature/sdd.template.md +372 -0
- package/templates/docs/_templates/feature/tasks.template.md +115 -0
- package/templates/docs/_templates/global/progresso_global.template.md +57 -0
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
# SDD — {{NOME}}
|
|
2
|
+
|
|
3
|
+
> **Software Design Document** — Fonte de verdade para implementação.
|
|
4
|
+
> Gerado a partir do PRD.md (features) ou TRD.md (setup).
|
|
5
|
+
> O Coder lê APENAS este documento + task específica.
|
|
6
|
+
> Se não está no SDD, não será implementado.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Meta
|
|
11
|
+
|
|
12
|
+
| Campo | Valor |
|
|
13
|
+
|-------|-------|
|
|
14
|
+
| Nome | `{{NOME}}` |
|
|
15
|
+
| Tipo | `{{feature|setup}}` |
|
|
16
|
+
| Documento de origem | `docs/Desenvolvimento/{{NOME}}/{{PRD|TRD}}.md` |
|
|
17
|
+
| Status | `rascunho` → `em revisão` → `aprovado` → `em dev` → `concluído` |
|
|
18
|
+
| Autor | /design |
|
|
19
|
+
| Criado em | |
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
<!--
|
|
24
|
+
=============================================================================
|
|
25
|
+
INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
|
|
26
|
+
=============================================================================
|
|
27
|
+
|
|
28
|
+
QUANDO USAR: Gerado pelo /design após PRD (features) ou TRD (setup) aprovado.
|
|
29
|
+
QUEM GERA: Agent Architect (Opus).
|
|
30
|
+
|
|
31
|
+
COMO GERAR:
|
|
32
|
+
1. Ler APENAS o PRD.md ou TRD.md aprovado — NUNCA ler PM diretamente
|
|
33
|
+
2. Ler docs/Estrutura/ para contexto de stack, API, modelo de dados
|
|
34
|
+
3. Traduzir requisitos (O QUE) em design técnico (COMO)
|
|
35
|
+
4. Manter rastreabilidade: cada item referencia o PRD/TRD (§X, RN-xxx)
|
|
36
|
+
5. Ser AUTOCONTIDO: o Coder não consulta PRD, TRD, PM, ou qualquer outro doc
|
|
37
|
+
|
|
38
|
+
PRINCÍPIOS:
|
|
39
|
+
- Conciso mas completo — se o Coder precisar de algo que não está aqui, o SDD está incompleto
|
|
40
|
+
- Contratos detalhados (request/response com schemas reais)
|
|
41
|
+
- Fluxos de dados como sequências textuais (não diagramas)
|
|
42
|
+
- Critérios de aceite em Given/When/Then (testáveis)
|
|
43
|
+
- Delta Specs obrigatório (o que muda no sistema global)
|
|
44
|
+
|
|
45
|
+
SEÇÕES: 11 seções fixas + Rastreabilidade. Não pular nenhuma.
|
|
46
|
+
Se uma seção não se aplica, escrever "N/A — [motivo]"
|
|
47
|
+
|
|
48
|
+
AUTENTICAÇÃO E AUTORIZAÇÃO (OBRIGATÓRIO):
|
|
49
|
+
- Em features: §5 (Endpoints) DEVE definir auth/authz para CADA endpoint:
|
|
50
|
+
- Autenticação: Bearer token, API Key, ou "público" (explícito)
|
|
51
|
+
- Autorização: quais roles/permissões acessam (ex: admin, user, owner)
|
|
52
|
+
- Se o PRD não definiu auth → usar o padrão de docs/Estrutura/Seguranca.md
|
|
53
|
+
- Se não há padrão definido → PARAR e perguntar ao usuário
|
|
54
|
+
- Em setup: §7 Segurança do TRD define o mecanismo global (JWT, OAuth, etc.)
|
|
55
|
+
O SDD deve refletir isso em §2 Decisões de Design
|
|
56
|
+
|
|
57
|
+
SETUP vs FEATURE:
|
|
58
|
+
- Em setup (tipo=setup), várias seções serão N/A (§4 Regras, §5 Endpoints, §6 Telas, §7 Fluxos, §8 Integrações)
|
|
59
|
+
Isso é NORMAL — setup foca em §1 Visão, §2 Decisões, §3 Modelo, §9 Aceite, §11 Delta
|
|
60
|
+
- Em features (tipo=feature), todas seções devem ser preenchidas quando aplicáveis
|
|
61
|
+
- A tabela de Rastreabilidade muda: "PRD Seção → SDD Seção" para features, "TRD Seção → SDD Seção" para setup
|
|
62
|
+
|
|
63
|
+
=============================================================================
|
|
64
|
+
-->
|
|
65
|
+
|
|
66
|
+
## 1. Visão Geral
|
|
67
|
+
|
|
68
|
+
### O que é
|
|
69
|
+
<!-- 2-3 frases: feature, público-alvo, problema que resolve -->
|
|
70
|
+
|
|
71
|
+
### Escopo
|
|
72
|
+
<!-- Limites claros: o que ENTRA e o que FICA DE FORA -->
|
|
73
|
+
|
|
74
|
+
### Premissas
|
|
75
|
+
- [ ] <!-- Ex: Usuário já está autenticado ao acessar esta feature -->
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## 2. Decisões de Design
|
|
80
|
+
|
|
81
|
+
> Mini-ADRs inline — cada decisão técnica relevante com justificativa.
|
|
82
|
+
> Referência: [ADRs.md](../../Estrutura/ADRs.md) para decisões globais.
|
|
83
|
+
|
|
84
|
+
| # | Decisão | Justificativa | Alternativa descartada |
|
|
85
|
+
|---|---------|---------------|------------------------|
|
|
86
|
+
| 1 | | | |
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## 3. Modelo de Dados
|
|
91
|
+
|
|
92
|
+
> Modelo completo para implementação. Tipos e constraints são obrigatórios.
|
|
93
|
+
|
|
94
|
+
### 3.1 Entidades
|
|
95
|
+
|
|
96
|
+
#### `{{nome_tabela}}`
|
|
97
|
+
|
|
98
|
+
| Campo | Tipo | Null? | Default | Constraint | Descrição |
|
|
99
|
+
|-------|------|-------|---------|------------|-----------|
|
|
100
|
+
| `id` | `UUID` | NOT NULL | `gen_random_uuid()` | PK | |
|
|
101
|
+
| `created_at` | `TIMESTAMPTZ` | NOT NULL | `NOW()` | | |
|
|
102
|
+
|
|
103
|
+
**Relações**:
|
|
104
|
+
- `tabela.campo` → `outra_tabela.campo` (FK, ON DELETE CASCADE)
|
|
105
|
+
|
|
106
|
+
**Índices**:
|
|
107
|
+
- `idx_tabela_campo` — tipo (btree/gin/gist) — justificativa
|
|
108
|
+
|
|
109
|
+
### 3.2 Migrations necessárias
|
|
110
|
+
|
|
111
|
+
| Ordem | Descrição | Dependência |
|
|
112
|
+
|-------|-----------|-------------|
|
|
113
|
+
| 1 | | nenhuma |
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 4. Regras de Negócio e Validações
|
|
118
|
+
|
|
119
|
+
> Cada regra rastreável ao PRD (coluna Ref). Cada validação com mensagem de erro.
|
|
120
|
+
> O Coder implementa EXATAMENTE o que está aqui — sem inferir regras extras.
|
|
121
|
+
|
|
122
|
+
### 4.1 Regras de Negócio
|
|
123
|
+
|
|
124
|
+
| ID | Regra | Onde aplica | Ref PRD |
|
|
125
|
+
|----|-------|-------------|---------|
|
|
126
|
+
| RN-001 | | back / front / banco | PRD §5 RN-001 |
|
|
127
|
+
|
|
128
|
+
### 4.2 Validações de Campos
|
|
129
|
+
|
|
130
|
+
| Campo | Validação | Obrigatório | Mensagem de erro |
|
|
131
|
+
|-------|-----------|-------------|-----------------|
|
|
132
|
+
| | | | |
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## 5. API — Endpoints
|
|
137
|
+
|
|
138
|
+
> Contratos completos. O Coder implementa exatamente estes schemas.
|
|
139
|
+
|
|
140
|
+
### `{{METHOD}} {{/api/v1/recurso}}` — {{Descrição}}
|
|
141
|
+
|
|
142
|
+
**Descrição**: {{o que faz}}
|
|
143
|
+
**Regras**: {{RN-xxx, RN-xxx}}
|
|
144
|
+
**Autenticação**: {{público | Bearer token | API Key}} — se não público, justificar
|
|
145
|
+
**Autorização**: {{roles permitidos: admin, user, owner}} — OBRIGATÓRIO se autenticado
|
|
146
|
+
**Rate Limit**: {{N req/min ou N/A}} — considerar para endpoints públicos/sensíveis
|
|
147
|
+
|
|
148
|
+
**Request Body**:
|
|
149
|
+
```json
|
|
150
|
+
{
|
|
151
|
+
"campo": "tipo (required|optional, validações)"
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**Response {{STATUS}}**:
|
|
156
|
+
```json
|
|
157
|
+
{
|
|
158
|
+
"campo": "tipo"
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**Erros**:
|
|
163
|
+
| Status | Código | Quando |
|
|
164
|
+
|--------|--------|--------|
|
|
165
|
+
| 401 | `UNAUTHORIZED` | Token ausente ou inválido |
|
|
166
|
+
| 403 | `FORBIDDEN` | Sem permissão para este recurso |
|
|
167
|
+
| 400 | `VALIDATION_ERROR` | Campos inválidos |
|
|
168
|
+
|
|
169
|
+
<!-- Repetir bloco para cada endpoint -->
|
|
170
|
+
|
|
171
|
+
> **Regra de Auth**: Todo endpoint DEVE ter Autenticação e Autorização definidos explicitamente.
|
|
172
|
+
> Se público, escrever "público" — nunca omitir. Erros 401/403 são obrigatórios em endpoints autenticados.
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## 6. Componentes e Telas
|
|
177
|
+
|
|
178
|
+
> Cada tela com seus componentes, estados e comportamentos.
|
|
179
|
+
|
|
180
|
+
### Tela: {{Nome}}
|
|
181
|
+
|
|
182
|
+
| Propriedade | Valor |
|
|
183
|
+
|-------------|-------|
|
|
184
|
+
| **Rota** | `{{/rota}}` |
|
|
185
|
+
| **Permissão** | {{roles}} |
|
|
186
|
+
| **Estado inicial** | {{descrição}} |
|
|
187
|
+
|
|
188
|
+
**Componentes**:
|
|
189
|
+
| Componente | Tipo | Comportamento |
|
|
190
|
+
|------------|------|---------------|
|
|
191
|
+
| | | |
|
|
192
|
+
|
|
193
|
+
**Estados**:
|
|
194
|
+
| Estado | Gatilho | Efeito visual |
|
|
195
|
+
|--------|---------|---------------|
|
|
196
|
+
| loading | requisição em andamento | skeleton/spinner |
|
|
197
|
+
| empty | lista vazia | mensagem |
|
|
198
|
+
| error | falha na API | toast + retry |
|
|
199
|
+
|
|
200
|
+
<!-- Repetir bloco para cada tela -->
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## 7. Fluxos de Dados
|
|
205
|
+
|
|
206
|
+
> Sequências de operações para cada funcionalidade principal.
|
|
207
|
+
> O Coder segue estes fluxos como guia de implementação.
|
|
208
|
+
|
|
209
|
+
### Fluxo: {{Nome}} (fluxo principal)
|
|
210
|
+
|
|
211
|
+
```
|
|
212
|
+
Usuário {{ação}} → [front] {{passo}} → [back] {{passo}}
|
|
213
|
+
→ [back] {{passo}}
|
|
214
|
+
→ [back] retorna {{response}}
|
|
215
|
+
→ [front] {{feedback}}
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### Fluxo: {{Nome}} (fluxo de erro)
|
|
219
|
+
|
|
220
|
+
```
|
|
221
|
+
{{sequência do erro}}
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
<!-- Adicionar fluxos para cada funcionalidade -->
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## 8. Integrações Externas
|
|
229
|
+
|
|
230
|
+
> Serviços de terceiros ou outros módulos do sistema.
|
|
231
|
+
|
|
232
|
+
| Serviço | Protocolo | Quando | Timeout | Retry | Fallback |
|
|
233
|
+
|---------|-----------|--------|---------|-------|----------|
|
|
234
|
+
| | | | | | |
|
|
235
|
+
|
|
236
|
+
### Contrato: {{Nome do Serviço}}
|
|
237
|
+
|
|
238
|
+
**Request**: `{{METHOD}} {{URL}}`
|
|
239
|
+
```json
|
|
240
|
+
{ }
|
|
241
|
+
```
|
|
242
|
+
**Response esperada**:
|
|
243
|
+
```json
|
|
244
|
+
{ }
|
|
245
|
+
```
|
|
246
|
+
**Tratamento de falha**: <!-- O que acontece se o serviço estiver fora -->
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## 9. Estratégia de Testes
|
|
251
|
+
|
|
252
|
+
> Define O QUE testar, COMO testar, ONDE ficam os testes e QUANDO rodar.
|
|
253
|
+
> O Coder implementa testes junto com o código — não é etapa separada.
|
|
254
|
+
|
|
255
|
+
### 9.1 Testes por área
|
|
256
|
+
|
|
257
|
+
| Área | Tipo | Framework | Comando | O que cobre |
|
|
258
|
+
|------|------|-----------|---------|-------------|
|
|
259
|
+
| BACK | Unit | <!-- xUnit/Jest/pytest --> | <!-- dotnet test --> | Services, validações RN-*, regras de negócio |
|
|
260
|
+
| BACK | Integration | <!-- WebApplicationFactory/Supertest --> | <!-- dotnet test --filter Integration --> | Endpoints completos (request → response) |
|
|
261
|
+
| FRONT | Unit | <!-- React Testing Library --> | <!-- npm test --> | Componentes com lógica, hooks customizados |
|
|
262
|
+
| FRONT | E2E | <!-- Playwright --> | <!-- npx playwright test --> | Jornadas do §4 / fluxos do §7 |
|
|
263
|
+
| BANCO | Migration | <!-- EF migrations/Knex --> | <!-- dotnet ef database update --> | Migration roda + rollback sem erro |
|
|
264
|
+
|
|
265
|
+
### 9.2 Estrutura de testes
|
|
266
|
+
|
|
267
|
+
```
|
|
268
|
+
<!-- Adaptar à stack do projeto. Exemplo: -->
|
|
269
|
+
backend/
|
|
270
|
+
├── tests/
|
|
271
|
+
│ ├── Unit/ ← services, validações
|
|
272
|
+
│ ├── Integration/ ← endpoints (in-memory ou testcontainers)
|
|
273
|
+
│ └── Fixtures/ ← dados de teste
|
|
274
|
+
frontend/
|
|
275
|
+
├── tests/
|
|
276
|
+
│ ├── components/ ← unit (testing library)
|
|
277
|
+
│ └── e2e/ ← playwright (jornadas completas)
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### 9.3 Critérios de Aceite
|
|
281
|
+
|
|
282
|
+
> Cenários testáveis em formato Given/When/Then.
|
|
283
|
+
> Cada CA mapeia para pelo menos 1 teste automatizado.
|
|
284
|
+
|
|
285
|
+
#### CA-001: {{Título do cenário}}
|
|
286
|
+
|
|
287
|
+
```gherkin
|
|
288
|
+
Given {{pré-condição}}
|
|
289
|
+
When {{ação do usuário}}
|
|
290
|
+
Then {{resultado esperado}}
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
<!-- Adicionar CA-NNN para cada cenário relevante -->
|
|
294
|
+
|
|
295
|
+
| CA | Tipo de teste | Arquivo de teste |
|
|
296
|
+
|----|--------------|-----------------|
|
|
297
|
+
| CA-001 | integration | `tests/Integration/{{Teste}}.cs` |
|
|
298
|
+
| CA-002 | e2e | `tests/e2e/{{teste}}.spec.ts` |
|
|
299
|
+
|
|
300
|
+
### 9.4 Métricas de Sucesso
|
|
301
|
+
|
|
302
|
+
| Métrica | Threshold | Como medir |
|
|
303
|
+
|---------|-----------|------------|
|
|
304
|
+
| | | |
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
## 10. Fora de Escopo
|
|
309
|
+
|
|
310
|
+
> Lista explícita — evita scope creep durante implementação.
|
|
311
|
+
|
|
312
|
+
| # | Item | Motivo | Quando entra |
|
|
313
|
+
|---|------|--------|--------------|
|
|
314
|
+
| 1 | | | |
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
## 11. Delta Specs
|
|
319
|
+
|
|
320
|
+
> O que muda no sistema global com esta feature.
|
|
321
|
+
> Pós `/dev`: estas deltas são mergeadas nos docs de `docs/Estrutura/`.
|
|
322
|
+
|
|
323
|
+
### ADDED
|
|
324
|
+
<!-- Novos: tabelas, endpoints, componentes, regras, permissões -->
|
|
325
|
+
-
|
|
326
|
+
|
|
327
|
+
### MODIFIED
|
|
328
|
+
<!-- Alterações em funcionalidades/docs existentes -->
|
|
329
|
+
-
|
|
330
|
+
|
|
331
|
+
### REMOVED
|
|
332
|
+
<!-- Funcionalidades ou comportamentos que deixam de existir -->
|
|
333
|
+
-
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
## Rastreabilidade Origem → SDD
|
|
338
|
+
|
|
339
|
+
> Mapa rápido de referência cruzada. Garante que nenhum requisito foi perdido.
|
|
340
|
+
|
|
341
|
+
### Para features (PRD → SDD):
|
|
342
|
+
|
|
343
|
+
| PRD Seção | SDD Seção | Notas |
|
|
344
|
+
|-----------|-----------|-------|
|
|
345
|
+
| §3 Entidades | §3 Modelo de Dados | Tipos e constraints detalhados |
|
|
346
|
+
| §4 Jornadas | §7 Fluxos de Dados | Traduzidas em sequências técnicas |
|
|
347
|
+
| §5 Regras (RN-xxx) | §4 Regras e Validações | Mantém mesmos IDs |
|
|
348
|
+
| §6 Validações | §4.2 Validações de Campos | Com mensagens de erro |
|
|
349
|
+
| §7 Telas | §6 Componentes e Telas | Com estados e comportamentos |
|
|
350
|
+
| §8 Integrações | §8 Integrações Externas | Com contratos detalhados |
|
|
351
|
+
| §9 Erros | §5 Endpoints (Erros) | Mapeados por endpoint |
|
|
352
|
+
| §10 Não-Funcionais | §9 Métricas de Sucesso | Thresholds mensuráveis |
|
|
353
|
+
| §12 Fora de Escopo | §10 Fora de Escopo | Mantido igual |
|
|
354
|
+
|
|
355
|
+
### Para setup (TRD → SDD):
|
|
356
|
+
|
|
357
|
+
| TRD Seção | SDD Seção | Notas |
|
|
358
|
+
|-----------|-----------|-------|
|
|
359
|
+
| §1 Visão | §1 Visão Geral | Escopo do setup |
|
|
360
|
+
| §2 Stack | §2 Decisões de Design | Justificativas expandidas |
|
|
361
|
+
| §3 Arquitetura | §2 Decisões de Design | Padrões arquiteturais |
|
|
362
|
+
| §4 Modelo de Dados | §3 Modelo de Dados | Tipos exatos, constraints, índices |
|
|
363
|
+
| §5 API | §5 (N/A em setup) | Convenções no TRD, endpoints nas features |
|
|
364
|
+
| §6 Infra | §1 Escopo | Infra base |
|
|
365
|
+
| §7 Segurança | §2 Decisões + §3 | JWT, tabela usuarios |
|
|
366
|
+
| §8 Módulos | §10 Fora de Escopo | Módulos futuros |
|
|
367
|
+
|
|
368
|
+
---
|
|
369
|
+
|
|
370
|
+
> **Regra**: Este SDD é a **única fonte de verdade** para implementação.
|
|
371
|
+
> O Coder não consulta PRD, TRD, PM, ou qualquer outro documento.
|
|
372
|
+
> Qualquer alteração pós-aprovação deve ser refletida aqui primeiro.
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Tasks — {{AREA}} — {{FEATURE}}
|
|
2
|
+
|
|
3
|
+
> Checklist de implementação organizado por **fases** e **prioridade**.
|
|
4
|
+
> O Coder consulta o `sdd.md` para detalhes técnicos.
|
|
5
|
+
> Este arquivo define O QUE fazer, EM QUE ORDEM, e ONDE.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Meta
|
|
10
|
+
|
|
11
|
+
| Campo | Valor |
|
|
12
|
+
|-------|-------|
|
|
13
|
+
| Feature | `{{FEATURE}}` |
|
|
14
|
+
| Área | {{AREA}} |
|
|
15
|
+
| SDD | [`sdd.md`](./sdd.md) {{SDD_SECTIONS}} |
|
|
16
|
+
| Total de tasks | {{TOTAL}} |
|
|
17
|
+
| Depende de | {{AREA_DEPENDENCIES}} |
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
<!--
|
|
22
|
+
=============================================================================
|
|
23
|
+
INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado)
|
|
24
|
+
=============================================================================
|
|
25
|
+
|
|
26
|
+
COMO GERAR ESTE ARQUIVO:
|
|
27
|
+
|
|
28
|
+
1. Ler o SDD completo da feature
|
|
29
|
+
2. Identificar TODAS as áreas afetadas (banco, back, front, mobile, infra...)
|
|
30
|
+
3. Para CADA área, gerar um arquivo `{area}_tasks.md` usando este template
|
|
31
|
+
4. Áreas são DINÂMICAS — determinadas pelo SDD, não pré-definidas
|
|
32
|
+
|
|
33
|
+
COMO DEFINIR FASES:
|
|
34
|
+
|
|
35
|
+
- Agrupar tasks por etapa lógica de implementação
|
|
36
|
+
- Fases são SEQUENCIAIS dentro da área (Fase 2 depende de Fase 1)
|
|
37
|
+
- Usar prioridade P1/P2/P3 por fase
|
|
38
|
+
- Nomear fases de forma descritiva (não só "Fase 1")
|
|
39
|
+
- Exemplos de fases por área:
|
|
40
|
+
|
|
41
|
+
BANCO: Setup → Schema → Índices → Seeds
|
|
42
|
+
BACKEND: Setup → DTOs/Validações → Repository/Service → Controller → Testes
|
|
43
|
+
FRONTEND: Setup/Rotas → Componentes → Telas → Polish
|
|
44
|
+
MOBILE: Setup → Navegação → Telas → Offline → Push
|
|
45
|
+
INFRA: Provisão → Config → Deploy → Monitoramento
|
|
46
|
+
|
|
47
|
+
COMO ESCREVER CADA TASK:
|
|
48
|
+
|
|
49
|
+
- Formato checklist: `- [ ] **ID**: Título [Tamanho]`
|
|
50
|
+
- ID: {PREFIXO}-{NNN} sequencial (BANCO-001, BACK-001, FRONT-001, MOBILE-001...)
|
|
51
|
+
- Título: verbo no infinitivo + o que fazer
|
|
52
|
+
- Tamanho: S (< 30min), M (30min-2h), L (2h+)
|
|
53
|
+
- Fase: número da fase de entrega (do PRD §11) — OBRIGATÓRIO
|
|
54
|
+
- Repo: nome do repo (de projetos.yaml) — OBRIGATÓRIO
|
|
55
|
+
- Arquivos: EXATAMENTE quais files criar ou alterar (caminhos RELATIVOS ao repo)
|
|
56
|
+
- SDD: seção específica (§3.1, §5 POST /rota, §6 Tela X)
|
|
57
|
+
- Depende: IDs de tasks (mesma área ou cross-area)
|
|
58
|
+
|
|
59
|
+
REGRAS:
|
|
60
|
+
|
|
61
|
+
- Task deve ser AUTOCONTIDA: Coder lê SDD + esta task, nada mais
|
|
62
|
+
- NÃO duplicar conteúdo do SDD — apenas referenciar seções
|
|
63
|
+
- NÃO incluir status — vive só no Progresso.md
|
|
64
|
+
- Depende cross-area é permitido (FRONT-004 depende de BACK-009)
|
|
65
|
+
- "Regras desta área" = convenções específicas extraídas do SDD e docs/Estrutura
|
|
66
|
+
|
|
67
|
+
=============================================================================
|
|
68
|
+
-->
|
|
69
|
+
|
|
70
|
+
## Fase 1 — {{FASE_NOME}} [{{PRIORIDADE}}]
|
|
71
|
+
|
|
72
|
+
> {{FASE_CONTEXTO — 1 linha explicando o propósito da fase}}
|
|
73
|
+
<!-- Opcional: "Depende de: Área X Fase Y concluída" -->
|
|
74
|
+
|
|
75
|
+
- [ ] **{{PREFIXO}}-001**: {{Título descritivo}} [{{S|M|L}}]
|
|
76
|
+
- Fase: {{N}} — {{Nome fase de entrega}}
|
|
77
|
+
- Repo: `{{repo_name}}`
|
|
78
|
+
- Arquivos: `{{caminho/arquivo.ext}}`
|
|
79
|
+
- SDD: {{§N seção específica}}
|
|
80
|
+
- Depende: {{ID ou —}}
|
|
81
|
+
|
|
82
|
+
- [ ] **{{PREFIXO}}-002**: {{Título descritivo}} [{{S|M|L}}]
|
|
83
|
+
- Fase: {{N}} — {{Nome fase de entrega}}
|
|
84
|
+
- Repo: `{{repo_name}}`
|
|
85
|
+
- Arquivos: `{{caminho/arquivo1.ext}}`, `{{caminho/arquivo2.ext}}`
|
|
86
|
+
- SDD: {{§N.M subseção}}
|
|
87
|
+
- Depende: {{PREFIXO}}-001
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Fase 2 — {{FASE_NOME}} [{{PRIORIDADE}}]
|
|
92
|
+
|
|
93
|
+
> {{FASE_CONTEXTO}}
|
|
94
|
+
|
|
95
|
+
- [ ] **{{PREFIXO}}-003**: {{Título}} [{{S|M|L}}]
|
|
96
|
+
- Fase: {{N}} — {{Nome fase de entrega}}
|
|
97
|
+
- Repo: `{{repo_name}}`
|
|
98
|
+
- Arquivos: `{{caminho/}}`
|
|
99
|
+
- SDD: {{§N}}
|
|
100
|
+
- Depende: {{PREFIXO}}-001, {{OUTRA_AREA}}-001
|
|
101
|
+
|
|
102
|
+
<!-- Repetir fases conforme necessário -->
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Regras desta área
|
|
107
|
+
|
|
108
|
+
<!-- Extraídas do SDD e docs/Estrutura/ — específicas para esta área -->
|
|
109
|
+
1. {{Regra 1}}
|
|
110
|
+
2. {{Regra 2}}
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
> **Legenda tamanho**: S = < 30min · M = 30min-2h · L = 2h+
|
|
115
|
+
> **Legenda prioridade**: P1 = bloqueia outras áreas · P2 = importante · P3 = nice-to-have
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Progresso Geral
|
|
2
|
+
|
|
3
|
+
> Visão consolidada de todas as features, bugs e tarefas do projeto.
|
|
4
|
+
> Atualizado automaticamente ao final de cada `/plan` e `/dev`.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!--
|
|
9
|
+
=============================================================================
|
|
10
|
+
INSTRUÇÕES PARA O AGENTE (não incluir no arquivo gerado na primeira vez)
|
|
11
|
+
=============================================================================
|
|
12
|
+
|
|
13
|
+
QUANDO USAR: Criado pelo /plan do primeiro setup ou feature. Atualizado por cada /plan e /dev.
|
|
14
|
+
|
|
15
|
+
COMO ATUALIZAR:
|
|
16
|
+
- Ao criar nova feature (/plan) → adicionar linha na tabela com contadores zerados
|
|
17
|
+
- Ao concluir tasks (/dev) → atualizar contadores
|
|
18
|
+
- Ao concluir feature (/merge-delta) → status "concluído" ou "done"
|
|
19
|
+
|
|
20
|
+
ÁREAS SÃO DINÂMICAS:
|
|
21
|
+
- Colunas de área mudam conforme o projeto (BANCO, BACK, FRONT, DOC, INFRA, MOBILE...)
|
|
22
|
+
- Cada feature pode ter áreas diferentes
|
|
23
|
+
- Usar "—" quando uma feature não tem tasks naquela área
|
|
24
|
+
|
|
25
|
+
STATUS USA O VALOR DO .context.md:
|
|
26
|
+
- not_started, extract_done, approved, design_done, plan_done, dev_in_progress, dev_done, done
|
|
27
|
+
|
|
28
|
+
=============================================================================
|
|
29
|
+
-->
|
|
30
|
+
|
|
31
|
+
## Resumo
|
|
32
|
+
|
|
33
|
+
| # | Feature | Status | {{AREA_1}} | {{AREA_2}} | {{AREA_N}} | Última atualização |
|
|
34
|
+
|---|---------|--------|------------|------------|------------|-------------------|
|
|
35
|
+
| 1 | {{NOME}} | {{status}} | 0/N | 0/N | 0/N | {{data}} |
|
|
36
|
+
|
|
37
|
+
<!-- Exemplo preenchido:
|
|
38
|
+
| 1 | setup_projeto | plan_done | BANCO: 0/7 | BACK: 0/10 | FRONT: 0/3 | DOC: 0/8 | 2026-04-08 |
|
|
39
|
+
| 2 | feat_cadastro_cliente | extract_done | — | — | — | — | 2026-04-09 |
|
|
40
|
+
-->
|
|
41
|
+
|
|
42
|
+
## Legenda de Status
|
|
43
|
+
|
|
44
|
+
| Status | Significado |
|
|
45
|
+
|--------|-------------|
|
|
46
|
+
| `not_started` | Pipeline iniciado, aguardando extração |
|
|
47
|
+
| `extract_done` | PRD/TRD gerado, aguardando aprovação |
|
|
48
|
+
| `approved` | Documento aprovado |
|
|
49
|
+
| `design_done` | SDD gerado |
|
|
50
|
+
| `plan_done` | Tasks geradas, pronto para /dev |
|
|
51
|
+
| `dev_in_progress` | /dev em execução |
|
|
52
|
+
| `dev_done` | Todas tasks concluídas |
|
|
53
|
+
| `done` | Delta specs mergeadas (features) ou docs gerados (setup) |
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
> **Atualização**: Cada skill atualiza este arquivo ao criar ou concluir features.
|