{
"event": "PreToolUse",
"tool_name": "mcp__mcp-docs__docs_create",
"tool_input": {
"title": "Regeln",
"slug": "regeln",
"parent_id": 55,
"description": "Verbindliche Entwicklungs- und Betriebsregeln für das Campus-System",
"content": "<nav class=\"breadcrumb\">\n <a href=\"\/docs\">Dokumentation<\/a> » <a href=\"\/docs\/betrieb\">Betrieb<\/a> » Regeln\n<\/nav>\n\n<h1>Regeln<\/h1>\n<p>Verbindliche Entwicklungs- und Betriebsregeln für das Campus-System. Diese Regeln werden durch Hooks und Quality-Gates durchgesetzt.<\/p>\n\n<h2>1. Kein Git<\/h2>\n<table>\n <tr><th>Regel<\/th><td>Git ist auf diesem Server verboten<\/td><\/tr>\n <tr><th>Grund<\/th><td>File-Backup via Hooks ersetzt Versionierung<\/td><\/tr>\n <tr><th>Alternative<\/th><td>file_backup_hook.py sichert jede Änderung automatisch<\/td><\/tr>\n<\/table>\n\n<h2>2. MCP nutzen<\/h2>\n<table>\n <tr><th>Regel<\/th><td>Kein direkter Datenbankzugriff via mysql\/mariadb CLI<\/td><\/tr>\n <tr><th>Grund<\/th><td>Validierung, Logging, Security durch MCP<\/td><\/tr>\n <tr><th>Durchsetzung<\/th><td>block_direct_db.py Hook blockiert CLI-Zugriffe<\/td><\/tr>\n<\/table>\n\n<h3>Statt:<\/h3>\n<pre><code>mysql -u root -p ki_dev -e \"SELECT * FROM tasks\"<\/code><\/pre>\n\n<h3>Verwende:<\/h3>\n<pre><code>mcp__mcp-db__db_select(\"SELECT * FROM tasks\", database=\"ki_dev\")<\/code><\/pre>\n\n<h3>Verfügbare MCP-Server<\/h3>\n<table>\n <tr><th>Server<\/th><th>Zweck<\/th><th>Wichtige Tools<\/th><\/tr>\n <tr><td>MCP-DB<\/td><td>Datenbankzugriff<\/td><td>db_select, db_insert, db_update, db_delete<\/td><\/tr>\n <tr><td>MCP-Tasks<\/td><td>Task-Management<\/td><td>tasks_create, tasks_status, tasks_result<\/td><\/tr>\n <tr><td>MCP-Contracts<\/td><td>Contract-Validierung<\/td><td>contracts_validate, contracts_list<\/td><\/tr>\n <tr><td>MCP-Docs<\/td><td>Dokumentation<\/td><td>docs_get, docs_search, docs_update<\/td><\/tr>\n <tr><td>MCP-Code<\/td><td>Code-Analyse<\/td><td>code_search, code_impact, code_dependents<\/td><\/tr>\n<\/table>\n\n<h2>3. Dev first<\/h2>\n<table>\n <tr><th>Regel<\/th><td>Entwicklung immer auf dev.campus.systemische-tools.de<\/td><\/tr>\n <tr><th>Grund<\/th><td>Keine Risiken für Produktion<\/td><\/tr>\n <tr><th>Workflow<\/th><td>dev → Testen → sync-dev-prod.sh → prod<\/td><\/tr>\n<\/table>\n\n<h3>Umgebungen<\/h3>\n<table>\n <tr><th>Umgebung<\/th><th>URL<\/th><th>Pfad<\/th><\/tr>\n <tr><td>Development<\/td><td>dev.campus.systemische-tools.de<\/td><td>\/var\/www\/dev.campus.systemische-tools.de\/<\/td><\/tr>\n <tr><td>Production<\/td><td>campus.systemische-tools.de<\/td><td>\/var\/www\/prod.campus.systemische-tools.de\/<\/td><\/tr>\n<\/table>\n\n<h2>4. Quality vor Sync<\/h2>\n<table>\n <tr><th>Regel<\/th><td>\/var\/www\/scripts\/php-check.sh muss bestehen<\/td><\/tr>\n <tr><th>Grund<\/th><td>Keine Fehler in Produktion<\/td><\/tr>\n <tr><th>Durchsetzung<\/th><td>sync-dev-prod.sh bricht bei Fehlern ab<\/td><\/tr>\n<\/table>\n\n<h3>Quality-Checks<\/h3>\n<ul>\n <li><strong>PHPStan:<\/strong> Typen, Null-Safety, Bugs<\/li>\n <li><strong>PHP-CS-Fixer:<\/strong> PSR-12 Code Style<\/li>\n <li><strong>Composer Audit:<\/strong> Dependency CVEs<\/li>\n <li><strong>Semgrep:<\/strong> OWASP Security<\/li>\n <li><strong>Contracts:<\/strong> Architecture + View-Struktur<\/li>\n<\/ul>\n\n<h3>Manuell prüfen<\/h3>\n<pre><code>\/var\/www\/scripts\/php-check.sh \/var\/www\/dev.campus.systemische-tools.de<\/code><\/pre>\n\n<h2>5. Task-Pflicht<\/h2>\n<table>\n <tr><th>Regel<\/th><td>Für jede Anforderung tasks_create() nutzen<\/td><\/tr>\n <tr><th>Grund<\/th><td>Nachvollziehbarkeit, Protokollierung<\/td><\/tr>\n <tr><th>Durchsetzung<\/th><td>task_completion_guard.py prüft Result vor Completion<\/td><\/tr>\n<\/table>\n\n<h3>Workflow<\/h3>\n<pre><code># 1. Task erstellen\ntasks_create(title=\"Feature X implementieren\", type=\"ai_task\")\n\n# 2. Status setzen\ntasks_status(id=123, status=\"in_progress\")\n\n# 3. Arbeit dokumentieren\ntasks_result(id=123, response=\"...\", executor=\"claude\", executor_type=\"claude\")\n\n# 4. Abschließen\ntasks_status(id=123, status=\"completed\")<\/code><\/pre>\n\n<h2>6. Layer-Grenzen<\/h2>\n<table>\n <tr><th>Regel<\/th><td>Controller → UseCase → Repository (nie direkt)<\/td><\/tr>\n <tr><th>Grund<\/th><td>Clean Architecture, Testbarkeit<\/td><\/tr>\n <tr><th>Durchsetzung<\/th><td>architecture_guard.py + Quality-Gates<\/td><\/tr>\n<\/table>\n\n<h3>Erlaubt<\/h3>\n<pre><code>\/\/ Controller → UseCase → Repository\n$this->createTaskUseCase->execute($data);<\/code><\/pre>\n\n<h3>Verboten<\/h3>\n<pre><code>\/\/ Controller → Repository direkt\n$this->taskRepository->save($task);<\/code><\/pre>\n\n<h2>7. HTMX statt fetch()<\/h2>\n<table>\n <tr><th>Regel<\/th><td>Frontend-Interaktionen via HTMX Attribute<\/td><\/tr>\n <tr><th>Grund<\/th><td>Server-Rendering, weniger JavaScript<\/td><\/tr>\n <tr><th>Dokumentation<\/th><td><a href=\"\/docs\/frontend\/htmx\">HTMX Patterns<\/a><\/td><\/tr>\n<\/table>\n\n<h3>Beispiel<\/h3>\n<pre><code><button hx-post=\"\/tasks\/123\/complete\"\n hx-headers='{\"X-CSRF-TOKEN\": \"...\"}'\n hx-confirm=\"Wirklich abschließen?\">\n Abschließen\n<\/button><\/code><\/pre>\n\n<h2>Zusammenfassung<\/h2>\n<table>\n <tr><th>#<\/th><th>Regel<\/th><th>Durchsetzung<\/th><\/tr>\n <tr><td>1<\/td><td>Kein Git<\/td><td>file_backup_hook.py<\/td><\/tr>\n <tr><td>2<\/td><td>MCP nutzen<\/td><td>block_direct_db.py<\/td><\/tr>\n <tr><td>3<\/td><td>Dev first<\/td><td>sync-dev-prod.sh<\/td><\/tr>\n <tr><td>4<\/td><td>Quality vor Sync<\/td><td>php-check.sh + contracts<\/td><\/tr>\n <tr><td>5<\/td><td>Task-Pflicht<\/td><td>task_completion_guard.py<\/td><\/tr>\n <tr><td>6<\/td><td>Layer-Grenzen<\/td><td>architecture_guard.py<\/td><\/tr>\n <tr><td>7<\/td><td>HTMX statt fetch()<\/td><td>Quality-Gates<\/td><\/tr>\n<\/table>\n\n<h2>Verwandte Themen<\/h2>\n<ul>\n <li><a href=\"\/docs\/betrieb\/architektur\">Architektur<\/a> - System-Architektur<\/li>\n <li><a href=\"\/docs\/betrieb\/claude-hooks\">Claude Hooks<\/a> - Hook-System<\/li>\n <li><a href=\"\/docs\/betrieb\/deployment\">Deployment<\/a> - Sync-Prozess<\/li>\n <li><a href=\"\/docs\/prozesse\/quality-gates\">Quality Gates<\/a> - Code-Qualität<\/li>\n<\/ul>",
"status": "published",
"sort_order": 11
}
}
{
"tool_response": [
{
"type": "text",
"text": "{\n \"success\": true,\n \"doc\": {\n \"id\": 149,\n \"parent_id\": 55,\n \"slug\": \"regeln\",\n \"path\": \"\/betrieb\/regeln\",\n \"title\": \"Regeln\",\n \"description\": \"Verbindliche Entwicklungs- und Betriebsregeln für das Campus-System\",\n \"content\": \"<nav class=\\\"breadcrumb\\\">\\n <a href=\\\"\/docs\\\">Dokumentation<\/a> » <a href=\\\"\/docs\/betrieb\\\">Betrieb<\/a> » Regeln\\n<\/nav>\\n\\n<h1>Regeln<\/h1>\\n<p>Verbindliche Entwicklungs- und Betriebsregeln für das Campus-System. Diese Regeln werden durch Hooks und Quality-Gates durchgesetzt.<\/p>\\n\\n<h2>1. Kein Git<\/h2>\\n<table>\\n <tr><th>Regel<\/th><td>Git ist auf diesem Server verboten<\/td><\/tr>\\n <tr><th>Grund<\/th><td>File-Backup via Hooks ersetzt Versionierung<\/td><\/tr>\\n <tr><th>Alternative<\/th><td>file_backup_hook.py sichert jede Änderung automatisch<\/td><\/tr>\\n<\/table>\\n\\n<h2>2. MCP nutzen<\/h2>\\n<table>\\n <tr><th>Regel<\/th><td>Kein direkter Datenbankzugriff via mysql\/mariadb CLI<\/td><\/tr>\\n <tr><th>Grund<\/th><td>Validierung, Logging, Security durch MCP<\/td><\/tr>\\n <tr><th>Durchsetzung<\/th><td>block_direct_db.py Hook blockiert CLI-Zugriffe<\/td><\/tr>\\n<\/table>\\n\\n<h3>Statt:<\/h3>\\n<pre><code>mysql -u root -p ki_dev -e \\\"SELECT * FROM tasks\\\"<\/code><\/pre>\\n\\n<h3>Verwende:<\/h3>\\n<pre><code>mcp__mcp-db__db_select(\\\"SELECT * FROM tasks\\\", database=\\\"ki_dev\\\")<\/code><\/pre>\\n\\n<h3>Verfügbare MCP-Server<\/h3>\\n<table>\\n <tr><th>Server<\/th><th>Zweck<\/th><th>Wichtige Tools<\/th><\/tr>\\n <tr><td>MCP-DB<\/td><td>Datenbankzugriff<\/td><td>db_select, db_insert, db_update, db_delete<\/td><\/tr>\\n <tr><td>MCP-Tasks<\/td><td>Task-Management<\/td><td>tasks_create, tasks_status, tasks_result<\/td><\/tr>\\n <tr><td>MCP-Contracts<\/td><td>Contract-Validierung<\/td><td>contracts_validate, contracts_list<\/td><\/tr>\\n <tr><td>MCP-Docs<\/td><td>Dokumentation<\/td><td>docs_get, docs_search, docs_update<\/td><\/tr>\\n <tr><td>MCP-Code<\/td><td>Code-Analyse<\/td><td>code_search, code_impact, code_dependents<\/td><\/tr>\\n<\/table>\\n\\n<h2>3. Dev first<\/h2>\\n<table>\\n <tr><th>Regel<\/th><td>Entwicklung immer auf dev.campus.systemische-tools.de<\/td><\/tr>\\n <tr><th>Grund<\/th><td>Keine Risiken für Produktion<\/td><\/tr>\\n <tr><th>Workflow<\/th><td>dev → Testen → sync-dev-prod.sh → prod<\/td><\/tr>\\n<\/table>\\n\\n<h3>Umgebungen<\/h3>\\n<table>\\n <tr><th>Umgebung<\/th><th>URL<\/th><th>Pfad<\/th><\/tr>\\n <tr><td>Development<\/td><td>dev.campus.systemische-tools.de<\/td><td>\/var\/www\/dev.campus.systemische-tools.de\/<\/td><\/tr>\\n <tr><td>Production<\/td><td>campus.systemische-tools.de<\/td><td>\/var\/www\/prod.campus.systemische-tools.de\/<\/td><\/tr>\\n<\/table>\\n\\n<h2>4. Quality vor Sync<\/h2>\\n<table>\\n <tr><th>Regel<\/th><td>\/var\/www\/scripts\/php-check.sh muss bestehen<\/td><\/tr>\\n <tr><th>Grund<\/th><td>Keine Fehler in Produktion<\/td><\/tr>\\n <tr><th>Durchsetzung<\/th><td>sync-dev-prod.sh bricht bei Fehlern ab<\/td><\/tr>\\n<\/table>\\n\\n<h3>Quality-Checks<\/h3>\\n<ul>\\n <li><strong>PHPStan:<\/strong> Typen, Null-Safety, Bugs<\/li>\\n <li><strong>PHP-CS-Fixer:<\/strong> PSR-12 Code Style<\/li>\\n <li><strong>Composer Audit:<\/strong> Dependency CVEs<\/li>\\n <li><strong>Semgrep:<\/strong> OWASP Security<\/li>\\n <li><strong>Contracts:<\/strong> Architecture + View-Struktur<\/li>\\n<\/ul>\\n\\n<h3>Manuell prüfen<\/h3>\\n<pre><code>\/var\/www\/scripts\/php-check.sh \/var\/www\/dev.campus.systemische-tools.de<\/code><\/pre>\\n\\n<h2>5. Task-Pflicht<\/h2>\\n<table>\\n <tr><th>Regel<\/th><td>Für jede Anforderung tasks_create() nutzen<\/td><\/tr>\\n <tr><th>Grund<\/th><td>Nachvollziehbarkeit, Protokollierung<\/td><\/tr>\\n <tr><th>Durchsetzung<\/th><td>task_completion_guard.py prüft Result vor Completion<\/td><\/tr>\\n<\/table>\\n\\n<h3>Workflow<\/h3>\\n<pre><code># 1. Task erstellen\\ntasks_create(title=\\\"Feature X implementieren\\\", type=\\\"ai_task\\\")\\n\\n# 2. Status setzen\\ntasks_status(id=123, status=\\\"in_progress\\\")\\n\\n# 3. Arbeit dokumentieren\\ntasks_result(id=123, response=\\\"...\\\", executor=\\\"claude\\\", executor_type=\\\"claude\\\")\\n\\n# 4. Abschließen\\ntasks_status(id=123, status=\\\"completed\\\")<\/code><\/pre>\\n\\n<h2>6. Layer-Grenzen<\/h2>\\n<table>\\n <tr><th>Regel<\/th><td>Controller → UseCase → Repository (nie direkt)<\/td><\/tr>\\n <tr><th>Grund<\/th><td>Clean Architecture, Testbarkeit<\/td><\/tr>\\n <tr><th>Durchsetzung<\/th><td>architecture_guard.py + Quality-Gates<\/td><\/tr>\\n<\/table>\\n\\n<h3>Erlaubt<\/h3>\\n<pre><code>\/\/ Controller → UseCase → Repository\\n$this->createTaskUseCase->execute($data);<\/code><\/pre>\\n\\n<h3>Verboten<\/h3>\\n<pre><code>\/\/ Controller → Repository direkt\\n$this->taskRepository->save($task);<\/code><\/pre>\\n\\n<h2>7. HTMX statt fetch()<\/h2>\\n<table>\\n <tr><th>Regel<\/th><td>Frontend-Interaktionen via HTMX Attribute<\/td><\/tr>\\n <tr><th>Grund<\/th><td>Server-Rendering, weniger JavaScript<\/td><\/tr>\\n <tr><th>Dokumentation<\/th><td><a href=\\\"\/docs\/frontend\/htmx\\\">HTMX Patterns<\/a><\/td><\/tr>\\n<\/table>\\n\\n<h3>Beispiel<\/h3>\\n<pre><code><button hx-post=\\\"\/tasks\/123\/complete\\\"\\n hx-headers='{\\\"X-CSRF-TOKEN\\\": \\\"...\\\"}'\\n hx-confirm=\\\"Wirklich abschließen?\\\">\\n Abschließen\\n<\/button><\/code><\/pre>\\n\\n<h2>Zusammenfassung<\/h2>\\n<table>\\n <tr><th>#<\/th><th>Regel<\/th><th>Durchsetzung<\/th><\/tr>\\n <tr><td>1<\/td><td>Kein Git<\/td><td>file_backup_hook.py<\/td><\/tr>\\n <tr><td>2<\/td><td>MCP nutzen<\/td><td>block_direct_db.py<\/td><\/tr>\\n <tr><td>3<\/td><td>Dev first<\/td><td>sync-dev-prod.sh<\/td><\/tr>\\n <tr><td>4<\/td><td>Quality vor Sync<\/td><td>php-check.sh + contracts<\/td><\/tr>\\n <tr><td>5<\/td><td>Task-Pflicht<\/td><td>task_completion_guard.py<\/td><\/tr>\\n <tr><td>6<\/td><td>Layer-Grenzen<\/td><td>architecture_guard.py<\/td><\/tr>\\n <tr><td>7<\/td><td>HTMX statt fetch()<\/td><td>Quality-Gates<\/td><\/tr>\\n<\/table>\\n\\n<h2>Verwandte Themen<\/h2>\\n<ul>\\n <li><a href=\\\"\/docs\/betrieb\/architektur\\\">Architektur<\/a> - System-Architektur<\/li>\\n <li><a href=\\\"\/docs\/betrieb\/claude-hooks\\\">Claude Hooks<\/a> - Hook-System<\/li>\\n <li><a href=\\\"\/docs\/betrieb\/deployment\\\">Deployment<\/a> - Sync-Prozess<\/li>\\n <li><a href=\\\"\/docs\/prozesse\/quality-gates\\\">Quality Gates<\/a> - Code-Qualität<\/li>\\n<\/ul>\",\n \"status\": \"published\",\n \"sort_order\": 11,\n \"depth\": 1,\n \"created_at\": \"2025-12-27T15:37:32\",\n \"updated_at\": \"2025-12-27T15:37:32\"\n },\n \"message\": \"Document 'Regeln' created with ID 149\"\n}"
}
]
}