\
CONTEXT/academy
Lección 01 · ≈ 11 min

Por qué hooks

La diferencia entre pedirle algo al agente e imponérselo.

Por qué hooks

Hay una frase que resume todo este curso: una regla que el agente puede ignorar no es una regla, es una sugerencia. Los hooks convierten las sugerencias en reglas.

El problema de las reglas blandas

Tu CLAUDE.md dice: "no añadas dependencias sin preguntar". El agente lo ha leído y, durante 50 sesiones, lo respeta. La sesión 51, a las 23:42 de un viernes, está peleando un test que falla y decide que un npm install lodash es la solución. Lo hace. Tú lo aceptas porque ya son las 23:43 y quieres irte a dormir.

Esto va a pasar. No porque el agente sea malo, sino porque las reglas blandas se rompen bajo presión — la del modelo y la tuya. CLAUDE.md, skills y subagentes guían el comportamiento, pero no lo garantizan.

La solución: un muro, no un cartel

Un hook es un shell command que Claude Code ejecuta automáticamente en un momento concreto del ciclo de vida — por ejemplo, antes de cada llamada al tool Bash. Ese hook lee el comando, comprueba si empieza por npm install y, si es así, lo bloquea con un mensaje claro.

El agente no puede saltárselo. No depende de que "se acuerde" de la regla: la regla la aplica Claude Code, como código, siempre.

A lo largo del curso "hook" = shell command, que es el tipo determinista (el campo type: "command"). Claude Code admite otros tipos de handler —http, mcp_tool, y los basados en modelo prompt/agent—, pero esos dependen del juicio del modelo y, por tanto, no son el muro. Lo ves en la anatomía.

La distinción clave del curso:

  • Blando (CLAUDE.md, skills): el modelo intenta obedecer. Para guías y convenciones.
  • Determinista (hooks): se ejecuta sí o sí. Para invariantes que no pueden romperse.

Para qué los vas a usar

A lo largo del curso construirás una suite real:

  1. Formateo post-edit — Prettier/Black/rustfmt tras cada Write o Edit, sin que el agente lo decida.
  2. Detección de secrets — bloquear cualquier Write/Edit que contenga lo que parece una API key.
  3. Guard de force-push y destructivos — la lista negra que todo equipo debería tener.
  4. Conventional Commits — validar el mensaje antes del commit y rechazarlo si no cumple.

Cuándo NO usar un hook

Los hooks son para reglas deterministas: condiciones que se comprueban con código (¿el comando empieza por X?, ¿el fichero casa este patrón?). Para decisiones que requieren juicio ("¿este cambio tiene sentido?"), sigue siendo trabajo del modelo y de tu revisión. No intentes meter criterio en un hook; mete invariantes.

Qué llevas hasta aquí

  • Las reglas blandas (CLAUDE.md, skills) se rompen bajo presión: el agente puede ignorarlas.
  • Un hook es un shell command que Claude Code ejecuta en el ciclo de vida y que el agente no puede saltarse.
  • Úsalos para invariantes deterministas, no para decisiones de juicio.

En la siguiente lección, la anatomía de un hook: eventos, configuración y cómo bloquea una acción.

Fuente oficial: Hooks guide

¿Quieres llevar la cuenta de las lecciones que has terminado?

Entrar para guardar progreso