Retour aux podcastsClaude
Claude Code 101
Les Hooks dans Claude Code
Hooks let you run commands at different points in Claude code's life cycle.
Les hooks vous permettent d'exécuter des commandes à différents moments du cycle de vie de Claude Code.
The key difference between hooks and everything else we covered is that hooks are deterministic.
La différence essentielle entre les hooks et tout ce que nous avons couvert jusqu'ici, c'est que les hooks sont déterministes.
They always run.
Ils s'exécutent toujours.
So, put it this way.
Voyons ça autrement.
You can tell Claude in your claude.md file to run prettier after every file edit and most of the time it will do that, but sometimes it won't.
Vous pouvez indiquer à Claude dans votre fichier claude.md d'exécuter prettier après chaque modification de fichier, et la plupart du temps il le fera, mais parfois non.
It's not perfect.
Ce n'est pas parfait.
But a hook makes it happen every single time with no exceptions.
Mais un hook le fait se produire à chaque fois, sans exception.
Common use cases could include auto formatting after file edits, logging all executed commands for compliance, blocking dangerous operations like modifying production files, and sending yourself notifications when Claude finishes a task.
Les cas d'utilisation courants incluent le formatage automatique après les modifications de fichiers, l'enregistrement de toutes les commandes exécutées à des fins de conformité, le blocage d'opérations dangereuses comme la modification de fichiers de production, et l'envoi de notifications lorsque Claude termine une tâche.
Hooks are configured in your settings.json file.
Les hooks sont configurés dans votre fichier settings.json.
You pick an event, optionally set a matcher for which tool it applies to, and provide a command to run.
Vous choisissez un événement, définissez éventuellement un matcher pour l'outil concerné, et fournissez une commande à exécuter.
User prompts submit runs when you submit a prompt before Claude processes it.
UserPromptSubmit s'exécute lorsque vous soumettez un prompt, avant que Claude le traite.
Pre-tool use which runs before a tool call, post-tool use runs after a tool call completes.
PreToolUse s'exécute avant un appel d'outil, PostToolUse s'exécute après la fin d'un appel d'outil.
Notification runs when Claude sends a notification, and stop runs when Claude finishes responding.
Notification s'exécute lorsque Claude envoie une notification, et Stop s'exécute lorsque Claude termine de répondre.
The most common hook.
Le hook le plus courant.
Auto formatting after edits.
Le formatage automatique après les modifications.
You set a post-tool use hook with a matcher of edit or multi-edit, right?
Vous définissez un hook PostToolUse avec un matcher edit ou multi-edit, n'est-ce pas?
So, it fires whenever Claude modifies a file.
Ainsi, il se déclenche chaque fois que Claude modifie un fichier.
The command checks the file extension and runs the appropriate formatter.
La commande vérifie l'extension du fichier et exécute le formateur approprié.
This could be prettier for TypeScript, go format for go, rough for Python, whatever your project uses.
Ce pourrait être prettier pour TypeScript, go format pour Go, ruff pour Python, selon ce qu'utilise votre projet.
Pre-tool use hooks can block tool calls before they execute.
Les hooks PreToolUse peuvent bloquer les appels d'outils avant qu'ils s'exécutent.
So, your hook receives the tool name and input as JSON on stdin.
Votre hook reçoit le nom de l'outil et l'entrée en JSON sur stdin.
If it exits with code two, the action is blocked and the STD error message gets fed back to Claude's feedback so Claude knows why it was blocked and can adjust.
S'il se termine avec le code 2, l'action est bloquée et le message d'erreur standard est renvoyé à Claude pour qu'il comprenne pourquoi il a été bloqué et puisse s'ajuster.
Exit code zero means proceed.
Le code de sortie 0 signifie continuer.
Exit code two means block.
Le code de sortie 2 signifie bloquer.
This is how you enforce hard rules.
C'est ainsi que vous appliquez des règles strictes.
Block writes to a production config directory, block bash commands that contain rm-rf, block commits to main, whatever your team needs to be guaranteed, not suggested.
Bloquer les écritures dans un répertoire de configuration de production, bloquer les commandes bash contenant rm-rf, bloquer les commits vers main, tout ce dont votre équipe a besoin de garantir, pas seulement suggérer.
Hooks configured in .Claude/settings.json are project level and can be checked into your repo. This means that your entire team gets the same hooks automatically.
Les hooks configurés dans .Claude/settings.json sont au niveau du projet et peuvent être intégrés dans votre dépôt. Cela signifie que toute votre équipe obtient automatiquement les mêmes hooks.
Use the Claude project dir environment variable in your commands to reference scripts stored in your project so they work regardless of Claude's current working directory.
Utilisez la variable d'environnement du répertoire de projet Claude dans vos commandes pour référencer des scripts stockés dans votre projet afin qu'ils fonctionnent quel que soit le répertoire de travail actuel de Claude.
[music]
[music]
Hooks gives you deterministic control over Claude code's behavior.
Les hooks vous donnent un contrôle déterministe sur le comportement de Claude Code.
[music]
[music]
Use post-tool-use for auto-formatting and logging. Use pre-tool-use to block dangerous operations. Configure them in the /hooks or in settings.
Utilisez PostToolUse pour le formatage automatique et la journalisation. Utilisez PreToolUse pour bloquer les opérations dangereuses. Configurez-les dans /hooks ou dans settings.
json
json
[music]
[music]
and check them into your repository so your team gets them, too.
et intégrez-les dans votre dépôt pour que votre équipe en bénéficie aussi.
If something needs to happen every time without fail, don't put it in a prompt.
Si quelque chose doit se produire à chaque fois sans faute, ne le mettez pas dans un prompt.
Put it in a hook.
Mettez-le dans un hook.
[music]
[music]