@dewtech/dare-cli 2.10.0 → 2.12.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 +19 -4
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +35 -7
- package/dist/commands/init.js.map +1 -1
- package/dist/core/types/project.d.ts +3 -0
- package/dist/core/types/project.d.ts.map +1 -1
- package/dist/utils/project-generator.d.ts +2 -0
- package/dist/utils/project-generator.d.ts.map +1 -1
- package/dist/utils/project-generator.js +123 -29
- package/dist/utils/project-generator.js.map +1 -1
- package/dist/utils/stack-bootstrap.d.ts +5 -0
- package/dist/utils/stack-bootstrap.d.ts.map +1 -1
- package/dist/utils/stack-bootstrap.js +19 -12
- package/dist/utils/stack-bootstrap.js.map +1 -1
- package/package.json +1 -1
- package/templates/ide/antigravity/templates/BLUEPRINT-template.md +193 -53
- package/templates/ide/antigravity/templates/DESIGN-template.md +129 -34
- package/templates/ide/antigravity/templates/TASK-SPEC-template.md +100 -43
- package/templates/ide/claude/.claude/commands/dare-blueprint.md +87 -81
- package/templates/ide/claude/.claude/commands/dare-design.md +45 -31
- package/templates/ide/claude/.claude/commands/dare-execute.md +131 -52
- package/templates/ide/claude/.claude/commands/dare-security.md +232 -0
- package/templates/ide/claude/CLAUDE.md +38 -10
- package/templates/ide/claude/templates/BLUEPRINT-template.md +193 -53
- package/templates/ide/claude/templates/DESIGN-template.md +129 -34
- package/templates/ide/claude/templates/TASK-SPEC-template.md +100 -43
- package/templates/ide/cursor/.cursor/commands/generate-blueprint.md +51 -21
- package/templates/ide/cursor/.cursor/commands/generate-design.md +35 -18
- package/templates/ide/cursor/.cursor/rules/skill-security.mdc +245 -57
- package/templates/ide/cursor/templates/BLUEPRINT-template.md +193 -53
- package/templates/ide/cursor/templates/DESIGN-template.md +129 -34
- package/templates/ide/cursor/templates/TASK-SPEC-template.md +100 -43
|
@@ -1,53 +1,193 @@
|
|
|
1
|
-
# BLUEPRINT
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
[
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
1
|
+
# BLUEPRINT: [Nome do Projeto]
|
|
2
|
+
|
|
3
|
+
> **Gerado a partir de:** `DARE/DESIGN.md` v[X.Y]
|
|
4
|
+
> **Data:** YYYY-MM-DD | **Status:** DRAFT → APROVADO
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 1. VISÃO GERAL DA ARQUITETURA
|
|
9
|
+
|
|
10
|
+
[Descrição da arquitetura: Monolito modular / Microserviços / Hexagonal / Clean Architecture]
|
|
11
|
+
|
|
12
|
+
```mermaid
|
|
13
|
+
graph TD
|
|
14
|
+
A[Cliente] --> B[API Gateway / BFF]
|
|
15
|
+
B --> C[Auth Service]
|
|
16
|
+
B --> D[Core Service]
|
|
17
|
+
D --> E[(PostgreSQL)]
|
|
18
|
+
D --> F[(Redis)]
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
**Decisões arquiteturais principais:**
|
|
22
|
+
|
|
23
|
+
| Decisão | Escolha | Justificativa |
|
|
24
|
+
|---------|---------|---------------|
|
|
25
|
+
| Padrão de módulos | [ex: Hexagonal] | [motivo] |
|
|
26
|
+
| Comunicação inter-serviços | [ex: REST síncrono] | [motivo] |
|
|
27
|
+
| Autenticação | [ex: JWT stateless] | [motivo] |
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 2. STACK TÉCNICA DEFINIDA
|
|
32
|
+
|
|
33
|
+
| Camada | Tecnologia | Versão | Papel |
|
|
34
|
+
|--------|-----------|--------|-------|
|
|
35
|
+
| Linguagem | | | |
|
|
36
|
+
| Framework | | | |
|
|
37
|
+
| Banco principal | | | |
|
|
38
|
+
| Cache / filas | | | |
|
|
39
|
+
| Frontend | | | |
|
|
40
|
+
| Container | Docker | latest | Dev + CI |
|
|
41
|
+
| Observabilidade | | | Logs, métricas, traces |
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 3. ESTRUTURA DE PASTAS E ARQUIVOS
|
|
46
|
+
|
|
47
|
+
```text
|
|
48
|
+
[nome-do-projeto]/
|
|
49
|
+
├── [diretório principal]/
|
|
50
|
+
│ ├── [módulo 1]/
|
|
51
|
+
│ └── [módulo 2]/
|
|
52
|
+
├── DARE/
|
|
53
|
+
│ ├── DESIGN.md
|
|
54
|
+
│ ├── BLUEPRINT.md
|
|
55
|
+
│ ├── TASKS.md
|
|
56
|
+
│ ├── dare-dag.yaml
|
|
57
|
+
│ └── EXECUTION/
|
|
58
|
+
├── Dockerfile
|
|
59
|
+
├── docker-compose.yml
|
|
60
|
+
└── [arquivo de configuração principal]
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
> **Constraints de workspace (Rust):** se Cargo workspace, NÃO definir `[build] target` global no `.cargo/config.toml` (quebra crates WASM + native). Cada crate declara suas próprias features Leptos.
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## 4. MODELO DE DADOS
|
|
68
|
+
|
|
69
|
+
### Entidades principais
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
[Entidade 1]
|
|
73
|
+
- id: UUID (PK)
|
|
74
|
+
- [campo]: [tipo] [restrições]
|
|
75
|
+
- created_at, updated_at
|
|
76
|
+
|
|
77
|
+
[Entidade 2]
|
|
78
|
+
- id: UUID (PK)
|
|
79
|
+
- [entidade_1_id]: FK → Entidade1
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Relacionamentos
|
|
83
|
+
|
|
84
|
+
| De | Para | Cardinalidade | Via |
|
|
85
|
+
|----|------|---------------|-----|
|
|
86
|
+
| [Entidade 1] | [Entidade 2] | 1:N | FK |
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## 5. CONTRATOS DE API
|
|
91
|
+
|
|
92
|
+
| Método | Endpoint | Auth | Request Body | Response | Status codes |
|
|
93
|
+
|--------|----------|------|-------------|----------|--------------|
|
|
94
|
+
| POST | `/api/v1/[recurso]` | Não | `{campo1, campo2}` | `{id, ...}` | 201, 400, 422 |
|
|
95
|
+
| GET | `/api/v1/[recurso]` | JWT | — | `[{id, ...}]` | 200, 401 |
|
|
96
|
+
| GET | `/api/v1/[recurso]/:id` | JWT | — | `{id, ...}` | 200, 401, 404 |
|
|
97
|
+
| PUT | `/api/v1/[recurso]/:id` | JWT + Owner | `{campos}` | `{id, ...}` | 200, 401, 403, 404 |
|
|
98
|
+
| DELETE | `/api/v1/[recurso]/:id` | JWT + Admin | — | `{}` | 204, 401, 403, 404 |
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## 6. PLANO DE EXECUÇÃO (FASES)
|
|
103
|
+
|
|
104
|
+
### Fase 1: Containerização e Setup ← **SEMPRE PRIMEIRA**
|
|
105
|
+
**Critério de DONE:** `docker compose up -d` sobe sem erros; healthcheck `/health` retorna 200.
|
|
106
|
+
- Dockerfile multi-stage
|
|
107
|
+
- docker-compose.yml com todos os serviços
|
|
108
|
+
- Variáveis de ambiente via `.env.example`
|
|
109
|
+
|
|
110
|
+
### Fase 2: Banco de Dados e Migrations
|
|
111
|
+
**Critério de DONE:** migrations rodando; schema validado; seeds de desenvolvimento funcionando.
|
|
112
|
+
- Migrations / schema inicial
|
|
113
|
+
- Seeds de desenvolvimento
|
|
114
|
+
- Índices para queries críticas
|
|
115
|
+
|
|
116
|
+
### Fase 3: Autenticação e Autorização
|
|
117
|
+
**Critério de DONE:** login retorna JWT; endpoint protegido rejeita token inválido com 401; acesso sem permissão retorna 403.
|
|
118
|
+
- Registro, login, refresh, logout
|
|
119
|
+
- Middleware de autenticação
|
|
120
|
+
- Sistema de permissões (RBAC/ACL)
|
|
121
|
+
|
|
122
|
+
### Fase 4: [Módulo de negócio principal]
|
|
123
|
+
**Critério de DONE:** [comportamento testável esperado].
|
|
124
|
+
- [Descrever aqui]
|
|
125
|
+
|
|
126
|
+
### Fase N-1: Auditoria de Segurança e Dependências
|
|
127
|
+
**Critério de DONE:** `[audit-cmd]` sem CVE HIGH/CRITICAL; security headers presentes; sem secrets em código.
|
|
128
|
+
- `npm audit --audit-level=high` / `cargo audit` / `pip-audit` / `composer audit`
|
|
129
|
+
- Headers HTTP de segurança (HSTS, CSP, X-Frame-Options)
|
|
130
|
+
- Scan de secrets no repositório
|
|
131
|
+
|
|
132
|
+
### Fase N: Observabilidade e Documentação
|
|
133
|
+
**Critério de DONE:** logs estruturados em JSON; endpoint `/metrics` ou equivalente; documentação API gerada.
|
|
134
|
+
- Logs estruturados (JSON) com trace-id
|
|
135
|
+
- Métricas de negócio e técnicas
|
|
136
|
+
- Documentação API (OpenAPI / Swagger)
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## 7. VALIDAÇÃO E SEGURANÇA
|
|
141
|
+
|
|
142
|
+
### Validation Gates (Ralph Loop) por stack
|
|
143
|
+
|
|
144
|
+
| Stack | Build | Test | Lint/Audit |
|
|
145
|
+
|-------|-------|------|------------|
|
|
146
|
+
| Rust/Axum | `cargo build` | `cargo test --workspace` | `cargo clippy && cargo audit` |
|
|
147
|
+
| Node/NestJS | `npm run build` | `npm test` | `npx eslint src && npm audit --audit-level=high` |
|
|
148
|
+
| Python/FastAPI | `python -m py_compile` | `pytest` | `ruff check . && pip-audit` |
|
|
149
|
+
| PHP/Laravel | `php artisan config:cache` | `php artisan test` | `./vendor/bin/phpstan && composer audit` |
|
|
150
|
+
| Go | `go build ./...` | `go test ./...` | `golangci-lint run` |
|
|
151
|
+
|
|
152
|
+
### Controles de segurança obrigatórios
|
|
153
|
+
|
|
154
|
+
- [ ] Rate limiting em endpoints de autenticação e públicos
|
|
155
|
+
- [ ] Input validation no servidor para todos os endpoints
|
|
156
|
+
- [ ] Dados sensíveis (PII, tokens, senhas) nunca em logs
|
|
157
|
+
- [ ] Todas as dependências sem CVE HIGH/CRITICAL (ver Fase N-1)
|
|
158
|
+
- [ ] HTTP Security Headers em produção
|
|
159
|
+
- [ ] Secrets apenas em variáveis de ambiente / vault
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## 8. ESTRATÉGIA DE TESTES
|
|
164
|
+
|
|
165
|
+
| Tipo | Ferramenta | Cobertura mínima | O que cobre |
|
|
166
|
+
|------|-----------|------------------|-------------|
|
|
167
|
+
| Unitários | [jest/pytest/cargo test] | 80 % das funções críticas | Lógica de negócio isolada |
|
|
168
|
+
| Integração | [supertest/httpx/reqwest] | Todos os endpoints | Contrato da API |
|
|
169
|
+
| Segurança | [npm audit/cargo audit/pip-audit] | 100 % deps | CVEs conhecidos |
|
|
170
|
+
| E2E | [playwright/cypress] se frontend | Fluxo principal | Jornada do usuário |
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## 9. ESTRATÉGIA DE DEPLOY
|
|
175
|
+
|
|
176
|
+
| Ambiente | Branch | Trigger | Infra |
|
|
177
|
+
|----------|--------|---------|-------|
|
|
178
|
+
| `dev` | `develop` | Push automático | [ex: Docker local / Railway] |
|
|
179
|
+
| `staging` | `main` | PR merge | [ex: OKE / ECS / Fly.io] |
|
|
180
|
+
| `prod` | tag `v*.*.*` | Manual | [ex: OKE / ECS / Fly.io] |
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## 10. CHECKLIST DE APROVAÇÃO DO BLUEPRINT
|
|
185
|
+
|
|
186
|
+
- [ ] Arquitetura revisada e aprovada
|
|
187
|
+
- [ ] Modelo de dados validado
|
|
188
|
+
- [ ] Contratos de API definidos e completos
|
|
189
|
+
- [ ] Fases com critérios de DONE claros
|
|
190
|
+
- [ ] Validation gates por stack definidos
|
|
191
|
+
- [ ] Controles de segurança mapeados
|
|
192
|
+
- [ ] Estratégia de testes cobrindo todos os tipos
|
|
193
|
+
- [ ] DAG de tasks gerado (`dare-dag.yaml`)
|
|
@@ -1,34 +1,129 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
##
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
1
|
+
# DESIGN: [Nome do Projeto / Feature]
|
|
2
|
+
|
|
3
|
+
> **Versão:** v1.0 | **Data:** YYYY-MM-DD | **Status:** DRAFT → APROVADO
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. DESCRIÇÃO
|
|
8
|
+
|
|
9
|
+
[O que é o sistema e qual problema ele resolve — 3 a 5 frases claras e objetivas. Evite jargão.]
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 2. OBJETIVOS E MÉTRICAS DE SUCESSO
|
|
14
|
+
|
|
15
|
+
| # | Objetivo | Métrica verificável | Meta |
|
|
16
|
+
|---|----------|---------------------|------|
|
|
17
|
+
| O-01 | [ex: Reduzir tempo de resposta da API] | p99 latência em produção | < 200 ms |
|
|
18
|
+
| O-02 | [ex: Aumentar cobertura de testes] | `coverage --summary` | > 80 % |
|
|
19
|
+
| O-03 | | | |
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 3. STAKEHOLDERS
|
|
24
|
+
|
|
25
|
+
| Papel | Nome / Time | Interesse principal |
|
|
26
|
+
|-------|-------------|---------------------|
|
|
27
|
+
| Product Owner | | Aprovação de scope e prioridades |
|
|
28
|
+
| Tech Lead | | Decisões arquiteturais |
|
|
29
|
+
| Usuário Final | | [Persona] — [necessidade] |
|
|
30
|
+
| Operações / SRE | | SLA, alertas, deploys |
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## 4. REQUISITOS FUNCIONAIS
|
|
35
|
+
|
|
36
|
+
| ID | Requisito | Prioridade | Critério de aceite |
|
|
37
|
+
|----|-----------|------------|--------------------|
|
|
38
|
+
| RF-01 | | MUST | |
|
|
39
|
+
| RF-02 | | SHOULD | |
|
|
40
|
+
| RF-03 | | COULD | |
|
|
41
|
+
|
|
42
|
+
> Prioridades: **MUST** (bloqueia v1) · **SHOULD** (importante, mas não bloqueia) · **COULD** (nice to have)
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 5. REQUISITOS NÃO-FUNCIONAIS
|
|
47
|
+
|
|
48
|
+
| ID | Categoria | Requisito | Meta |
|
|
49
|
+
|----|-----------|-----------|------|
|
|
50
|
+
| RNF-01 | Performance | [ex: API responde dentro do SLA] | p95 < 500 ms |
|
|
51
|
+
| RNF-02 | Disponibilidade | [ex: uptime mensal] | ≥ 99,5 % |
|
|
52
|
+
| RNF-03 | Segurança | Autenticação obrigatória em todos os endpoints sensíveis | JWT + refresh |
|
|
53
|
+
| RNF-04 | Segurança | Rate limiting em endpoints públicos | ≤ 60 req/min/IP |
|
|
54
|
+
| RNF-05 | Segurança | Dados sensíveis (PII, tokens) nunca em logs | auditoria automática |
|
|
55
|
+
| RNF-06 | Observabilidade | Logs estruturados (JSON) com trace-id | OpenTelemetry |
|
|
56
|
+
| RNF-07 | Manutenibilidade | Cobertura de testes | > 80 % |
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## 6. REQUISITOS DE SEGURANÇA
|
|
61
|
+
|
|
62
|
+
| ID | Requisito | Referência |
|
|
63
|
+
|----|-----------|------------|
|
|
64
|
+
| RS-01 | Todas as entradas do usuário validadas no servidor antes de qualquer processamento | OWASP A03 |
|
|
65
|
+
| RS-02 | Senhas e segredos nunca armazenados em texto plano; hash Argon2/Bcrypt | OWASP A02 |
|
|
66
|
+
| RS-03 | Controle de acesso verificado por recurso (não só por rota) | OWASP A01 |
|
|
67
|
+
| RS-04 | Dependências auditadas antes de cada release (sem CVE HIGH/CRITICAL) | OWASP A06 |
|
|
68
|
+
| RS-05 | Segredos gerenciados via variáveis de ambiente / vault — nunca em código | Supply chain |
|
|
69
|
+
| RS-06 | [Requisito específico do domínio] | |
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## 7. STACK TÉCNICA
|
|
74
|
+
|
|
75
|
+
| Camada | Tecnologia | Versão |
|
|
76
|
+
|--------|-----------|--------|
|
|
77
|
+
| Linguagem / Runtime | | |
|
|
78
|
+
| Framework principal | | |
|
|
79
|
+
| Banco de dados | | |
|
|
80
|
+
| Cache | | |
|
|
81
|
+
| Frontend | | |
|
|
82
|
+
| Infra / deploy | | |
|
|
83
|
+
| Observabilidade | | |
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## 8. INTEGRAÇÕES EXTERNAS
|
|
88
|
+
|
|
89
|
+
| Sistema | Tipo | Protocolo | Direção | Dados trocados | Responsável |
|
|
90
|
+
|---------|------|-----------|---------|----------------|-------------|
|
|
91
|
+
| [ex: Stripe] | Pagamento | REST/webhook | Saída + entrada | Cobrança, confirmação | Time Pagamentos |
|
|
92
|
+
| [ex: Auth0] | IdP | OIDC | Entrada | ID Token, Claims | Time Auth |
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## 9. RESTRIÇÕES
|
|
97
|
+
|
|
98
|
+
- **Prazo:** [Data de entrega ou milestone]
|
|
99
|
+
- **Orçamento de infra:** [Limite de custo mensal ou por request]
|
|
100
|
+
- **Limitações técnicas:** [ex: não pode usar banco NoSQL; deve usar Go ≥ 1.22]
|
|
101
|
+
- **Regulatórias / Compliance:** [ex: LGPD, GDPR, SOC 2, PCI-DSS se aplicável]
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## 10. FORA DO ESCOPO (v1)
|
|
106
|
+
|
|
107
|
+
- [Funcionalidade adiada para v2 — e o motivo]
|
|
108
|
+
- [Caso de uso que NÃO será tratado nesta versão]
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## 11. RISCOS E MITIGAÇÕES
|
|
113
|
+
|
|
114
|
+
| # | Risco | Probabilidade | Impacto | Mitigação |
|
|
115
|
+
|---|-------|---------------|---------|-----------|
|
|
116
|
+
| R-01 | [ex: Latência alta no serviço de terceiros] | Média | Alto | Circuit breaker + fallback |
|
|
117
|
+
| R-02 | [ex: Falta de dados históricos para ML] | Alta | Médio | Dataset sintético inicial |
|
|
118
|
+
| R-03 | | | | |
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## 12. CHECKLIST DE APROVAÇÃO
|
|
123
|
+
|
|
124
|
+
- [ ] Requisitos funcionais revisados e priorizados
|
|
125
|
+
- [ ] Requisitos de segurança validados pelo Tech Lead
|
|
126
|
+
- [ ] Stack técnica aprovada
|
|
127
|
+
- [ ] Integrações externas confirmadas com responsáveis
|
|
128
|
+
- [ ] Fora do escopo alinhado com Product Owner
|
|
129
|
+
- [ ] Riscos críticos com mitigação definida
|
|
@@ -1,43 +1,100 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
##
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
1
|
+
# TASK [ID]: [Título da Task]
|
|
2
|
+
|
|
3
|
+
> **Complexidade:** LOW / MED / HIGH
|
|
4
|
+
> **Depends on:** [task-ids ou —]
|
|
5
|
+
> **Estimativa:** [X horas]
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. OBJETIVO
|
|
10
|
+
|
|
11
|
+
[Uma frase precisa do que esta task entrega. Deve ser verificável — termine com um estado observável, não uma ação.]
|
|
12
|
+
|
|
13
|
+
Exemplo: _"Ao final desta task, o endpoint `POST /api/v1/users` aceita cadastro, valida unicidade de e-mail e retorna JWT."_
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 2. CONTEXTO
|
|
18
|
+
|
|
19
|
+
- **Fase no BLUEPRINT:** Fase [N] — [Nome da fase]
|
|
20
|
+
- **Arquivos existentes relevantes:** [caminhos de arquivos que servem de referência ou serão modificados]
|
|
21
|
+
- **Decisões do BLUEPRINT que afetam esta task:** [cite seção/decisão específica]
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 3. ARQUIVOS A CRIAR / MODIFICAR
|
|
26
|
+
|
|
27
|
+
| Ação | Caminho | Descrição |
|
|
28
|
+
|------|---------|-----------|
|
|
29
|
+
| CRIAR | `src/[módulo]/[arquivo]` | [o que contém] |
|
|
30
|
+
| MODIFICAR | `src/[módulo]/[arquivo]` | [o que muda] |
|
|
31
|
+
| CRIAR | `tests/[arquivo].test.[ext]` | Testes da feature |
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 4. IMPLEMENTAÇÃO
|
|
36
|
+
|
|
37
|
+
### Passo 1: [Nome do passo]
|
|
38
|
+
[Descrição precisa do que fazer. Inclua assinaturas de função/struct se crítico.]
|
|
39
|
+
|
|
40
|
+
```[lang]
|
|
41
|
+
// Exemplo de padrão esperado
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Passo 2: [Nome do passo]
|
|
45
|
+
[Descrição]
|
|
46
|
+
|
|
47
|
+
### Passo 3: Testes
|
|
48
|
+
- [ ] Teste do caminho feliz (`should_[comportamento]_when_[condição]`)
|
|
49
|
+
- [ ] Teste de erro de validação (400 / erro de negócio)
|
|
50
|
+
- [ ] Teste de autorização (401 / 403 quando aplicável)
|
|
51
|
+
- [ ] Teste de edge case: [descrever]
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 5. CONSIDERAÇÕES DE SEGURANÇA
|
|
56
|
+
|
|
57
|
+
- [ ] **Input validation:** toda entrada do usuário validada no servidor antes de qualquer processamento
|
|
58
|
+
- [ ] **Autenticação / Autorização:** verificar se o usuário tem permissão sobre o *recurso específico*, não só sobre a rota
|
|
59
|
+
- [ ] **Dados sensíveis:** senhas, tokens e PII nunca aparecem em logs, responses de erro ou mensagens de exceção
|
|
60
|
+
- [ ] **SQL / Command Injection:** usar ORM / prepared statements; nunca concatenar strings em queries
|
|
61
|
+
- [ ] **Dependências novas:** se esta task adicionar uma dependência, verificar CVEs com `npm audit` / `cargo audit` / `pip-audit` antes de commitar
|
|
62
|
+
- [ ] **Segredo em código:** nenhum token, chave ou credencial hardcoded — sempre via variável de ambiente
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 6. VALIDATION GATES (RALPH LOOP)
|
|
67
|
+
|
|
68
|
+
Execute **todos** antes de marcar a task como DONE. Se qualquer um falhar, leia o erro, corrija e reexecute.
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
# 1. Build — sem erros de compilação
|
|
72
|
+
[comando de build da stack]
|
|
73
|
+
|
|
74
|
+
# 2. Tests — todos passando, incluindo os novos
|
|
75
|
+
[comando de test]
|
|
76
|
+
|
|
77
|
+
# 3. Lint — sem warnings
|
|
78
|
+
[comando de lint]
|
|
79
|
+
|
|
80
|
+
# 4. Auditoria de dependências (se novas deps foram adicionadas nesta task)
|
|
81
|
+
[npm audit --audit-level=high | cargo audit | pip-audit | composer audit]
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
> **Gate de segurança obrigatório:** se esta task adicionar dependências externas, `[audit-cmd]` não pode retornar CVE de nível HIGH ou CRITICAL.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 7. CRITÉRIOS DE DONE
|
|
89
|
+
|
|
90
|
+
- [ ] Todos os 4 validation gates passaram sem erros
|
|
91
|
+
- [ ] Testes cobrem caminho feliz + erros + edge cases da seção 4
|
|
92
|
+
- [ ] Considerações de segurança da seção 5 todas checadas
|
|
93
|
+
- [ ] Arquivos listados na seção 3 criados/modificados conforme spec
|
|
94
|
+
- [ ] `DARE/TASKS.md` atualizado com status `DONE`
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## 8. PRÓXIMA TASK SUGERIDA
|
|
99
|
+
|
|
100
|
+
`[task-id]` — [título] _(desbloqueada após conclusão desta task)_
|
|
@@ -1,21 +1,51 @@
|
|
|
1
|
-
# Comando: /generate-blueprint
|
|
2
|
-
|
|
3
|
-
## Descrição
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
## Instruções para o Cursor Composer
|
|
7
|
-
|
|
8
|
-
1. **Leia
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
- **
|
|
15
|
-
- **
|
|
16
|
-
- **
|
|
17
|
-
- **
|
|
18
|
-
- **
|
|
19
|
-
- **
|
|
20
|
-
|
|
21
|
-
|
|
1
|
+
# Comando: /generate-blueprint
|
|
2
|
+
|
|
3
|
+
## Descrição
|
|
4
|
+
Avança o DARE para a fase Architect: lê `DARE/DESIGN.md` aprovado e gera os 5 artefatos de arquitetura.
|
|
5
|
+
|
|
6
|
+
## Instruções para o Cursor Composer
|
|
7
|
+
|
|
8
|
+
1. **Leia `DARE/DESIGN.md`** — obrigatório. Se não existir, peça `/generate-design` primeiro. Extraia: stack, RF-*, RNF-*, RS-*, integrações, restrições.
|
|
9
|
+
|
|
10
|
+
2. **Leia o template:** `templates/BLUEPRINT-template.md` — siga a estrutura fielmente.
|
|
11
|
+
|
|
12
|
+
3. **Gere `DARE/BLUEPRINT.md`** com seções obrigatórias:
|
|
13
|
+
|
|
14
|
+
- **Visão Geral da Arquitetura** — diagrama Mermaid + tabela de decisões com justificativa
|
|
15
|
+
- **Stack Técnica Definida** — versões fixas (não ranges)
|
|
16
|
+
- **Estrutura de Pastas** — árvore completa dos arquivos a criar
|
|
17
|
+
- **Modelo de Dados** — entidades, campos tipados, relacionamentos, índices
|
|
18
|
+
- **Contratos de API** — método, rota, auth, request/response, status codes
|
|
19
|
+
- **Plano de Execução (Fases)** — cada fase com critério de DONE verificável:
|
|
20
|
+
- **Fase 1 = containerização** (Dockerfile + docker-compose + healthcheck) — sempre
|
|
21
|
+
- **Fase N-1 = auditoria de segurança + dependências** — sempre
|
|
22
|
+
- **Validation Gates por stack:**
|
|
23
|
+
| Stack | Build | Test | Lint/Audit |
|
|
24
|
+
|-------|-------|------|------------|
|
|
25
|
+
| Rust | `cargo build` | `cargo test --workspace` | `cargo clippy && cargo audit` |
|
|
26
|
+
| Node | `npm run build` | `npm test` | `npx eslint src && npm audit --audit-level=high` |
|
|
27
|
+
| Python | verificar imports | `pytest` | `ruff check . && pip-audit` |
|
|
28
|
+
| PHP | `php artisan config:cache` | `php artisan test` | `./vendor/bin/phpstan && composer audit` |
|
|
29
|
+
| Go | `go build ./...` | `go test ./...` | `golangci-lint run` |
|
|
30
|
+
- **Controles de Segurança** — checklist mapeando cada RS-* do DESIGN para tasks específicas
|
|
31
|
+
- **Estratégia de Testes** — unitários + integração + auditoria de deps + E2E
|
|
32
|
+
- **Estratégia de Deploy** — por ambiente
|
|
33
|
+
|
|
34
|
+
4. **Gere `DARE/dare-dag.yaml`** com regras:
|
|
35
|
+
- `id` kebab-case único; `depends_on` mínimo necessário
|
|
36
|
+
- Pelo menos 2 tasks no rank 0 (paralelismo real)
|
|
37
|
+
- task-001 = containerização; task final = auditoria de segurança
|
|
38
|
+
- Sem task "Ralph Loop final" ou "QA geral" — corre em cada `--complete`
|
|
39
|
+
- `subtask_prompt` totalmente self-contained
|
|
40
|
+
|
|
41
|
+
5. **Gere `DARE/TASKS.md`** (tabela de status visual)
|
|
42
|
+
|
|
43
|
+
6. **Gere `DARE/EXECUTION/task-<id>.md`** para cada task usando `templates/TASK-SPEC-template.md`:
|
|
44
|
+
- Objetivo verificável (estado, não ação)
|
|
45
|
+
- Arquivos a criar/modificar (tabela)
|
|
46
|
+
- Seção "Considerações de Segurança" obrigatória
|
|
47
|
+
- Validation gates específicos da stack (build + test + lint + audit se nova dep)
|
|
48
|
+
|
|
49
|
+
7. **Valide consistência** dos 5 artefatos (IDs, depends_on, complexity iguais nos 3)
|
|
50
|
+
|
|
51
|
+
8. **Salve e informe:** _"Blueprint gerado com [N] tasks em [K] ranks paralelos. Revise especialmente: [lista de tasks HIGH complexity]. Quando aprovado, execute `dare execute --parallel`."_
|