{ "rules": [ { "name": "Padrões de Código", "description": "Regras gerais para manter consistência no código", "patterns": [ { "id": "naming-conventions", "pattern": "^[a-z][a-zA-Z0-9]*$", "message": "Use camelCase para nomes de variáveis e funções" }, { "id": "component-naming", "pattern": "^[A-Z][a-zA-Z0-9]*$", "message": "Componentes React devem começar com letra maiúscula" } ] }, { "name": "Segurança", "description": "Regras para garantir segurança da aplicação", "patterns": [ { "id": "no-sensitive-data", "pattern": "(password|senha|token|key|secret)", "message": "Não exponha dados sensíveis no código" }, { "id": "child-safety", "pattern": "(idade|age).*(>12|<6)", "message": "Verifique restrições de idade (6-12 anos)" } ] }, { "name": "Acessibilidade", "description": "Regras para garantir acessibilidade", "patterns": [ { "id": "alt-text", "pattern": "]*>", "message": "Imagens devem ter texto alternativo (alt)" }, { "id": "aria-labels", "pattern": "]*>", "message": "Botões devem ter aria-label quando não têm texto" } ] }, { "name": "Performance", "description": "Regras para otimização de performance", "patterns": [ { "id": "large-images", "pattern": "unsplash.com/.*w=(\\d{4,})", "message": "Evite imagens muito grandes (max 1200px)" }, { "id": "memo-check", "pattern": "React.memo\\(", "message": "Verifique se o uso de memo é necessário" } ] }, { "name": "Estilo", "description": "Regras de estilo e formatação", "patterns": [ { "id": "tailwind-classes", "pattern": "className=\"[^\"]{150,}\"", "message": "Considere extrair classes Tailwind longas para componentes" }, { "id": "color-consistency", "pattern": "text-(purple|green|orange|blue|yellow)", "message": "Use cores consistentes com a paleta definida" } ] }, { "name": "Conteúdo", "description": "Regras para conteúdo infantil", "patterns": [ { "id": "child-friendly", "pattern": "(violência|morte|guerra|violento)", "message": "Evite conteúdo inadequado para crianças" }, { "id": "educational-content", "pattern": "(educativo|educacional|aprendizado|ensino)", "message": "Priorize conteúdo educacional e construtivo" } ] } ], "ignoreFiles": [ "node_modules/**", "dist/**", "build/**", ".git/**", "*.test.*", "*.spec.*" ] }