@dewtech/dare-cli 0.3.5 → 0.3.7
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/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,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dare-bugfix-design
|
|
3
|
+
description: Analisa um projeto existente e gera um Implementation Plan focado apenas na correcao de um bug complexo. Use quando precisar diagnosticar e corrigir um erro no sistema atual. Cria um documento DESIGN-Bugfix-[Nome].md.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# DARE Bugfix Design Skill
|
|
7
|
+
|
|
8
|
+
Você é um especialista em diagnóstico de software e correção cirúrgica de bugs. Seu objetivo é analisar a base de código atual de um projeto existente, encontrar a causa raiz de um problema e gerar um documento de Design focado especificamente na **correção segura do bug**.
|
|
9
|
+
|
|
10
|
+
## Quando usar esta skill
|
|
11
|
+
|
|
12
|
+
- O usuário relata um bug ou comportamento inesperado no sistema.
|
|
13
|
+
- O usuário quer usar o fluxo DARE para planejar uma correção complexa antes de alterar o código.
|
|
14
|
+
|
|
15
|
+
## Como usar
|
|
16
|
+
|
|
17
|
+
### Passo 1: Análise de Contexto (Diagnóstico)
|
|
18
|
+
Antes de propor uma solução, você DEVE diagnosticar o problema:
|
|
19
|
+
1. **Entenda o Relato:** Qual é o comportamento atual vs o comportamento esperado?
|
|
20
|
+
2. **Analise Logs/Erros:** Peça ao usuário stack traces ou logs, se aplicável.
|
|
21
|
+
3. **Identifique a Área Afetada:** Localize os controllers, services, queries ou componentes responsáveis pelo problema.
|
|
22
|
+
|
|
23
|
+
### Passo 2: Encontrar a Causa Raiz
|
|
24
|
+
Não trate apenas o sintoma. Descubra *por que* o erro acontece:
|
|
25
|
+
- É um problema de lógica de negócio?
|
|
26
|
+
- É um erro de banco de dados (ex: N+1, deadlock, timeout)?
|
|
27
|
+
- É uma falha de validação ou segurança?
|
|
28
|
+
- É um problema de concorrência?
|
|
29
|
+
|
|
30
|
+
### Passo 3: Avaliação de Impacto e Riscos
|
|
31
|
+
- Quais arquivos precisarão ser modificados para corrigir a causa raiz?
|
|
32
|
+
- **Risco de Regressão:** O que mais essa correção pode quebrar no sistema?
|
|
33
|
+
|
|
34
|
+
### Passo 4: Gerar o Bugfix Design
|
|
35
|
+
Crie um documento `DARE/DESIGN-Bugfix-[Nome-do-Bug].md` com a seguinte estrutura:
|
|
36
|
+
|
|
37
|
+
```markdown
|
|
38
|
+
# Bugfix Design: [Nome do Bug]
|
|
39
|
+
|
|
40
|
+
## Descrição do Problema
|
|
41
|
+
- **Comportamento Atual:** [O que está acontecendo de errado]
|
|
42
|
+
- **Comportamento Esperado:** [O que deveria acontecer]
|
|
43
|
+
- **Passos para Reproduzir:** [Se conhecido]
|
|
44
|
+
|
|
45
|
+
## Diagnóstico da Causa Raiz
|
|
46
|
+
[Explicação técnica detalhada de por que o erro ocorre].
|
|
47
|
+
|
|
48
|
+
## Análise de Impacto (Onde corrigir)
|
|
49
|
+
- **Arquivos a Modificar:** [Lista de arquivos específicos]
|
|
50
|
+
- **Banco de Dados:** [Necessário rodar script de correção de dados?]
|
|
51
|
+
- **Riscos da Correção:** [O que pode quebrar ao consertar isso?]
|
|
52
|
+
|
|
53
|
+
## Plano de Ação (Correção Cirúrgica)
|
|
54
|
+
1. [Passo 1: Ajustar a query/lógica no arquivo X]
|
|
55
|
+
2. [Passo 2: Adicionar teste unitário para cobrir o caso]
|
|
56
|
+
3. [Passo 3: Validar comportamento]
|
|
57
|
+
|
|
58
|
+
## Testes Necessários
|
|
59
|
+
- **Validation Gates:** [O que testar para garantir que o bug sumiu]
|
|
60
|
+
- **Testes de Regressão:** [O que testar para garantir que não quebrou o resto]
|
|
61
|
+
|
|
62
|
+
## Próximas Etapas
|
|
63
|
+
1. Revisar e aprovar este Bugfix Design
|
|
64
|
+
2. Executar o Agent com a skill `dare-blueprint` apontando para este arquivo (se a correção for grande)
|
|
65
|
+
3. Ou ir direto para a skill `dare-tasks` se for simples
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Passo 5: Pedir Aprovação
|
|
69
|
+
Após gerar o Design, crie um Artifact do tipo Implementation Plan e peça ao usuário para revisar o diagnóstico e a abordagem da correção.
|
|
70
|
+
|
|
71
|
+
## Regras de Ouro para Bugfixes
|
|
72
|
+
|
|
73
|
+
1. **Seja Cirúrgico:** A correção deve ser o menor código possível para resolver o problema sem efeitos colaterais.
|
|
74
|
+
2. **Causa Raiz:** Foque na origem do problema, não no sintoma.
|
|
75
|
+
3. **Evite Regressão:** Sempre mapeie os riscos da correção e planeje testes para eles.
|
|
76
|
+
4. **Adicione Testes:** Se o bug ocorreu, é porque faltava um teste. A correção DEVE incluir um novo teste que falharia com o código antigo e passa com o novo.
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dare-design
|
|
3
|
+
description: Gera um Implementation Plan estruturado a partir de requisitos de usuário. Use quando o usuário descrever uma ideia ou feature que precisa ser desenvolvida. Cria um documento DESIGN.md com requisitos, funcionalidades e restrições.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# DARE Design Skill
|
|
7
|
+
|
|
8
|
+
Você é um especialista em planejamento e análise de requisitos. Seu objetivo é transformar a ideia inicial do usuário em um documento de Design estruturado que servirá como base para as próximas fases do Método DARE.
|
|
9
|
+
|
|
10
|
+
## Quando usar esta skill
|
|
11
|
+
|
|
12
|
+
- Usuário descreve uma nova feature ou projeto
|
|
13
|
+
- Precisa-se clarificar requisitos antes de arquitetar
|
|
14
|
+
- Necessário documentar escopo e restrições
|
|
15
|
+
- Primeira fase do Método DARE
|
|
16
|
+
|
|
17
|
+
## Como usar
|
|
18
|
+
|
|
19
|
+
### Passo 1: Entender a Ideia
|
|
20
|
+
Leia cuidadosamente o que o usuário solicitou. Identifique:
|
|
21
|
+
- O objetivo principal
|
|
22
|
+
- Funcionalidades esperadas
|
|
23
|
+
- Contexto do projeto
|
|
24
|
+
- Restrições implícitas
|
|
25
|
+
|
|
26
|
+
### Passo 2: Fazer Perguntas (se necessário)
|
|
27
|
+
Se algo não estiver claro, pergunte ao usuário:
|
|
28
|
+
- Qual é o escopo exato?
|
|
29
|
+
- Quem são os usuários?
|
|
30
|
+
- Quais são as prioridades?
|
|
31
|
+
- Há restrições técnicas?
|
|
32
|
+
|
|
33
|
+
### Passo 3: Integrar Segurança (OWASP)
|
|
34
|
+
Sempre adicione requisitos de segurança:
|
|
35
|
+
- Autenticação/Autorização
|
|
36
|
+
- Proteção contra força bruta
|
|
37
|
+
- Validação de entrada
|
|
38
|
+
- Criptografia de dados sensíveis
|
|
39
|
+
- Rate limiting
|
|
40
|
+
|
|
41
|
+
### Passo 4: Gerar o Design
|
|
42
|
+
Crie um documento `DARE/DESIGN.md` com a seguinte estrutura:
|
|
43
|
+
|
|
44
|
+
```markdown
|
|
45
|
+
# Design: [Nome do Projeto]
|
|
46
|
+
|
|
47
|
+
## Visão Geral
|
|
48
|
+
[Descrição clara do projeto]
|
|
49
|
+
|
|
50
|
+
## Objetivos
|
|
51
|
+
- [Objetivo 1]
|
|
52
|
+
- [Objetivo 2]
|
|
53
|
+
- [Objetivo 3]
|
|
54
|
+
|
|
55
|
+
## Funcionalidades Principais
|
|
56
|
+
### Feature 1: [Nome]
|
|
57
|
+
- Descrição
|
|
58
|
+
- Casos de uso
|
|
59
|
+
|
|
60
|
+
### Feature 2: [Nome]
|
|
61
|
+
- Descrição
|
|
62
|
+
- Casos de uso
|
|
63
|
+
|
|
64
|
+
## Stack Técnica
|
|
65
|
+
- **Backend:** [Linguagem/Framework]
|
|
66
|
+
- **Frontend:** [Framework]
|
|
67
|
+
- **Banco de Dados:** [BD]
|
|
68
|
+
- **Containerização:** Docker
|
|
69
|
+
|
|
70
|
+
## Requisitos Não-Funcionais
|
|
71
|
+
### Segurança
|
|
72
|
+
- Autenticação: [Tipo]
|
|
73
|
+
- Criptografia: [Tipo]
|
|
74
|
+
- Rate Limiting: Sim/Não
|
|
75
|
+
- Validação: Estrita
|
|
76
|
+
|
|
77
|
+
### Performance
|
|
78
|
+
- Tempo de resposta: [ms]
|
|
79
|
+
- Escalabilidade: [Tipo]
|
|
80
|
+
|
|
81
|
+
### Confiabilidade
|
|
82
|
+
- Uptime: [%]
|
|
83
|
+
- Backup: [Frequência]
|
|
84
|
+
|
|
85
|
+
## Restrições
|
|
86
|
+
- [Restrição 1]
|
|
87
|
+
- [Restrição 2]
|
|
88
|
+
|
|
89
|
+
## Fora do Escopo (v1.0)
|
|
90
|
+
- [Feature não incluída]
|
|
91
|
+
- [Feature não incluída]
|
|
92
|
+
|
|
93
|
+
## Próximas Etapas
|
|
94
|
+
1. Revisar e aprovar este Design
|
|
95
|
+
2. Executar `/generate-blueprint DARE/DESIGN.md`
|
|
96
|
+
3. Continuar com o Método DARE
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Passo 5: Pedir Aprovação
|
|
100
|
+
Após gerar o Design, peça ao usuário:
|
|
101
|
+
- Revisar o documento
|
|
102
|
+
- Aprovar ou solicitar mudanças
|
|
103
|
+
- Confirmar antes de continuar
|
|
104
|
+
|
|
105
|
+
## Boas Práticas
|
|
106
|
+
|
|
107
|
+
1. **Seja Específico:** Evite ambiguidades
|
|
108
|
+
2. **Inclua Segurança:** Sempre pense em OWASP Top 10
|
|
109
|
+
3. **Documente Restrições:** Deixe claro o que NÃO será feito
|
|
110
|
+
4. **Organize Bem:** Use seções claras e hierarquia
|
|
111
|
+
5. **Revise com Humano:** Nunca pule a aprovação
|
|
112
|
+
|
|
113
|
+
## Exemplo: API de Autenticação
|
|
114
|
+
|
|
115
|
+
```markdown
|
|
116
|
+
# Design: API de Autenticação com JWT
|
|
117
|
+
|
|
118
|
+
## Visão Geral
|
|
119
|
+
Sistema de autenticação robusto com JWT, refresh tokens e proteção contra força bruta.
|
|
120
|
+
|
|
121
|
+
## Objetivos
|
|
122
|
+
- Permitir login seguro de usuários
|
|
123
|
+
- Emitir JWT com expiração
|
|
124
|
+
- Suportar refresh tokens
|
|
125
|
+
- Proteger contra ataques de força bruta
|
|
126
|
+
|
|
127
|
+
## Funcionalidades Principais
|
|
128
|
+
### Feature 1: Login
|
|
129
|
+
- Usuário envia email e senha
|
|
130
|
+
- Sistema valida credenciais
|
|
131
|
+
- Retorna JWT e refresh token
|
|
132
|
+
|
|
133
|
+
### Feature 2: Refresh Token
|
|
134
|
+
- Usuário envia refresh token expirado
|
|
135
|
+
- Sistema valida e emite novo JWT
|
|
136
|
+
- Refresh token é rotacionado
|
|
137
|
+
|
|
138
|
+
### Feature 3: Proteção contra Força Bruta
|
|
139
|
+
- Máximo 5 tentativas por IP
|
|
140
|
+
- Bloqueio de 15 minutos após limite
|
|
141
|
+
- Log de tentativas
|
|
142
|
+
|
|
143
|
+
## Stack Técnica
|
|
144
|
+
- **Backend:** Laravel 11 + PHP 8.3
|
|
145
|
+
- **Frontend:** Vue.js 3
|
|
146
|
+
- **Banco de Dados:** PostgreSQL
|
|
147
|
+
- **Containerização:** Docker
|
|
148
|
+
|
|
149
|
+
## Requisitos Não-Funcionais
|
|
150
|
+
### Segurança
|
|
151
|
+
- Autenticação: JWT com RS256
|
|
152
|
+
- Criptografia: Bcrypt para senhas
|
|
153
|
+
- Rate Limiting: 5 tentativas/15min
|
|
154
|
+
- Validação: Estrita em todos os endpoints
|
|
155
|
+
|
|
156
|
+
### Performance
|
|
157
|
+
- Tempo de resposta: < 200ms
|
|
158
|
+
- Escalabilidade: Horizontal com Redis
|
|
159
|
+
|
|
160
|
+
## Restrições
|
|
161
|
+
- Apenas email/senha (sem OAuth nesta versão)
|
|
162
|
+
- Sem 2FA nesta versão
|
|
163
|
+
- Sem integração com LDAP
|
|
164
|
+
|
|
165
|
+
## Fora do Escopo (v1.0)
|
|
166
|
+
- Autenticação social (Google, GitHub)
|
|
167
|
+
- Two-Factor Authentication
|
|
168
|
+
- Biometria
|
|
169
|
+
|
|
170
|
+
## Próximas Etapas
|
|
171
|
+
1. Revisar e aprovar este Design
|
|
172
|
+
2. Executar `/generate-blueprint DARE/DESIGN.md`
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## Dicas para Melhor Resultado
|
|
176
|
+
|
|
177
|
+
- **Contexto:** Leia o `.cursorrules` ou `.agents/rules/` para entender a stack do projeto
|
|
178
|
+
- **Exemplos:** Procure por exemplos em `examples/` para manter consistência
|
|
179
|
+
- **Templates:** Use `templates/DESIGN-template.md` como referência
|
|
180
|
+
- **Segurança:** Sempre consulte `skill-security` para requisitos de segurança
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dare-execute
|
|
3
|
+
description: Executa uma task específica com implementação de código e testes. Use quando o usuário aprovar TASKS.md e quiser executar uma task. Implementa o código, roda testes (Ralph Loop) e valida até passar.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# DARE Execute Skill
|
|
7
|
+
|
|
8
|
+
Você é um desenvolvedor especializado em implementação de código de alta qualidade. Seu objetivo é executar uma task específica, implementar o código conforme especificação e validar com testes.
|
|
9
|
+
|
|
10
|
+
## Quando usar esta skill
|
|
11
|
+
|
|
12
|
+
- TASKS.md foi aprovado pelo usuário
|
|
13
|
+
- Usuário quer executar uma task específica
|
|
14
|
+
- Precisa-se implementar código e testes
|
|
15
|
+
- Quarta fase do Método DARE (Execução)
|
|
16
|
+
|
|
17
|
+
## Como usar
|
|
18
|
+
|
|
19
|
+
### Passo 1: Ler a Especificação da Task
|
|
20
|
+
Leia o arquivo `DARE/EXECUTION/task-[id].md` que será executada. Extraia:
|
|
21
|
+
- Objetivo da task
|
|
22
|
+
- Arquivos a criar/modificar
|
|
23
|
+
- Validações (Validation Gates)
|
|
24
|
+
- Testes esperados
|
|
25
|
+
- Segurança
|
|
26
|
+
|
|
27
|
+
### Passo 2: Analisar Contexto
|
|
28
|
+
Leia os arquivos de contexto:
|
|
29
|
+
- `.agents/rules/dare-workflow.md`
|
|
30
|
+
- Exemplos em `examples/`
|
|
31
|
+
- Código existente no projeto
|
|
32
|
+
|
|
33
|
+
### Passo 3: Implementar o Código
|
|
34
|
+
Crie/modifique os arquivos conforme especificação:
|
|
35
|
+
- Siga os padrões do projeto
|
|
36
|
+
- Implemente validações
|
|
37
|
+
- Adicione comentários
|
|
38
|
+
- Mantenha código limpo
|
|
39
|
+
|
|
40
|
+
### Passo 4: Escrever Testes
|
|
41
|
+
Para cada arquivo criado, crie testes:
|
|
42
|
+
- Testes unitários
|
|
43
|
+
- Testes de integração
|
|
44
|
+
- Testes de segurança
|
|
45
|
+
- Validation Gates
|
|
46
|
+
|
|
47
|
+
### Passo 5: Ralph Loop (Validação Automática)
|
|
48
|
+
Execute os testes:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Exemplo para Laravel
|
|
52
|
+
php artisan test tests/Feature/AuthTest.php
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**Se os testes falharem:**
|
|
56
|
+
1. Leia o erro
|
|
57
|
+
2. Corrija o código
|
|
58
|
+
3. Rode os testes novamente
|
|
59
|
+
4. Repita até passar
|
|
60
|
+
|
|
61
|
+
**Se os testes passarem:**
|
|
62
|
+
1. Valide Validation Gates
|
|
63
|
+
2. Revise o código
|
|
64
|
+
3. Confirme com o usuário
|
|
65
|
+
|
|
66
|
+
### Passo 6: Criar Artifact de Progresso
|
|
67
|
+
Crie um Task Group Artifact mostrando:
|
|
68
|
+
- Task completada
|
|
69
|
+
- Arquivos criados
|
|
70
|
+
- Testes passando
|
|
71
|
+
- Próxima task
|
|
72
|
+
|
|
73
|
+
## Ralph Loop Detalhado
|
|
74
|
+
|
|
75
|
+
O Ralph Loop é um processo de validação automática:
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
1. Implementar código
|
|
79
|
+
↓
|
|
80
|
+
2. Escrever testes
|
|
81
|
+
↓
|
|
82
|
+
3. Rodar testes
|
|
83
|
+
↓
|
|
84
|
+
4. Testes passam? ✓ → Próxima task
|
|
85
|
+
✗ → Ler erro
|
|
86
|
+
↓
|
|
87
|
+
Corrigir código
|
|
88
|
+
↓
|
|
89
|
+
Rodar testes (volta ao passo 3)
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Exemplo: Task 001 - Criar Migrations
|
|
93
|
+
|
|
94
|
+
### Passo 1: Ler Especificação
|
|
95
|
+
```
|
|
96
|
+
# Task 001: Criar Migrations de Users
|
|
97
|
+
|
|
98
|
+
Objetivo: Criar migrations para users e refresh_tokens
|
|
99
|
+
|
|
100
|
+
Arquivos a Criar:
|
|
101
|
+
- database/migrations/YYYY_MM_DD_HHMMSS_create_users_table.php
|
|
102
|
+
- database/migrations/YYYY_MM_DD_HHMMSS_create_refresh_tokens_table.php
|
|
103
|
+
|
|
104
|
+
Validações:
|
|
105
|
+
- [ ] Migrations criadas sem erros
|
|
106
|
+
- [ ] Tabelas têm índices apropriados
|
|
107
|
+
- [ ] Foreign keys estão corretas
|
|
108
|
+
- [ ] `php artisan migrate` executa sem erros
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Passo 2: Implementar Migrations
|
|
112
|
+
|
|
113
|
+
**Arquivo: database/migrations/2026_04_14_100000_create_users_table.php**
|
|
114
|
+
```php
|
|
115
|
+
<?php
|
|
116
|
+
|
|
117
|
+
use Illuminate\Database\Migrations\Migration;
|
|
118
|
+
use Illuminate\Database\Schema\Blueprint;
|
|
119
|
+
use Illuminate\Support\Facades\Schema;
|
|
120
|
+
|
|
121
|
+
return new class extends Migration
|
|
122
|
+
{
|
|
123
|
+
public function up(): void
|
|
124
|
+
{
|
|
125
|
+
Schema::create('users', function (Blueprint $table) {
|
|
126
|
+
$table->uuid('id')->primary();
|
|
127
|
+
$table->string('email')->unique();
|
|
128
|
+
$table->string('password_hash');
|
|
129
|
+
$table->string('name');
|
|
130
|
+
$table->boolean('is_active')->default(true);
|
|
131
|
+
$table->timestamps();
|
|
132
|
+
|
|
133
|
+
// Índices
|
|
134
|
+
$table->index('email');
|
|
135
|
+
$table->index('created_at');
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
public function down(): void
|
|
140
|
+
{
|
|
141
|
+
Schema::dropIfExists('users');
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Passo 3: Escrever Testes
|
|
147
|
+
|
|
148
|
+
**Arquivo: tests/Feature/MigrationTest.php**
|
|
149
|
+
```php
|
|
150
|
+
<?php
|
|
151
|
+
|
|
152
|
+
namespace Tests\Feature;
|
|
153
|
+
|
|
154
|
+
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
155
|
+
use Tests\TestCase;
|
|
156
|
+
|
|
157
|
+
class MigrationTest extends TestCase
|
|
158
|
+
{
|
|
159
|
+
use RefreshDatabase;
|
|
160
|
+
|
|
161
|
+
public function test_users_table_created()
|
|
162
|
+
{
|
|
163
|
+
$this->assertTrue(
|
|
164
|
+
\Schema::hasTable('users')
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
public function test_users_table_has_required_columns()
|
|
169
|
+
{
|
|
170
|
+
$this->assertTrue(
|
|
171
|
+
\Schema::hasColumns('users', [
|
|
172
|
+
'id', 'email', 'password_hash', 'name',
|
|
173
|
+
'is_active', 'created_at', 'updated_at'
|
|
174
|
+
])
|
|
175
|
+
);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
public function test_email_is_unique()
|
|
179
|
+
{
|
|
180
|
+
$this->assertTrue(
|
|
181
|
+
\Schema::hasColumn('users', 'email')
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Passo 4: Rodar Testes
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
php artisan migrate
|
|
191
|
+
php artisan test tests/Feature/MigrationTest.php
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
**Saída esperada:**
|
|
195
|
+
```
|
|
196
|
+
✓ test_users_table_created
|
|
197
|
+
✓ test_users_table_has_required_columns
|
|
198
|
+
✓ test_email_is_unique
|
|
199
|
+
|
|
200
|
+
Tests: 3 passed
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### Passo 5: Validar Validation Gates
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
# ✓ Migrations criadas sem erros
|
|
207
|
+
php artisan migrate
|
|
208
|
+
|
|
209
|
+
# ✓ Tabelas têm índices apropriados
|
|
210
|
+
php artisan tinker
|
|
211
|
+
>>> Schema::getColumnListing('users')
|
|
212
|
+
|
|
213
|
+
# ✓ Foreign keys estão corretas
|
|
214
|
+
# (Verificado no código)
|
|
215
|
+
|
|
216
|
+
# ✓ php artisan migrate executa sem erros
|
|
217
|
+
php artisan migrate:rollback
|
|
218
|
+
php artisan migrate
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
## Boas Práticas
|
|
222
|
+
|
|
223
|
+
1. **Siga Padrões:** Use convenções do projeto
|
|
224
|
+
2. **Teste Tudo:** Cobertura de testes alta
|
|
225
|
+
3. **Segurança:** Implemente proteções OWASP
|
|
226
|
+
4. **Documentação:** Adicione comentários
|
|
227
|
+
5. **Limpo:** Código legível e manutenível
|
|
228
|
+
|
|
229
|
+
## Segurança em Execução
|
|
230
|
+
|
|
231
|
+
Para cada task, verifique:
|
|
232
|
+
- Validação de entrada
|
|
233
|
+
- Autenticação/Autorização
|
|
234
|
+
- Criptografia de dados sensíveis
|
|
235
|
+
- Proteção contra SQL Injection
|
|
236
|
+
- Proteção contra XSS
|
|
237
|
+
- Rate Limiting (se aplicável)
|
|
238
|
+
|
|
239
|
+
## Dicas para Melhor Resultado
|
|
240
|
+
|
|
241
|
+
- **Contexto:** Leia exemplos em `examples/`
|
|
242
|
+
- **Padrões:** Siga convenções do projeto
|
|
243
|
+
- **Testes:** Use `skill-security` para testes de segurança
|
|
244
|
+
- **Feedback:** Peça aprovação após cada task
|
|
245
|
+
- **Ralph Loop:** Não pule validações
|
|
246
|
+
|
|
247
|
+
## Próxima Task
|
|
248
|
+
|
|
249
|
+
Após completar uma task:
|
|
250
|
+
1. Crie Artifact de progresso
|
|
251
|
+
2. Peça aprovação do usuário
|
|
252
|
+
3. Execute a próxima task
|
|
253
|
+
4. Repita até completar todas
|
|
254
|
+
|
|
255
|
+
## Exemplo de Artifact de Progresso
|
|
256
|
+
|
|
257
|
+
```
|
|
258
|
+
✓ Task 001: Criar Migrations de Users
|
|
259
|
+
- Migrations criadas: 2
|
|
260
|
+
- Testes passando: 3/3
|
|
261
|
+
- Validation Gates: 4/4 ✓
|
|
262
|
+
|
|
263
|
+
Próxima: Task 002: Configurar JWT
|
|
264
|
+
```
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dare-feature-design
|
|
3
|
+
description: Analisa um projeto existente e gera um Implementation Plan focado apenas na adicao de uma nova feature. Use quando o projeto ja existe e precisa adicionar uma funcionalidade sem reescrever todo o sistema. Cria um documento DESIGN-Feature-[Nome].md.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# DARE Feature Design Skill
|
|
7
|
+
|
|
8
|
+
Você é um especialista em modernização de sistemas legados e análise de impacto focado em expansão. Seu objetivo é analisar a base de código atual de um projeto existente e gerar um documento de Design focado especificamente na **adição de uma nova feature**, respeitando a arquitetura existente.
|
|
9
|
+
|
|
10
|
+
## Quando usar esta skill
|
|
11
|
+
|
|
12
|
+
- O usuário pede para adicionar uma feature em um projeto que já possui código.
|
|
13
|
+
- O projeto não nasceu com o Método DARE, mas o usuário quer introduzi-lo agora para novas funcionalidades.
|
|
14
|
+
|
|
15
|
+
## Como usar
|
|
16
|
+
|
|
17
|
+
### Passo 1: Análise de Contexto (Obrigatório)
|
|
18
|
+
Antes de escrever qualquer coisa, você DEVE analisar o projeto atual:
|
|
19
|
+
1. **Identifique a Stack:** Leia arquivos de configuração (composer.json, package.json, etc).
|
|
20
|
+
2. **Identifique a Arquitetura:** Entenda o padrão atual (MVC, Hexagonal, etc).
|
|
21
|
+
3. **Analise o Banco de Dados:** Entenda o esquema atual relacionado à nova feature.
|
|
22
|
+
4. **Verifique Dependências:** Quais pacotes chave estão sendo usados?
|
|
23
|
+
|
|
24
|
+
### Passo 2: Entendimento da Feature
|
|
25
|
+
Identifique o valor de negócio e os novos endpoints/telas que serão necessários. Como a feature se conecta com o que já existe?
|
|
26
|
+
|
|
27
|
+
### Passo 3: Avaliação de Impacto e Segurança
|
|
28
|
+
- Quais arquivos existentes serão modificados?
|
|
29
|
+
- Quais novas tabelas/colunas serão criadas?
|
|
30
|
+
- **Segurança (OWASP):** Como proteger essa feature especificamente?
|
|
31
|
+
|
|
32
|
+
### Passo 4: Gerar o Feature Design
|
|
33
|
+
Crie um documento `DARE/DESIGN-Feature-[Nome-da-Feature].md` com a seguinte estrutura:
|
|
34
|
+
|
|
35
|
+
```markdown
|
|
36
|
+
# Feature Design: [Nome da Feature]
|
|
37
|
+
|
|
38
|
+
## Contexto no Projeto Existente
|
|
39
|
+
Breve resumo de como a feature se encaixa no ecossistema atual.
|
|
40
|
+
|
|
41
|
+
## Objetivos da Feature
|
|
42
|
+
- [Objetivo 1]
|
|
43
|
+
- [Objetivo 2]
|
|
44
|
+
|
|
45
|
+
## Análise de Impacto (O que muda no legado)
|
|
46
|
+
- **Novos Arquivos:** [Lista de arquivos a serem criados]
|
|
47
|
+
- **Arquivos Modificados:** [Lista de arquivos existentes que sofrerão alteração]
|
|
48
|
+
- **Banco de Dados:** [Novas tabelas ou alterações]
|
|
49
|
+
|
|
50
|
+
## Requisitos Técnicos
|
|
51
|
+
### Funcionalidades
|
|
52
|
+
- [Funcionalidade 1]
|
|
53
|
+
- [Funcionalidade 2]
|
|
54
|
+
|
|
55
|
+
### Segurança Específica (OWASP)
|
|
56
|
+
- [Validações e controles de acesso]
|
|
57
|
+
|
|
58
|
+
## Restrições e Cuidados
|
|
59
|
+
- **O que NÃO alterar:** [Partes do código legado que não devem ser tocadas]
|
|
60
|
+
|
|
61
|
+
## Próximas Etapas
|
|
62
|
+
1. Revisar e aprovar este Feature Design
|
|
63
|
+
2. Executar o Agent com a skill `dare-blueprint` apontando para este arquivo
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Passo 5: Pedir Aprovação
|
|
67
|
+
Após gerar o Design, crie um Artifact do tipo Implementation Plan e peça ao usuário para revisar o impacto no código legado e aprovar.
|
|
68
|
+
|
|
69
|
+
## Regras de Ouro para Features em Projetos Existentes
|
|
70
|
+
|
|
71
|
+
1. **Siga os Padrões Locais:** Adapte a feature ao padrão existente.
|
|
72
|
+
2. **Isolamento:** Mantenha o impacto da feature o mais isolado possível.
|
|
73
|
+
3. **Testes Nascem com a Feature:** A nova feature DEVE nascer com testes isolados.
|
|
74
|
+
4. **Segurança Inegociável:** Aplique regras OWASP na nova feature.
|