Protokoll #32412

ID32412
Zeitstempel2026-02-04 16:25:09.395767
Clientroot
IP145.224.83.114
Modellclaude-sonnet-4-20250514
Statuscompleted
Tokens1,641 (Input: 23, Output: 1,618)
Dauer2923 ms
Request-Zeit2026-02-04 16:25:09.395767
Response-Zeit2026-02-04 16:25:12.319056

Request

{
    "event": "PreToolUse",
    "tool_name": "Read",
    "tool_input": {
        "file_path": "\/var\/www\/CLAUDE.md"
    }
}

Response

{
    "tool_response": {
        "type": "text",
        "file": {
            "filePath": "\/var\/www\/CLAUDE.md",
            "content": "```yaml\n# KERNPRINZIPIEN (BINDEND)\npriorities:\n  1: correctness    # Fehlerfreie, funktional korrekte Umsetzung\n  2: precision      # Exakte Erfüllung der Anforderung, keine Annahmen\n  3: factuality     # Nur verifizierte Aussagen, keine Spekulationen\n  4: efficiency     # Ressourcenschonung ist wünschenswert, aber nachrangig\n\nconstraints:\n  - Laufende Prozesse: Keine unaufgeforderten Alternativvorschläge\n  - Statusberichte: Ausschließlich Fakten, keine Handlungsempfehlungen\n  - Optimierung: Nur auf explizite Anfrage, nie proaktiv\n```\n\n# Server-Kontext\n\n## Projekt-Root\n`\/var\/www\/dev.campus.systemische-tools.de\/`\n\n## Architektur\n```\n\/src\/                    # Backend (MVC)\n├── Framework\/           # App, Router, Controller-Base\n├── Controller\/          # HTTP Controller\n├── Domain\/              # Entity, Repository-Interfaces\n├── UseCases\/            # Anwendungsfälle\n├── Infrastructure\/      # DB, External Services\n└── View\/                # Server-Templates\n\n\/app\/                    # Frontend (MVP)\n├── Presenter\/           # UI-Logik\n└── View\/                # Passive Views\n```\n\n## Datenbanken\n\n| DB | Zweck |\n|----|-------|\n| `ki_dev` | Infrastruktur: Tasks, Contracts, Docs, Pipeline, Logs |\n| `ki_content` | Content: Chat, Wissen, Entitäten, Taxonomie |\n\n## MCP-Server (Pflicht)\n\n### MCP-DB\nDatenbankzugriff. **Immer statt direkter SQL verwenden.**\n- `db_select(query, database)` - SELECT\n- `db_tables(database)` - Tabellen\n- `db_describe(table, database)` - Struktur\n- `db_insert\/update\/delete()` - Schreiboperationen\n- `db_execute()` - DDL (ALTER, CREATE, DROP)\n\n### MCP-Tasks\nTask-Management.\n- `tasks_list(compact=True)` - Auflisten\n- `tasks_create(title, type)` - Erstellen\n- `tasks_get(id)` - Details\n- `tasks_status(id, status)` - Status ändern\n- `quality_check(path)` - PHP-Prüfung\n\n### MCP-Contracts\nContract-Management.\n- `contracts_list(compact=True)` - Auflisten\n- `contracts_get(id|name)` - Details\n- `contracts_validate(id|name)` - Validieren\n- `contracts_create\/update()` - Ändern\n\n### MCP-Docs\nDokumentations-Management.\n- `docs_list(compact=True)` - Auflisten\n- `docs_get(id|path)` - Abrufen\n- `docs_search(query)` - Suchen\n- `docs_hierarchy()` - Baum\n- `docs_create\/update\/delete()` - Ändern\n\n### MCP-Code\nCode-Analyse. **Vor Refactoring\/Änderungen nutzen!**\n- `code_search(query)` - Klassen\/Interfaces\/Traits suchen\n- `code_class(fqcn)` - Klassen-Details inkl. Dependencies\n- `code_dependencies(fqcn)` - Was nutzt diese Klasse? (outgoing)\n- `code_dependents(fqcn)` - Wer nutzt diese Klasse? (incoming)\n- `code_impact(fqcn)` - Impact-Analyse vor Änderungen\n- `code_stats()` - Projekt-Statistiken\n\n## Scripts\n\n| Script | Zweck |\n|--------|-------|\n| `\/var\/www\/scripts\/php-check.sh` | PHPStan + CS-Fixer + Semgrep + Audit |\n| `\/var\/www\/scripts\/sync-dev-prod.sh` | Deploy dev → prod |\n| `\/var\/www\/scripts\/backup.sh` | Backup |\n\n## HTMX (Pflicht)\n\n**Alle interaktiven UI-Elemente müssen HTMX verwenden. Kein fetch(), kein XMLHttpRequest.**\n\n### Kritische Regeln (Pre-Hook blockiert)\n| Regel | Anforderung |\n|-------|-------------|\n| HTMX-C1 | `hx-post` MUSS `hx-headers` mit CSRF haben |\n| HTMX-C2 | `hx-delete` MUSS `hx-headers` mit CSRF haben |\n| HTMX-C3 | `hx-patch` MUSS `hx-headers` mit CSRF haben |\n| HTMX-C4 | `hx-delete` MUSS `hx-confirm` haben |\n| HTMX-C5 | `hx-put` MUSS `hx-headers` mit CSRF haben |\n\n### Standard-Pattern\n```php\n<button hx-post=\"\/api\/endpoint\"\n        hx-headers='{\"X-CSRF-TOKEN\": \"<?= $csrfToken ?>\"}'\n        hx-target=\"#result\"\n        hx-swap=\"innerHTML\"\n        hx-indicator=\"#spinner\"\n        hx-disabled-elt=\"this\">\n    Aktion\n<\/button>\n```\n\n### Controller-Methoden\n- `$this->htmxSuccess($msg)` - Erfolg-Alert\n- `$this->htmxError($msg)` - Fehler-Alert\n- `$this->htmxRedirect($url)` - Redirect via Header\n- `$this->requireCsrf()` - CSRF validieren\n\n### Dokumentation\nSiehe: `\/docs\/frontend\/htmx` (mcp-docs)\n\n## Constants (Pflicht)\n\n**Keine Magic Numbers! Immer benannte Konstanten verwenden.**\n\n### PHP\n```php\nuse Domain\\Constants;\n\n\/\/ RICHTIG:\n$limit = Constants::DEFAULT_LIMIT;\n$duration = $seconds * Constants::MS_PER_SECOND;\ntimeout: Constants::LLM_TIMEOUT\n\n\/\/ FALSCH (wird blockiert):\n$limit = 100;\n$duration = $seconds * 1000;\ntimeout: 60\n```\n\n### Python (Pipeline)\n```python\nfrom constants import DEFAULT_LIMIT, MS_PER_SECOND, OLLAMA_TIMEOUT\n\n# RICHTIG:\nlimit = DEFAULT_LIMIT\nduration_ms = seconds * MS_PER_SECOND\n\n# FALSCH:\nlimit = 100\nduration_ms = seconds * 1000\n```\n\n### Verfügbare Konstanten\n| Konstante | Wert | Verwendung |\n|-----------|------|------------|\n| `DEFAULT_LIMIT` | 100 | Standard DB-Limit |\n| `BATCH_LIMIT` | 1000 | Batch-Operationen |\n| `MS_PER_SECOND` | 1000 | Zeit-Konvertierung |\n| `SECONDS_PER_MINUTE` | 60 | Zeit-Berechnung |\n| `OLLAMA_TIMEOUT` | 60 | Ollama API Timeout |\n| `LLM_TIMEOUT` | 120 | LLM Request Timeout |\n\nDateien: `src\/Domain\/Constants.php`, `\/var\/www\/scripts\/pipeline\/constants.py`\n\n## Secrets (Pflicht)\n\n**NIEMALS Passwörter in Bash-Commands!** Pre-Hook blockiert.\n\n```bash\n# FALSCH (wird blockiert):\nDB_PASSWORD=\"xxx\" .\/venv\/bin\/python script.py\n\n# RICHTIG:\n.\/venv\/bin\/python script.py\n# Passwort wird aus \/etc\/environment geladen via get_db_password()\n```\n\n### Passwort-Zugriff\n```python\n# Python\nfrom config import get_db_password\npassword = get_db_password()\n\n# PHP\n$password = getenv('DB_PASSWORD');\n```\n\n### Blockierte Patterns\n- `DB_PASSWORD=\"wert\"` - Environment mit Wert\n- `MARIADB_ROOT_PASSWORD=\"wert\"`\n- `--password=wert`\n- `API_KEY=\"wert\"`, `TOKEN=\"wert\"`, `SECRET=\"wert\"`\n\nHook: `\/var\/www\/scripts\/hooks\/block_password_exposure.py`\n\n## Regeln\n\n1. **Kein Git** - Verboten auf diesem Server\n2. **MCP nutzen** - Kein direkter DB-Zugriff\n3. **Dev first** - Entwicklung auf dev, dann sync zu prod\n4. **Quality vor Sync** - `\/var\/www\/scripts\/php-check.sh` muss bestehen\n5. **Task-Pflicht** - Für jede Anforderung `tasks_create()` nutzen\n6. **HTMX-Pflicht** - Kein fetch()\/XHR, nur HTMX mit CSRF\n7. **Constants-Pflicht** - Keine Magic Numbers, immer `Constants::*` oder `constants.*`\n8. **Secrets-Pflicht** - Keine Passwörter in Commands, immer aus Environment laden\n",
            "numLines": 211,
            "startLine": 1,
            "totalLines": 211
        }
    }
}
← Vorheriger Zur Liste Nächster →