@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.
Files changed (70) hide show
  1. package/dist/utils/project-generator.d.ts.map +1 -1
  2. package/dist/utils/project-generator.js +143 -72
  3. package/dist/utils/project-generator.js.map +1 -1
  4. package/dist/utils/templates.d.ts +1 -1
  5. package/dist/utils/templates.d.ts.map +1 -1
  6. package/dist/utils/templates.js +92 -98
  7. package/dist/utils/templates.js.map +1 -1
  8. package/package.json +8 -6
  9. package/templates/backend/node-nestjs/.env.example +9 -0
  10. package/templates/backend/node-nestjs/nest-cli.json +8 -0
  11. package/templates/backend/node-nestjs/package.json +50 -0
  12. package/templates/backend/node-nestjs/src/app.controller.ts +12 -0
  13. package/templates/backend/node-nestjs/src/app.module.ts +15 -0
  14. package/templates/backend/node-nestjs/src/app.service.ts +8 -0
  15. package/templates/backend/node-nestjs/src/main.ts +24 -0
  16. package/templates/backend/node-nestjs/tsconfig.json +21 -0
  17. package/templates/backend/php-laravel/.env.example +22 -0
  18. package/templates/backend/php-laravel/app/Http/Controllers/HealthController.php +15 -0
  19. package/templates/backend/php-laravel/composer.json +40 -0
  20. package/templates/backend/python-fastapi/.env.example +4 -0
  21. package/templates/backend/python-fastapi/app/api/router.py +8 -0
  22. package/templates/backend/python-fastapi/app/core/config.py +20 -0
  23. package/templates/backend/python-fastapi/main.py +35 -0
  24. package/templates/backend/python-fastapi/requirements.txt +13 -0
  25. package/templates/backend/rust-axum/.env.example +3 -0
  26. package/templates/backend/rust-axum/Cargo.toml +23 -0
  27. package/templates/backend/rust-axum/src/errors.rs +30 -0
  28. package/templates/backend/rust-axum/src/main.rs +32 -0
  29. package/templates/backend/rust-axum/src/routes.rs +6 -0
  30. package/templates/frontend/react/index.html +12 -0
  31. package/templates/frontend/react/package.json +35 -0
  32. package/templates/frontend/react/src/App.tsx +25 -0
  33. package/templates/frontend/react/src/main.tsx +9 -0
  34. package/templates/frontend/vue/package.json +32 -0
  35. package/templates/frontend/vue/src/App.vue +7 -0
  36. package/templates/frontend/vue/src/main.ts +10 -0
  37. package/templates/frontend/vue/src/router/index.ts +14 -0
  38. package/templates/frontend/vue/src/views/HomeView.vue +6 -0
  39. package/templates/ide/antigravity/.agents/skills/dare-blueprint/SKILL.md +224 -0
  40. package/templates/ide/antigravity/.agents/skills/dare-bugfix-design/SKILL.md +76 -0
  41. package/templates/ide/antigravity/.agents/skills/dare-design/SKILL.md +180 -0
  42. package/templates/ide/antigravity/.agents/skills/dare-execute/SKILL.md +264 -0
  43. package/templates/ide/antigravity/.agents/skills/dare-feature-design/SKILL.md +74 -0
  44. package/templates/ide/antigravity/.agents/skills/dare-tasks/SKILL.md +229 -0
  45. package/templates/ide/antigravity/templates/BLUEPRINT-template.md +53 -0
  46. package/templates/ide/antigravity/templates/DESIGN-template.md +34 -0
  47. package/templates/ide/antigravity/templates/TASK-SPEC-template.md +43 -0
  48. package/templates/ide/antigravity/templates/TASKS-template.md +26 -0
  49. package/templates/ide/antigravity/templates/TELEMETRY-template.md +125 -0
  50. package/templates/ide/cursor/.cursor/commands/execute-task.md +19 -0
  51. package/templates/ide/cursor/.cursor/commands/generate-blueprint.md +21 -0
  52. package/templates/ide/cursor/.cursor/commands/generate-bugfix-design.md +64 -0
  53. package/templates/ide/cursor/.cursor/commands/generate-design.md +18 -0
  54. package/templates/ide/cursor/.cursor/commands/generate-docker-compose.md +18 -0
  55. package/templates/ide/cursor/.cursor/commands/generate-dockerfile.md +17 -0
  56. package/templates/ide/cursor/.cursor/commands/generate-feature-design.md +64 -0
  57. package/templates/ide/cursor/.cursor/commands/generate-tasks.md +20 -0
  58. package/templates/ide/cursor/.cursor/commands/telemetry-report.md +42 -0
  59. package/templates/ide/cursor/.cursor/rules/skill-bugfix-design.mdc +51 -0
  60. package/templates/ide/cursor/.cursor/rules/skill-docker.mdc +33 -0
  61. package/templates/ide/cursor/.cursor/rules/skill-feature-design.mdc +43 -0
  62. package/templates/ide/cursor/.cursor/rules/skill-laravel-api.mdc +44 -0
  63. package/templates/ide/cursor/.cursor/rules/skill-security.mdc +57 -0
  64. package/templates/ide/cursor/.cursor/rules/skill-telemetry.mdc +156 -0
  65. package/templates/ide/cursor/templates/BLUEPRINT-template.md +53 -0
  66. package/templates/ide/cursor/templates/DESIGN-template.md +34 -0
  67. package/templates/ide/cursor/templates/TASK-SPEC-template.md +43 -0
  68. package/templates/ide/cursor/templates/TASKS-template.md +26 -0
  69. package/templates/ide/cursor/templates/TELEMETRY-template.md +125 -0
  70. package/templates/shared/docker-compose.yml +41 -0
