Hookify-Regeln schreiben
Übersicht
Hookify-Regeln sind Markdown-Dateien mit YAML-Frontmatter, die zu überwachende Muster und die anzuzeigenden Nachrichten definieren, wenn diese Muster zutreffen. Regeln werden in Dateien .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 | Eindeutiger Bezeichner (Verb zuerst: warn-, block-, require-*) |
| enabled | Ja | true/false | Ein- und Ausschalten ohne Löschen |
| event | Ja | bash/file/stop/prompt/all | Welches Hook-Ereignis diese Regel auslöst |
| action | Nein | warn/block | warn (Standard) zeigt Nachricht an; block verhindert den Vorgang |
| pattern | Ja* | Regex-String | Muster, auf das geprüft werden soll (*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
---
Sie fügen einen API-Schlüssel zu einer .env-Datei hinzu. Stellen Sie sicher, dass diese Datei in .gitignore 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.
Anleitung zu Ereignistypen
bash-Ereignisse
Passt auf Bash-Befehlsmuster:
- Gefährliche Befehle:
rm\s+-rf,dd\s+if=,mkfs - Rechteausweitung:
sudo\s+,su\s+ - Berechtigungsprobleme:
chmod\s+777
file-Ereignisse
Passt auf Änderungs-/Schreib-/Mehrfachänderungsvorgänge:
- Debug-Code:
console\.log\(,debugger - Sicherheitsrisiken:
eval\(,innerHTML\s*= - Sensitive Dateien:
\.env$,credentials,\.pem$
stop-Ereignisse
Abschlussprüfungen und Erinnerungen. Das Muster .* passt immer.
prompt-Ereignisse
Passt auf den Inhalt der Benutzereingabeaufforderung zur Workflow-Durchsetzung.
Tipps zur Mustererstellung
Regex-Grundlagen
- Sonderzeichen escapen:
.zu\.,(zu\( \sLeerzeichen,\dZiffer,\wWortzeichen+ein oder mehr,*null oder mehr,?optional|ODER-Operator
Häufige Fallstricke
- Zu breit:
logpasst auf "login", "dialog" – verwenden Sieconsole\.log\( - Zu spezifisch:
rm -rf /tmp– verwenden Sierm\s+-rf - YAML-Escaping: Verwenden Sie unquotierte Muster; quoted Strings benötigen
\\s
Testen
python3 -c "import re; print(re.search(r'your_pattern', 'test text'))"
Dateiorganisation
- Speicherort:
.claude/-Verzeichnis im Projektstamm - Benennung:
.claude/hookify.{beschreibender-name}.local.md - Gitignore: Fügen Sie
.claude/*.local.mdzur.gitignorehinzu
Befehle
/hookify [beschreibung]– Neue Regeln erstellen (analysiert automatisch das Gespräch, wenn keine Argumente übergeben werden)/hookify-list– Alle Regeln in Tabellenform anzeigen/hookify-configure– Regeln interaktiv ein-/ausschalten/hookify-help– Vollständige Dokumentation
Kurzreferenz
Minimal lebensfähige Regel:
---
name: meine-regel
enabled: true
event: bash
pattern: gefaehrlicher_befehl
---
Warnmeldung hier