Hookify-Regeln schreiben
Überblick
Hookify-Regeln sind Markdown-Dateien mit YAML-Frontmatter, die Muster definieren, auf die geachtet werden soll, und Nachrichten, die angezeigt werden, wenn diese Muster zutreffen. Regeln werden in Dateien unter .claude/hookify.{regelname}.local.md gespeichert.
Regeldateiformat
Grundstruktur
---
name: regel-identifikator
enabled: true
event: bash|file|stop|prompt|all
pattern: regex-muster-hier
---
Nachricht, die Claude angezeigt wird, wenn diese Regel ausgelöst wird.
Kann Markdown-Formatierung, Warnungen, Vorschläge usw. enthalten.
Frontmatter-Felder
| Feld | Erforderlich | Werte | Beschreibung |
|---|---|---|---|
| name | Ja | kebab-case-string | Eindeutige ID (Verb-zuerst: warn-, block-, require-*) |
| enabled | Ja | true/false | Ein-/Ausschalten ohne Löschen |
| event | Ja | bash/file/stop/prompt/all | Welches Hook-Ereignis die Regel auslöst |
| action | Nein | warn/block | warn (Standard) zeigt Nachricht; block verhindert Vorgang |
| pattern | Ja* | regex-string | Zu treffendes Muster (*oder Bedingungen für komplexe Regeln verwenden) |
Erweitertes Format (mehrere Bedingungen)
---
name: warn-env-api-keys
enabled: true
event: file
conditions:
- field: file_path
operator: regex_match
pattern: \.env$
- field: new_text
operator: contains
pattern: API_KEY
---
Du fügst einen API-Schlüssel zu einer .env-Datei hinzu. Stelle sicher, dass diese Datei in .gitignore aufgeführt ist!
Bedingungsfelder nach Ereignis:
- bash:
command - file:
file_path,new_text,old_text,content - prompt:
user_prompt
Operatoren: regex_match, contains, equals, not_contains, starts_with, ends_with
Alle Bedingungen müssen zutreffen, damit die Regel ausgelöst wird.
Ereignistypen-Leitfaden
bash-Ereignisse
Bash-Befehlmuster erkennen:
- Gefährliche Befehle:
rm\s+-rf,dd\s+if=,mkfs - Rechteausweitung:
sudo\s+,su\s+ - Berechtigungsprobleme:
chmod\s+777
file-Ereignisse
Bearbeitungs-/Schreib-/MultiEdit-Vorgänge:
- Debug-Code:
console\.log\(,debugger - Sicherheitsrisiken:
eval\(,innerHTML\s*= - Sensitive Dateien:
\.env$,credentials,\.pem$
stop-Ereignisse
Abschlussprüfungen und Erinnerungen. Muster .* trifft immer zu.
prompt-Ereignisse
Benutzereingaben für Workflow-Durchsetzung erkennen.
Tipps zur Mustererstellung
Regex-Grundlagen
- Sonderzeichen escapen:
.zu\.,(zu\( \sWhitespace,\dZiffer,\wWortzeichen+ein oder mehr,*null oder mehr,?optional|ODER-Operator
Häufige Fallstricke
- Zu allgemein:
logmatcht "login", "dialog" – verwendeconsole\.log\( - Zu spezifisch:
rm -rf /tmp– verwenderm\s+-rf - YAML-Escaping: Verwende unquotierte Muster; quotierte Strings benötigen
\\s
Testen
python3 -c "import re; print(re.search(r'dein_muster', 'test text'))"
Dateiorganisation
- Ort:
.claude/-Verzeichnis im Projektstamm - Benennung:
.claude/hookify.{beschreibender-name}.local.md - Gitignore: Füge
.claude/*.local.mdzur.gitignorehinzu
Befehle
/hookify [beschreibung]– Neue Regeln erstellen (analysiert automatisch Konversation, wenn keine Argumente)/hookify-list– Alle Regeln tabellarisch anzeigen/hookify-configure– Regeln interaktiv ein-/ausschalten/hookify-help– Vollständige Dokumentation
Kurzreferenz
Minimal funktionsfähige Regel:
---
name: meine-regel
enabled: true
event: bash
pattern: gefaehrlicher_befehl
---
Warnmeldung hier