{
"event": "PreToolUse",
"tool_name": "mcp__mcp-docs__docs_create",
"tool_input": {
"title": "Hook-Scripts",
"slug": "hook-scripts",
"parent_id": 92,
"description": "Übersicht aller Hook-Scripts",
"content": "<h2>Hook-Scripts<\/h2>\n\n<p>Übersicht aller Scripts, die im Hook-System verwendet werden.<\/p>\n\n<h3>Hauptverzeichnisse<\/h3>\n<table>\n <thead>\n <tr>\n <th>Pfad<\/th>\n <th>Zweck<\/th>\n <\/tr>\n <\/thead>\n <tbody>\n <tr>\n <td><code>\/var\/www\/tools\/ki-protokoll\/claude-hook\/<\/code><\/td>\n <td>Protokollierung und Backup<\/td>\n <\/tr>\n <tr>\n <td><code>\/opt\/scripts\/hooks\/<\/code><\/td>\n <td>Sicherheits-Blocker<\/td>\n <\/tr>\n <tr>\n <td><code>\/opt\/scripts\/<\/code><\/td>\n <td>Utility-Scripts<\/td>\n <\/tr>\n <\/tbody>\n<\/table>\n\n<h3>Script-Übersicht<\/h3>\n\n<h4>log_to_db.py<\/h4>\n<table>\n <tr><th>Pfad<\/th><td><code>\/var\/www\/tools\/ki-protokoll\/claude-hook\/log_to_db.py<\/code><\/td><\/tr>\n <tr><th>Events<\/th><td>UserPromptSubmit, PreToolUse, PostToolUse, Stop, SessionStart, SessionEnd<\/td><\/tr>\n <tr><th>Datenbank<\/th><td><code>ki_dev.protokoll<\/code><\/td><\/tr>\n <tr><th>Funktion<\/th><td>\n <ul>\n <li>Protokolliert alle Claude Code Events<\/li>\n <li>Request\/Response-Pairing mit Duration<\/li>\n <li>Token-Schätzung (4 Zeichen = 1 Token)<\/li>\n <li>Sensitive Daten werden redacted<\/li>\n <\/ul>\n <\/td><\/tr>\n<\/table>\n\n<h4>file_backup_hook.py<\/h4>\n<table>\n <tr><th>Pfad<\/th><td><code>\/var\/www\/tools\/ki-protokoll\/claude-hook\/file_backup_hook.py<\/code><\/td><\/tr>\n <tr><th>Events<\/th><td>PreToolUse (Edit, Write)<\/td><\/tr>\n <tr><th>Datenbank<\/th><td><code>ki_dev.file_backup_history<\/code><\/td><\/tr>\n <tr><th>Funktion<\/th><td>\n <ul>\n <li>Sichert Datei-Inhalt vor Änderung<\/li>\n <li>Versionierung pro Datei<\/li>\n <li>Hash-basierte Duplikat-Erkennung<\/li>\n <li>Max. 10 MB pro Datei<\/li>\n <\/ul>\n <\/td><\/tr>\n<\/table>\n\n<h4>block_direct_db.py<\/h4>\n<table>\n <tr><th>Pfad<\/th><td><code>\/opt\/scripts\/hooks\/block_direct_db.py<\/code><\/td><\/tr>\n <tr><th>Events<\/th><td>PreToolUse (Bash)<\/td><\/tr>\n <tr><th>Funktion<\/th><td>\n <ul>\n <li>Blockiert direkte MySQL\/MariaDB-Zugriffe<\/li>\n <li>Patterns: <code>mysql -p<\/code>, <code>--password=<\/code><\/li>\n <li>Empfiehlt: MCP-DB Tools<\/li>\n <\/ul>\n <\/td><\/tr>\n<\/table>\n\n<h4>block_direct_task_db.py<\/h4>\n<table>\n <tr><th>Pfad<\/th><td><code>\/opt\/scripts\/hooks\/block_direct_task_db.py<\/code><\/td><\/tr>\n <tr><th>Events<\/th><td>PreToolUse (Bash)<\/td><\/tr>\n <tr><th>Funktion<\/th><td>\n <ul>\n <li>Blockiert SQL auf Task-Tabellen<\/li>\n <li>Patterns: INSERT\/UPDATE\/DELETE auf tasks, task_*<\/li>\n <li>Empfiehlt: MCP-Tasks Tools<\/li>\n <\/ul>\n <\/td><\/tr>\n<\/table>\n\n<h4>fix-permissions.sh<\/h4>\n<table>\n <tr><th>Pfad<\/th><td><code>\/opt\/scripts\/fix-permissions.sh<\/code><\/td><\/tr>\n <tr><th>Events<\/th><td>PostToolUse (Edit, Write)<\/td><\/tr>\n <tr><th>Funktion<\/th><td>\n <ul>\n <li>Setzt Owner auf www-data:www-data<\/li>\n <li>Setzt Permissions auf 755<\/li>\n <li>Für dev und prod Verzeichnisse<\/li>\n <\/ul>\n <\/td><\/tr>\n<\/table>\n\n<h3>Hook-Konfiguration<\/h3>\n<p>Die Hooks werden in <code>\/root\/.claude\/settings.json<\/code> definiert:<\/p>\n\n<pre>\n{\n \"hooks\": {\n \"PreToolUse\": [\n {\n \"matcher\": \"Bash\",\n \"hooks\": [\n {\"type\": \"command\", \"command\": \"\/opt\/scripts\/hooks\/block_direct_db.py\"},\n {\"type\": \"command\", \"command\": \"\/opt\/scripts\/hooks\/block_direct_task_db.py\"}\n ]\n },\n {\n \"matcher\": \"Edit|Write\",\n \"hooks\": [\n {\"type\": \"command\", \"command\": \"...\/file_backup_hook.py\", \"timeout\": 10}\n ]\n },\n {\n \"matcher\": \"\",\n \"hooks\": [\n {\"type\": \"command\", \"command\": \"...\/log_to_db.py\", \"timeout\": 5}\n ]\n }\n ],\n \"PostToolUse\": [\n {\n \"matcher\": \"Write|Edit\",\n \"hooks\": [\n {\"type\": \"command\", \"command\": \"\/opt\/scripts\/fix-permissions.sh\"}\n ]\n },\n {\n \"matcher\": \"\",\n \"hooks\": [\n {\"type\": \"command\", \"command\": \"...\/log_to_db.py\", \"timeout\": 10}\n ]\n }\n ]\n }\n}\n<\/pre>",
"status": "published",
"sort_order": 3
}
}
{
"tool_response": [
{
"type": "text",
"text": "{\n \"success\": true,\n \"doc\": {\n \"id\": 95,\n \"parent_id\": 92,\n \"slug\": \"hook-scripts\",\n \"path\": \"\/prozesse\/claude-hooks-prozess\/hook-scripts\",\n \"title\": \"Hook-Scripts\",\n \"description\": \"Übersicht aller Hook-Scripts\",\n \"content\": \"<h2>Hook-Scripts<\/h2>\\n\\n<p>Übersicht aller Scripts, die im Hook-System verwendet werden.<\/p>\\n\\n<h3>Hauptverzeichnisse<\/h3>\\n<table>\\n <thead>\\n <tr>\\n <th>Pfad<\/th>\\n <th>Zweck<\/th>\\n <\/tr>\\n <\/thead>\\n <tbody>\\n <tr>\\n <td><code>\/var\/www\/tools\/ki-protokoll\/claude-hook\/<\/code><\/td>\\n <td>Protokollierung und Backup<\/td>\\n <\/tr>\\n <tr>\\n <td><code>\/opt\/scripts\/hooks\/<\/code><\/td>\\n <td>Sicherheits-Blocker<\/td>\\n <\/tr>\\n <tr>\\n <td><code>\/opt\/scripts\/<\/code><\/td>\\n <td>Utility-Scripts<\/td>\\n <\/tr>\\n <\/tbody>\\n<\/table>\\n\\n<h3>Script-Übersicht<\/h3>\\n\\n<h4>log_to_db.py<\/h4>\\n<table>\\n <tr><th>Pfad<\/th><td><code>\/var\/www\/tools\/ki-protokoll\/claude-hook\/log_to_db.py<\/code><\/td><\/tr>\\n <tr><th>Events<\/th><td>UserPromptSubmit, PreToolUse, PostToolUse, Stop, SessionStart, SessionEnd<\/td><\/tr>\\n <tr><th>Datenbank<\/th><td><code>ki_dev.protokoll<\/code><\/td><\/tr>\\n <tr><th>Funktion<\/th><td>\\n <ul>\\n <li>Protokolliert alle Claude Code Events<\/li>\\n <li>Request\/Response-Pairing mit Duration<\/li>\\n <li>Token-Schätzung (4 Zeichen = 1 Token)<\/li>\\n <li>Sensitive Daten werden redacted<\/li>\\n <\/ul>\\n <\/td><\/tr>\\n<\/table>\\n\\n<h4>file_backup_hook.py<\/h4>\\n<table>\\n <tr><th>Pfad<\/th><td><code>\/var\/www\/tools\/ki-protokoll\/claude-hook\/file_backup_hook.py<\/code><\/td><\/tr>\\n <tr><th>Events<\/th><td>PreToolUse (Edit, Write)<\/td><\/tr>\\n <tr><th>Datenbank<\/th><td><code>ki_dev.file_backup_history<\/code><\/td><\/tr>\\n <tr><th>Funktion<\/th><td>\\n <ul>\\n <li>Sichert Datei-Inhalt vor Änderung<\/li>\\n <li>Versionierung pro Datei<\/li>\\n <li>Hash-basierte Duplikat-Erkennung<\/li>\\n <li>Max. 10 MB pro Datei<\/li>\\n <\/ul>\\n <\/td><\/tr>\\n<\/table>\\n\\n<h4>block_direct_db.py<\/h4>\\n<table>\\n <tr><th>Pfad<\/th><td><code>\/opt\/scripts\/hooks\/block_direct_db.py<\/code><\/td><\/tr>\\n <tr><th>Events<\/th><td>PreToolUse (Bash)<\/td><\/tr>\\n <tr><th>Funktion<\/th><td>\\n <ul>\\n <li>Blockiert direkte MySQL\/MariaDB-Zugriffe<\/li>\\n <li>Patterns: <code>mysql -p<\/code>, <code>--password=<\/code><\/li>\\n <li>Empfiehlt: MCP-DB Tools<\/li>\\n <\/ul>\\n <\/td><\/tr>\\n<\/table>\\n\\n<h4>block_direct_task_db.py<\/h4>\\n<table>\\n <tr><th>Pfad<\/th><td><code>\/opt\/scripts\/hooks\/block_direct_task_db.py<\/code><\/td><\/tr>\\n <tr><th>Events<\/th><td>PreToolUse (Bash)<\/td><\/tr>\\n <tr><th>Funktion<\/th><td>\\n <ul>\\n <li>Blockiert SQL auf Task-Tabellen<\/li>\\n <li>Patterns: INSERT\/UPDATE\/DELETE auf tasks, task_*<\/li>\\n <li>Empfiehlt: MCP-Tasks Tools<\/li>\\n <\/ul>\\n <\/td><\/tr>\\n<\/table>\\n\\n<h4>fix-permissions.sh<\/h4>\\n<table>\\n <tr><th>Pfad<\/th><td><code>\/opt\/scripts\/fix-permissions.sh<\/code><\/td><\/tr>\\n <tr><th>Events<\/th><td>PostToolUse (Edit, Write)<\/td><\/tr>\\n <tr><th>Funktion<\/th><td>\\n <ul>\\n <li>Setzt Owner auf www-data:www-data<\/li>\\n <li>Setzt Permissions auf 755<\/li>\\n <li>Für dev und prod Verzeichnisse<\/li>\\n <\/ul>\\n <\/td><\/tr>\\n<\/table>\\n\\n<h3>Hook-Konfiguration<\/h3>\\n<p>Die Hooks werden in <code>\/root\/.claude\/settings.json<\/code> definiert:<\/p>\\n\\n<pre>\\n{\\n \\\"hooks\\\": {\\n \\\"PreToolUse\\\": [\\n {\\n \\\"matcher\\\": \\\"Bash\\\",\\n \\\"hooks\\\": [\\n {\\\"type\\\": \\\"command\\\", \\\"command\\\": \\\"\/opt\/scripts\/hooks\/block_direct_db.py\\\"},\\n {\\\"type\\\": \\\"command\\\", \\\"command\\\": \\\"\/opt\/scripts\/hooks\/block_direct_task_db.py\\\"}\\n ]\\n },\\n {\\n \\\"matcher\\\": \\\"Edit|Write\\\",\\n \\\"hooks\\\": [\\n {\\\"type\\\": \\\"command\\\", \\\"command\\\": \\\"...\/file_backup_hook.py\\\", \\\"timeout\\\": 10}\\n ]\\n },\\n {\\n \\\"matcher\\\": \\\"\\\",\\n \\\"hooks\\\": [\\n {\\\"type\\\": \\\"command\\\", \\\"command\\\": \\\"...\/log_to_db.py\\\", \\\"timeout\\\": 5}\\n ]\\n }\\n ],\\n \\\"PostToolUse\\\": [\\n {\\n \\\"matcher\\\": \\\"Write|Edit\\\",\\n \\\"hooks\\\": [\\n {\\\"type\\\": \\\"command\\\", \\\"command\\\": \\\"\/opt\/scripts\/fix-permissions.sh\\\"}\\n ]\\n },\\n {\\n \\\"matcher\\\": \\\"\\\",\\n \\\"hooks\\\": [\\n {\\\"type\\\": \\\"command\\\", \\\"command\\\": \\\"...\/log_to_db.py\\\", \\\"timeout\\\": 10}\\n ]\\n }\\n ]\\n }\\n}\\n<\/pre>\",\n \"status\": \"published\",\n \"sort_order\": 3,\n \"depth\": 2,\n \"created_at\": \"2025-12-23T05:40:00\",\n \"updated_at\": \"2025-12-23T05:40:00\"\n },\n \"message\": \"Dokument 'Hook-Scripts' erstellt mit ID 95\"\n}"
}
]
}