← BLOG
Tutorial

Automatizza il Tuo Workflow di Sviluppo con gli Hooks di Claude Code

Gli Hooks ti permettono di eseguire comandi shell personalizzati quando Claude Code compie azioni specifiche. Auto-formattazione al salvataggio, blocco di modifiche pericolose o iniezione automatica di contesto.

Gli Hooks di Claude Code sono comandi shell che si eseguono automaticamente in risposta a eventi. Quando Claude Code modifica un file, esegue un comando o avvia una sessione, i tuoi hook si attivano. Questo ti permette di costruire guardrail, applicare standard e automatizzare configurazioni ripetitive senza intervento manuale.

Quali eventi hook sono disponibili?

EventoQuando si attivaCaso d'uso comune
PreToolUsePrima che Claude esegua uno strumentoBloccare operazioni pericolose, validare input
PostToolUseDopo che Claude esegue uno strumentoAuto-formattare file modificati, eseguire linter
NotificationQuando Claude invia una notificaRegistrare su file, inviare a Slack
SessionStartQuando inizia una nuova sessioneIniettare contesto, verificare l'ambiente
ConfigChangeQuando cambiano le impostazioniValidare la configurazione

Come si crea un hook?

Usa il menu interattivo o modifica settings.json direttamente:

bash
# Configurazione interattiva degli hook
claude /hooks

# Oppure modifica settings.json direttamente
# Progetto: .claude/settings.json
# Globale: ~/.claude/settings.json

Ecco un settings.json con gli hook configurati:

json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "command": "npx prettier --write "$CLAUDE_FILE_PATH"",
        "description": "Auto-formatta i file modificati con Prettier"
      }
    ],
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "command": "echo $CLAUDE_FILE_PATH | grep -q \.env && echo 'BLOCCATO: Non puoi modificare file .env' && exit 1 || exit 0",
        "description": "Blocca le modifiche ai file .env"
      }
    ],
    "SessionStart": [
      {
        "command": "cat .claude/context-injection.md",
        "description": "Inietta contesto aggiuntivo all'avvio della sessione"
      }
    ]
  }
}

Quali sono gli hook piu' utili?

1. Auto-formattazione alla modifica

Esegui Prettier, Black o gofmt ogni volta che Claude Code modifica un file:

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

2. Blocco modifiche a file sensibili

Impedisci a Claude Code di modificare file di ambiente, segreti o configurazioni critiche:

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

3. Re-iniezione del contesto dopo la compattazione

Quando Claude Code compatta la sua finestra di contesto, dettagli importanti possono andare persi. Un hook puo' re-iniettare informazioni critiche:

json
// Hook PostToolUse per la compattazione
{
  "matcher": "Compact",
  "command": "cat .claude/critical-context.md"
}
TIP

Inizia con l'hook di auto-formattazione. E' l'hook con il valore piu' alto e il rischio piu' basso. Una volta che ti senti a tuo agio, aggiungi la protezione dei file e l'iniezione del contesto.

Domande frequenti

Un hook puo' impedire a Claude Code di fare qualcosa?+
Si'. Gli hook PreToolUse possono uscire con codice 1 per bloccare l'azione. Claude Code vedra' il messaggio di blocco e provera' un approccio diverso. E' cosi' che crei guardrail per operazioni sensibili.
Gli hook funzionano in modalita' headless?+
Si'. Gli hook si eseguono in tutte le modalita', inclusa headless (CI/CD). Questo li rende utili per applicare standard nelle pipeline automatizzate dove nessun umano revisiona ogni azione.
Quali variabili d'ambiente sono disponibili negli hook?+
Gli hook ricevono contesto tramite variabili d'ambiente come $CLAUDE_FILE_PATH (il file in modifica), $CLAUDE_TOOL_NAME (lo strumento in uso) e $CLAUDE_SESSION_ID. Le variabili esatte dipendono dal tipo di evento.
Gli hook possono rallentare Claude Code?+
Si', se il comando dell'hook e' lento. Mantieni gli hook veloci (sotto 1 secondo). Evita hook che fanno richieste di rete o eseguono build pesanti. Usa il logging asincrono se hai bisogno di tracciare le azioni senza bloccare.
ALL POSTSSTART FREE COURSE →