Examen blanc CCA-F corrigé.Essayer gratuitement →

Prépa CCA-F

Hook

Hook PostToolUse qui formate chaque fichier modifié

Extrait de settings.json pour Claude Code : un hook PostToolUse lance Prettier sur chaque fichier créé ou modifié par les outils Edit et Write.

Faits vérifiés le source officiellejournal des changements

Où le placer.claude/settings.json (clé hooks)

// settings.jsonTélécharger
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write --ignore-unknown"
          }
        ]
      }
    ]
  }
}

Demander à Claude de « bien formater le code » consomme des échanges et donne un résultat variable. Il est plus simple de confier ce travail au formateur du projet, lancé automatiquement après chaque modification. Ce modèle déclare un hook sur l'événement PostToolUse, déclenché après un appel d'outil réussi, et le limite aux outils d'édition de fichiers grâce au filtre "matcher": "Edit|Write".

Comment ça fonctionne

Après chaque création ou modification de fichier, Claude Code envoie au hook un objet JSON sur l'entrée standard. Le chemin du fichier se trouve dans .tool_input.file_path. La commande l'extrait avec jq et le transmet à Prettier via xargs. L'option --ignore-unknown de Prettier évite une erreur quand le fichier modifié n'est pas d'un type que Prettier sait formater.

Le hook s'exécute en silence : quand tout se passe bien, rien n'apparaît dans la conversation. Le fichier est simplement reformaté sur le disque.

Installation

  1. Ouvrez .claude/settings.json à la racine du projet (créez-le au besoin).
  2. Fusionnez l'extrait : s'il existe déjà une clé hooks, ajoutez-y l'entrée PostToolUse sans écraser les autres événements.
  3. Vérifiez que jq est installé et que Prettier est disponible dans le projet (npx prettier --version).
  4. Tapez /hooks dans Claude Code pour contrôler que le hook apparaît.

Comment l'adapter

  • Autre formateur : remplacez la fin de la commande par l'outil de votre langage, par exemple ruff format pour Python ou gofmt -w pour Go.
  • Filtrer par extension : pour ne formater que certains fichiers, passez par un petit script qui teste l'extension avant d'appeler le formateur.
  • Portée personnelle : placé dans ~/.claude/settings.json, le hook s'applique à tous vos projets ; dans .claude/settings.json, il est partagé avec l'équipe via Git.

Pièges fréquents

  • Modifications faites par le shell : ce hook ne voit que les outils Edit et Write. Un fichier réécrit par une commande Bash n'est pas formaté ; la documentation suggère un hook FileChanged pour ce cas.
  • Formateur lent : le hook s'exécute après chaque édition. Un outil lent ralentit toute la session.
  • Chemins avec espaces : xargs découpe sur les espaces ; si vos noms de fichiers en contiennent, préférez un script qui lit le chemin avec jq et le passe entre guillemets.

La leçon Les hooks explique la différence entre les événements PreToolUse et PostToolUse et quand utiliser chacun.

Documentation officielleTous les fichiers