Écrire des règles Hookify
Aperçu
Les règles Hookify sont des fichiers Markdown avec un frontmatter YAML qui définissent des motifs à surveiller et des messages à afficher lorsque ces motifs correspondent. Les règles sont stockées dans des fichiers .claude/hookify.{nom-de-la-règle}.local.md.
Format du fichier de règle
Structure de base
---
name: identifiant-de-la-règle
enabled: true
event: bash|file|stop|prompt|all
pattern: expression-régulière-ici
---
Message à afficher à Claude lorsque cette règle se déclenche.
Peut inclure du formatage Markdown, des avertissements, des suggestions, etc.
Champs du frontmatter
| Champ | Obligatoire | Valeurs | Description |
|---|---|---|---|
| name | Oui | chaîne en kebab-case | Identifiant unique (verbe en premier : warn-, block-, require-*) |
| enabled | Oui | true/false | Activer/désactiver sans supprimer |
| event | Oui | bash/file/stop/prompt/all | Quel événement de hook déclenche cette règle |
| action | Non | warn/block | warn (par défaut) affiche un message ; block empêche l'opération |
| pattern | Oui* | chaîne regex | Motif à rechercher (*ou utilisez conditions pour les règles complexes) |
Format avancé (Conditions multiples)
---
name: avertir-env-clefs-api
enabled: true
event: file
conditions:
- field: file_path
operator: regex_match
pattern: \.env$
- field: new_text
operator: contains
pattern: API_KEY
---
Vous ajoutez une clé API à un fichier .env. Assurez-vous que ce fichier est dans .gitignore !
Champs de condition par événement :
- bash :
command - file :
file_path,new_text,old_text,content - prompt :
user_prompt
Opérateurs : regex_match, contains, equals, not_contains, starts_with, ends_with
Toutes les conditions doivent correspondre pour que la règle se déclenche.
Guide des types d'événements
Événements bash
Correspond aux motifs de commandes Bash :
- Commandes dangereuses :
rm\s+-rf,dd\s+if=,mkfs - Élévation de privilèges :
sudo\s+,su\s+ - Problèmes de permissions :
chmod\s+777
Événements file
Correspond aux opérations d'édition/écriture/modifications multiples :
- Code de débogage :
console\.log\(,debugger - Risques de sécurité :
eval\(,innerHTML\s*= - Fichiers sensibles :
\.env$,credentials,\.pem$
Événements stop
Vérifications et rappels à la fin d'une session. Le motif .* correspond toujours.
Événements prompt
Correspond au contenu de l'invite utilisateur pour appliquer des flux de travail.
Conseils pour l'écriture de motifs
Bases des regex
- Échappez les caractères spéciaux :
.devient\.,(devient\( \sespace blanc,\dchiffre,\wcaractère de mot+un ou plus,*zéro ou plus,?optionnel|opérateur OU
Pièges courants
- Trop large :
logcorrespond à "login", "dialog" — utilisezconsole\.log\( - Trop spécifique :
rm -rf /tmp— utilisezrm\s+-rf - Échappement YAML : Utilisez des motifs non quotés ; les chaînes entre guillemets ont besoin de
\\s
Test
python3 -c "import re; print(re.search(r'votre_motif', 'texte de test'))"
Organisation des fichiers
- Emplacement : répertoire
.claude/à la racine du projet - Nommage :
.claude/hookify.{nom-descriptif}.local.md - Gitignore : Ajoutez
.claude/*.local.mdau fichier.gitignore
Commandes
/hookify [description]- Créer de nouvelles règles (analyse automatique de la conversation si aucun argument)/hookify-list- Afficher toutes les règles sous forme de tableau/hookify-configure- Activer/désactiver les règles de manière interactive/hookify-help- Documentation complète
Référence rapide
Règle minimale viable :
---
name: ma-règle
enabled: true
event: bash
pattern: commande_dangereuse
---
Message d'avertissement ici