Tech-Update / Abenteuer mit Claude Code #11

Hooks – wenn „bitte immer“ nicht reicht

In unserer CLAUDE.md steht: „Nach jeder Änderung bitte Prettier ausführen.“ Meistens klappt das. Meistens.

Das Problem: Die CLAUDE.md (Teil 4) ist eine Bitte. Claude liest sie, versteht sie und vergisst sie trotzdem gelegentlich, gerade in langen Sitzungen. Für Dinge, die immer passieren müssen, gibt es Hooks.

Ein Hook ist ein Shell-Befehl, den Claude Code an festen Punkten automatisch ausführt. Nicht das Modell entscheidet, sondern das Werkzeug.

⏱️ Die wichtigsten Zeitpunkte

  • PreToolUse: bevor Claude eine Datei schreibt oder einen Befehl ausführt. Kann blockieren.
  • PostToolUse: direkt danach. Ideal zum Formatieren und Linten.
  • Stop: wenn Claude meint, fertig zu sein.
  • Notification: wenn Claude auf Sie wartet. Perfekt für eine Desktop-Benachrichtigung.

🧹 Beispiel 1: Formatieren nach jeder Änderung

In .claude/settings.json:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"
          }
        ]
      }
    ]
  }
}

Der Hook bekommt die Details des Werkzeugaufrufs als JSON, jq holt den Dateinamen heraus. Ab jetzt ist jede Datei formatiert, ohne dass jemand daran denken muss.

🛑 Beispiel 2: Finger weg von der .env

Ein PreToolUse-Hook prüft den Dateinamen. Endet das Skript mit Exit-Code 2, wird der Aufruf blockiert, und Claude bekommt die Fehlermeldung als Begründung zurück:

#!/bin/bash
datei=$(jq -r '.tool_input.file_path // empty')
if [[ "$datei" == *".env"* ]]; then
  echo "Zugriff auf .env ist gesperrt." >&2
  exit 2
fi
exit 0

Ein ehrlicher Hinweis:

Hooks laufen mit Ihren Rechten und ohne Rückfrage. Lesen Sie fremde Hooks also so kritisch wie fremde Shell-Skripte. Und: Ein langsamer PostToolUse-Hook bremst jede einzelne Änderung. Lieber nur die geänderte Datei prüfen als das ganze Projekt.

Meine Faustregel:

  • Soll Claude es wissen? CLAUDE.md.
  • Muss es immer passieren? Hook.
  • Darf es nie passieren? Berechtigungen (Teil 7) plus PreToolUse-Hook als zweiter Gurt.

← Zur Übersicht