@dewtech/dare-cli 0.3.5 → 0.3.8
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/dist/bin/dare.js +4 -1
- package/dist/bin/dare.js.map +1 -1
- package/dist/utils/project-generator.d.ts.map +1 -1
- package/dist/utils/project-generator.js +143 -72
- package/dist/utils/project-generator.js.map +1 -1
- package/dist/utils/templates.d.ts +1 -1
- package/dist/utils/templates.d.ts.map +1 -1
- package/dist/utils/templates.js +92 -98
- package/dist/utils/templates.js.map +1 -1
- package/package.json +8 -6
- package/templates/backend/node-nestjs/.env.example +9 -0
- package/templates/backend/node-nestjs/nest-cli.json +8 -0
- package/templates/backend/node-nestjs/package.json +50 -0
- package/templates/backend/node-nestjs/src/app.controller.ts +12 -0
- package/templates/backend/node-nestjs/src/app.module.ts +15 -0
- package/templates/backend/node-nestjs/src/app.service.ts +8 -0
- package/templates/backend/node-nestjs/src/main.ts +24 -0
- package/templates/backend/node-nestjs/tsconfig.json +21 -0
- package/templates/backend/php-laravel/.env.example +22 -0
- package/templates/backend/php-laravel/app/Http/Controllers/HealthController.php +15 -0
- package/templates/backend/php-laravel/composer.json +40 -0
- package/templates/backend/python-fastapi/.env.example +4 -0
- package/templates/backend/python-fastapi/app/api/router.py +8 -0
- package/templates/backend/python-fastapi/app/core/config.py +20 -0
- package/templates/backend/python-fastapi/main.py +35 -0
- package/templates/backend/python-fastapi/requirements.txt +13 -0
- package/templates/backend/rust-axum/.env.example +3 -0
- package/templates/backend/rust-axum/Cargo.toml +23 -0
- package/templates/backend/rust-axum/src/errors.rs +30 -0
- package/templates/backend/rust-axum/src/main.rs +32 -0
- package/templates/backend/rust-axum/src/routes.rs +6 -0
- package/templates/frontend/react/index.html +12 -0
- package/templates/frontend/react/package.json +35 -0
- package/templates/frontend/react/src/App.tsx +25 -0
- package/templates/frontend/react/src/main.tsx +9 -0
- package/templates/frontend/vue/package.json +32 -0
- package/templates/frontend/vue/src/App.vue +7 -0
- package/templates/frontend/vue/src/main.ts +10 -0
- package/templates/frontend/vue/src/router/index.ts +14 -0
- package/templates/frontend/vue/src/views/HomeView.vue +6 -0
- package/templates/ide/antigravity/.agents/skills/dare-blueprint/SKILL.md +224 -0
- package/templates/ide/antigravity/.agents/skills/dare-bugfix-design/SKILL.md +76 -0
- package/templates/ide/antigravity/.agents/skills/dare-design/SKILL.md +180 -0
- package/templates/ide/antigravity/.agents/skills/dare-execute/SKILL.md +264 -0
- package/templates/ide/antigravity/.agents/skills/dare-feature-design/SKILL.md +74 -0
- package/templates/ide/antigravity/.agents/skills/dare-tasks/SKILL.md +229 -0
- package/templates/ide/antigravity/templates/BLUEPRINT-template.md +53 -0
- package/templates/ide/antigravity/templates/DESIGN-template.md +34 -0
- package/templates/ide/antigravity/templates/TASK-SPEC-template.md +43 -0
- package/templates/ide/antigravity/templates/TASKS-template.md +26 -0
- package/templates/ide/antigravity/templates/TELEMETRY-template.md +125 -0
- package/templates/ide/cursor/.cursor/commands/execute-task.md +19 -0
- package/templates/ide/cursor/.cursor/commands/generate-blueprint.md +21 -0
- package/templates/ide/cursor/.cursor/commands/generate-bugfix-design.md +64 -0
- package/templates/ide/cursor/.cursor/commands/generate-design.md +18 -0
- package/templates/ide/cursor/.cursor/commands/generate-docker-compose.md +18 -0
- package/templates/ide/cursor/.cursor/commands/generate-dockerfile.md +17 -0
- package/templates/ide/cursor/.cursor/commands/generate-feature-design.md +64 -0
- package/templates/ide/cursor/.cursor/commands/generate-tasks.md +20 -0
- package/templates/ide/cursor/.cursor/commands/telemetry-report.md +42 -0
- package/templates/ide/cursor/.cursor/rules/skill-bugfix-design.mdc +51 -0
- package/templates/ide/cursor/.cursor/rules/skill-docker.mdc +33 -0
- package/templates/ide/cursor/.cursor/rules/skill-feature-design.mdc +43 -0
- package/templates/ide/cursor/.cursor/rules/skill-laravel-api.mdc +44 -0
- package/templates/ide/cursor/.cursor/rules/skill-security.mdc +57 -0
- package/templates/ide/cursor/.cursor/rules/skill-telemetry.mdc +156 -0
- package/templates/ide/cursor/templates/BLUEPRINT-template.md +53 -0
- package/templates/ide/cursor/templates/DESIGN-template.md +34 -0
- package/templates/ide/cursor/templates/TASK-SPEC-template.md +43 -0
- package/templates/ide/cursor/templates/TASKS-template.md +26 -0
- package/templates/ide/cursor/templates/TELEMETRY-template.md +125 -0
- package/templates/shared/docker-compose.yml +41 -0
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dare-tasks
|
|
3
|
+
description: Gera Task Groups estruturados a partir do Blueprint aprovado. Use quando o usuário aprovar o BLUEPRINT.md. Cria um documento TASKS.md com tarefas atômicas e especificações isoladas para cada uma.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# DARE Tasks Skill
|
|
7
|
+
|
|
8
|
+
Você é um especialista em decomposição de projetos e planejamento de tarefas. Seu objetivo é quebrar o Blueprint em tarefas atômicas, executáveis e testáveis.
|
|
9
|
+
|
|
10
|
+
## Quando usar esta skill
|
|
11
|
+
|
|
12
|
+
- Blueprint.md foi aprovado pelo usuário
|
|
13
|
+
- Precisa-se quebrar a arquitetura em tarefas
|
|
14
|
+
- Necessário criar especificações isoladas
|
|
15
|
+
- Terceira fase do Método DARE
|
|
16
|
+
|
|
17
|
+
## Como usar
|
|
18
|
+
|
|
19
|
+
### Passo 1: Ler o Blueprint Aprovado
|
|
20
|
+
Leia o arquivo `DARE/BLUEPRINT.md` que foi aprovado. Extraia:
|
|
21
|
+
- Fases do plano de execução
|
|
22
|
+
- Endpoints a implementar
|
|
23
|
+
- Modelos de dados
|
|
24
|
+
- Estrutura de diretórios
|
|
25
|
+
|
|
26
|
+
### Passo 2: Quebrar em Tarefas Atômicas
|
|
27
|
+
Cada tarefa deve:
|
|
28
|
+
- Ser pequena o suficiente para uma conversa
|
|
29
|
+
- Ter dependências claras
|
|
30
|
+
- Ser testável isoladamente
|
|
31
|
+
- Incluir validações de segurança
|
|
32
|
+
|
|
33
|
+
### Passo 3: Integrar Segurança
|
|
34
|
+
Para cada tarefa, inclua:
|
|
35
|
+
- Validações de entrada
|
|
36
|
+
- Autenticação/Autorização
|
|
37
|
+
- Testes de segurança
|
|
38
|
+
- Proteção contra vulnerabilidades
|
|
39
|
+
|
|
40
|
+
### Passo 4: Gerar TASKS.md
|
|
41
|
+
Crie um documento `DARE/TASKS.md` com visão geral:
|
|
42
|
+
|
|
43
|
+
```markdown
|
|
44
|
+
# Tasks: [Nome do Projeto]
|
|
45
|
+
|
|
46
|
+
## Visão Geral
|
|
47
|
+
Total de Tasks: [N]
|
|
48
|
+
Fases: [Número]
|
|
49
|
+
Tempo Estimado: [Tempo]
|
|
50
|
+
|
|
51
|
+
## Dependências
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
Phase 1: Setup
|
|
55
|
+
└─ Task 001: Migrations
|
|
56
|
+
└─ Task 002: JWT Setup
|
|
57
|
+
|
|
58
|
+
Phase 2: Auth
|
|
59
|
+
├─ Task 003: RegisterController (depende de Task 001)
|
|
60
|
+
├─ Task 004: LoginController (depende de Task 001)
|
|
61
|
+
└─ Task 005: RefreshController (depende de Task 001)
|
|
62
|
+
|
|
63
|
+
Phase 3: Protection
|
|
64
|
+
├─ Task 006: JWT Middleware (depende de Task 002)
|
|
65
|
+
├─ Task 007: Rate Limiting (depende de Task 006)
|
|
66
|
+
└─ Task 008: Logout (depende de Task 006)
|
|
67
|
+
|
|
68
|
+
Phase 4: Testing
|
|
69
|
+
├─ Task 009: Unit Tests (depende de Task 003-008)
|
|
70
|
+
├─ Task 010: Integration Tests (depende de Task 009)
|
|
71
|
+
└─ Task 011: Docker Setup (depende de Task 010)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Tarefas por Fase
|
|
75
|
+
|
|
76
|
+
### Phase 1: Setup Inicial
|
|
77
|
+
|
|
78
|
+
#### Task 001: Criar Migrations de Users
|
|
79
|
+
- Arquivo: `DARE/EXECUTION/task-001.md`
|
|
80
|
+
- Tempo: 15 min
|
|
81
|
+
- Dependências: Nenhuma
|
|
82
|
+
|
|
83
|
+
#### Task 002: Configurar JWT
|
|
84
|
+
- Arquivo: `DARE/EXECUTION/task-002.md`
|
|
85
|
+
- Tempo: 20 min
|
|
86
|
+
- Dependências: Nenhuma
|
|
87
|
+
|
|
88
|
+
### Phase 2: Autenticação
|
|
89
|
+
|
|
90
|
+
#### Task 003: Implementar RegisterController
|
|
91
|
+
- Arquivo: `DARE/EXECUTION/task-003.md`
|
|
92
|
+
- Tempo: 30 min
|
|
93
|
+
- Dependências: Task 001
|
|
94
|
+
|
|
95
|
+
#### Task 004: Implementar LoginController
|
|
96
|
+
- Arquivo: `DARE/EXECUTION/task-004.md`
|
|
97
|
+
- Tempo: 30 min
|
|
98
|
+
- Dependências: Task 001, Task 002
|
|
99
|
+
|
|
100
|
+
#### Task 005: Implementar RefreshController
|
|
101
|
+
- Arquivo: `DARE/EXECUTION/task-005.md`
|
|
102
|
+
- Tempo: 25 min
|
|
103
|
+
- Dependências: Task 001, Task 002
|
|
104
|
+
|
|
105
|
+
### Phase 3: Proteção
|
|
106
|
+
|
|
107
|
+
#### Task 006: Implementar JWT Middleware
|
|
108
|
+
- Arquivo: `DARE/EXECUTION/task-006.md`
|
|
109
|
+
- Tempo: 20 min
|
|
110
|
+
- Dependências: Task 002
|
|
111
|
+
|
|
112
|
+
#### Task 007: Implementar Rate Limiting
|
|
113
|
+
- Arquivo: `DARE/EXECUTION/task-007.md`
|
|
114
|
+
- Tempo: 25 min
|
|
115
|
+
- Dependências: Task 006
|
|
116
|
+
|
|
117
|
+
#### Task 008: Implementar Logout
|
|
118
|
+
- Arquivo: `DARE/EXECUTION/task-008.md`
|
|
119
|
+
- Tempo: 20 min
|
|
120
|
+
- Dependências: Task 006
|
|
121
|
+
|
|
122
|
+
### Phase 4: Testing
|
|
123
|
+
|
|
124
|
+
#### Task 009: Testes Unitários
|
|
125
|
+
- Arquivo: `DARE/EXECUTION/task-009.md`
|
|
126
|
+
- Tempo: 40 min
|
|
127
|
+
- Dependências: Task 003-008
|
|
128
|
+
|
|
129
|
+
#### Task 010: Testes de Integração
|
|
130
|
+
- Arquivo: `DARE/EXECUTION/task-010.md`
|
|
131
|
+
- Tempo: 50 min
|
|
132
|
+
- Dependências: Task 009
|
|
133
|
+
|
|
134
|
+
#### Task 011: Docker Setup
|
|
135
|
+
- Arquivo: `DARE/EXECUTION/task-011.md`
|
|
136
|
+
- Tempo: 30 min
|
|
137
|
+
- Dependências: Task 010
|
|
138
|
+
|
|
139
|
+
## Próximas Etapas
|
|
140
|
+
1. Revisar e aprovar este TASKS.md
|
|
141
|
+
2. Executar `/execute-task task-001` para começar
|
|
142
|
+
3. Continuar com o Método DARE
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Passo 5: Gerar Especificações Isoladas
|
|
146
|
+
Para CADA tarefa, crie um arquivo `DARE/EXECUTION/task-[id].md`:
|
|
147
|
+
|
|
148
|
+
```markdown
|
|
149
|
+
# Task 001: Criar Migrations de Users
|
|
150
|
+
|
|
151
|
+
## Objetivo
|
|
152
|
+
Criar as migrations para tabelas de users e refresh_tokens.
|
|
153
|
+
|
|
154
|
+
## Descrição
|
|
155
|
+
Implementar duas migrations Laravel:
|
|
156
|
+
1. create_users_table.php
|
|
157
|
+
2. create_refresh_tokens_table.php
|
|
158
|
+
|
|
159
|
+
## Especificações
|
|
160
|
+
|
|
161
|
+
### Tabela: users
|
|
162
|
+
- id: UUID (PK)
|
|
163
|
+
- email: VARCHAR(255) UNIQUE NOT NULL
|
|
164
|
+
- password_hash: VARCHAR(255) NOT NULL
|
|
165
|
+
- name: VARCHAR(255) NOT NULL
|
|
166
|
+
- is_active: BOOLEAN DEFAULT true
|
|
167
|
+
- created_at: TIMESTAMP
|
|
168
|
+
- updated_at: TIMESTAMP
|
|
169
|
+
|
|
170
|
+
### Tabela: refresh_tokens
|
|
171
|
+
- id: UUID (PK)
|
|
172
|
+
- user_id: UUID (FK → users.id)
|
|
173
|
+
- token: VARCHAR(500) UNIQUE
|
|
174
|
+
- expires_at: TIMESTAMP NOT NULL
|
|
175
|
+
- revoked_at: TIMESTAMP NULL
|
|
176
|
+
- created_at: TIMESTAMP
|
|
177
|
+
|
|
178
|
+
## Arquivos a Criar
|
|
179
|
+
- `database/migrations/YYYY_MM_DD_HHMMSS_create_users_table.php`
|
|
180
|
+
- `database/migrations/YYYY_MM_DD_HHMMSS_create_refresh_tokens_table.php`
|
|
181
|
+
|
|
182
|
+
## Validações (Validation Gates)
|
|
183
|
+
- [ ] Migrations criadas sem erros
|
|
184
|
+
- [ ] Tabelas têm índices apropriados
|
|
185
|
+
- [ ] Foreign keys estão corretas
|
|
186
|
+
- [ ] Timestamps são automáticos
|
|
187
|
+
- [ ] `php artisan migrate` executa sem erros
|
|
188
|
+
|
|
189
|
+
## Testes
|
|
190
|
+
```bash
|
|
191
|
+
php artisan migrate
|
|
192
|
+
php artisan migrate:rollback
|
|
193
|
+
php artisan migrate
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## Segurança
|
|
197
|
+
- Senhas nunca são armazenadas em texto plano
|
|
198
|
+
- Tokens têm expiração
|
|
199
|
+
- Soft deletes para dados históricos
|
|
200
|
+
|
|
201
|
+
## Próxima Task
|
|
202
|
+
Task 002: Configurar JWT
|
|
203
|
+
|
|
204
|
+
## Notas
|
|
205
|
+
- Use UUID em vez de auto-increment
|
|
206
|
+
- Considere índices em email e user_id
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Passo 6: Pedir Aprovação
|
|
210
|
+
Após gerar todas as tasks:
|
|
211
|
+
- Peça ao usuário revisar
|
|
212
|
+
- Confirme dependências
|
|
213
|
+
- Aprove antes de executar
|
|
214
|
+
|
|
215
|
+
## Boas Práticas
|
|
216
|
+
|
|
217
|
+
1. **Atômicas:** Cada task é independente
|
|
218
|
+
2. **Testáveis:** Inclua validation gates
|
|
219
|
+
3. **Documentadas:** Especificações claras
|
|
220
|
+
4. **Seguras:** Integre requisitos OWASP
|
|
221
|
+
5. **Sequenciadas:** Respeite dependências
|
|
222
|
+
|
|
223
|
+
## Dicas para Melhor Resultado
|
|
224
|
+
|
|
225
|
+
- **Tamanho:** Tasks devem levar 15-60 minutos
|
|
226
|
+
- **Testes:** Sempre inclua validation gates
|
|
227
|
+
- **Segurança:** Consulte `skill-security` para cada task
|
|
228
|
+
- **Exemplos:** Use `examples/` como referência
|
|
229
|
+
- **Templates:** Use `templates/TASK-SPEC-template.md`
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# BLUEPRINT DE IMPLEMENTAÇÃO: [Nome do Projeto]
|
|
2
|
+
|
|
3
|
+
## 1. VISÃO GERAL DA ARQUITETURA
|
|
4
|
+
[Descrição da arquitetura do sistema: Monolito modular, Microserviços, Hexagonal, etc.]
|
|
5
|
+
[Diagrama em formato Mermaid se aplicável]
|
|
6
|
+
|
|
7
|
+
## 2. STACK TÉCNICA DEFINIDA
|
|
8
|
+
- **Linguagem:** [ex: PHP 8.3]
|
|
9
|
+
- **Framework:** [ex: Laravel 11.x]
|
|
10
|
+
- **Banco de Dados:** [ex: PostgreSQL 16.x]
|
|
11
|
+
- **Pacotes Essenciais:** [Lista de dependências do composer/npm]
|
|
12
|
+
|
|
13
|
+
## 3. MODELO DE DADOS
|
|
14
|
+
[Entidades principais, relacionamentos e tipos de dados]
|
|
15
|
+
[Exemplo de Migration Laravel ou Model Pydantic/Go Struct]
|
|
16
|
+
|
|
17
|
+
## 4. ESTRUTURA DE PASTAS E ARQUIVOS
|
|
18
|
+
[Árvore de diretórios completa focando nos arquivos que serão criados/modificados]
|
|
19
|
+
```text
|
|
20
|
+
app/
|
|
21
|
+
├── Http/
|
|
22
|
+
│ ├── Controllers/
|
|
23
|
+
│ └── Requests/
|
|
24
|
+
├── Models/
|
|
25
|
+
├── Services/
|
|
26
|
+
└── ...
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 5. ENDPOINTS DA API
|
|
30
|
+
| Método | Endpoint | Controller@Method | Descrição | Request Body | Response | Auth |
|
|
31
|
+
|---|---|---|---|---|---|---|
|
|
32
|
+
| POST | /api/v1/users | UserController@store | Cria usuário | {name, email, pass} | {id, token} | Não |
|
|
33
|
+
| GET | /api/v1/users | UserController@index | Lista usuários | - | [{id, name}] | Sim |
|
|
34
|
+
|
|
35
|
+
## 6. CÓDIGO-BASE / PADRÕES A SEGUIR
|
|
36
|
+
[Trechos de código críticos que definem o padrão do projeto]
|
|
37
|
+
[Exemplo: Interface de repositório, FormRequest base, Trait de respostas de API]
|
|
38
|
+
|
|
39
|
+
## 7. PLANO DE EXECUÇÃO (FASES)
|
|
40
|
+
- **Fase 1:** Setup do projeto e Banco de Dados (Migrations/Seeds)
|
|
41
|
+
- **Fase 2:** Autenticação e Autorização (Middlewares/Policies)
|
|
42
|
+
- **Fase 3:** [Módulo Principal 1]
|
|
43
|
+
- **Fase 4:** [Módulo Principal 2]
|
|
44
|
+
- **Fase N:** Testes e Documentação
|
|
45
|
+
|
|
46
|
+
## 8. COMANDOS DE SETUP
|
|
47
|
+
[Todos os comandos para rodar o projeto do zero, ex: docker-compose up, php artisan migrate, etc]
|
|
48
|
+
|
|
49
|
+
## 9. CRITÉRIOS DE SUCESSO GERAIS
|
|
50
|
+
- [ ] O código passa em todos os testes (`php artisan test`)
|
|
51
|
+
- [ ] Não há erros de linting (`./vendor/bin/pint`)
|
|
52
|
+
- [ ] A API responde conforme os endpoints definidos
|
|
53
|
+
- [ ] A documentação Swagger/OpenAPI está atualizada
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# PROJETO: [Nome do Projeto]
|
|
2
|
+
|
|
3
|
+
## DESCRIÇÃO
|
|
4
|
+
[O que é o sistema em 2-3 frases claras e objetivas]
|
|
5
|
+
|
|
6
|
+
## FUNCIONALIDADES
|
|
7
|
+
- [Funcionalidade 1: descrição detalhada]
|
|
8
|
+
- [Funcionalidade 2: descrição detalhada]
|
|
9
|
+
- [...]
|
|
10
|
+
|
|
11
|
+
## STACK TÉCNICA
|
|
12
|
+
- **Linguagem:** [ex: PHP 8.3]
|
|
13
|
+
- **Framework:** [ex: Laravel 11]
|
|
14
|
+
- **Banco de Dados:** [ex: PostgreSQL 16]
|
|
15
|
+
- **Frontend:** [ex: Vue.js 3 / Nuxt]
|
|
16
|
+
- **Outros:** [ex: Redis, S3]
|
|
17
|
+
|
|
18
|
+
## REQUISITOS TÉCNICOS E DE NEGÓCIO
|
|
19
|
+
- [Requisito 1: ex. API deve responder em menos de 200ms]
|
|
20
|
+
- [Requisito 2: ex. Autenticação via JWT (Sanctum)]
|
|
21
|
+
- [Requisito 3: ex. Cobertura de testes unitários > 80%]
|
|
22
|
+
|
|
23
|
+
## INTEGRAÇÕES
|
|
24
|
+
- [Integração 1: ex. Stripe para pagamentos (link da doc)]
|
|
25
|
+
- [Integração 2: ex. AWS S3 para armazenamento de arquivos]
|
|
26
|
+
|
|
27
|
+
## RESTRIÇÕES
|
|
28
|
+
- **Prazo:** [Data limite ou restrição de tempo]
|
|
29
|
+
- **Orçamento:** [Limitações de custo com infra/APIs]
|
|
30
|
+
- **Limitações Técnicas:** [ex. Não pode usar banco NoSQL]
|
|
31
|
+
|
|
32
|
+
## FORA DO ESCOPO
|
|
33
|
+
- [O que NÃO será feito nesta versão]
|
|
34
|
+
- [Funcionalidades adiadas para v2]
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# ESPECIFICAÇÃO DE TAREFA: [ID da Task, ex: task-001]
|
|
2
|
+
|
|
3
|
+
## OBJETIVO DA TAREFA
|
|
4
|
+
[Descrição concisa do que precisa ser implementado, ex: Criar o Model, Migration e Factory para a entidade Usuário.]
|
|
5
|
+
|
|
6
|
+
## CONTEXTO E DEPENDÊNCIAS
|
|
7
|
+
- **Fase:** [Nome da Fase]
|
|
8
|
+
- **Depende de:** [ID de tasks anteriores, ex: Nenhuma / task-000]
|
|
9
|
+
- **Arquivos Relacionados Existentes:** [Arquivos que servem de base ou serão modificados, ex: `app/Models/User.php`]
|
|
10
|
+
|
|
11
|
+
## ESPECIFICAÇÃO DE IMPLEMENTAÇÃO (O QUE FAZER)
|
|
12
|
+
[Instruções detalhadas passo a passo para a IA Executora]
|
|
13
|
+
|
|
14
|
+
1. **[Passo 1, ex: Atualizar a migration `create_users_table`]**
|
|
15
|
+
- Adicionar coluna `role` (enum: admin, user).
|
|
16
|
+
- Adicionar coluna `is_active` (boolean, default true).
|
|
17
|
+
|
|
18
|
+
2. **[Passo 2, ex: Atualizar o Model `User`]**
|
|
19
|
+
- Adicionar campos ao `$fillable`.
|
|
20
|
+
- Criar os casts corretos.
|
|
21
|
+
|
|
22
|
+
3. **[Passo 3, ex: Criar/Atualizar a Factory]**
|
|
23
|
+
- Garantir que os novos campos sejam gerados pelo Faker.
|
|
24
|
+
|
|
25
|
+
## EXEMPLOS E PADRÕES A SEGUIR
|
|
26
|
+
- **Referência:** Siga o padrão de formatação definido em `.cursorrules`.
|
|
27
|
+
- **Exemplo Existente:** Se houver um model parecido, cite aqui (ex: `app/Models/Product.php`).
|
|
28
|
+
|
|
29
|
+
## CRITÉRIOS DE SUCESSO (VALIDATION GATES)
|
|
30
|
+
Estes comandos DEVEM ser executados pela IA para validar a implementação antes de concluir a tarefa.
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
# 1. Linting / Formatação
|
|
34
|
+
./vendor/bin/pint
|
|
35
|
+
|
|
36
|
+
# 2. Análise Estática (se aplicável, ex: PHPStan/Larastan)
|
|
37
|
+
./vendor/bin/phpstan analyse
|
|
38
|
+
|
|
39
|
+
# 3. Testes Unitários/Feature
|
|
40
|
+
php artisan test --filter=UserTest
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Se algum comando falhar, a IA deve ler o erro, consertar o código e rodar o comando novamente (Ralph Loop) até que todos os testes passem.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# TASKS DE IMPLEMENTAÇÃO: [Nome do Projeto]
|
|
2
|
+
|
|
3
|
+
Este documento contém o desdobramento do Blueprint aprovado em tarefas atômicas e executáveis para a IA.
|
|
4
|
+
Cada tarefa listada aqui possui um arquivo correspondente no diretório `DARE/EXECUTION/` contendo sua especificação detalhada.
|
|
5
|
+
|
|
6
|
+
## FASES DE IMPLEMENTAÇÃO
|
|
7
|
+
|
|
8
|
+
### Fase 1: [Nome da Fase, ex: Setup e Banco de Dados]
|
|
9
|
+
- [ ] **Task 001:** [Objetivo curto, ex: Criar Migration e Model de Usuário]
|
|
10
|
+
- [ ] **Task 002:** [Objetivo curto, ex: Configurar Traits e Classes Base]
|
|
11
|
+
|
|
12
|
+
### Fase 2: [Nome da Fase, ex: Autenticação]
|
|
13
|
+
- [ ] **Task 003:** [Objetivo curto, ex: Implementar AuthController (Login/Register)]
|
|
14
|
+
- [ ] **Task 004:** [Objetivo curto, ex: Criar Middlewares de verificação de permissão]
|
|
15
|
+
|
|
16
|
+
## DEPENDÊNCIAS
|
|
17
|
+
|
|
18
|
+
- A **Fase 2** depende da conclusão 100% da **Fase 1**.
|
|
19
|
+
- A **Task 004** depende da **Task 003**.
|
|
20
|
+
|
|
21
|
+
## INSTRUÇÕES PARA EXECUÇÃO
|
|
22
|
+
|
|
23
|
+
Para executar uma tarefa, use o comando `/execute-task [id-da-task]` no Cursor Composer.
|
|
24
|
+
Exemplo: `/execute-task task-001`
|
|
25
|
+
|
|
26
|
+
A IA lerá o arquivo `DARE/EXECUTION/task-001.md`, implementará o código, rodará os testes e validará os critérios de sucesso. Após a execução, marque a tarefa como concluída (com um `x` entre os colchetes `[x]`) neste documento.
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Telemetria do Projeto: [Nome do Projeto]
|
|
2
|
+
|
|
3
|
+
## Resumo Executivo
|
|
4
|
+
|
|
5
|
+
| Métrica | Valor |
|
|
6
|
+
|---------|-------|
|
|
7
|
+
| **Projeto** | [Nome do Projeto] |
|
|
8
|
+
| **Data de Início** | [Data] |
|
|
9
|
+
| **Tokens Totais Processados** | [Número] (monitoramento de uso) |
|
|
10
|
+
| **IA Utilizada** | Cursor (por compliance) |
|
|
11
|
+
| **Modelos do Cursor Utilizados** | [Lista: GPT-4 Turbo, Claude, Gemini] |
|
|
12
|
+
| **Tempo Total de Execução** | [Horas/Minutos] |
|
|
13
|
+
| **Número de Tasks Executadas** | [Número] |
|
|
14
|
+
|
|
15
|
+
## Detalhamento por Etapa
|
|
16
|
+
|
|
17
|
+
### 1. Design (`/generate-design`)
|
|
18
|
+
|
|
19
|
+
| Campo | Valor |
|
|
20
|
+
|-------|-------|
|
|
21
|
+
| Data/Hora | [Timestamp] |
|
|
22
|
+
| Modelo do Cursor | [GPT-4 Turbo / Claude 3.5 Sonnet / Gemini 2.0 Flash] |
|
|
23
|
+
| Tokens Estimados | [Número] |
|
|
24
|
+
| Tempo de Execução | [Tempo] |
|
|
25
|
+
| Comando Executado | `/generate-design "[Descrição]"` |
|
|
26
|
+
| Observações | [Qualidade da resposta, ajustes necessários, etc] |
|
|
27
|
+
| Status | ✓ Sucesso / ✗ Falha |
|
|
28
|
+
|
|
29
|
+
### 2. Blueprint (`/generate-blueprint`)
|
|
30
|
+
|
|
31
|
+
| Campo | Valor |
|
|
32
|
+
|-------|-------|
|
|
33
|
+
| Data/Hora | [Timestamp] |
|
|
34
|
+
| Modelo do Cursor | [GPT-4 Turbo / Claude 3.5 Sonnet / Gemini 2.0 Flash] |
|
|
35
|
+
| Tokens Estimados | [Número] |
|
|
36
|
+
| Tempo de Execução | [Tempo] |
|
|
37
|
+
| Arquivo Processado | DARE/DESIGN.md |
|
|
38
|
+
| Observações | [Qualidade da arquitetura, endpoints claros, etc] |
|
|
39
|
+
| Status | ✓ Sucesso / ✗ Falha |
|
|
40
|
+
|
|
41
|
+
### 3. Tasks (`/generate-tasks`)
|
|
42
|
+
|
|
43
|
+
| Campo | Valor |
|
|
44
|
+
|-------|-------|
|
|
45
|
+
| Data/Hora | [Timestamp] |
|
|
46
|
+
| Modelo do Cursor | [GPT-4 Turbo / Claude 3.5 Sonnet / Gemini 2.0 Flash] |
|
|
47
|
+
| Tokens Estimados | [Número] |
|
|
48
|
+
| Tempo de Execução | [Tempo] |
|
|
49
|
+
| Arquivo Processado | DARE/BLUEPRINT.md |
|
|
50
|
+
| Tasks Geradas | [Número] |
|
|
51
|
+
| Observações | [Qualidade das tasks, clareza das especificações, etc] |
|
|
52
|
+
| Status | ✓ Sucesso / ✗ Falha |
|
|
53
|
+
|
|
54
|
+
### 4. Execute Tasks (`/execute-task`)
|
|
55
|
+
|
|
56
|
+
#### Task 001: [Nome da Task]
|
|
57
|
+
|
|
58
|
+
| Campo | Valor |
|
|
59
|
+
|-------|-------|
|
|
60
|
+
| Data/Hora | [Timestamp] |
|
|
61
|
+
| Modelo do Cursor | [GPT-4 Turbo / Claude 3.5 Sonnet / Gemini 2.0 Flash] |
|
|
62
|
+
| Tokens Estimados | [Número] |
|
|
63
|
+
| Tempo de Execução | [Tempo] |
|
|
64
|
+
| Tentativas (Ralph Loop) | [Número] |
|
|
65
|
+
| Observações | [Código limpo, testes, etc] |
|
|
66
|
+
| Status | ✓ Sucesso / ✗ Falha |
|
|
67
|
+
|
|
68
|
+
#### Task 002: [Nome da Task]
|
|
69
|
+
[Repetir estrutura acima para cada task]
|
|
70
|
+
|
|
71
|
+
## Análise de Tokens Processados
|
|
72
|
+
|
|
73
|
+
| Etapa | Tokens Estimados | % do Total | Tempo Total |
|
|
74
|
+
|-------|------------------|-----------|-------------|
|
|
75
|
+
| Design | [Número] | [%] | [Tempo] |
|
|
76
|
+
| Blueprint | [Número] | [%] | [Tempo] |
|
|
77
|
+
| Tasks | [Número] | [%] | [Tempo] |
|
|
78
|
+
| Execute (N tasks) | [Número] | [%] | [Tempo] |
|
|
79
|
+
| **TOTAL** | **[Número]** | **100%** | **[Tempo]** |
|
|
80
|
+
|
|
81
|
+
## Análise de Modelos do Cursor
|
|
82
|
+
|
|
83
|
+
| Modelo | Tokens Processados | % do Total | Tempo Médio | Melhor Para |
|
|
84
|
+
|--------|------------------|-----------|------------|------------|
|
|
85
|
+
| GPT-4 Turbo | [Número] | [%] | [Tempo] | Tarefas complexas |
|
|
86
|
+
| Claude 3.5 Sonnet | [Número] | [%] | [Tempo] | Análise profunda |
|
|
87
|
+
| Gemini 2.0 Flash | [Número] | [%] | [Tempo] | Tarefas simples |
|
|
88
|
+
| **TOTAL** | **[Número]** | **100%** | **[Tempo]** | - |
|
|
89
|
+
|
|
90
|
+
## Análise de Performance
|
|
91
|
+
|
|
92
|
+
| Métrica | Valor |
|
|
93
|
+
|---------|-------|
|
|
94
|
+
| Tempo Médio por Task | [Tempo] |
|
|
95
|
+
| Taxa de Sucesso (1ª tentativa) | [%] |
|
|
96
|
+
| Taxa de Sucesso (com Ralph Loop) | [%] |
|
|
97
|
+
| Tokens Médios por Task | [Número] |
|
|
98
|
+
| Modelo Mais Utilizado | [Modelo] |
|
|
99
|
+
| Modelo Mais Rápido | [Modelo] |
|
|
100
|
+
|
|
101
|
+
## Otimizações Recomendadas
|
|
102
|
+
|
|
103
|
+
1. **[Recomendação 1]**
|
|
104
|
+
- Descrição: [Detalhes]
|
|
105
|
+
- Economia Estimada: [Valor/Percentual]
|
|
106
|
+
- Ação: [Como implementar]
|
|
107
|
+
|
|
108
|
+
2. **[Recomendação 2]**
|
|
109
|
+
- Descrição: [Detalhes]
|
|
110
|
+
- Economia Estimada: [Valor/Percentual]
|
|
111
|
+
- Ação: [Como implementar]
|
|
112
|
+
|
|
113
|
+
3. **[Recomendação 3]**
|
|
114
|
+
- Descrição: [Detalhes]
|
|
115
|
+
- Economia Estimada: [Valor/Percentual]
|
|
116
|
+
- Ação: [Como implementar]
|
|
117
|
+
|
|
118
|
+
## Notas e Observações
|
|
119
|
+
|
|
120
|
+
[Espaço para anotações adicionais, como problemas encontrados, decisões tomadas, lições aprendidas, etc.]
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
**Última atualização:** [Data]
|
|
125
|
+
**Próxima revisão:** [Data]
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Comando: /execute-task
|
|
2
|
+
|
|
3
|
+
## Descrição
|
|
4
|
+
Este comando finaliza o Método DARE (Execute) implementando o código e validando os testes de uma tarefa específica isolada.
|
|
5
|
+
|
|
6
|
+
## Instruções para o Cursor Composer
|
|
7
|
+
|
|
8
|
+
1. **Identifique a Tarefa:** Leia o `$ARGUMENTS` (ID da tarefa ou caminho do arquivo, ex: `task-001` ou `DARE/EXECUTION/task-001.md`).
|
|
9
|
+
2. **Leia a Especificação da Tarefa:** Abra e leia a especificação detalhada da tarefa em `DARE/EXECUTION/[id].md`.
|
|
10
|
+
3. **Analise o Contexto Global:** Leia o arquivo `.cursorrules` (ou equivalente) e a arquitetura geral em `DARE/BLUEPRINT.md` para garantir que o código será gerado dentro dos padrões do projeto.
|
|
11
|
+
4. **Implemente o Código:**
|
|
12
|
+
- Execute passo a passo as instruções da seção "ESPECIFICAÇÃO DE IMPLEMENTAÇÃO".
|
|
13
|
+
- Crie ou modifique os arquivos necessários.
|
|
14
|
+
- Siga rigorosamente os padrões de código, tratamento de erros e convenções definidos nas regras globais e exemplos fornecidos.
|
|
15
|
+
5. **O Loop de Validação (Ralph Loop):**
|
|
16
|
+
- Após a implementação, execute OBRIGATORIAMENTE os comandos definidos na seção "CRITÉRIOS DE SUCESSO (VALIDATION GATES)".
|
|
17
|
+
- Exemplo: `php artisan test --filter=NomeDoTeste` ou `./vendor/bin/pint`.
|
|
18
|
+
- Se algum comando falhar, LEIA O ERRO, CORRIJA O CÓDIGO e RODE O COMANDO NOVAMENTE até que todos passem com sucesso.
|
|
19
|
+
6. **Mensagem Final:** Após o sucesso dos testes, atualize o status da tarefa no arquivo `DARE/TASKS.md` (marque com um `[x]`) e informe ao usuário: "Tarefa [ID] implementada e validada com sucesso. Os testes passaram."
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Comando: /generate-blueprint
|
|
2
|
+
|
|
3
|
+
## Descrição
|
|
4
|
+
Este comando avança o Método DARE para a fase Architect, lendo o Design aprovado e gerando a arquitetura completa de implementação.
|
|
5
|
+
|
|
6
|
+
## Instruções para o Cursor Composer
|
|
7
|
+
|
|
8
|
+
1. **Leia o Documento Design:** Acesse e leia o arquivo `$ARGUMENTS` (geralmente `DARE/DESIGN.md`) que contém os requisitos do projeto.
|
|
9
|
+
2. **Leia o Template:** Utilize a estrutura definida em `templates/BLUEPRINT-template.md`.
|
|
10
|
+
3. **Analise o Contexto Global:** Leia o arquivo `.cursorrules` (ou equivalente) para entender as regras, convenções de nomenclatura e padrões de arquitetura exigidos pela stack do projeto.
|
|
11
|
+
4. **Analise Exemplos:** Se houver arquivos na pasta `examples/`, analise-os para extrair os padrões de código esperados e incluí-los na seção "CÓDIGO-BASE / PADRÕES A SEGUIR".
|
|
12
|
+
5. **Gere a Arquitetura (O Blueprint):**
|
|
13
|
+
- **Visão Geral:** Defina a arquitetura apropriada para o projeto (Monolito, Microserviços, Hexagonal, MVC).
|
|
14
|
+
- **Segurança (OWASP):** Adicione uma subseção explicando como as diretrizes da `skill-security.mdc` serão implementadas (ex: Bcrypt para senhas, Middlewares de Rate Limit, Validação estrita).
|
|
15
|
+
- **Modelo de Dados:** Projete o esquema completo do banco de dados (tabelas, campos, tipos, relacionamentos) e apresente em formato Markdown ou SQL simplificado. Certifique-se de que dados sensíveis estão protegidos.
|
|
16
|
+
- **Endpoints:** Liste todas as rotas da API necessárias com Request e Response esperados em uma tabela Markdown, incluindo as necessidades de Autenticação/Autorização.
|
|
17
|
+
- **Estrutura:** Esboce a árvore de diretórios dos arquivos que serão criados.
|
|
18
|
+
- **Plano de Execução:** Divida o projeto em Fases lógicas e sequenciais. A Fase 2 geralmente deve incluir o Setup de Segurança (Auth, Middlewares).
|
|
19
|
+
- **Comandos:** Liste comandos de setup (ex: migrations, composer install).
|
|
20
|
+
6. **Salve o Arquivo:** Crie o arquivo `DARE/BLUEPRINT.md` com o conteúdo gerado.
|
|
21
|
+
7. **Mensagem Final:** Informe ao usuário: "Documento BLUEPRINT.md gerado com sucesso. Por favor, revise a arquitetura e os endpoints. Quando estiver aprovado, execute `/generate-tasks DARE/BLUEPRINT.md`."
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Analisa o projeto existente e gera um Design DARE focado na resolucao de um bug. Use quando precisar investigar e corrigir um erro complexo no sistema atual.
|
|
3
|
+
globs: *
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Generate Bugfix Design
|
|
7
|
+
|
|
8
|
+
## Objetivo
|
|
9
|
+
Analisar a base de código atual, diagnosticar um problema relatado e gerar um documento de Design (`DARE/DESIGN-Bugfix-[Nome].md`) focado especificamente na **correção do bug**, mapeando a causa raiz e o plano de ação cirúrgico.
|
|
10
|
+
|
|
11
|
+
## Contexto
|
|
12
|
+
Este comando é para **projetos legados** ou em andamento onde um erro foi encontrado. O foco aqui é **diagnóstico e correção**: encontrar a causa raiz, analisar impacto e planejar a correção mais segura possível.
|
|
13
|
+
|
|
14
|
+
## Passos que a IA deve seguir:
|
|
15
|
+
|
|
16
|
+
1. **Análise de Contexto:**
|
|
17
|
+
- Entender o comportamento atual (o bug) vs o comportamento esperado
|
|
18
|
+
- Analisar logs, stack traces ou descrições de erro fornecidas
|
|
19
|
+
- Identificar a área do código responsável pelo problema
|
|
20
|
+
|
|
21
|
+
2. **Diagnóstico da Causa Raiz:**
|
|
22
|
+
- Por que o erro está ocorrendo?
|
|
23
|
+
- É um problema de lógica, banco de dados, concorrência ou segurança?
|
|
24
|
+
|
|
25
|
+
3. **Geração do Documento:**
|
|
26
|
+
- Criar o arquivo `DARE/DESIGN-Bugfix-[Nome-do-Bug].md`
|
|
27
|
+
|
|
28
|
+
## Estrutura do Documento Gerado:
|
|
29
|
+
|
|
30
|
+
```markdown
|
|
31
|
+
# Bugfix Design: [Nome do Bug]
|
|
32
|
+
|
|
33
|
+
## Descrição do Problema
|
|
34
|
+
- **Comportamento Atual:** [O que está acontecendo de errado]
|
|
35
|
+
- **Comportamento Esperado:** [O que deveria acontecer]
|
|
36
|
+
- **Passos para Reproduzir:** [Se conhecido]
|
|
37
|
+
|
|
38
|
+
## Diagnóstico da Causa Raiz
|
|
39
|
+
Explicação técnica detalhada de por que o erro ocorre. (Ex: "A query N+1 está estourando a memória", ou "A validação não verifica campos nulos").
|
|
40
|
+
|
|
41
|
+
## Análise de Impacto (Onde corrigir)
|
|
42
|
+
- **Arquivos a Modificar:** [Lista de arquivos específicos]
|
|
43
|
+
- **Banco de Dados:** [Necessário rodar script de correção de dados?]
|
|
44
|
+
- **Riscos da Correção:** [O que pode quebrar ao consertar isso?]
|
|
45
|
+
|
|
46
|
+
## Plano de Ação (Correção Cirúrgica)
|
|
47
|
+
1. [Passo 1: Ajustar a query no Repository]
|
|
48
|
+
2. [Passo 2: Adicionar teste unitário para cobrir o caso]
|
|
49
|
+
3. [Passo 3: Validar comportamento]
|
|
50
|
+
|
|
51
|
+
## Testes Necessários
|
|
52
|
+
- **Validation Gates:** [O que testar para garantir que o bug sumiu]
|
|
53
|
+
- **Testes de Regressão:** [O que testar para garantir que não quebrou o resto]
|
|
54
|
+
|
|
55
|
+
## Próximas Etapas
|
|
56
|
+
1. Revisar e aprovar este Bugfix Design
|
|
57
|
+
2. Executar `/generate-blueprint DARE/DESIGN-Bugfix-[Nome].md` (opcional, se a correção for grande)
|
|
58
|
+
3. Ou ir direto para `/generate-tasks DARE/DESIGN-Bugfix-[Nome].md`
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Regras de Ouro:
|
|
62
|
+
- **Seja Cirúrgico:** A correção deve ser o menor código possível para resolver o problema sem efeitos colaterais.
|
|
63
|
+
- **Causa Raiz:** Não trate apenas o sintoma, identifique e corrija a causa raiz.
|
|
64
|
+
- **Evite Regressão:** Sempre mapeie os riscos da correção.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Comando: /generate-design
|
|
2
|
+
|
|
3
|
+
## Descrição
|
|
4
|
+
Este comando inicia o Método DARE (Design) gerando um documento de requisitos a partir de uma ideia inicial.
|
|
5
|
+
|
|
6
|
+
## Instruções para o Cursor Composer
|
|
7
|
+
|
|
8
|
+
1. **Leia a Ideia Inicial:** Analise o prompt fornecido pelo usuário (`$ARGUMENTS`) que descreve o que ele deseja construir.
|
|
9
|
+
2. **Leia o Template:** Utilize a estrutura definida em `templates/DESIGN-template.md`.
|
|
10
|
+
3. **Analise o Contexto Global:** Leia o arquivo `.cursorrules` (ou equivalente na pasta `.cursor/rules/`) para entender a stack técnica do projeto e preencher automaticamente a seção de STACK TÉCNICA.
|
|
11
|
+
4. **Gere o Documento:**
|
|
12
|
+
- Preencha o template com as informações extraídas do prompt.
|
|
13
|
+
- Organize as funcionalidades de forma clara.
|
|
14
|
+
- Identifique possíveis requisitos técnicos implícitos e restrições.
|
|
15
|
+
- **Integre Requisitos de Segurança (OWASP):** Adicione obrigatoriamente requisitos de segurança na seção correspondente (ex: Rate Limiting, HTTPS, Proteção contra Força Bruta) baseando-se na skill `skill-security.mdc`.
|
|
16
|
+
- Defina claramente o que fica FORA DO ESCOPO para manter o foco da versão.
|
|
17
|
+
5. **Salve o Arquivo:** Crie o arquivo `DARE/DESIGN.md` com o conteúdo gerado.
|
|
18
|
+
6. **Mensagem Final:** Informe ao usuário: "Documento DESIGN.md gerado com sucesso. Por favor, revise e aprove o documento. Quando estiver pronto, execute `/generate-blueprint DARE/DESIGN.md`."
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Comando: /generate-docker-compose
|
|
2
|
+
|
|
3
|
+
## Descrição
|
|
4
|
+
Este comando analisa a arquitetura definida no BLUEPRINT.md e gera um `docker-compose.yml` completo com todos os serviços necessários (App, DB, Cache, etc).
|
|
5
|
+
|
|
6
|
+
## Instruções para o Cursor Composer
|
|
7
|
+
|
|
8
|
+
1. **Leia o Documento Blueprint:** Acesse o `DARE/BLUEPRINT.md` (se existir) para identificar as dependências do sistema (ex: PostgreSQL, Redis, Mailhog).
|
|
9
|
+
2. **Leia o Contexto Global:** Leia o `.cursorrules` para confirmar as versões do banco de dados e outras ferramentas.
|
|
10
|
+
3. **Leia a Skill Docker:** Leia `.cursor/rules/skill-docker.mdc` para aplicar boas práticas (Healthchecks, Redes, Volumes).
|
|
11
|
+
4. **Gere o docker-compose.yml:**
|
|
12
|
+
- Crie um arquivo `docker-compose.yml` na raiz do projeto.
|
|
13
|
+
- **Serviço App:** Use o `build: .` (Dockerfile gerado). Exponha a porta correta. Defina variáveis de ambiente ou carregue do `.env`. Configure `depends_on` para DB/Cache.
|
|
14
|
+
- **Serviço Webserver (Laravel):** Se for Laravel, crie um serviço `nginx` dependente do `app` (PHP-FPM) e configure os volumes para compartilhar a pasta `/var/www/html`.
|
|
15
|
+
- **Serviço Banco de Dados:** Adicione o banco de dados (ex: `postgres:16-alpine` ou `mysql:8.0`). Defina variáveis de ambiente para usuário, senha e database (`POSTGRES_DB`, `POSTGRES_USER`). Adicione um `healthcheck` para testar a conexão (`pg_isready -U user`). Crie um volume nomeado para os dados (`db_data:/var/lib/postgresql/data`).
|
|
16
|
+
- **Serviço Cache (Opcional):** Se o projeto usar Redis, adicione o serviço `redis:7-alpine`.
|
|
17
|
+
- **Redes e Volumes:** Defina as redes customizadas (ex: `app-network`) e volumes (`db_data`, `redis_data`) no final do arquivo.
|
|
18
|
+
5. **Mensagem Final:** Informe ao usuário: "Arquivo docker-compose.yml gerado com sucesso. Todos os serviços (App, [DB], [Cache]) foram configurados com healthchecks, volumes persistentes e redes isoladas. Revise as portas e variáveis de ambiente no .env antes de executar `docker-compose up -d`."
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Comando: /generate-dockerfile
|
|
2
|
+
|
|
3
|
+
## Descrição
|
|
4
|
+
Este comando analisa a stack do projeto (definida no DESIGN.md ou .cursorrules) e gera um `Dockerfile` otimizado para produção e desenvolvimento.
|
|
5
|
+
|
|
6
|
+
## Instruções para o Cursor Composer
|
|
7
|
+
|
|
8
|
+
1. **Analise o Contexto:** Leia o arquivo `.cursorrules` e o `DARE/DESIGN.md` (se existir) para identificar a stack tecnológica principal (Linguagem, Framework, Versões).
|
|
9
|
+
2. **Leia a Skill Docker:** Leia as regras em `.cursor/rules/skill-docker.mdc` para aplicar as melhores práticas de containerização.
|
|
10
|
+
3. **Gere o Dockerfile:**
|
|
11
|
+
- Crie um Dockerfile na raiz do projeto (`./Dockerfile`).
|
|
12
|
+
- **Para PHP/Laravel:** Use multi-stage build. Instale extensões necessárias (pdo_mysql/pgsql, mbstring, exif, pcntl, bcmath, gd). Configure o `www-data` e ajuste permissões de `/var/www/html/storage` e `bootstrap/cache`.
|
|
13
|
+
- **Para Python:** Use `python:slim`. Crie um usuário não-root. Copie `requirements.txt` primeiro, instale dependências e depois copie o código.
|
|
14
|
+
- **Para Go:** Use multi-stage. Estágio 1: `golang:alpine` para build (`go build -o app`). Estágio 2: `alpine` ou `scratch` rodando apenas o binário.
|
|
15
|
+
- **Para Node/Vue:** Estágio 1: `node:alpine` para build (`npm run build`). Estágio 2: `nginx:alpine` para servir a pasta `dist`.
|
|
16
|
+
4. **Gere o .dockerignore:** Crie um arquivo `.dockerignore` na raiz do projeto ignorando pastas desnecessárias (`node_modules`, `vendor`, `.git`, `.env`, `tests`, `DARE`).
|
|
17
|
+
5. **Mensagem Final:** Informe ao usuário: "Dockerfile e .dockerignore gerados com sucesso e otimizados para a stack [NOME_DA_STACK]. Revise os arquivos gerados. Para criar a orquestração de serviços, execute `/generate-docker-compose`."
|