Prompteo

Unidad 5 · 2 min

Hooks

Configurá reglas deterministas que el harness ejecuta siempre: validadores, formatters y guardas con eventos, matchers y exit codes.

Mirá la unidad como una conversación con Claude. Abajo está escrita, para volver a buscar un comando sin rebobinar.

Hooks

Un hook es un comando de shell que Claude Code ejecuta automáticamente en momentos clave de la sesión. Se configuran en settings.json y su propiedad más importante es esta: los hooks son deterministas. Los ejecuta el harness (la aplicación), no el modelo — no dependen de que Claude "se acuerde" de una regla escrita en CLAUDE.md.

Eventos principales:

  • PreToolUse — antes de que Claude ejecute una herramienta. Puede bloquear la acción.
  • PostToolUse — después de que la herramienta corre. Ideal para formatters y validadores.
  • UserPromptSubmit — cuando enviás un prompt, antes de que Claude lo procese.
  • SessionStart — al iniciar la sesión.
  • Stop — cuando Claude termina de responder.

Matchers: cada hook puede filtrar a qué herramientas aplica. Un matcher Edit|Write hace que el hook corra solo cuando Claude edita o escribe archivos, no en cada acción.

Exit codes: el resultado del comando decide qué pasa:

  • 0 — todo bien, la acción continúa.
  • 2 — bloquea la acción, y el texto en stderr se le muestra a Claude como feedback para que corrija.

Usos típicos: correr el linter o el formatter después de cada edición, validar que un JSON cumple el schema antes de guardarlo, bloquear comandos peligrosos (por ejemplo, los que tocan .env). Si una regla no puede fallar nunca, no la escribas en prosa: hazla hook.