Skip to content

Claude Code Mastery11 / 12

Patterns avancés — Hooks, serveurs MCP, outils custom, system prompts

Une fois qu'on a dépassé les valeurs par défaut : hooks pour des effets de bord déterministes, serveurs MCP pour les données métier, outils custom et chirurgie de system prompt.

Les valeurs par défaut de Claude Code vous emmènent loin. Mais il y a un point — généralement vers le troisième mois d'usage sérieux — où vous les avez dépassées. Vous voulez un effet de bord déterministe après chaque appel d'outil. Vous voulez que l'agent lise votre wiki interne. Vous voulez livrer un outil custom qui parle à l'API maison de votre entreprise.

C'est à ça que sert cet article. Quatre patterns :

  1. Hooks — colle déterministe entre les étapes de l'agent.
  2. Serveurs MCP — données d'entreprise que l'agent peut lire.
  3. Outils custom — vos propres commandes câblées dans l'agent.
  4. Chirurgie de system prompt — quand les prompts seuls ne suffiront pas.

1. Hooks — colle déterministe

Un hook est un script qui se déclenche sur un événement connu : onFileEdit, onShellRun, onSessionStart, onSessionEnd, etc. Ce ne sont pas de l'« IA » ; c'est du shell pur.

Pourquoi ils comptent : ils permettent d'ajouter des garanties déterministes autour d'un agent par ailleurs probabiliste.

Des exemples que je fais tourner sur chaque projet :

{
  "hooks": {
    "onSessionStart": "scripts/claude-onstart.sh",
    "onFileEdit": "scripts/claude-onedit.sh",
    "onSessionEnd": "scripts/claude-onend.sh"
  }
}

scripts/claude-onstart.sh :

#!/usr/bin/env bash
# Snapshot du working tree avant que l'agent démarre.
git stash push -u -m "claude-pre-session-$(date +%s)" --keep-index || true

scripts/claude-onedit.sh :

#!/usr/bin/env bash
# Après chaque édition, prettier sur le fichier modifié uniquement.
file="$1"
if [ -f "$file" ]; then
  pnpm prettier --write "$file" --log-level silent
fi

scripts/claude-onend.sh :

#!/usr/bin/env bash
# En fin de session, on archive le transcript.
cp ~/.claude/sessions/last.jsonl /var/log/claude/$(date +%F-%H%M).jsonl

Trois hooks. Chaque session est désormais snapshot-able, formatée et auditée. Aucun n'est de l'IA ; tous sont de l'infrastructure.

2. Serveurs MCP — vos données dans l'agent

Le Model Context Protocol (MCP) est le standard pour permettre à un agent de lire des sources de données externes au moment de la session. Au lieu de coller une page Confluence, vous branchez le serveur MCP et l'agent peut le parcourir à la demande.

Les patterns que j'ai vus payer :

  • MCP pour le bug tracker. L'agent lit le ticket, commentaires inclus, avant de commencer à implémenter.
  • MCP pour le schéma de la DB de staging. L'agent peut introspecter les tables au lieu de deviner.
  • MCP pour les runbooks. L'agent lit docs/runbooks/<incident-type>.md automatiquement.

La configuration vit dans .claude/mcp.json :

{
  "servers": {
    "linear": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-linear"],
      "env": { "LINEAR_API_KEY": "${LINEAR_API_KEY}" }
    },
    "company-docs": {
      "command": "node",
      "args": ["./mcp/company-docs.js"]
    }
  }
}

Deux avertissements :

  • Les serveurs MCP tournent avec vos privilèges. Traitez-les comme des CLIs ; revoyez leur code avant de les brancher.
  • MCP peut fuir. Si vous branchez un serveur qui expose des données client, chaque session peut les lire. Scopez serré.

3. Outils custom — vos propres verbes

Les sub-agents et slash commands vous permettent de réutiliser du texte. Les outils custom vous permettent d'ajouter des verbes appelables.

Exemple : un outil deploy-preview. L'agent ne devrait pas lancer un shell pour déployer un preview — trop de façons pour que ça parte mal. À la place, exposez un outil :

{
  "tools": {
    "deploy-preview": {
      "description": "Déploie un preview environment pour la branche courante.",
      "schema": {
        "type": "object",
        "properties": {
          "branch": { "type": "string" }
        },
        "required": ["branch"]
      },
      "command": "scripts/deploy-preview.sh"
    }
  }
}

L'agent voit maintenant un verbe deploy-preview avec une entrée typée. Le script que vous écrivez décide ce qu'il fait. L'agent ne peut pas s'évader du contrat.

C'est le même pattern que j'utiliserais pour :

  • run-load-test
  • migrate-staging
  • tail-prod-logs (lecture seule)
  • notify-pager-duty

Chacun est un garde-fou qui dit « l'agent peut faire cette chose, exactement comme ça, jamais plus profond ».

4. Chirurgie de system prompt

Parfois le comportement d'un sub-agent est presque bon et un ajustement du system prompt comble l'écart. Trois patterns :

4a. Le bloc « rules »

Mettez toujours les non-négociables sous un header nommé rules :

# rules
- Ne jamais ajouter @ts-ignore.
- Ne jamais modifier les fichiers dans /infra/.
- Toujours lancer `pnpm test` avant de déclarer le succès.

L'agent les traite comme plus dures que de simples instructions parce qu'elles ressemblent à une liste de lois.

