Ir al contenido
Mastering Claude

Inicio / Extender: habilidades, MCP, subagentes, hooks, plugins

Extender: habilidades, MCP, subagentes, hooks, plugins7 minApplication

Hooks: automatizar el ciclo de vida

Un hook es una acción que el arnés ejecuta él mismo ante un evento preciso del ciclo de vida, nunca una preferencia confiada al modelo esperando que la recuerde.

Un hook es una acción que el arnés ejecuta él mismo cuando ocurre un evento preciso del ciclo de vida, nunca una petición que el modelo interpreta en el momento de actuar. Escribir en un archivo de memoria cada vez que haces un commit, lanzas los tests, sigue siendo una preferencia: el modelo puede olvidarla después de una conversación larga o una compactación. Un hook declarado sobre el evento correspondiente se ejecuta en cada ocurrencia, independientemente de lo que el modelo recuerde en ese instante.

El mecanismo: un evento, un comando, una decisión

Un hook se declara en settings.json, o en el archivo hooks.json de un plugin, asociado a un evento del ciclo de vida y a un tipo de acción: un comando de shell, una llamada HTTP, una herramienta MCP, una instrucción o un agente. Cuando el evento ocurre, el arnés ejecuta esa acción y espera a cambio una decisión, antes de que la cuestión llegue al modelo.

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          { "type": "command", "command": "./verifier-avant-commande.sh" }
        ]
      }
    ]
  }
}

Esta declaración asocia el evento PreToolUse, restringido a las llamadas de la herramienta Bash, a un script que se ejecuta antes de cada comando propuesto. Cada tipo de hook tiene su propio plazo de expiración por defecto, distinto según el evento que lo dispara: la lección siguiente detalla esos plazos evento por evento, así como los campos JSON precisos que un hook devuelve para bloquear, autorizar o enriquecer lo que ve el modelo.

Hook contra regla de memoria: qué garantiza realmente cada uno

Una regla de memoria depende de un modelo que la relee y decide aplicarla, en una ventana de contexto que crece a lo largo de la sesión. Un hook depende del arnés, que verifica el evento independientemente de lo que contenga la conversación en ese instante. La diferencia se nota sobre todo en una sesión larga: una instrucción repetida veinte veces en un archivo de memoria puede diluirse en un contexto cargado, mientras que un hook declarado una sola vez sigue ejecutándose de forma idéntica en la llamada número mil igual que en la primera.

Traducir un automatismo deseado en un hook en lugar de en una nota de memoria es, por tanto, menos una cuestión de estilo que una cuestión de fiabilidad mecánica: uno depende de una lectura atenta del modelo, el otro de un evento que el propio arnés constata.

Figure 1

Del disparo a la decisión

01
Evento del ciclo de vida
Un comando a punto de ejecutarse, una sesión que arranca, un archivo que cambia: el arnés detecta el evento, no el modelo.
02
Hook consultado
settings.json o el hooks.json de un plugin indica qué acción lanzar para ese evento preciso.
03
Acción ejecutada
Se ejecuta un comando de shell, una llamada HTTP, una herramienta MCP, una instrucción o un agente, según el tipo declarado.
04
Decisión emitida
El hook devuelve su respuesta al arnés, que la aplica antes de que la conversación retome su curso.
La secuencia muestra dónde interviene el arnés y dónde el modelo ya no tiene el control, entre el evento y la decisión, ningún paso depende de lo que el modelo recuerde.
Figure 2

Regla de memoria contra hook declarado

Hacer fiable un automatismo repetidoQué dispara la acciónComportamiento en una sesión largaDónde se declara el automatismo
Regla escrita en memoriaUna lectura del modelo, que debe recordarla en el momento oportunoPuede diluirse tras una compactación o un contexto cargadoUn archivo CLAUDE.md, interpretado por el modelo
Hook declaradoUn evento del ciclo de vida, constatado por el propio arnésSe ejecuta de forma idéntica en cada ocurrencia del eventosettings.json o el hooks.json de un plugin, ejecutado por el arnés
La tabla aísla tres criterios para distinguir una regla escrita en memoria, que depende de una lectura del modelo, de un hook, que depende de un evento constatado por el arnés.
Calíbralo tú mismo

Un desarrollador declara un hook PreToolUse en settings.json que bloquea toda llamada de la herramienta Bash que contenga el patrón rm seguido de -rf. Después le pide a Claude Code que ejecute un comando que contiene ese patrón, y ve cómo se activa el hook.

Escribe en una frase lo que esta situación establece, y en una frase lo que no establece.

Lo que hay que recordar
  • Un hook se dispara porque ocurre un evento del ciclo de vida, nunca porque el modelo decida aplicarlo en el momento de actuar.
  • Una regla repetida en un archivo de memoria puede diluirse en un contexto cargado, un hook declarado una sola vez se ejecuta de forma idéntica en cada ocurrencia del evento.
  • Un hook se declara en settings.json o en el archivo hooks.json de un plugin, asociado a un tipo de acción entre comando de shell, llamada HTTP, herramienta MCP, instrucción o agente.
  • Cada tipo de hook tiene su propio plazo de expiración por defecto, detallado evento por evento en la lección siguiente.
Hazlo ahora

Crea un archivo .claude/settings.json mínimo en un repositorio de prueba, declara en él un hook PreToolUse que muestre un mensaje antes de cada comando Bash para observar cómo se dispara el mecanismo, y luego retira ese hook una vez hecha la demostración.

Verificar en la fuente

Cada afirmación datable de esta lección remite aquí al texto público que la respalda. Una fuente que no se abre no prueba nada.