Hook-Integration

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

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

Status: Der task_hook.py ist derzeit nicht aktiv. Er ist nicht in der Hook-Konfiguration registriert. Diese Dokumentation beschreibt die geplante Funktionalität.
Hook-Script/var/www/tools/ki-protokoll/claude-hook/task_hook.py
TriggerUserPromptSubmit (nicht aktiv)
StatusNicht aktiviert

Erkannte Patterns (geplant)

Bei Aktivierung würde der Hook folgende Patterns in User-Prompts erkennen und automatisch Tasks erstellen:

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 (bei Aktivierung)

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

Aktivierung

Um den Hook zu aktivieren, muss er in der Hook-Konfiguration registriert werden:

Datei: /root/.claude/settings.json oder .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
          }
        ]
      }
    ]
  }
}

Aktive Hooks (aktueller Stand)

Derzeit sind folgende Hooks für UserPromptSubmit aktiv:

HookFunktion
log_to_db.pyProtokolliert Prompts in Datenbank

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_dev'),
    '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 (falls gewünscht)

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.json registrieren

# Füge den task_hook.py zu den UserPromptSubmit Hooks hinzu (siehe oben)

4. Testen

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

# Prüfen ob Task erstellt wurde

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...

Zusammenspiel mit anderen Hooks

HookFunktionEventStatus
log_to_db.pyProtokolliert alle EventsAlleAktiv
block_direct_db.pyBlockiert mysql/mariadb CLIPreToolUse:BashAktiv
file_backup_hook.pyBackup vor DateiänderungenPreToolUse:Edit|WriteAktiv
task_hook.pyTasks aus Prompts erstellenUserPromptSubmitNicht aktiv

Änderungshistorie

DatumÄnderung
2025-12-31Klarstellung: Hook ist nicht aktiv, Aktivierungsanleitung hinzugefügt
2025-12-20Initial erstellt