Hook-Integration

Automatische Task-Erstellung aus Claude Code Prompts via Hook-System.

Hook-Script/var/www/tools/ki-protokoll/claude-hook/task_hook.py
TriggerUserPromptSubmit
Datenbankki_protokoll

Erkannte Patterns

Der Hook erkennt folgende Patterns in User-Prompts und erstellt automatisch Tasks:

PatternBeispielTask-Titel
TODO: <text>TODO: Tests schreibenTests schreiben
TASK: <text>TASK: API dokumentierenAPI dokumentieren
@task <text>@task RefactoringRefactoring
#task <text>#task Bug fixenBug fixen

Funktionsweise

User-Prompt: "Bitte TODO: Logging implementieren und den Code reviewen"
                    ↓
            Hook erkennt Pattern
                    ↓
        Task erstellt: "Logging implementieren"
                    ↓
            type: ai_task
            status: pending
            created_by: $USER
            created_by_type: ai

Hook-Konfiguration

Datei: /var/www/dev.campus.systemische-tools.de/.claude/settings.local.json

{
  "hooks": {
    "UserPromptSubmit": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "/var/www/tools/ki-protokoll/claude-hook/log_to_db.py",
            "timeout": 5
          },
          {
            "type": "command",
            "command": "/var/www/tools/ki-protokoll/claude-hook/task_hook.py",
            "timeout": 5
          }
        ]
      }
    ]
  }
}

Hook-Script

Konfiguration

# Datenbankverbindung - verwendet Umgebungsvariablen
DB_CONFIG = {
    'host': os.environ.get('CLAUDE_DB_HOST', 'localhost'),
    'port': int(os.environ.get('CLAUDE_DB_PORT', '3306')),
    'user': os.environ.get('CLAUDE_DB_USER', 'claude_code'),
    'password': os.environ.get('CLAUDE_DB_PASSWORD'),
    'database': os.environ.get('CLAUDE_DB_NAME', 'ki_protokoll'),
    'charset': 'utf8mb4'
}

# Erkennungsmuster
TASK_PATTERNS = [
    (r'TODO:\s*(.+?)(?:\n|$)', 'todo'),
    (r'TASK:\s*(.+?)(?:\n|$)', 'task'),
    (r'@task\s+(.+?)(?:\n|$)', 'mention'),
    (r'#task\s+(.+?)(?:\n|$)', 'hashtag'),
]

Erstellte Task-Eigenschaften

EigenschaftWert
typeai_task
statuspending
created_by$USER oder 'claude-code-hook'
created_by_typeai

Installation

1. Hook ausführbar machen

chmod +x /var/www/tools/ki-protokoll/claude-hook/task_hook.py

2. Python-Abhängigkeiten

pip3 install pymysql

3. Hook in settings.local.json registrieren

# Füge den task_hook.py zu den UserPromptSubmit Hooks hinzu

4. Testen

# In Claude Code eingeben:
"TODO: Test-Task erstellen"

# Prüfen:
php /var/www/tools/ki-tasks/cli.php list

Fehlerbehandlung

Der Hook ist non-blocking. Fehler werden zu stderr geloggt, aber der Claude Code Workflow wird nicht unterbrochen.

# Immer zurückgegeben:
{"continue": true}

Debugging

# Hook manuell testen
echo '{"hook_event_name":"UserPromptSubmit","prompt":"TODO: Test"}' | python3 /var/www/tools/ki-protokoll/claude-hook/task_hook.py

# Logs prüfen (stderr)
# Task #123 created: Test...

Erweiterungen

Eigene Patterns hinzufügen

# In task_hook.py
TASK_PATTERNS = [
    # ... bestehende Patterns ...
    (re.compile(r'FIXME:\s*(.+?)(?:\n|$)', re.IGNORECASE), 'fixme'),
    (re.compile(r'BUG:\s*(.+?)(?:\n|$)', re.IGNORECASE), 'bug'),
]

Zusammenspiel mit anderen Hooks

HookFunktionEvent
log_to_db.pyProtokolliert alle EventsAlle
file_backup_hook.pyBackup vor DateiänderungenPreToolUse (Edit, Write)
task_hook.pyTasks aus Prompts erstellenUserPromptSubmit