← BLOG
Tutorial

Automatiza Tu Flujo de Trabajo de Desarrollo con Claude Code Hooks

Los Hooks te permiten ejecutar comandos de shell personalizados cuando Claude Code toma acciones específicas. Auto-formatea al guardar, bloquea ediciones peligrosas o inyecta contexto automáticamente.

Los Hooks de Claude Code son comandos de shell que se ejecutan automáticamente en respuesta a eventos. Cuando Claude Code edita un archivo, ejecuta un comando o inicia una sesión, tus hooks se disparan. Esto te permite construir salvaguardas, imponer estándares y automatizar configuración repetitiva sin intervención manual.

Qué eventos de hook están disponibles

EventoCuándo se disparaCaso de uso común
PreToolUseAntes de que Claude ejecute una herramientaBloquear operaciones peligrosas, validar entradas
PostToolUseDespués de que Claude ejecute una herramientaAuto-formatear archivos editados, ejecutar linters
NotificationCuando Claude envía una notificaciónRegistrar en archivo, enviar a Slack
SessionStartCuando comienza una nueva sesiónInyectar contexto, verificar entorno
ConfigChangeCuando cambia la configuraciónValidar configuración

Cómo crear un hook

Usa el menú interactivo o edita settings.json directamente:

bash
# Configuración interactiva de hooks
claude /hooks

# O editar settings.json directamente
# Proyecto: .claude/settings.json
# Global: ~/.claude/settings.json

Aquí tienes un settings.json con hooks configurados:

json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "command": "npx prettier --write "$CLAUDE_FILE_PATH"",
        "description": "Auto-formatear archivos editados con Prettier"
      }
    ],
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "command": "echo $CLAUDE_FILE_PATH | grep -q \.env && echo 'BLOQUEADO: No se pueden editar archivos .env' && exit 1 || exit 0",
        "description": "Bloquear ediciones a archivos .env"
      }
    ],
    "SessionStart": [
      {
        "command": "cat .claude/context-injection.md",
        "description": "Inyectar contexto adicional al inicio de sesión"
      }
    ]
  }
}

Cuáles son los hooks más útiles

1. Auto-formatear al editar

Ejecuta Prettier, Black o gofmt cada vez que Claude Code edita un archivo:

json
// Hook PostToolUse
{
  "matcher": "Edit|Write",
  "command": "npx prettier --write \"$CLAUDE_FILE_PATH\""
}

2. Bloquear ediciones a archivos sensibles

Previene que Claude Code modifique archivos de entorno, secretos o configuraciones críticas:

json
// Hook PreToolUse
{
  "matcher": "Edit|Write",
  "command": "echo $CLAUDE_FILE_PATH | grep -qE \"\.env|\.secret|credentials\" && exit 1 || exit 0"
}

3. Re-inyectar contexto después de compactación

Cuando Claude Code compacta su ventana de contexto, detalles importantes pueden perderse. Un hook puede re-inyectar información crítica:

json
// Hook PostToolUse para compactación
{
  "matcher": "Compact",
  "command": "cat .claude/critical-context.md"
}
TIP

Empieza con el hook de auto-formateo. Es el hook de mayor valor con menor riesgo. Una vez que te sientas cómodo, añade protección de archivos e inyección de contexto.

Preguntas frecuentes

Puede un hook bloquear a Claude Code de hacer algo?+
Sí. Los hooks PreToolUse pueden salir con código 1 para bloquear la acción. Claude Code verá el mensaje de bloqueo e intentará un enfoque diferente. Así es como creas salvaguardas para operaciones sensibles.
Los hooks funcionan en modo headless?+
Sí. Los hooks se ejecutan en todos los modos incluyendo headless (CI/CD). Esto los hace útiles para imponer estándares en pipelines automatizados donde ningún humano revisa cada acción.
Qué variables de entorno están disponibles en los hooks?+
Los hooks reciben contexto a través de variables de entorno como $CLAUDE_FILE_PATH (el archivo siendo editado), $CLAUDE_TOOL_NAME (la herramienta siendo usada) y $CLAUDE_SESSION_ID. Las variables exactas dependen del tipo de evento.
Los hooks pueden ralentizar a Claude Code?+
Sí, si el comando del hook es lento. Mantén los hooks rápidos (menos de 1 segundo). Evita hooks que hagan peticiones de red o ejecuten builds pesados. Usa logging asíncrono si necesitas rastrear acciones sin bloquear.
ALL POSTSSTART FREE COURSE →