Qué son los hooks de Claude Code
Guía sobre hooks en Claude Code: tipos, integración con Laravel/PHP y ejemplos para automatizar formateo, validaciones y seguridad.
Los hooks de Claude Code son scripts o comandos que se activan automáticamente en momentos clave del desarrollo, ofreciendo control total sobre tareas específicas. A diferencia de las instrucciones en CLAUDE.md, los hooks garantizan que ciertas acciones se ejecuten sin fallos, como formatear código, prevenir comandos peligrosos o realizar validaciones automáticas.
Puntos clave:
- Tipos de hooks: Pre-ejecución (validar o bloquear), post-ejecución (automatizar tareas tras completarlas) y gestión de errores (manejar fallos con códigos de salida).
- Integración con PHP y Laravel: Usando el SDK
beyondcode/claude-hooks-sdk, puedes configurar hooks fácilmente desde.claude/settings.json. - Ejemplos prácticos: Bloquear migraciones en producción, formatear código automáticamente o enviar notificaciones tras tareas largas.
En resumen, los hooks permiten automatizar procesos, mejorar la seguridad y mantener estándares en proyectos PHP y Laravel. Son una herramienta clave para optimizar flujos de trabajo y evitar errores manuales.
¿Qué es Claude Code?

Claude Code es un agente de inteligencia artificial diseñado para ejecutarse directamente desde la línea de comandos. A diferencia de los asistentes de IA tradicionales, este opera directamente en el terminal, permitiendo escribir código, ejecutar comandos y gestionar proyectos de desarrollo de manera autónoma. Su capacidad para trabajar directamente en este entorno facilita la implementación de hooks, útiles para automatizar tareas clave en el desarrollo.
Funciona mediante un 'bucle de agente' (agent loop), un proceso secuencial que ejecuta tareas, interactúa con el sistema de archivos y opera en el shell. Según Tomas Svojanovsky:
"La mayoría de los desarrolladores consideran a Claude Code como un 'asistente de terminal inteligente': algo que escribe código, ejecuta comandos y colabora dentro de tu proyecto".
Para quienes trabajan con PHP y Laravel, Claude Code se adapta perfectamente al flujo de trabajo, eliminando tareas repetitivas y optimizando procesos. Además, se integra con el SDK beyondcode/claude-hooks-sdk, que ofrece una API inspirada en Laravel para gestionar hooks de manera eficiente.
Lo que realmente distingue a Claude Code es su capacidad para ofrecer un control preciso gracias a los hooks. Aunque las instrucciones en CLAUDE.md pueden ser ignoradas en sesiones largas, los hooks se ejecutan siempre en momentos clave, garantizando que las tareas críticas no se pasen por alto. En el desarrollo web actual, Claude Code conecta el razonamiento avanzado de la IA con la ejecución práctica en el terminal, creando lo que se denomina "codificación agéntica". Este enfoque permite que la IA se autocorrija y cumpla estrictamente las reglas del proyecto, estableciendo un método fiable para automatizar tareas en proyectos PHP y Laravel.
¿Qué son los hooks en Claude Code?
Comparación entre Hooks de Claude Code y Event Handlers de Laravel
En el mundo de Claude Code, los hooks son comandos de shell o prompts de modelos de lenguaje (LLM) que se activan automáticamente en momentos clave del ciclo de vida del software. A diferencia de las instrucciones en CLAUDE.md, que actúan más como sugerencias, los hooks ofrecen un control funcional directo, asegurando que ciertas acciones se ejecuten sin margen de error.
Estos hooks funcionan interceptando eventos del sistema, procesando datos en formato JSON a través de stdin y ajustando el comportamiento mediante códigos de salida o JSON estructurado. Como señala Kenneth Pangan:
En lugar de sugerir educadamente un flujo de trabajo, se puede imponer.
Existen dos tipos principales de hooks:
- Hooks basados en comandos: Ejecutan scripts bash locales para realizar acciones inmediatas.
- Hooks basados en prompts: Utilizan un modelo de lenguaje rápido (como Claude 3 Haiku) para evaluar contextos específicos, como determinar si una tarea está completa antes de detener un proceso.
Estos hooks pueden configurarse tanto de manera global en ~/.claude/settings.json como a nivel de proyecto en .claude/settings.json. Además, su integración con proyectos Laravel permite un control detallado sobre los flujos de trabajo.
Hooks vs. Event Handlers en Laravel

