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-Ereignis | Wann es ausgelöst wird |
|---|---|
PreToolUse | Bevor ein Tool ausgeführt wird |
PostToolUse | Nachdem ein Tool ausgeführt wurde |
Notification | Wenn eine Benachrichtigung gesendet wird |
Stop | Wenn 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.