dev-rules
Dev Rules
Invocación
Al invocar /dev-rules, mostrar el siguiente resumen al usuario:
Dev Rules v1.0.0
Comunicación - Español, conciso, sin disculpas Estilo - Convenciones del proyecto, nombres descriptivos Documentación - Solo el "por qué", TODOs para incompletos Git - Conventional Commits, confirmar antes de commit/push Código - SOLID, composición sobre herencia, early returns, SRP Arquitectura - Capas separadas, DTOs, inyección de dependencias Performance - Caché, lazy loading, paginación Errores - Fail fast, logs por nivel, mensajes amigables Seguridad - Sin secrets en código/logs, queries parametrizadas Testing - Solo si se solicita Deploy - No modificar sin confirmación, respetar entornos DB - Sin queries destructivas sin confirmación
Reglas por tecnología: TS/Angular - Sin any, inject(), async pipe, standalone + signals Java/Spring - Constructor injection, Transactional, records, Jakarta Flutter/Dart - const constructors, trailing commas, Bloc/Riverpod Kotlin/Compose - PascalCase Composable, Modifier en layout raíz
No agregar nada más. Solo mostrar el resumen.
Idioma y Comunicación
- Responder siempre en español.
- Ser conciso pero completo.
- No disculparse por errores; corregirlos directamente.
Formato y Estilo
- Seguir las convenciones del proyecto existente.
- Nombres descriptivos; el código debe hablar por sí mismo.
- Preferir código conciso sobre código documentado verbosamente.
Documentación
- Documentar solo decisiones técnicas importantes o lógica no obvia.
- Comentarios solo para explicar el "por qué", nunca el "qué".
- Usar TODO para código incompleto.
Git y Control de Versiones
- No hacer commit ni push sin confirmación explícita del usuario.
- Conventional Commits: feat, fix, docs, chore, refactor, test, ci.
- Ramas descriptivas: feature/, fix/, hotfix/, chore/.
Código Limpio
- Principios SOLID.
- Composición sobre herencia.
- Sin comentarios decorativos ni separadores visuales excesivos.
- Early returns para condiciones de error (evitar nesting profundo).
- Métodos/funciones pequeños con una sola responsabilidad.
- DRY: extraer lógica duplicada solo cuando se repite 3+ veces.
Arquitectura y Patrones
- Respetar la arquitectura existente del proyecto (microservicios, monolito, etc.).
- Separar claramente capas: controlador, servicio, repositorio/data.
- DTOs para transferencia entre capas; nunca exponer entidades directamente en APIs.
- Inyección de dependencias; evitar instanciación directa de servicios.
TypeScript/Angular
- Evitar any; usar tipos específicos o unknown.
- inject() para inyección de servicios.
- async pipe para observables en templates.
- Preferir standalone components y signals.
Java/Spring Boot
- Constructor Injection (sin Field Injection en producción).
- Transactional(readOnly = true) para lecturas, Transactional para escrituras.
- Java records para DTOs Request/Response.
- Validar inputs con Jakarta Validation.
Flutter/Dart
- Constructores const para widgets inmutables.
- Evitar el operador bang (!) a menos que el valor esté garantizado no-nulo.
- Trailing commas para mejor formateo.
- State management (Bloc/Riverpod) para apps complejas.
Kotlin/Compose
- Funciones Composable en PascalCase como sustantivos.
- Parámetros: obligatorios primero, luego Modifier, luego opcionales.
- Modifier se aplica solo al layout raíz.
Performance
- Considerar el impacto en rendimiento de cada cambio.
- Usar caché cuando sea apropiado.
- Lazy loading y paginación; evitar cargar datos innecesarios.
Manejo de Errores
- Fail fast: manejar errores al inicio de funciones.
- Logear con nivel apropiado: ERROR, WARN, INFO, DEBUG.
- Retornar mensajes amigables al usuario; detalles técnicos solo en logs.
Seguridad
- Nunca exponer secrets, API keys o credenciales en código o logs.
- Nunca logear datos sensibles (passwords, tokens, datos personales).
- Parametrizar siempre queries SQL.
- Validar y sanitizar toda entrada externa.
Testing
- No generar código de pruebas a menos que se solicite explícitamente.
Docker y Despliegue
- No modificar Dockerfiles ni pipelines CI/CD sin confirmación explícita.
- Respetar la separación de entornos (dev, cert, prod).
Base de Datos
- Nunca ejecutar queries destructivas (DROP, TRUNCATE, DELETE masivo) sin confirmación.
- Preferir migraciones versionadas sobre cambios manuales de esquema.