From 5193ba95f4d86ec48cfe702d501e1ed97cfb70b0 Mon Sep 17 00:00:00 2001 From: Lucas Santana Date: Fri, 20 Dec 2024 08:38:22 -0300 Subject: [PATCH] Adicionando cursorrules --- .cursorrules | 114 ++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 82 insertions(+), 32 deletions(-) diff --git a/.cursorrules b/.cursorrules index 2ca7e59..37055b2 100644 --- a/.cursorrules +++ b/.cursorrules @@ -1,27 +1,50 @@ { - "rules": [ - { - "name": "Padrões de Código", - "description": "Regras gerais para manter consistência no código", - "patterns": [ + "name": "Educational Platform Guidelines", + "version": "1.0.0", + "rules": { + "naming": { + "directories": { + "pattern": "^[a-z-]+$", + "message": "Use lowercase with dashes for directories (e.g., components/form-wizard)" + }, + "components": { + "pattern": "^[A-Z][a-zA-Z0-9]*\\.tsx?$", + "message": "Use PascalCase for component files (e.g., VisaForm.tsx)" + }, + "utilities": { + "pattern": "^[a-z][a-zA-Z0-9]*\\.ts$", + "message": "Use camelCase for utility files (e.g., formValidator.ts)" + }, + "variables": { + "pattern": "^[a-z][a-zA-Z0-9]*$", + "message": "Use camelCase for variables and functions" + } + }, + "typescript": { + "rules": [ { - "id": "naming-conventions", - "pattern": "^[a-z][a-zA-Z0-9]*$", - "message": "Use camelCase para nomes de variáveis e funções" + "id": "use-interfaces", + "message": "Prefer interfaces over types" }, { - "id": "component-naming", - "pattern": "^[A-Z][a-zA-Z0-9]*$", - "message": "Componentes React devem começar com letra maiúscula" + "id": "avoid-enums", + "message": "Use const objects with 'as const' assertion instead of enums" + }, + { + "id": "explicit-returns", + "message": "Use explicit return types for all functions" + }, + { + "id": "absolute-imports", + "pattern": "from '[./]", + "message": "Use absolute imports (@/...) instead of relative imports" } ] }, - { - "name": "Segurança", - "description": "Regras para garantir segurança da aplicação", + "security": { "patterns": [ { - "id": "no-sensitive-data", + "id": "sensitive-data", "pattern": "(password|senha|token|key|secret)", "message": "Não exponha dados sensíveis no código" }, @@ -32,9 +55,7 @@ } ] }, - { - "name": "Acessibilidade", - "description": "Regras para garantir acessibilidade", + "accessibility": { "patterns": [ { "id": "alt-text", @@ -48,9 +69,7 @@ } ] }, - { - "name": "Performance", - "description": "Regras para otimização de performance", + "performance": { "patterns": [ { "id": "large-images", @@ -58,15 +77,13 @@ "message": "Evite imagens muito grandes (max 1200px)" }, { - "id": "memo-check", + "id": "memo-usage", "pattern": "React.memo\\(", "message": "Verifique se o uso de memo é necessário" } ] }, - { - "name": "Estilo", - "description": "Regras de estilo e formatação", + "styling": { "patterns": [ { "id": "tailwind-classes", @@ -80,9 +97,7 @@ } ] }, - { - "name": "Conteúdo", - "description": "Regras para conteúdo infantil", + "content": { "patterns": [ { "id": "child-friendly", @@ -90,13 +105,29 @@ "message": "Evite conteúdo inadequado para crianças" }, { - "id": "educational-content", + "id": "educational-focus", "pattern": "(educativo|educacional|aprendizado|ensino)", "message": "Priorize conteúdo educacional e construtivo" } ] + }, + "git": { + "commit_prefixes": [ + "fix:", + "feat:", + "perf:", + "docs:", + "style:", + "refactor:", + "test:", + "chore:" + ], + "commit_rules": { + "pattern": "^(fix|feat|perf|docs|style|refactor|test|chore): [a-z].*$", + "message": "Use proper commit message format with prefix" + } } - ], + }, "ignoreFiles": [ "node_modules/**", "dist/**", @@ -104,5 +135,24 @@ ".git/**", "*.test.*", "*.spec.*" - ] -} \ No newline at end of file + ], + "documentation": { + "required": [ + "README.md", + "API.md", + "CHANGELOG.md" + ], + "rules": [ + { + "id": "readme-sections", + "required": [ + "Setup Instructions", + "Development Workflow", + "Testing", + "Security", + "Contributing" + ] + } + ] + } +} \ No newline at end of file