{
"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": "use-interfaces",
"message": "Prefer interfaces over types"
},
{
"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"
}
]
},
"security": {
"patterns": [
{
"id": "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)"
}
]
},
"accessibility": {
"patterns": [
{
"id": "alt-text",
"pattern": "
]*>",
"message": "Imagens devem ter texto alternativo (alt)"
},
{
"id": "aria-labels",
"pattern": "