4b. Schéma de sortie en premier

Si vous voulez une sortie structurée (handoffs, JSON, YAML), mettez le schéma avant l'explication en prose. Les agents s'ancrent sur les 200 premiers tokens.

# schéma de sortie (toujours en haut du system prompt)
status: ok | needs-human | failed
artifacts: [path: string]
notes: string
next: code-reviewer | release-bot | done

# rationale (sous le schéma, jamais au-dessus)
# Tu produis ceci pour que le prochain agent du pipeline sache exactement où tu en es.

4c. Contre-exemples

Montrez ce qu'il ne faut PAS faire :

# mauvaise sortie
"Fait. Le cache est implémenté."

# bonne sortie
status: ok
artifacts: [{path: "lib/cache.ts"}]
notes: "LRU + TTL implémentés. Tous les tests verts."
next: code-reviewer

Les contre-exemples sont bizarrement plus efficaces que les exemples positifs pour obtenir la conformité. Je n'ai pas de théorie profonde du pourquoi ; empiriquement, ça marche.

Quand vous avez besoin des quatre ensemble

Le workflow avancé qui éclaire les vraies équipes :

hook (onSessionStart)         → snapshot stash
l'agent lit CLAUDE.md         → contexte
l'agent appelle un MCP        → lit le ticket Linear
l'agent appelle un outil custom → run-load-test
hook (onFileEdit)             → prettier
l'agent émet un handoff structuré → code-reviewer
hook (onSessionEnd)           → archive le transcript

Chaque couche ajoute du déterminisme, de la traçabilité ou de la capacité. Aucune n'est « l'agent ». Toutes sont de l'échafaudage.

C'est la leçon, quatre articles dans les patterns avancés : l'agent est la petite partie. L'échafaudage est le travail d'ingénierie.


Dernier article de la série : L'avenir du développement agentique — vers où ça va en 2026, sur quoi je parierais, et la ligne au-delà de laquelle je serais sceptique.

Partager cet article

#ClaudeCode #MCP #AgenticAI #DevTools #Architecture

LinkedInX / TwitterBlueskyThreadsRedditHacker NewsWhatsAppE-mail

Série — Claude Code Mastery

  1. Partie 01Claude Code vs ChatGPT vs Copilot vs agentsLa plupart des développeurs utilisent le mauvais outil d’IA pour la mauvaise tâche. Voici pourquoi — et que faire à la place.
  2. Partie 02Installation + le workflow antigravitéInstaller Claude Code prend 30 secondes. Mettre en place le workflow qui donne l’impression que l’agent fait tout le gros du travail — voilà la partie dont personne ne parle.
  3. Partie 03Écrire des prompts qui marchent« Rends ça mieux » n’est pas un prompt. « Refactor pour la perf » n’est pas un prompt. Voici la structure en quatre parties qui fait que Claude Code finit vraiment ce que vous demandez.
  4. Partie 04Slash commands — construire un projet de A à Z/init, /agents, /compact et vos commandes personnalisées. La boîte à outils qui vous fait passer du dossier vide à l’app qui tourne sans quitter le prompt Claude.
  5. Partie 05Sub-agents — les 11 experts spécialisés à l’intérieur de Claude CodeLes slash commands réutilisent des prompts. Les sub-agents réutilisent des personas entiers — code-reviewer, test-writer, migration-runner. Voici l’équipe que vous devriez avoir dès le premier jour.
  6. Partie 06Sécurité d’une base de code en productionPermissions, garde-fous et ce qu’il ne faut pas automatiser. L’article pas sexy qui décide si Claude Code devient une infra ou la raison pour laquelle on vous bipe à 2 h du matin.
  7. Partie 07Pipelines multi-agentsChaîner des sub-agents, les lancer en parallèle, et les patterns pour « review-en-codant » sans perdre la tête. Là où Claude Code commence à ressembler à une petite équipe d’ingénierie.
  8. Partie 08Construire des fonctionnalités complètesDu ticket Linear à la PR mergée avec Claude Code. Un walk-through réel et honnête — ce à quoi ressemblait le prompt, ce que l’agent a réussi, ce que j’ai attrapé en review.
  9. Partie 09Tests et debugLaisser Claude Code posséder toute la boucle de tests. Y compris les parties qui rendent les ingénieurs nerveux : régressions, flakies, tests d’intégration, et le chuchoteur de stack-traces.
  10. Partie 10Workflows d'équipeComment les équipes d'ingénierie intègrent réellement Claude Code aujourd'hui. Le dossier .claude/ partagé, les rituels de revue, et les anti-patterns que je vois sans cesse sur le terrain.
  11. Partie 11Patterns avancés — Hooks, serveurs MCP, outils custom, system promptsvous êtes iciUne fois qu'on a dépassé les valeurs par défaut : hooks pour des effets de bord déterministes, serveurs MCP pour les données métier, outils custom et chirurgie de system prompt.
  12. Partie 12L'avenir du développement agentiqueVers où ça va en 2026 et au-delà. Sur quoi je parierais, sur quoi je ne parierais pas, et la ligne au-delà de laquelle je deviens sceptique du hype.

Continuer

Cours

Le cours Claude Mastery

12 modules · 5 langues · certificat · 3 jours d’essai gratuit.

Voir les plans →
LinkedInX / TwitterBlueskyThreads