Un hook es un comando que Claude Code ejecuta automáticamente en un momento concreto: después de editar un archivo, antes de ejecutar una orden o cuando te espera. Según la documentación oficial, dan un control determinista: la acción ocurre siempre, sin depender de que el modelo se acuerde.
1. Notificación cuando Claude te espera (macOS)
En ~/.claude/settings.json:
{ "hooks": { "Notification": [ { "matcher": "", "hooks": [ { "type": "command", "command": "osascript -e 'display notification \"Claude Code needs your attention\" with title \"Claude Code\"'" } ] } ] } } Escribe /hooks para comprobar que aparece. Si no suena, activa las notificaciones de Script Editor en Ajustes del Sistema.
2. Prettier tras cada edición
{ "hooks": { "PostToolUse": [ { "matcher": "Edit|Write", "hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write" }] } ] } } 3. Bloquear archivos protegidos
Un script que termina con código 2 bloquea la acción y Claude recibe el mensaje:
#!/bin/bash INPUT=$(cat) FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty') for pattern in ".env" "package-lock.json" ".git/"; do if [[ "$FILE_PATH" == *"$pattern"* ]]; then echo "Blocked: $FILE_PATH matches '$pattern'" >&2 exit 2 fi done exit 0 Regístralo como hook PreToolUse con matcher: "Edit|Write".
Guía completa, con diagrama, dónde se guardan y preguntas frecuentes: eltelar.es.