@@ -0,0 +1,64 @@
1
+ ---
2
+ description: Analisa o projeto existente e gera um Design DARE focado na adicao de uma nova feature. Use quando precisar adicionar uma funcionalidade nova sem reescrever o Design de todo o sistema.
3
+ globs: *
4
+ ---
5
+
6
+ # Generate Feature Design
7
+
8
+ ## Objetivo
9
+ Analisar a base de código atual e gerar um documento de Design (`DARE/DESIGN-Feature-[Nome].md`) focado especificamente na **adição de uma nova feature**, respeitando a arquitetura existente do projeto.
10
+
11
+ ## Contexto
12
+ Este comando é para **projetos legados** onde você quer adicionar uma funcionalidade nova. O foco aqui é **expansão**: novos endpoints, novas tabelas, novas integrações.
13
+
14
+ ## Passos que a IA deve seguir:
15
+
16
+ 1. **Análise de Contexto:**
17
+ - Identificar a stack e arquitetura (MVC, Hexagonal, etc.)
18
+ - Identificar padrões de projeto existentes para seguir o mesmo estilo
19
+ - Identificar banco de dados e dependências chave
20
+
21
+ 2. **Entendimento da Feature:**
22
+ - Qual é o objetivo da nova funcionalidade?
23
+ - Como ela se conecta com o que já existe?
24
+
25
+ 3. **Geração do Documento:**
26
+ - Criar o arquivo `DARE/DESIGN-Feature-[Nome-da-Feature].md`
27
+
28
+ ## Estrutura do Documento Gerado:
29
+
30
+ ```markdown
31
+ # Feature Design: [Nome da Feature]
32
+
33
+ ## Contexto no Projeto
34
+ Como esta feature se encaixa no ecossistema atual.
35
+
36
+ ## Objetivos da Feature
37
+ - [Objetivo 1]
38
+ - [Objetivo 2]
39
+
40
+ ## Análise de Impacto (O que muda)
41
+ - **Novos Arquivos:** [Controllers, Models, etc. a serem criados]
42
+ - **Arquivos Modificados:** [Arquivos existentes que sofrerão alteração]
43
+ - **Banco de Dados:** [Novas tabelas ou colunas]
44
+
45
+ ## Requisitos Técnicos
46
+ ### Funcionalidades
47
+ - [Funcionalidade 1]
48
+ - [Funcionalidade 2]
49
+
50
+ ### Segurança (OWASP)
51
+ - [Validações e controles de acesso específicos para esta feature]
52
+
53
+ ## Restrições
54
+ - O que NÃO deve ser alterado no sistema legado.
55
+
56
+ ## Próximas Etapas
57
+ 1. Revisar e aprovar este Design
58
+ 2. Executar `/generate-blueprint DARE/DESIGN-Feature-[Nome].md`
59
+ ```
60
+
61
+ ## Regras de Ouro:
62
+ - **Siga o Padrão Local:** Se o projeto usa um padrão específico, a feature deve segui-lo.
63
+ - **Isolamento:** Tente isolar o código novo do legado.
64
+ - **Segurança:** Aplique regras OWASP na nova feature.
@@ -0,0 +1,20 @@
1
+ # Comando: /generate-tasks
2
+
3
+ ## Descrição
4
+ Este comando avança o Método DARE lendo o Blueprint aprovado e gerando as tarefas atômicas isoladas para execução.
5
+
6
+ ## Instruções para o Cursor Composer
7
+
8
+ 1. **Leia o Documento Blueprint:** Acesse e leia o arquivo `$ARGUMENTS` (geralmente `DARE/BLUEPRINT.md`) que contém a arquitetura completa.
9
+ 2. **Leia os Templates:** Utilize a estrutura definida em `templates/TASKS-template.md` e `templates/TASK-SPEC-template.md`.
10
+ 3. **Analise o Contexto Global:** Leia o arquivo `.cursorrules` (ou equivalente) para garantir que as instruções de código sigam as convenções do projeto.
11
+ 4. **Desdobre as Fases em Tarefas Atômicas:**
12
+ - Para cada Fase definida no Blueprint, crie tarefas granulares e executáveis.
13
+ - Uma tarefa deve ser pequena o suficiente para ser concluída em um único prompt do Composer.
14
+ - **Tarefas de Segurança:** Garanta que requisitos de segurança (ex: Middlewares, Validação de FormRequests, Criptografia) tenham tarefas específicas ou estejam explicitamente incluídos nas tarefas relevantes.
15
+ - Exemplo: "Fase 2: Autenticação" vira "Task 003: Migration de Users", "Task 004: AuthController (com Rate Limit e Bcrypt)", etc.
16
+ 5. **Gere os Arquivos de Tarefas:**
17
+ - **TASKS.md:** Crie o arquivo `DARE/TASKS.md` com a visão geral de todas as tarefas e suas dependências.
18
+ - **Especificações Isoladas:** Para CADA tarefa criada, crie um arquivo em `DARE/EXECUTION/task-[id].md` seguindo o template `TASK-SPEC-template.md`.
19
+ - Preencha as instruções de implementação detalhadas para cada arquivo de task isolada, incluindo os Validation Gates apropriados para a stack (ex: PHPUnit para Laravel, Pytest para Python).
20
+ 6. **Mensagem Final:** Informe ao usuário: "Documento TASKS.md e especificações isoladas geradas em DARE/EXECUTION/ com sucesso. Revise as tarefas. Para iniciar a implementação, execute `/execute-task task-001`."
@@ -0,0 +1,42 @@
1
+ # Comando: /telemetry-report
2
+
3
+ ## Descrição
4
+ Este comando gera um relatório detalhado de consumo de tokens e modelos utilizados em todas as etapas do projeto DARE, incluindo análise de custos e recomendações de otimização.
5
+
6
+ ## Instruções para o Cursor Composer
7
+
8
+ 1. **Verifique o Arquivo de Telemetria:** Procure pelo arquivo `DARE/TELEMETRY.md`. Se não existir, crie um novo.
9
+
10
+ 2. **Leia a Skill de Telemetria:** Consulte `.cursor/rules/skill-telemetry.mdc` para entender a estrutura esperada.
11
+
12
+ 3. **Analise os Dados Disponíveis:**
13
+ - Se o arquivo `DARE/TELEMETRY.md` já existe, leia-o e procure por lacunas de dados.
14
+ - Se não existe, crie o arquivo com a estrutura base.
15
+
16
+ 4. **Gere o Relatório Completo:**
17
+ - **Resumo Executivo:** Total de tokens gastos, custo estimado, período de execução.
18
+ - **Detalhamento por Etapa:** Tabela mostrando Design, Blueprint, Tasks e Execute com tokens e custos.
19
+ - **Análise de Modelos:** Qual modelo foi mais utilizado e por quê.
20
+ - **Análise de Custos:** Gráfico/tabela mostrando a distribuição de custos por etapa.
21
+ - **Recomendações:** Sugestões de otimização (ex: usar modelos mais rápidos para tarefas simples).
22
+
23
+ 5. **Salve o Relatório:**
24
+ - Atualize o arquivo `DARE/TELEMETRY.md` com o relatório completo.
25
+ - Se houver dados faltantes, indique com `[PENDENTE]` e peça ao usuário para preencher.
26
+
27
+ 6. **Mensagem Final:** Informe ao usuário:
28
+ ```
29
+ Relatório de Telemetria gerado com sucesso!
30
+
31
+ 📊 Resumo:
32
+ - Tokens Totais: [X]
33
+ - Custo Estimado: $[Y]
34
+ - Modelos Utilizados: [Lista]
35
+ - Etapa Mais Cara: [Etapa]
36
+
37
+ 💡 Recomendações:
38
+ - [Recomendação 1]
39
+ - [Recomendação 2]
40
+
41
+ 📁 Relatório salvo em: DARE/TELEMETRY.md
42
+ ```
@@ -0,0 +1,51 @@
1
+ ---
2
+ description: Diagnostica bugs em projetos existentes e planeja correcoes cirurgicas usando o Metodo DARE. Ensina a IA a encontrar a causa raiz, avaliar riscos de regressao e planejar a correcao minima necessaria.
3
+ globs: *
4
+ ---
5
+
6
+ # Skill: Bugfix Design para Projetos Existentes
7
+
8
+ ## Objetivo
9
+ Esta skill ensina você (a IA) a diagnosticar um bug relatado em um projeto existente, encontrar a **causa raiz** e planejar uma correção cirúrgica que resolva o problema sem introduzir novos erros.
10
+
11
+ ## Quando Usar
12
+ - Quando o usuário relata um bug ou comportamento inesperado no sistema.
13
+ - Quando o comando `/generate-bugfix-design` for invocado.
14
+
15
+ ## Como Diagnosticar o Bug
16
+
17
+ O diagnóstico é a etapa mais crítica. Uma correção sem diagnóstico adequado apenas esconde o sintoma.
18
+
19
+ **Entenda o Relato Completo:** Antes de analisar o código, entenda claramente qual é o comportamento atual vs o esperado. Se o usuário não forneceu um stack trace ou log, pergunte por ele.
20
+
21
+ **Localize a Área Afetada:** Identifique os controllers, services, queries ou componentes que estão envolvidos no fluxo que apresenta o erro.
22
+
23
+ **Encontre a Causa Raiz:** Não trate o sintoma. Descubra *por que* o erro acontece. As causas mais comuns são:
24
+
25
+ | Tipo de Causa | Exemplos |
26
+ |---------------|---------|
27
+ | **Lógica de Negócio** | Condição incorreta, cálculo errado |
28
+ | **Banco de Dados** | Query N+1, deadlock, dados inconsistentes |
29
+ | **Validação** | Input não validado, tipo incorreto |
30
+ | **Concorrência** | Race condition, falta de lock |
31
+ | **Segurança** | Injeção de SQL, XSS, IDOR |
32
+
33
+ ## Como Gerar o Design do Bugfix
34
+
35
+ O documento `DARE/DESIGN-Bugfix-[Nome].md` deve ser **cirúrgico e preciso**. Ele descreve o problema, a causa raiz e o plano de correção mínimo necessário.
36
+
37
+ | Seção | Conteúdo |
38
+ |-------|----------|
39
+ | **Descrição** | Comportamento atual vs esperado |
40
+ | **Causa Raiz** | Explicação técnica do porquê ocorre |
41
+ | **Arquivos a Modificar** | Lista exata de arquivos que serão alterados |
42
+ | **Riscos** | O que mais pode quebrar com a correção |
43
+ | **Plano de Ação** | Passos cirúrgicos da correção |
44
+ | **Testes** | Validation Gates + Testes de Regressão |
45
+
46
+ ## Regras de Ouro
47
+
48
+ 1. **Seja Cirúrgico:** A correção deve ser o menor código possível para resolver o problema sem efeitos colaterais.
49
+ 2. **Causa Raiz:** Nunca trate apenas o sintoma. Se a causa raiz não for corrigida, o bug voltará.
50
+ 3. **Evite Regressão:** Sempre mapeie os riscos da correção e planeje testes de regressão para eles.
51
+ 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 código.
@@ -0,0 +1,33 @@
1
+ ---
2
+ description: Padrões Globais para Containerização com Docker e Docker Compose
3
+ globs: Dockerfile*, docker-compose*.yml, .dockerignore
4
+ ---
5
+ # Regras Globais do Projeto (Docker e Containerização)
6
+
7
+ Você é um engenheiro DevOps Especialista focado em segurança, performance e melhores práticas para criação de containers Docker e orquestração com Docker Compose.
8
+
9
+ ## Padrões para Dockerfile
10
+ - **Multi-stage Builds:** Sempre utilize multi-stage builds para separar o ambiente de build (onde compiladores e dependências de dev residem) do ambiente de runtime (produção). Isso reduz drasticamente o tamanho final da imagem.
11
+ - **Imagens Base:** Utilize imagens base oficiais e preferencialmente as versões Alpine ou distroless para reduzir a superfície de ataque e o tamanho. Especifique tags exatas (ex: `php:8.3-fpm-alpine` em vez de `php:latest`).
12
+ - **Usuário Não-Root:** Nunca execute a aplicação como usuário `root` no container final. Crie um usuário dedicado (ex: `appuser` ou use o `www-data` no caso do PHP) e ajuste as permissões de pastas.
13
+ - **Cache de Camadas:** Ordene os comandos no Dockerfile do menos mutável para o mais mutável. Copie arquivos de dependência (como `composer.json`, `package.json`, `requirements.txt`, `go.mod`) e instale dependências ANTES de copiar o código fonte da aplicação.
14
+ - **Limpeza:** Limpe os caches de gerenciadores de pacotes (`apt-get clean`, `apk cache clean`, `rm -rf /var/lib/apt/lists/*`) na mesma camada `RUN` em que foram instalados.
15
+ - **ENTRYPOINT vs CMD:** Use `ENTRYPOINT` para comandos fixos do container e `CMD` para argumentos padrão que podem ser sobrescritos.
16
+
17
+ ## Padrões para Docker Compose
18
+ - **Versão:** Utilize a especificação Compose atual (não use `version: '3'` pois está depreciado).
19
+ - **Serviços Isolados:** Separe a aplicação do banco de dados, cache, e webserver (ex: Nginx e PHP-FPM em containers separados).
20
+ - **Volumes Nomeados:** Use volumes nomeados para persistência de dados (banco de dados, uploads, logs).
21
+ - **Redes Customizadas:** Defina redes customizadas (`networks`) para isolar a comunicação entre os serviços.
22
+ - **Variáveis de Ambiente:** Utilize arquivos `.env` para passar variáveis de ambiente, não hardcode senhas ou chaves no `docker-compose.yml`.
23
+ - **Healthchecks:** Adicione `healthcheck` nos serviços de banco de dados e cache para garantir que a aplicação só inicie quando as dependências estiverem prontas (`depends_on` com `condition: service_healthy`).
24
+
25
+ ## Especificidades por Stack
26
+ - **Laravel/PHP:** Requer um container para PHP-FPM (com extensões necessárias instaladas via `install-php-extensions` ou `docker-php-ext-install`) e outro para o Webserver (Nginx/Apache). O diretório de trabalho padrão deve ser `/var/www/html`. Ajuste permissões para as pastas `storage` e `bootstrap/cache`.
27
+ - **Python (FastAPI/Flask):** Use `python:3.11-slim`. Não execute como root. Instale dependências sem cache (`pip install --no-cache-dir`). Exponha a porta correta (geralmente 8000 ou 5000).
28
+ - **Go:** O estágio de build deve usar `golang:1.22-alpine` para compilar um binário estático. O estágio final pode ser `scratch` (imagem vazia) ou `alpine` contendo apenas o binário compilado.
29
+ - **Vue.js/Frontend:** O estágio de build usa Node.js para gerar os arquivos estáticos (`npm run build`). O estágio final usa Nginx (`nginx:alpine`) para servir a pasta `dist`.
30
+
31
+ ## Segurança
32
+ - Não copie arquivos desnecessários. Crie sempre um `.dockerignore` bem configurado (ignorando `.git`, `node_modules`, `vendor`, `.env`).
33
+ - Não exponha portas de banco de dados (ex: 3306, 5432) para o host (máquina local) em ambiente de produção, apenas na rede interna do Docker.
@@ -0,0 +1,43 @@
1
+ ---
2
+ description: Analisa projetos existentes para planejar a adicao de novas features usando o Metodo DARE. Ensina a IA a respeitar a arquitetura legada, analisar impacto e focar apenas no escopo da nova funcionalidade.
3
+ globs: *
4
+ ---
5
+
6
+ # Skill: Feature Design para Projetos Existentes
7
+
8
+ ## Objetivo
9
+ Esta skill ensina você (a IA) a analisar o contexto de um projeto que já existe e planejar a inserção de uma **nova feature** de forma segura, isolada e respeitando os padrões já estabelecidos.
10
+
11
+ ## Quando Usar
12
+ - Quando o usuário pede para adicionar uma funcionalidade nova em um projeto existente.
13
+ - Quando o comando `/generate-feature-design` for invocado.
14
+
15
+ ## Como Analisar o Projeto Existente
16
+
17
+ O primeiro passo é sempre entender o que já existe antes de propor qualquer coisa nova.
18
+
19
+ **Identifique a Stack e Arquitetura:** Leia os arquivos de configuração do projeto (`composer.json`, `package.json`, etc.) para entender o framework, versão e padrão arquitetural (MVC, Hexagonal, CQRS). Se o projeto usa um padrão específico, a nova feature **deve seguir esse padrão**.
20
+
21
+ **Analise o Banco de Dados:** Leia as migrations ou esquemas existentes para entender as tabelas relacionadas à feature solicitada. Identifique se serão necessárias novas tabelas ou apenas novas colunas.
22
+
23
+ **Verifique Dependências Chave:** Entenda quais bibliotecas de terceiros já estão em uso (ex: Sanctum para auth, Spatie para permissões) e que podem ser aproveitadas pela nova feature.
24
+
25
+ ## Como Gerar o Design da Feature
26
+
27
+ O documento `DARE/DESIGN-Feature-[Nome].md` deve ser **focado e conciso**. Ele não descreve o sistema inteiro, apenas o impacto da nova feature.
28
+
29
+ | Seção | Conteúdo |
30
+ |-------|----------|
31
+ | **Contexto** | Como a feature se conecta ao que já existe |
32
+ | **Novos Arquivos** | Controllers, Models, Services a serem criados |
33
+ | **Arquivos Modificados** | O que muda no código legado |
34
+ | **Banco de Dados** | Novas tabelas ou colunas |
35
+ | **Segurança** | Proteções OWASP específicas para a feature |
36
+ | **Restrições** | O que não pode ser tocado |
37
+
38
+ ## Regras de Ouro
39
+
40
+ 1. **Siga o Padrão Local:** Se o projeto usa um padrão antigo ou específico, adapte a feature a ele, a menos que o usuário solicite refatoração explícita.
41
+ 2. **Isolamento:** Mantenha o impacto da feature o mais isolado possível para minimizar o risco de quebrar o sistema legado.
42
+ 3. **Testes Nascem com a Feature:** Se o projeto não tem testes, a nova feature DEVE nascer com testes isolados (Validation Gates do Ralph Loop).
43
+ 4. **Segurança Inegociável:** Mesmo que o código legado seja inseguro, a nova feature DEVE aplicar regras OWASP.
@@ -0,0 +1,44 @@
1
+ ---
2
+ description: Padrões Globais para Projetos Laravel API (Context Engineering)
3
+ globs: *.php, *.json, *.yml, *.yaml
4
+ ---
5
+ # Regras Globais do Projeto (Laravel API)
6
+
7
+ Você é um desenvolvedor Sênior especializado em PHP 8.x e Laravel 11.x focado em APIs RESTful.
8
+ Seu objetivo é escrever código limpo, legível, performático e fortemente tipado.
9
+
10
+ ## Stack Tecnológico Principal
11
+ - **Linguagem:** PHP 8.3 (Strict Types habilitado em todos os arquivos `declare(strict_types=1);`)
12
+ - **Framework:** Laravel 11.x (Modo API)
13
+ - **Banco de Dados:** PostgreSQL ou MySQL
14
+ - **Testes:** PHPUnit / Pest
15
+ - **Análise Estática:** PHPStan / Larastan
16
+ - **Formatação:** Laravel Pint
17
+
18
+ ## Convenções de Nomenclatura e Padrões de Arquitetura
19
+ - **Controllers:** Devem focar apenas em receber a request e retornar a response. Nomenclatura: `UserApiController`, `ProductController`.
20
+ - **FormRequests:** Toda validação de entrada deve ser feita em FormRequests (ex: `StoreUserRequest`, `UpdateProductRequest`). NUNCA valide diretamente no Controller.
21
+ - **Services:** Lógica de negócios complexa deve ser extraída para classes Service (ex: `UserRegistrationService`).
22
+ - **Resources/Transformers:** Sempre use `JsonResource` para formatar a saída da API (ex: `UserResource`, `ProductCollection`). Não retorne Models diretamente.
23
+ - **Models:** Defina `$fillable` ou `$guarded`, os `casts` corretos e os relacionamentos de forma explícita.
24
+ - **Traits:** Use traits para comportamentos reutilizáveis (ex: `ApiResponseTrait` para padronizar respostas JSON).
25
+
26
+ ## Padrões de Código e Tratamento de Erros
27
+ - Use tipagem estrita (Type Hinting) em parâmetros e retornos de todas as funções/métodos.
28
+ - Evite `null` quando possível; prefira exceções bem definidas ou retornos tipados.
29
+ - **Tratamento de Erros:**
30
+ - Use exceções customizadas para erros de negócio (ex: `InsufficientBalanceException`).
31
+ - Capture exceções no `bootstrap/app.php` (Laravel 11) ou use um Handler global para retornar respostas JSON consistentes (`{ "error": "Message", "code": 400 }`).
32
+ - **Transações de Banco:** Sempre use `DB::transaction()` ao inserir/atualizar dados em múltiplas tabelas.
33
+
34
+ ## Documentação
35
+ - Adicione PHPDoc blocks apenas quando a tipagem nativa do PHP não for suficiente (ex: arrays de objetos `/** @var User[] $users */`).
36
+ - Mantenha comentários claros explicando o *porquê* de uma lógica complexa, não o *o quê*.
37
+
38
+ ## Testes
39
+ - Escreva testes de Feature para todos os endpoints da API verificando:
40
+ - Respostas de sucesso (200/201)
41
+ - Erros de validação (422)
42
+ - Falhas de autenticação/autorização (401/403)
43
+ - Not Found (404)
44
+ - Use Factories e Seeders para popular o banco de dados nos testes.
@@ -0,0 +1,57 @@
1
+ ---
2
+ description: Diretrizes de Segurança baseadas no OWASP Top 10 para todas as fases do DARE
3
+ globs: *.md, *.php, *.py, *.go, *.vue, *.js, *.ts
4
+ ---
5
+ # Diretrizes de Segurança (OWASP Top 10)
6
+
7
+ Você é um Especialista em Segurança da Informação (AppSec). Seu objetivo é garantir que todas as fases do projeto (Design, Blueprint, Tasks e Execução de Código) sigam rigorosamente as práticas do OWASP Top 10.
8
+
9
+ ## Aplicação nas Fases do DARE
10
+
11
+ ### Fase 1: Design (`/generate-design`)
12
+ - **Requisitos Não-Funcionais:** Sempre inclua requisitos de segurança explícitos (ex: Rate Limiting, HTTPS obrigatório, senhas fortes).
13
+ - **Restrições:** Identifique possíveis vetores de ataque na ideia inicial e adicione restrições para mitigá-los.
14
+
15
+ ### Fase 2: Architect (`/generate-blueprint`)
16
+ - **Autenticação/Autorização:** Defina claramente como os tokens (JWT/Sanctum) serão armazenados e validados. Nunca permita endpoints sensíveis sem proteção.
17
+ - **Modelo de Dados:** Garanta que dados sensíveis (senhas, tokens, PII) sejam hashados ou encriptados no banco de dados.
18
+ - **Endpoints:** Adicione middlewares de segurança (ex: CORS, Rate Limit, XSS Protection) na tabela de endpoints.
19
+
20
+ ### Fase 3: Tasks (`/generate-tasks`)
21
+ - **Validation Gates:** Inclua testes de segurança nas tarefas (ex: testar se um usuário sem permissão recebe 403, testar injeção de SQL nas buscas).
22
+ - **Tarefas de Segurança:** Crie tarefas específicas para configurar segurança (ex: Configurar Headers de Segurança, Implementar Rate Limiting).
23
+
24
+ ### Fase 4: Execute (`/execute-task`) - Implementação de Código
25
+ Sempre aplique as seguintes proteções ao escrever código:
26
+
27
+ 1. **A01: Quebra de Controle de Acesso (Broken Access Control)**
28
+ - Sempre verifique se o usuário logado tem permissão para acessar/modificar o recurso solicitado (ex: `User::can('update', $post)` ou Policies no Laravel).
29
+ - Implemente o princípio do menor privilégio.
30
+
31
+ 2. **A02: Falhas Criptográficas (Cryptographic Failures)**
32
+ - Nunca armazene senhas em texto plano. Use Bcrypt ou Argon2.
33
+ - Não envie dados sensíveis (senhas, tokens) em respostas da API.
34
+
35
+ 3. **A03: Injeção (Injection)**
36
+ - **SQL Injection:** Sempre use ORMs (Eloquent, SQLAlchemy, GORM) ou Prepared Statements. NUNCA concatene strings em queries SQL.
37
+ - **XSS:** Sempre escape a saída de dados no frontend (ex: o Vue já faz isso com `{{ }}`, mas evite `v-html` com dados de usuários).
38
+ - **Command Injection:** Valide rigorosamente qualquer entrada que seja passada para o sistema operacional.
39
+
40
+ 4. **A04: Design Inseguro (Insecure Design)**
41
+ - Valide todas as entradas do usuário no lado do servidor (FormRequests no Laravel, Pydantic no FastAPI).
42
+ - Use listas de permissão (allowlists) em vez de listas de bloqueio (blocklists) para validação.
43
+
44
+ 5. **A05: Configuração Insegura (Security Misconfiguration)**
45
+ - Não exponha stack traces ou erros detalhados em produção (retorne mensagens genéricas de erro 500).
46
+ - Desabilite métodos HTTP desnecessários.
47
+
48
+ 6. **A07: Falhas de Identificação e Autenticação (Identification and Authentication Failures)**
49
+ - Implemente proteção contra força bruta (Rate Limiting) em endpoints de login.
50
+ - Invalide tokens de sessão no logout.
51
+
52
+ 7. **A08: Falhas na Integridade de Software e Dados (Software and Data Integrity Failures)**
53
+ - Não confie em dados enviados pelo cliente sem validação.
54
+ - Assine digitalmente JWTs com chaves fortes e secretas.
55
+
56
+ 8. **A10: Falsificação de Solicitação do Lado do Servidor (SSRF)**
57
+ - Se a aplicação fizer requisições HTTP para URLs fornecidas pelo usuário, valide a URL e bloqueie acessos à rede interna (ex: `127.0.0.1`, `localhost`, metadados da AWS).
@@ -0,0 +1,156 @@
1
+ ---
2
+ description: Rastreamento de Tokens e Modelos do Cursor utilizados em cada etapa do DARE
3
+ globs: DARE/*.md, DARE/EXECUTION/*.md
4
+ ---
5
+ # Rastreamento de Telemetria (Cursor - Tokens e Modelos)
6
+
7
+ Você é um especialista em monitoramento e observabilidade. Seu objetivo é rastrear e registrar o consumo de tokens e modelos de IA em cada etapa do Método DARE para fins de auditoria, monitoramento de performance e análise de uso. O Cursor é a IA utilizada (por compliance), então registre qual modelo do Cursor foi usado (GPT-4, Claude, Gemini, etc).
8
+
9
+ ## Modelos Disponíveis no Cursor
10
+
11
+ O Cursor suporta múltiplos modelos de IA. Registre qual foi utilizado em cada etapa:
12
+
13
+ | Modelo | Provedor | Características | Melhor Para |
14
+ |--------|----------|-----------------|------------|
15
+ | GPT-4 Turbo | OpenAI | Rápido e versátil | Tarefas gerais, código |
16
+ | Claude 3.5 Sonnet | Anthropic | Análise profunda | Análise complexa, segurança |
17
+ | Gemini 2.0 Flash | Google | Ultra rápido | Tarefas simples, processamento rápido |
18
+ | Modelos Locais | Customizados | Privacidade total | Dados sensíveis |
19
+
20
+ ## Estrutura de Rastreamento
21
+
22
+ Cada etapa do DARE deve registrar as seguintes informações em um arquivo de telemetria:
23
+
24
+ ### Arquivo de Telemetria: `DARE/TELEMETRY.md`
25
+
26
+ Este arquivo centraliza todas as métricas de consumo. Ele deve ser atualizado ao final de cada comando executado.
27
+
28
+ ```markdown
29
+ # Telemetria do Projeto: [Nome do Projeto]
30
+
31
+ ## Resumo Executivo
32
+ - **Projeto:** [Nome]
33
+ - **Data de Início:** [Data]
34
+ - **Tokens Totais Processados:** [Número] (monitoramento de uso)
35
+ - **IA Utilizada:** Cursor (por compliance)
36
+ - **Modelos do Cursor Utilizados:** [Lista de modelos]
37
+ - **Tempo Total de Execução:** [Tempo]
38
+
39
+ ## Detalhamento por Etapa
40
+
41
+ ### 1. Design (`/generate-design`)
42
+ - **Data/Hora:** [Timestamp]
43
+ - **Modelo do Cursor:** GPT-4 Turbo (ou Claude, Gemini)
44
+ - **Tokens Estimados:** 7,390
45
+ - **Tempo de Execução:** 45 segundos
46
+ - **Comando Executado:** `/generate-design "Criar API de autenticação"`
47
+ - **Observações:** [Qualidade da resposta, ajustes necessários, etc]
48
+
49
+ ### 2. Blueprint (`/generate-blueprint`)
50
+ - **Data/Hora:** [Timestamp]
51
+ - **Modelo do Cursor:** GPT-4 Turbo (ou Claude, Gemini)
52
+ - **Tokens Estimados:** 21,373
53
+ - **Tempo de Execução:** 2 minutos
54
+ - **Arquivo Processado:** DARE/DESIGN.md
55
+ - **Observações:** [Qualidade da arquitetura, ajustes necessários, etc]
56
+
57
+ ### 3. Tasks (`/generate-tasks`)
58
+ - **Data/Hora:** [Timestamp]
59
+ - **Modelo do Cursor:** GPT-4 Turbo (ou Claude, Gemini)
60
+ - **Tokens Estimados:** 33,912
61
+ - **Tempo de Execução:** 3 minutos 20 segundos
62
+ - **Arquivo Processado:** DARE/BLUEPRINT.md
63
+ - **Tasks Geradas:** 12
64
+ - **Observações:** [Qualidade das tasks, clareza das especificações, etc]
65
+
66
+ ### 4. Execute Tasks (`/execute-task`)
67
+ - **Task 001: Migration de Users**
68
+ - Data/Hora: [Timestamp]
69
+ - Modelo do Cursor: GPT-4 Turbo (ou Claude, Gemini)
70
+ - Tokens Estimados: 7,801
71
+ - Tempo: 1 minuto 30 segundos
72
+ - Tentativas (Ralph Loop): 1
73
+ - Status: ✓ Sucesso
74
+
75
+ - **Task 002: AuthController**
76
+ - Data/Hora: [Timestamp]
77
+ - Modelo do Cursor: GPT-4 Turbo (ou Claude, Gemini)
78
+ - Tokens Estimados: 11,357
79
+ - Tempo: 2 minutos
80
+ - Tentativas (Ralph Loop): 2
81
+ - Status: ✓ Sucesso
82
+
83
+ [... mais tasks ...]
84
+
85
+ ## Análise de Tokens Processados
86
+
87
+ | Etapa | Tokens Estimados | % do Total | Tempo Total |
88
+ |-------|------------------|-----------|-------------|
89
+ | Design | 7,390 | 5% | 45 seg |
90
+ | Blueprint | 21,373 | 15% | 2 min |
91
+ | Tasks | 33,912 | 24% | 3 min 20 seg |
92
+ | Execute (12 tasks) | 85,234 | 56% | 25 min |
93
+ | **TOTAL** | **147,909** | **100%** | **~31 min** |
94
+
95
+ ## Modelos do Cursor Utilizados
96
+
97
+ - **GPT-4 Turbo:** 147,909 tokens (100%)
98
+ - **Claude 3.5 Sonnet:** 0 tokens (0%)
99
+ - **Gemini 2.0 Flash:** 0 tokens (0%)
100
+ ```
101
+
102
+ ## Instruções para Rastreamento Manual
103
+
104
+ Após executar cada comando DARE, adicione uma entrada em `DARE/TELEMETRY.md`:
105
+
106
+ 1. **Após `/generate-design`:**
107
+ - Procure na barra de status do Cursor pelo modelo utilizado
108
+ - Anote o tempo de execução
109
+ - Adicione uma entrada na seção "Design"
110
+
111
+ 2. **Após `/generate-blueprint`:**
112
+ - Repita o processo acima
113
+ - Adicione uma entrada na seção "Blueprint"
114
+
115
+ 3. **Após `/generate-tasks`:**
116
+ - Adicione uma entrada na seção "Tasks"
117
+ - Inclua o número de tasks geradas
118
+
119
+ 4. **Após cada `/execute-task`:**
120
+ - Adicione uma entrada na seção "Execute Tasks"
121
+ - Inclua o status (Sucesso/Falha)
122
+ - Se falhou, anote quantas tentativas foram necessárias (Ralph Loop)
123
+
124
+ ## Capturando Informações do Cursor
125
+
126
+ O Cursor exibe informações sobre o modelo e tokens utilizados. Procure por:
127
+
128
+ **Na barra de status (canto inferior direito):**
129
+ - Ícone do modelo (ex: GPT-4, Claude, Gemini)
130
+ - Informações de tempo de resposta
131
+
132
+ **No histórico de conversa:**
133
+ - Clique no ícone de informações da resposta
134
+ - Veja detalhes do modelo utilizado
135
+ - Tempo de processamento
136
+
137
+ **Exemplo de informação exibida:**
138
+ ```
139
+ Model: GPT-4 Turbo
140
+ Time: 2.3s
141
+ Tokens: ~12,345 (estimado)
142
+ ```
143
+
144
+ Copie estas informações e adicione ao `DARE/TELEMETRY.md`.
145
+
146
+ ## Otimizações Recomendadas
147
+
148
+ 1. **Escolher o Modelo Certo:** Use GPT-4 para tarefas complexas, Claude para tarefas de análise, Gemini para processamento rápido.
149
+
150
+ 2. **Reutilizar Contexto:** Se você rodar `/execute-task` múltiplas vezes na mesma sessão do Composer, o contexto é reutilizado, economizando processamento.
151
+
152
+ 3. **Revisar Antes de Executar:** Revisar o Blueprint antes de gerar tasks economiza tokens desnecessários.
153
+
154
+ 4. **Agrupar Tasks:** Execute tasks relacionadas na mesma conversa do Composer para reutilizar contexto.
155
+
156
+ 5. **Monitorar Tentativas (Ralph Loop):** Se uma task requer muitas tentativas, pode indicar que a especificação precisa ser mais clara.
@@ -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.