🎓Guía de apoyo al curso oficial de Anthropic Academy · adaptada al español
Bloque 4Personaliza Claude CodeLección 12 de 14
☰ Índice del curso← AnteriorSiguiente →

Hooks

Música para concentrarte

Todo lo que has aprendido en este curso —el archivo CLAUDE.md, las Habilidades, las instrucciones del prompt— tiene una limitación: Claude puede ignorarlo. Los Hooks, no. Son la única herramienta de Claude Code que siempre se ejecuta, sin excepciones.

🌐 Este vídeo es el original de Anthropic, en inglés. Para seguirlo en español, dale al play al audio 🎬 «Sigue el vídeo en español» de aquí abajo — es la traducción exacta de lo que se dice.

🎬

Sigue el vídeo en español

IMAI

Escucha la lección

¿Por qué usar Hooks?

Puedes pedirle a Claude en el CLAUDE.md que ejecute Prettier después de cada edición. La mayoría de las veces lo hará. Pero a veces no. Un Hook lo hace ocurrir siempre, sin falta.

Casos de uso habituales:

  • Formateo automático después de editar archivos.
  • Registro de todos los comandos ejecutados para cumplimiento normativo.
  • Bloqueo de operaciones peligrosas, como modificar archivos de producción.
  • Notificaciones para avisarte cuando Claude termina una tarea.

Cómo funcionan

Los Hooks se configuran en settings.json. Eliges un evento, opcionalmente defines un matcher para indicar a qué herramientas aplica, y proporcionas el comando a ejecutar.

La carpeta .claude con su subcarpeta hooks y el archivo settings.json en el explorador de VS Code

Estos son los eventos disponibles:

EventoCuándo se ejecuta
PreToolUseAntes de que Claude llame a una herramienta
PostToolUseDespués de que una herramienta completa su ejecución
UserPromptSubmitCuando envías un prompt, antes de que Claude lo procese
StopCuando Claude termina de responder
NotificationCuando Claude envía una notificación

Puedes configurarlos con el comando /hooks dentro de Claude Code, o editando settings.json directamente.

PostToolUse — el Hook más útil

El caso más común: el formateo automático después de editar archivos. Configura un PostToolUse con el matcher Edit · MultiEdit · Write para que se active siempre que Claude modifique un archivo. El comando comprueba la extensión del archivo y ejecuta el formateador adecuado: Prettier para TypeScript, gofmt para Go, lo que uses en tu proyecto.

PreToolUse — para bloquear operaciones

Los Hooks de PreToolUse pueden bloquear una llamada a herramienta antes de que se ejecute. El Hook recibe el nombre de la herramienta y sus parámetros como JSON, y el código de salida decide qué ocurre:

  • Código 0 — procede con normalidad.
  • Código 2 — bloquea la acción. El mensaje de error se devuelve a Claude para que sepa por qué fue bloqueado y pueda ajustarse.
  • Cualquier otro código — error no bloqueante: se muestra al usuario, pero no detiene la ejecución.
El archivo settings.json con un Hook PreToolUse que bloquea comandos peligrosos y un PostToolUse para formatear, usando la variable CLAUDE_PROJECT_DIR

Así es como impones reglas absolutas: bloquear escrituras en directorios de producción, bloquear comandos con rm -rf, bloquear commits directos a main. Lo que tu equipo necesite garantizar, no solo sugerir.

Compartir Hooks con el equipo

Los Hooks configurados en .claude/settings.json son de nivel de proyecto y puedes incluirlos en el repositorio. Todo el equipo los obtiene automáticamente al clonar.

Usa la variable de entorno CLAUDE_PROJECT_DIR en tus comandos para referenciar scripts guardados en el proyecto, así funcionan independientemente del directorio de trabajo actual de Claude.

En una frase: si algo necesita ocurrir siempre, sin excepción, no lo pongas en un prompt. Ponlo en un Hook.

IMAI

¿No programas? Te lo explico fácil · sin tecnicismos

🎧

Escucha la explicación sencilla

Esta lección es bastante técnica, así que te la cuento con un ejemplo de andar por casa.

Imagina que Claude Code es un ayudante muy bueno, pero con mucho trabajo. Puedes pedirle las cosas de dos maneras:

🗣️

Pedírselo de palabra

Como decirle a alguien "acuérdate de apagar la luz al salir". Lo hará casi siempre... pero algún día, con prisas, se le olvidará. Eso es lo que pasa cuando escribes una norma en el CLAUDE.md o en tus instrucciones: es una petición, y se puede ignorar.

⚙️

Poner un automatismo

Como un sensor que apaga la luz solo cada vez que sales. Da igual si va con prisa: ocurre siempre. Eso es un Hook.

¿Para qué sirve en la práctica?

  • Que el código se ordene solo cada vez que se toca un archivo (como recoger la cocina automáticamente después de cocinar).
  • Que se bloquee una acción peligrosa antes de que ocurra (como una tapa de seguridad que no te deja pulsar el botón rojo sin querer).
  • Que te avise cuando termina una tarea.

La idea que de verdad importa

Si una cosa tiene que pasar siempre, sí o sí, no se la pidas de palabra: ponla en un Hook. Lo de palabra es una sugerencia; un Hook es una garantía.

No necesitas saber programarlos para entender la idea: los Hooks son las normas que Claude no puede saltarse.

📖

Glosario

Hook

🔧 Técnico

Comando que se ejecuta automáticamente en un evento del ciclo de vida de Claude Code (PreToolUse, PostToolUse, Stop…), de forma determinista: siempre se ejecuta.

💬 En cristiano

Una orden que se ejecuta sola y siempre, sin que tengas que acordarte. Como el sensor que apaga la luz cada vez que sales.

settings.json

🔧 Técnico

Archivo en formato JSON, dentro de la carpeta .claude, donde defines la configuración de Claude Code: hooks, permisos, modelo, etc.

💬 En cristiano

El archivo de "ajustes" de Claude Code, como la pantalla de preferencias de una app.

Evento (PreToolUse, PostToolUse…)

🔧 Técnico

Punto concreto del ciclo de vida en el que se dispara un hook: antes de usar una herramienta, después, al enviar un prompt, al terminar de responder…

💬 En cristiano

El momento exacto en el que quieres que salte la orden automática: antes de hacer algo, después, al terminar…

Matcher

🔧 Técnico

Filtro opcional que indica a qué herramientas se aplica un hook (por ejemplo, Edit, MultiEdit o Write).

💬 En cristiano

Una condición para decir "esto solo cuando pase tal cosa" (por ejemplo, solo cuando se edita un archivo).

Código de salida

🔧 Técnico

Número que devuelve un comando al terminar. En un hook de PreToolUse: 0 deja continuar, 2 bloquea la acción, y otro valor avisa sin bloquear.

💬 En cristiano

La forma que tiene la orden de decir "todo bien, sigue" (0) o "para, esto no" (2). Como un semáforo.

Formateador (Prettier, gofmt…)

🔧 Técnico

Herramienta que ordena automáticamente el código con un estilo consistente: sangrías, espacios, comillas.

💬 En cristiano

Un "corrector de estilo" que deja el código ordenado y bonito sin que tú lo toques.

Repositorio (repo)

🔧 Técnico

Carpeta de un proyecto bajo control de versiones (Git) con todo su historial de cambios; el equipo la comparte al clonarla.

💬 En cristiano

La carpeta de tu proyecto guardada con su historial, que tu equipo comparte. Si pones ahí los Hooks, los recibe todo el mundo.

📚

Fuentes oficiales de Anthropic

← AnteriorMCPSiguiente →¿Qué sigue?