Aunque los hooks de Claude Code y los event handlers de Laravel tienen puntos en común, operan en escalas completamente distintas dentro del sistema:
| Aspecto | Hooks de Claude Code | Event Handlers de Laravel |
|---|---|---|
| Momento de ejecución | Ciclo de vida del agente IA (antes de usar herramientas, enviar prompts, iniciar sesión) | Eventos de la aplicación (modelo guardado, usuario registrado, pedido realizado) |
| Alcance | Nivel sistema/CLI; interactúa con shell, sistema de archivos y comportamiento del agente | Nivel aplicación; interactúa con PHP, bases de datos y servicios del framework |
| Lenguaje principal | Bash/Shell (permite ejecutar cualquier script) | Exclusivamente PHP |
| Casos de uso comunes | Linting, bloqueo de comandos peligrosos, auto-commit, notificaciones de escritorio | Envío de emails, actualización de índices de búsqueda, limpieza de caché, registro de actividad |
La clave de la diferencia está en el nivel de control: los hooks de Claude Code no solo observan, sino que pueden intervenir directamente en la ejecución de herramientas (por ejemplo, deteniendo procesos con un código de salida específico) o incluso modificar los datos antes de que el agente los utilice. Por otro lado, los event handlers de Laravel actúan como observadores que responden de manera reactiva a los cambios dentro de la aplicación.
Principales tipos de hooks en Claude Code
Claude Code cuenta con tres tipos principales de hooks: pre-ejecución, post-ejecución y gestión de errores. Cada uno tiene un propósito específico dentro del flujo de trabajo, ofreciendo diferentes niveles de control y personalización.
Los hooks de pre-ejecución (como PreToolUse) se activan antes de que Claude realice cualquier acción. Su función principal es preparar el terreno: validar entradas, bloquear comandos potencialmente peligrosos o ajustar el entorno. Por ejemplo, el hook PreToolUse entra en acción después de que Claude genera los parámetros de una herramienta, pero antes de ejecutarla. Esto permite a los desarrolladores modificar, aprobar o incluso denegar la operación según sea necesario.
Por otro lado, los hooks de post-ejecución se ejecutan una vez que una tarea ha sido completada con éxito. Son ideales para automatizar procesos posteriores, como formatear código, realizar pruebas o enviar notificaciones. Un ejemplo común es el hook PostToolUse, que asegura la calidad del resultado al activarse inmediatamente después de que una herramienta finaliza su trabajo.
Finalmente, los hooks de gestión de errores están diseñados para manejar fallos de manera estructurada. Utilizan códigos de salida y respuestas JSON para comunicar problemas. Por ejemplo, si un hook devuelve un código de salida 2, bloquea la acción en curso y envía un mensaje de error a Claude. Este mecanismo es clave para evitar operaciones destructivas o incumplimientos de políticas de seguridad.
En resumen, cada tipo de hook tiene un momento específico de activación y un propósito claro: los de pre-ejecución evitan problemas antes de que ocurran, los de post-ejecución optimizan procesos tras completar tareas, y los de gestión de errores garantizan una respuesta controlada ante fallos. Esta estructura modular permite a los desarrolladores integrar Claude Code de manera eficiente y segura en proyectos basados en Laravel.
Cómo usar hooks en proyectos Laravel con Claude Code
Integrar hooks de Claude Code en un proyecto Laravel es más sencillo de lo que parece, gracias al SDK beyondcode/claude-hooks-sdk. Este paquete proporciona una API en PHP que encaja perfectamente con Laravel, eliminando la necesidad de lidiar con scripts complicados. Aquí te explicamos cómo configurarlo paso a paso.
El proceso comienza instalando el SDK con Composer y creando un directorio específico para los scripts de hooks en .claude/hooks/. Además, los hooks deben registrarse en el archivo .claude/settings.json. Si trabajas en equipo, es ideal configurar los hooks a nivel de proyecto para mantener estándares comunes. Aquí tienes los pasos detallados para la configuración:
| Paso | Descripción | Comando/Acción |
|---|---|---|
| 1 | Instalar el SDK de Claude Code para PHP | composer require beyondcode/claude-hooks-sdk |
| 2 | Crear un directorio para los scripts de hooks | Crear la carpeta .claude/hooks/ en la raíz del proyecto |
| 3 | Configurar los hooks en el archivo de ajustes | Editar .claude/settings.json o usar el comando /hooks |
| 4 | Asignar permisos de ejecución a los scripts | chmod +x .claude/hooks/tu-script.php |
| 5 | Probar la configuración en modo depuración | Ejecutar claude --debug para verificar que todo funcione correctamente |
Un ejemplo práctico: Supongamos que necesitas un hook PreToolUse para interceptar el comando php artisan migrate y evitar migraciones en entornos de producción. El script podría analizar el archivo .env y devolver un código de salida 2 si detecta que APP_ENV está configurado como production o si DB_HOST no apunta a localhost o 127.0.0.1. Esto ayuda a prevenir cambios accidentales en bases de datos críticas.
Otro caso interesante es automatizar el formateo de código. Un hook PostToolUse puede ejecutar Laravel Pint automáticamente después de que Claude modifique archivos PHP. Variables de entorno como $CLAUDE_FILE_PATHS permiten identificar los archivos editados, mientras que $CLAUDE_PROJECT_DIR asegura que los comandos se ejecuten desde la raíz del proyecto, sin importar en qué directorio estés trabajando.
Además, el comando /hooks de Claude Code simplifica enormemente la configuración. Esta herramienta interactiva te permite definir eventos, establecer matchers y vincular scripts PHP sin necesidad de editar manualmente archivos JSON. Esto no solo reduce errores, sino que también acelera el proceso de implementación.
Uso de hooks en el desarrollo PHP y Laravel
Los hooks de Claude Code ofrecen una forma eficiente de optimizar los flujos de trabajo en PHP y Laravel mediante un control preciso que asegura la ejecución de reglas críticas. Esto resulta clave para tareas que no pueden confiar únicamente en la memoria del modelo de lenguaje. Por ejemplo, proteger archivos sensibles como .env o config/database.php requiere un hook PreToolUse con un matcher de rutas que bloquee cualquier intento de modificación. Este hook devuelve un código de salida 2 y envía un mensaje de error directamente a Claude. Este enfoque permite automatizar de manera fiable tareas repetitivas y sensibles.
Automatización de flujos de trabajo con hooks
Los hooks son ideales para eliminar tareas repetitivas que suelen consumir tiempo. Un ejemplo práctico es el formateo automático de código. Con un hook PostToolUse, se ejecutan herramientas de formateo sobre los archivos modificados, garantizando que el código cumpla con los estándares del proyecto sin necesidad de intervención manual.
Otro caso relevante es la validación de comandos potencialmente peligrosos. Un script validador puede interceptar las llamadas al tool Bash y bloquear comandos destructivos como rm -rf o ciertos comandos Artisan que podrían poner en riesgo datos importantes. Esto resulta especialmente útil cuando Claude propone soluciones que podrían tener consecuencias negativas.
Además, los eventos como Notification o Stop permiten enviar alertas a plataformas como Slack o Discord al completar tareas extensas. También es posible usar hooks como SessionStart para configurar automáticamente el entorno. Por ejemplo, puedes ejecutar composer install, cargar variables de entorno con CLAUDE_ENV_FILE, o iniciar un servidor de desarrollo local. Estas automatizaciones no solo aceleran el trabajo, sino que también mejoran la organización y la integración dentro del ecosistema Laravel.
Construcción de código modular con hooks
Los hooks fomentan una separación clara de responsabilidades al desacoplar la lógica de validación y automatización del código principal. El SDK beyondcode/claude-hooks-sdk facilita este enfoque modular mediante una API sencilla y estructurada, inspirada en Laravel, que genera respuestas JSON organizadas.
Por ejemplo, un hook puede modificar las entradas de herramientas usando updatedInput o añadir contexto adicional con additionalContext. Esto permite que cada hook se enfoque en una tarea específica: uno puede encargarse de validar permisos de archivos, mientras otro gestiona el formateo del código. Esta arquitectura modular simplifica el mantenimiento y permite compartir configuraciones estandarizadas a través del control de versiones, almacenando los hooks en el archivo .claude/settings.json del proyecto.
Conclusión
A lo largo de este artículo, hemos explorado cómo los hooks de Claude Code se han convertido en herramientas clave para los desarrolladores que trabajan con PHP y Laravel, ofreciendo un control detallado sobre los flujos de trabajo. A diferencia de las recomendaciones en el archivo CLAUDE.md, los hooks aseguran que todas las reglas definidas se ejecuten de manera predecible. Como lo señala la documentación oficial:
Hooks provide deterministic control over Claude Code's behavior, ensuring certain actions always happen without relying on Claude to choose.
Esta funcionalidad no solo automatiza tareas, sino que también mejora la seguridad y la consistencia en el desarrollo. Gracias al SDK beyondcode/claude-hooks-sdk, la integración de estos hooks es más sencilla, ya que ofrece una API diseñada con la misma filosofía que Laravel.
Un buen punto de partida es implementar un hook básico, como el PostToolUse, que ejecute automáticamente el formateador de código que prefieras. Para esto, puedes almacenar las configuraciones del equipo en el archivo .claude/settings.json y usar .claude/settings.local.json para ajustes individuales. Además, el comando /hooks dentro de Claude Code te permite configurar los matchers de forma segura a través de una interfaz guiada.
Más allá de agilizar el desarrollo, los hooks aportan una capa adicional de seguridad al usar códigos de salida específicos: 0 para indicar éxito y 2 para bloquear operaciones potencialmente peligrosas. Esto ayuda a prevenir comandos destructivos y protege la integridad de los proyectos Laravel. Gracias a su diseño modular, cada hook se centra en una tarea específica, lo que facilita el mantenimiento y mejora la calidad del código generado.
En resumen, integrar hooks en tus proyectos no solo optimiza el flujo de trabajo, sino que también garantiza un entorno de desarrollo más seguro y coherente dentro del ecosistema Laravel.
FAQs
¿Cómo puedo integrar los hooks de Claude Code en un proyecto Laravel?
Para empezar a usar los hooks de Claude Code en tu proyecto Laravel, sigue estos pasos:
-
Instala el paquete necesario
Utiliza Composer para instalar el paquetebeyondcode/claude-hooks-sdk. Este paquete te permitirá trabajar con una API diseñada para generar respuestas JSON que Claude Code pueda interpretar y usar. -
Configura los hooks
Crea o edita el archivo~/.claude/settings.jsonen tu entorno de desarrollo. Aquí definirás los eventos y comandos que deseas automatizar. Por ejemplo, podrías configurar un hook para ejecutar automáticamentephp artisan cache:clearantes de usar una herramienta específica. Asegúrate de incluir los eventos relevantes y toda la lógica necesaria para que funcione correctamente dentro de tu proyecto. -
Prueba y comparte la configuración
Antes de implementar los hooks, pruébalos localmente para verificar que se ejecuten como esperas. Si todo está en orden, puedes compartir la configuración con tu equipo utilizando un repositorio o scripts de instalación. Esto asegura que todos puedan beneficiarse de la automatización configurada.
Con estas acciones, podrás optimizar tareas repetitivas y mejorar significativamente tu flujo de trabajo en Laravel.
¿En qué se diferencian los hooks de Claude Code de los event handlers de Laravel?
Los hooks de Claude Code son pequeños scripts personalizados que se ejecutan automáticamente en momentos clave del ciclo de vida del agente, como PreToolUse, PostToolUse o SessionStart. Estos se configuran en archivos settings.json y actúan como callbacks síncronos, lo que significa que bloquean el proceso principal hasta que terminan. Son útiles para tareas como validar operaciones, registrar auditorías o aplicar políticas específicas de manera controlada.
En cambio, los event handlers de Laravel forman parte del sistema de eventos de este framework. Se implementan como clases en PHP y se activan cuando ocurre un evento en la aplicación. A diferencia de los hooks, los event handlers pueden ejecutarse de manera asíncrona y están diseñados para ser más flexibles y menos dependientes del flujo principal. Cada herramienta tiene su lugar según las necesidades específicas del proyecto.
¿Qué son los hooks en Claude Code y para qué sirven?
Los hooks en Claude Code son puntos estratégicos dentro del ciclo de vida de una aplicación que permiten ejecutar comandos o scripts automáticamente en momentos clave. Estos se dividen en categorías como hooks de proyecto, hooks de plugins y hooks basados en prompts, y se activan en eventos específicos como PreToolUse, PostToolUse, Stop, Notification, UserPromptSubmit, PreCompact y SessionStart.
La función principal de los hooks es automatizar tareas como validaciones, registro de datos, formateo de información, envío de notificaciones o la inicialización de procesos. Esto no solo facilita los flujos de trabajo, sino que también reduce la necesidad de intervención manual, permitiendo a los desarrolladores concentrarse en actividades más importantes y de mayor impacto.