Claude Hooks
Python-Hooks für Claude Code Integration mit Protokollierung, Backup, Task-Erstellung, Workflow-Validierung und Architektur-Guards.
| Pfad | /var/www/tools/ki-protokoll/claude-hook/ |
|---|---|
| Konfiguration | /root/.claude/settings.json |
| Datenbank | ki_dev |
Übersicht
| Hook | Trigger | Funktion |
|---|---|---|
| log_to_db.py | Alle Events | Protokollierung in DB |
| file_backup_hook.py | PreToolUse (Edit, Write) | Datei-Backup vor Änderung |
| task_hook.py | UserPromptSubmit | Auto-Task-Erstellung |
| task_completion_guard.py | PreToolUse (tasks_status) | Blockiert Task-Completion ohne Result |
| block_direct_db.py | PreToolUse (Bash) | Blockiert direkte DB-Zugriffe (mysql/mariadb) |
| architecture_guard.py | PreToolUse (Write) | Prüft Architektur-Regeln |
| hook_dispatcher.py | PreToolUse, PostToolUse | Quality-Gates Dispatcher |
Prozess-Dokumentation: Claude Pre-/Post-Hook Prozess
log_to_db.py
Protokolliert alle Claude Code Events in der Datenbank.
Features
- Request/Response-Pairing: PreToolUse → PostToolUse werden verknüpft
- Duration-Tracking: Millisekunden-genaue Zeiterfassung
- Token-Schätzung: ~4 Zeichen = 1 Token
- Sensible Daten: Automatische Maskierung (Passwörter, API-Keys, JWTs)
- Session-Tracking: Temporäre Dateien in /tmp/claude_hooks/
Verarbeitete Events
| Event | Verarbeitung |
|---|---|
| UserPromptSubmit | Prompt speichern |
| PreToolUse | Tool-Name + Input speichern, pending |
| PostToolUse | Response zu PreToolUse matchen, completed |
| SessionStart/End | Session-Lifecycle loggen |
| Stop/SubagentStop | Abschluss loggen |
Datenbank-Tabelle
ki_dev.protokoll
├── id, timestamp
├── request_ip, client_name
├── request, request_timestamp
├── response, response_timestamp
├── duration_ms
├── tokens_input, tokens_output, tokens_total
├── model_name, status
file_backup_hook.py
Sichert Dateien automatisch BEVOR sie geändert werden.
Trigger
- PreToolUse → Edit
- PreToolUse → Write
Backup-Verzeichnisse
/var/www/dev.campus.systemische-tools.de/src
/var/www/dev.campus.systemische-tools.de/public
/var/www/dev.campus.systemische-tools.de/scripts
/var/www/dev.campus.systemische-tools.de/config
/var/www/prod.campus.systemische-tools.de/src
...
Features
- Versionierung: Automatische Version pro Datei
- Hash-Prüfung: Skip bei unveränderter Datei
- Größenlimit: Max 10 MB pro Datei
- Non-Blocking: Hook blockiert nie
Datenbank-Tabelle
ki_dev.file_backup_history
├── id, file_path, version
├── file_content, content_hash, file_size
├── change_type, changed_by, reason
├── created_at
task_hook.py
Erstellt automatisch Tasks aus Patterns in User-Prompts.
Erkannte Patterns
TODO: <text> → Task erstellen
TASK: <text> → Task erstellen
@task <text> → Task erstellen
#task <text> → Task erstellen
task_completion_guard.py
Blockiert tasks_status(completed) wenn kein Result existiert. Erzwingt korrekten Workflow.
Trigger
- PreToolUse → mcp__mcp-tasks__tasks_status
- Nur bei status="completed"
Prüflogik
- Prüft ob
status == "completed" - DB-Query:
SELECT COUNT(*) FROM task_results WHERE task_id = ? - Wenn count = 0 → Block mit Exit-Code 2
Details: Task-Completion Guard Prozess
block_direct_db.py
Blockiert direkte Datenbank-Zugriffe via Bash. Erzwingt Nutzung von MCP-DB.
Trigger
- PreToolUse → Bash
- Prüft Command auf mysql/mariadb-Patterns
Blockierte Patterns
mysql ...
mariadb ...
sudo mysql ...
sudo mariadb ...
Erlaubt
MCP-Tools: mcp__mcp-db__db_select, mcp__mcp-db__db_insert, etc.
architecture_guard.py
Prüft Architektur-Regeln bei PHP-Datei-Erstellung.
Trigger
- PreToolUse → Write (*.php)
Geprüfte Regeln
- Layer-Grenzen (Controller darf nicht direkt auf Repository zugreifen)
- Namespace-Konventionen
- Dependency Injection Patterns
hook_dispatcher.py
Zentraler Dispatcher für Quality-Gates. Lädt Regeln dynamisch.
Trigger
- PreToolUse → Write (BLOCK-Regeln)
- PostToolUse → Write, Edit (WARN-Regeln)
Quality-Regeln
quality/
├── pre_rules.py ← BLOCK-Regeln
├── post_rules.py ← WARN-Regeln
└── task_creator.py ← Violations → Tasks
Details: Quality Gates
Konfiguration
Hooks werden in /root/.claude/settings.json registriert:
{
"hooks": {
"UserPromptSubmit": [...],
"PreToolUse": [
{"matcher": "Bash", "hooks": [...]},
{"matcher": "mcp__mcp-tasks__tasks_status", "hooks": [
{"type": "command", "command": ".../task_completion_guard.py", "timeout": 5}
]},
{"matcher": "Edit|Write", "hooks": [...]},
{"matcher": "", "hooks": [...]}
],
"PostToolUse": [...]
}
}
Environment-Variablen
In .env im Hook-Verzeichnis:
CLAUDE_DB_HOST=localhost
CLAUDE_DB_PORT=3306
CLAUDE_DB_USER=root
CLAUDE_DB_PASSWORD=***
CLAUDE_DB_NAME=ki_dev
Verwandte Themen
- Claude Hooks Prozess - Ablaufdiagramme und Workflow
- Quality Gates - Code-Qualitätsprüfung
- File Backup Hook - Detaillierte Backup-Dokumentation