Lektion • 22. Oktober 2025
Hooks Basics - Automation Starts Here
Lektion • 22. Oktober 2025
Hooks Basics - Automation Starts Here

TLDR Hooks sind Trigger-Aktionen: Wenn dich du X sagst, macht Claude automatisch Y. Mit einfachen Scripts (TypeScript, JavaScript) automatisierst du deine Workflows. Einmal schreiben, tausendmal nutzen.
Wiederholung ist Zeitverschwendung
Szenario: Du brauchst für jeden API-Request die gleiche Boilerplate. Error Handling. Logging. Validation.
Das tippst du jedes Mal neu.
Oder: Du könntest einen Hook schreiben. Der macht es automatisch. Jedes Mal. Perfekt.
Das ist nicht Faulheit. Das ist Engineering.
Phase 1: Was sind Hooks?
Hooks sind Event-Listener für Claude Code.
Wenn bestimmte Dinge passieren, triggert Claude einen Hook.
Ein Hook ist einfach: Ein Script, das ausgeführt wird.
Beispiele:
```Event: User gibt Prompt einHook: Script lädt neueste Database-SchemaErgebnis: Claude hat frischen Context```
```Event: User sagt "@api-design"Hook: Script generiert API-TemplateErgebnis: Claude zeigt sofort das Template```
Verfügbare Hooks:
pre-prompt-submit– Vor dem Absendenpost-prompt-submit– Nach dem Absendenpre-response– Bevor Claude antwortetfile-created– Wenn Datei erstellt wirdfile-modified– Wenn Datei geändert wird
Phase 2: Dein erstes Hook-Script
Hooks sind Scripts im .claude/hooks Verzeichnis.
Setup:
```mkdir -p .claude/hooks```
Dann erstelle eine Datei:
.claude/hooks/user-input.js
Einfaches Beispiel:
console.log("Hook triggered!");console.log("User input received");
Das war's. Dein erstes Hook-Script.
Registrieren:
Im Terminal:
claude
Dann:
/add-hook user-input-hook
Claude fragt nach:
- Event (z.B.
pre-prompt-submit) - Script-Pfad (
.claude/hooks/user-input.js)
Speichern. Fertig.
Phase 3: Einfache Automatisierung – Logging
Praktisches Beispiel: Jeden Prompt mitprotokollieren.
.claude/hooks/log-prompt.js:
const fs = require('fs');const timestamp = new Date().toISOString();
function logPrompt(input) { const entry = { timestamp, prompt: input.prompt, project: process.cwd() }; const logFile = '.claude/prompt-log.json'; let logs = []; if (fs.existsSync(logFile)) { logs = JSON.parse(fs.readFileSync(logFile, 'utf-8')); } logs.push(entry); fs.writeFileSync(logFile, JSON.stringify(logs, null, 2));}
module.exports = logPrompt;
Was macht das?
- Liest jeden Prompt
- Speichert ihn mit Timestamp
- In eine
prompt-log.json
Du hast jetzt einen kompletten Audit-Trail.
Phase 4: Context Loading – Der Power Move
Szenario: Jedes Mal, wenn ein Benutzer fragt, musst du ein bestimmtes Schema laden.
Hook:
.claude/hooks/load-schema.js:
const fs = require('fs');
function loadSchema() { const schema = fs.readFileSync('./db/schema.sql', 'utf-8'); return { context: schema, description: 'Database schema loaded' };}
module.exports = loadSchema;
Jetzt:
- Hook triggert vor jedem Prompt
- Schema wird automatisch geladen
- Claude hat immer frischen Context
Du fragst nie wieder: "Kennst du die Database-Struktur?"
Die Antwort ist immer ja.
Phase 5: Conditional Hooks – Nur wenn nötig
Nicht immer sollte ein Hook triggern. Nur unter bestimmten Bedingungen.
Beispiel: Lade das Payment-Schema nur, wenn der User "payment" erwähnt.
.claude/hooks/conditional-load.js:
function shouldLoadPaymentSchema(input) { const keyword = 'payment'; return input.prompt.toLowerCase().includes(keyword);}
function loadPaymentSchema() { const fs = require('fs'); const schema = fs.readFileSync('./schemas/payment.sql', 'utf-8'); return schema;}
if (shouldLoadPaymentSchema(userInput)) { const schema = loadPaymentSchema(); // Schema an Claude übergeben}
Jetzt:
- Hook prüft: "Sagt der User Payment?"
- Nur dann lädt er das Schema
- Rest der Zeit lädt er nix
Das spart Tokens. Massiv.
Phase 6: Bun – Das einfache Runtime
Hooks können in JavaScript oder TypeScript laufen.
Aber JavaScript in Node ist manchmal langsam.
Deswegen nutzen wir Bun: Ein schnellerer JavaScript/TypeScript Runner.
Installation:
curl -fsSL https://bun.sh/install | bash
Hook mit Bun:
Statt .js, nutze .ts:
.claude/hooks/load-config.ts:
import Bun from "bun";import { readFileSync } from "fs";
const config = JSON.parse( readFileSync("./config.json", "utf-8"));
console.log("Config loaded:", config);
Ausführen:
bun .claude/hooks/load-config.ts
Das ist 5x schneller als Node.
Phase 7: Verkettung – Mehrere Hooks
Du kannst mehrere Hooks hintereinander laufen lassen.
Beispiel:
- Hook 1: Log den Prompt
- Hook 2: Lade Schema
- Hook 3: Validiere Input
```Hook 1 (logging) ↓Hook 2 (context loading) ↓Hook 3 (validation) ↓Claude antwortet```
Jeder Hook arbeitet, dann geht's zum nächsten.
Das ist eine Automation-Pipeline.
Phase 8: Fehlerbehandlung
Was, wenn ein Hook fehlschlägt?
Gute Frage.
.claude/hooks/safe-load.ts:
try { const data = JSON.parse(readFileSync("config.json", "utf-8")); console.log("Config loaded"); return data;} catch (error) { console.error("Failed to load config:", error.message); return { default: true };}
Jetzt:
- Hook versucht zu laden
- Falls Fehler → Fallback-Wert
- Claude arbeitet trotzdem weiter
Keine Crashes. Nur robustes Design.
Phase 9: Debugging Hooks
Hooks funktionieren nicht? Hier sind die Standard-Checks:
1. Script-Pfad prüfen
Ist .claude/hooks/myscript.ts wirklich da?
2. Syntax prüfen
Führe das Script manuell aus:
bun .claude/hooks/myscript.ts
Fehler?
3. Logs prüfen
Dein Hook schreibt Logs. Wo sind sie?
```.claude/hook-logs.json```
Darin siehst du, was passiert ist.
4. Settings prüfen
Hook registriert?
/settings
Zeigt alle Hooks an.
Phase 10: Real-World Example – Dokumentation automatisch laden
Vollständiges Hook-Beispiel:
.claude/hooks/load-docs.ts:
import { readFileSync } from "fs";import { existsSync } from "fs";
interface UserInput { prompt: string; cwd: string;}
export async function loadRelevantDocs(input: UserInput) { const docsPath = "./docs"; if (!existsSync(docsPath)) { return { success: false, message: "No docs found" }; } const files = readFileSync(docsPath, "utf-8"); const content = JSON.stringify(files); console.log("Loaded docs for context"); return { success: true, context: content, timestamp: new Date().toISOString() };}
Was macht das?
- Checkt, ob
./docsexistiert - Liest die Dateien
- Gibt sie an Claude
- Logged den Timestamp
Claude hat jetzt automatisch deine Dokumentation im Context.
Dein Action Plan für heute
- ✅ Erstelle
.claude/hooksVerzeichnis - ✅ Erstelle eine einfache
log-input.js - ✅ Starte Claude Code
- ✅ Registriere den Hook mit
/add-hook - ✅ Gib einen Prompt ein
- ✅ Checke die Logs
Wenn dein Prompt geloggt wurde, funktioniert dein Hook.
Die größte Erkenntnis
Hooks sind nicht optional. Sie sind die Brücke zwischen Manual und Automation.
Mit Hooks verwandelst du Claude Code von einem "Smart Chatbot" zu einem Automation Engine.
- Daten laden automatisch
- Kontext wird frisch gehalten
- Workflows sind konsistent
Das ist nicht nur schneller. Das ist professionell.
Nächste Woche: Prompt Rewriting – Wie du Claude anweist, deine Prompts intelligent zu transformieren.
Habt einen tollen Tag. Ciao.
Lektionsdetails
- Veröffentlicht
- 22. Oktober 2025
- Lesezeit
- ca. 5 Min.