Ad Space (horizontal)
Advanced

Claude Code Hooks meistern: Auto-Formatierung, Auto-Tests und mehr

Erfahren Sie, wie Sie Auto-Formatierung und Auto-Tests mit Claude Code Hooks einrichten. Inklusive praktischer Konfigurationsbeispiele und realer Anwendungsfälle.

Was sind Hooks?

Mit Claude Code Hooks können Sie automatisch benutzerdefinierte Befehle vor oder nach bestimmten Aktionen ausführen. Sie können Auto-Formatierung nach dem Speichern von Dateien, automatische Tests nach Code-Änderungen und vieles mehr einrichten.

Hooks werden in .claude/settings.json definiert und führen Shell-Befehle aus, wenn Claude Code bestimmte Operationen durchführt.

Hook-Typen

Claude Code unterstützt Hooks an folgenden Ereignispunkten:

Hook-EreignisWann es ausgelöst wird
PreToolUseBevor ein Tool ausgeführt wird
PostToolUseNachdem ein Tool ausgeführt wurde
NotificationWenn eine Benachrichtigung gesendet wird
StopWenn Claude Code mit der Antwort fertig ist

Grundkonfiguration

Hooks werden im hooks-Feld von .claude/settings.json definiert:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "command": "npx prettier --write \"$CLAUDE_FILE_PATH\""
      }
    ]
  }
}

Konfigurationsstruktur

  • matcher: Ein Regex-Muster, das den Tool-Namen abgleicht, der den Hook auslöst
  • command: Der auszuführende Shell-Befehl

Anwendungsfall 1: Auto-Formatierung

Prettier nach jeder Dateibearbeitung automatisch ausführen:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "command": "npx prettier --write \"$CLAUDE_FILE_PATH\""
      }
    ]
  }
}

Mit dieser Konfiguration formatiert Prettier automatisch jede Datei, die Claude Code erstellt oder bearbeitet. Der Coding-Style Ihres Teams bleibt konsistent, ohne manuellen Aufwand.

Anwendungsfall 2: Auto-Linting

So integrieren Sie ESLint Auto-Fix:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "command": "npx eslint --fix \"$CLAUDE_FILE_PATH\" 2>/dev/null || true"
      }
    ]
  }
}

Das Suffix || true verhindert, dass Lint-Fehler den Hook zum Fehlschlagen bringen, sodass Claude Code weiterarbeiten kann.

Anwendungsfall 3: Automatische Tests bei Änderungen

Verwandte Tests nach Dateibearbeitungen automatisch ausführen und die Ergebnisse zurückmelden:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "command": "npx vitest related \"$CLAUDE_FILE_PATH\" --run 2>&1 | tail -20"
      }
    ]
  }
}

Die related-Option von Vitest führt nur die Tests aus, die für die geänderte Datei relevant sind, und liefert Ihnen deutlich schnelleres Feedback als eine vollständige Testsuite.

Anwendungsfall 4: Automatische Typprüfung

TypeScript-Typprüfung nach Dateiänderungen ausführen:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "command": "npx tsc --noEmit 2>&1 | head -30"
      }
    ]
  }
}

Anwendungsfall 5: Gefährliche Befehle blockieren

Ein PreToolUse-Hook, der die Ausführung riskanter Befehle verhindert:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "command": "if echo \"$CLAUDE_TOOL_INPUT\" | grep -qE 'rm -rf|drop table|git push.*force'; then echo 'BLOCKIERT: Gefährlicher Befehl erkannt' >&2; exit 1; fi"
      }
    ]
  }
}

Wenn der Hook mit Code 1 beendet wird, überspringt Claude Code die Tool-Ausführung vollständig.

Anwendungsfall 6: Fertigstellungsbenachrichtigungen

Eine Benachrichtigung senden, wenn Claude Code eine Aufgabe abgeschlossen hat:

{
  "hooks": {
    "Stop": [
      {
        "matcher": "",
        "command": "notify-send 'Claude Code' 'Aufgabe abgeschlossen' 2>/dev/null; echo 'Fertig'"
      }
    ]
  }
}

Auf macOS können Sie Folgendes verwenden:

{
  "hooks": {
    "Stop": [
      {
        "matcher": "",
        "command": "osascript -e 'display notification \"Aufgabe abgeschlossen\" with title \"Claude Code\"'"
      }
    ]
  }
}

Mehrere Hooks kombinieren

In realen Projekten ist die Kombination mehrerer Hooks am effektivsten:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "command": "if echo \"$CLAUDE_TOOL_INPUT\" | grep -qE 'rm -rf /'; then exit 1; fi"
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "command": "npx prettier --write \"$CLAUDE_FILE_PATH\" 2>/dev/null || true"
      },
      {
        "matcher": "Write|Edit",
        "command": "npx eslint --fix \"$CLAUDE_FILE_PATH\" 2>/dev/null || true"
      }
    ],
    "Stop": [
      {
        "matcher": "",
        "command": "echo '✓ Aufgabe abgeschlossen'"
      }
    ]
  }
}

Tipps zum Schreiben von Hooks

1. Halten Sie die Ausführungszeit kurz

Hooks werden synchron ausgeführt, daher verlangsamen aufwendige Operationen die Antworten von Claude Code. Verwenden Sie Optionen wie related, um den Testumfang einzugrenzen, und head oder tail, um die Ausgabe zu kürzen.

2. Fehler elegant behandeln

Ein Hook, der mit einem Fehler beendet wird, kann den Workflow von Claude Code stören. Verwenden Sie || true und 2>/dev/null, um auf der sicheren Seite zu bleiben.

3. Umgebungsvariablen nutzen

Nutzen Sie die in Hooks verfügbaren Umgebungsvariablen. $CLAUDE_FILE_PATH gibt Ihnen den Pfad der bearbeiteten Datei.

Fazit

Hooks ermöglichen es Ihnen, den Workflow von Claude Code stark anzupassen. Die Kombination aus Auto-Formatierung und Auto-Tests ist besonders wirkungsvoll für die Aufrechterhaltung der Code-Qualität. Beginnen Sie mit der Prettier-Auto-Formatierung und bauen Sie von dort aus weiter auf.

Ad Space (rectangle)
#Claude Code #hooks #automation #formatting #testing