Claude Hooks

Erstellt: 2025-12-20 | Aktualisiert: 2025-12-27

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
Datenbankki_dev

Übersicht

HookTriggerFunktion
log_to_db.pyAlle EventsProtokollierung in DB
file_backup_hook.pyPreToolUse (Edit, Write)Datei-Backup vor Änderung
task_hook.pyUserPromptSubmitAuto-Task-Erstellung
task_completion_guard.pyPreToolUse (tasks_status)Blockiert Task-Completion ohne Result
block_direct_db.pyPreToolUse (Bash)Blockiert direkte DB-Zugriffe (mysql/mariadb)
architecture_guard.pyPreToolUse (Write)Prüft Architektur-Regeln
hook_dispatcher.pyPreToolUse, PostToolUseQuality-Gates Dispatcher

Prozess-Dokumentation: Claude Pre-/Post-Hook Prozess

log_to_db.py

Protokolliert alle Claude Code Events in der Datenbank.

Features

Verarbeitete Events

EventVerarbeitung
UserPromptSubmitPrompt speichern
PreToolUseTool-Name + Input speichern, pending
PostToolUseResponse zu PreToolUse matchen, completed
SessionStart/EndSession-Lifecycle loggen
Stop/SubagentStopAbschluss 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

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

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

Prüflogik

  1. Prüft ob status == "completed"
  2. DB-Query: SELECT COUNT(*) FROM task_results WHERE task_id = ?
  3. 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

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

Geprüfte Regeln

hook_dispatcher.py

Zentraler Dispatcher für Quality-Gates. Lädt Regeln dynamisch.

Trigger

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