• Cursor – Laravel Rules

      You are an expert in Laravel, PHP, and related web development technologies.
    
      Core Principles
      - Write concise, technical responses with accurate PHP/Laravel examples.
      - Prioritize SOLID principles for object-oriented programming and clean architecture.
      - Follow PHP and Laravel best practices and conventions, ensuring consistency and readability.
      - Design for scalability and maintainability, ensuring the system can grow with ease.
      - Prefer iteration and modularization over duplication to promote code reuse.
      - Use consistent and descriptive names for variables, methods, and classes to improve readability.
    
      Dependencies
      - Composer for dependency management
      - PHP 8.2+
      - Laravel 11.0+
    
      PHP and Laravel Standards
      - Leverage PHP 8.2+ features when appropriate (e.g., typed properties, match expressions).
      - Adhere to PSR-12 coding standards for consistent code style.
      - Always use strict typing: declare(strict_types=1);
      - Utilize Laravel's built-in features and helpers to maximize efficiency.
      - Follow Laravel's directory structure and file naming conventions.
      - Implement robust error handling and logging:
        > Use Laravel's exception handling and logging features.
        > Create custom exceptions when necessary.
        > Employ try-catch blocks for expected exceptions.
      - Use Laravel's validation features for form and request data.
      - Implement middleware for request filtering and modification.
      - Utilize Laravel's Eloquent ORM for database interactions.
      - Use Laravel's query builder for complex database operations.
      - Create and maintain proper database migrations and seeders.
    
      Laravel Best Practices
      - Use Eloquent ORM and Query Builder over raw SQL queries when possible
      - Implement Repository and Service patterns for better code organization and reusability
      - Utilize Laravel's built-in authentication and authorization features (Sanctum, Policies)
      - Leverage Laravel's caching mechanisms (Redis) for improved performance
      - Use job queues and Laravel Horizon for handling long-running tasks and background processing
      - Implement comprehensive testing using PHPUnit and Laravel Dusk for unit, feature, and browser tests
      - Use API resources and versioning for building robust and maintainable APIs
      - Implement proper error handling and logging using Laravel's exception handler and logging facade
      - Utilize Laravel's validation features, including Form Requests, for data integrity
      - Implement database indexing and use Laravel's query optimization features for better performance
      - Use Laravel Telescope for debugging and performance monitoring in development
      - Leverage Laravel Nova or Filament for rapid admin panel development
      - Implement proper security measures, including CSRF protection, XSS prevention, and input sanitization
      - Use Laravel's built-in pagination features.
    
      Code Architecture
        * Naming Conventions:
          - Use consistent naming conventions for folders, classes, and files.
          - Follow Laravel's conventions: singular for models, plural for controllers (e.g., User.php, UsersController.php).
          - Use PascalCase for class names, camelCase for method names, and snake_case for database columns.
        * Controller Design:
          - Controllers should be final classes to prevent inheritance.
          - Make controllers read-only (i.e., no property mutations).
          - Avoid injecting dependencies directly into controllers. Instead, use method injection or service classes.
        * Model Design:
          - Models should be final classes to ensure data integrity and prevent unexpected behavior from inheritance.
        * Services:
          - Create a Services folder within the app directory.
          - Organize services into model-specific services and other required services.
          - Service classes should be final and read-only.
          - Use services for complex business logic, keeping controllers thin.
        * Routing:
          - Maintain consistent and organized routes.
          - Create separate route files for each major model or feature area.
          - Group related routes together (e.g., all user-related routes in routes/user.php).
        * Type Declarations:
          - Always use explicit return type declarations for methods and functions.
          - Use appropriate PHP type hints for method parameters.
          - Leverage PHP 8.1+ features like union types and nullable types when necessary.
        * Data Type Consistency:
          - Be consistent and explicit with data type declarations throughout the codebase.
          - Use type hints for properties, method parameters, and return types.
          - Leverage PHP's strict typing to catch type-related errors early.
        * Error Handling:
          - Use Laravel's exception handling and logging features to handle exceptions.
          - Create custom exceptions when necessary.
          - Use try-catch blocks for expected exceptions.
          - Handle exceptions gracefully and return appropriate responses.
    
      Key points
      - Follow Laravel’s MVC architecture for clear separation of business logic, data, and presentation layers.
      - Implement request validation using Form Requests to ensure secure and validated data inputs.
      - Use Laravel’s built-in authentication system, including Laravel Sanctum for API token management.
      - Ensure the REST API follows Laravel standards, using API Resources for structured and consistent responses.
      - Leverage task scheduling and event listeners to automate recurring tasks and decouple logic.
      - Implement database transactions using Laravel's database facade to ensure data consistency.
      - Use Eloquent ORM for database interactions, enforcing relationships and optimizing queries.
      - Implement API versioning for maintainability and backward compatibility.
      - Optimize performance with caching mechanisms like Redis and Memcached.
      - Ensure robust error handling and logging using Laravel’s exception handler and logging features.
    
  • Cursor – Foco en la seguridad de datos críticos

    Cursor – Foco en la seguridad de datos críticos

    [Contenido en desarrollo]

    Objetivo: proteger datos sensibles del código fuente como API keys, usuarios y contraseñas al interactuar en herramientas de generación de código asistido por IA como el IDE Cursor.

    1. Configuración del IDE:
      • Cursor Settings
        • General
          • Privacy mode
            • Enabled: Cursor no almacenará código en sus servidores. Si se desactiva, usarán los prompts y telemetría para mejorar Cursor. Esta configuración es por dispositivo (no a nivel de cuenta). Debes revisarla en cada dispositivo que utilices para desarrollar con Cursor.
    2. Archivos de exclusión:
      • Documentación de referencia: https://docs.cursor.com/context/ignore-files
      • Nivel de proyecto:
        • Archivo .cursorignore (lista de patrones de exclusión)
          • bloquea el indexado de código de los archivos definidos
          • bloquea código accesible mediante Tab, Chat y Cmd+K
          • bloquea código accesible mediante referencias con símbolo @
        • Archivos .cursorindexingignore
          • excluye los archivos definidos del índice de Cursor (aunque siguen pudiendo ser accedidos por las funcionalidades asistidas por IA de Cursor, incluyendo cuando Cursor busca en el código y lo expone a los LLMs)
        • Archivo .gitignore
          • Cursor ignorará los archivos listados en el .gitignore de la raiz del proyecto
        • Archivos ignorados de forma predeterminada:
      • Nivel de usuario (para todos los proyectos)
        • VS Code Settings
          • Cursor
            • Global Cursor Ignore List
              • Los patrones de esta lista tienen el mismo efecto que añadirlos a mano a un archivo .cursorignore en cada workspace
    3. Archivos especialmente vulnerables
      • cualquier archivo que contenga datos de autenticación:
        • archivos de variables de entorno
        • clases o librerías con valores de autenticación hardcoded
        • seeders o archivos con datos iniciales en las bases de datos que hagan referencia a claves de usuario
    4. Trabajo en equipos
      • Considerando que las configuraciones del IDE de cada desarrrollador pueden ser diferentes, reforzará la seguridad el hecho de unificar los archivos .cursorignore y .cursorindexingignore incluso cuando sus reglas estén incluídas por defecto en el Global Cursor Ignore List a nivel de usuario del IDE
    5. Puntos críticos conocidos (mayo 2025)
      • Las llamadas a los servicios «Terminal» y «Servidor MCP» iniciadas desde el Chat no son capaces de bloquear el acceso a las exclusiones definidas en .cursorignore
  • Phpstorm: inotify limit too low

    El IDE de php Phpstorm realiza una serie de tareas en segundo plano para mantener sincronizados los archivos del proyecto abierto con el disco duro (detectar cambios externos, indexar código, etc.). Es en este contexto que le programa puede mostrar la notificación siguiente:

    «External file changes sync may be slow: The current inotify(7) watch limit is too low.»

    Para corregir esta limitación recomiendo aplicar la solución que propone IntelliJ en su Confluence:

    1. Crear un fichero (necesario permisos root) en la ruta «/etc/sysctl.d/» que termine en «.conf». En mi caso usaré el editor «vi»:
      sudo vi /etc/sysctl.d/90-phpstorm.conf
    2. Añadir una sola linea y guardar:
      fs.inotify.max_user_watches = 524288
    3. Aplicar cambios en el sistema reiniciando o mediante el comando siguiente:
      sudo sysctl -p --system
    4. Reiniciar Phpstorm si estaba abierto.