En bref
Vous avez écrit un plugin Claude Code avec une ou deux skills. Il a l'air de marcher. Mais est-ce qu'il marche mieux que Claude tout seul ? Jusqu'ici, la seule réponse possible était « j'ai l'impression que oui ».
La commande claude plugin eval, arrivée dans la v2.1.269 pendant la semaine du 7 au 11 septembre 2026, change ça. Elle fait tourner votre plugin sur une suite de cas de test, note les résultats et, par défaut, refait chaque cas sans le plugin pour montrer ce qu'il apporte vraiment.
L'analogie la plus proche, c'est l'essai clinique avec groupe témoin. On ne se contente pas de mesurer que les patients vont mieux, on compare avec ceux qui n'ont pas pris le traitement.
Le principe en trois notions
Un cas : un prompt réaliste, comme un utilisateur de votre plugin le taperait, plus un ou plusieurs correcteurs (« graders »).
Un grader : une vérification réussie ou ratée sur ce que Claude a produit. Par exemple une regex sur la réponse, le fait qu'un outil précis a été appelé, ou une grille d'évaluation qu'un second modèle applique à la réponse.
La baseline sans plugin : chaque cas tourne avec le plugin (colonne WITH) et sans (colonne W/OUT). La différence, Δ, c'est ce que votre plugin apporte. Si un cas obtient 1.0 dans les deux colonnes, ce n'est pas votre plugin qui le fait réussir.
Chaque cas tourne trois fois par défaut, parce qu'un seul essai d'un agent non déterministe ne dit pas grand-chose. Le score d'un cas est la moyenne de ses runs.
Prérequis
- Claude Code v2.1.269 ou plus récent (
claude --version, puisclaude updatesi besoin). - Git 2.31 ou plus récent, si git est installé.
- Un dossier de plugin avec un manifeste
plugin.jsonou.claude-plugin/plugin.json.
Chaque run est un vrai appel au modèle
Chaque run et chaque grader jugé par un modèle est un appel réel, décompté de votre forfait ou facturé sur votre compte API. Un cas, c'est par défaut trois runs avec le plugin et trois sans, soit six runs. Commencez petit.
Votre première suite, pas à pas
Faire rédiger les cas par Claude
Depuis la racine de votre plugin, lancez claude plugin eval init. Une session interactive s'ouvre. Claude lit votre plugin, vous demande à quoi ressemble un bon résultat, propose des prompts qui devraient déclencher le plugin et d'autres qui ne devraient pas, conçoit les graders, les essaie une fois et écrit un dossier par cas sous evals/. Quittez la session avec /exit quand Claude annonce que la suite est prête.
Lancer la suite
Toujours à la racine du plugin, lancez claude plugin eval . pour exécuter tous les cas.
Lire le tableau
Un tableau récapitulatif s'affiche avec les colonnes WITH, W/OUT, Δ, le nombre de runs et le coût estimé. Un rapport HTML détaillé est écrit sous evals/results/.
Itérer
Ajustez votre plugin, relancez, comparez.
# Depuis la racine du pluginclaude plugin eval initclaude plugin eval .
Exemple de sortie tiré de la documentation :
CASE WITH W/OUT Δ RUNS COST NOTESfirst-case 1.00 0.33 +0.67 6 $0.411 case(s) · mean Δ +0.67 · 74s · $0.41
Ici, le plugin fait passer le cas de 0,33 à 1,00 : il apporte clairement quelque chose.
Le diagnostic le plus fréquent
La documentation le dit elle-même : le premier constat le plus courant est un Δ proche de zéro, avec le grader qui vérifie l'appel de la skill en échec. Traduction : Claude ne choisit pas votre skill quand l'utilisateur formule sa demande naturellement.
La correction passe presque toujours par le champ description de la skill. C'est ce texte que Claude lit pour décider s'il l'utilise. Notre guide des skills détaille comment l'écrire.
Pour itérer vite et pour pas cher sur un seul cas, lancez un seul run sans baseline, puis confirmez avec les trois runs par défaut avant de conclure :
claude plugin eval . --case <nom-du-cas> --runs 1 --ablation none
Choisir de bons graders
Il existe six types de graders. Quatre sont calculés à partir de la transcription et des fichiers, et ne coûtent rien : regex, tool_used, tool_order et file_exists. Les deux autres, llm et baseline, font appel à un modèle juge et ajoutent au coût. Il n'existe pas de grader en code personnalisé.
Les conseils de la documentation pour obtenir des scores stables :
- Pour une sortie longue, comme un fichier généré, préférez une
regexsur le fichier. Réservez les gradersllmaux sorties courtes, avec des conditions PASS et FAIL concrètes. - Donnez à chaque cas un grader sur le résultat et un grader sur le chemin suivi (
tool_usedoutool_order). L'un dit si la réponse est juste, l'autre si c'est votre plugin qui l'a produite. - Si le grader de skill passe mais que le
Δest négatif, soupçonnez d'abord le juge. Relancez avec--judge-model sonnetpour un juge plus solide.
Un exemple de grader qui vérifie que votre skill a bien été appelée :
---type: tool_usedtool: Skillinput_match: '"skill"\s*:\s*"(?:[\w-]+:)?your-skill-name"'---
Sécurité : ce qu'un run peut faire
Les runs ne s'arrêtent jamais pour demander une permission. Par défaut, seuls les outils en lecture listés dans le cas sont autorisés. Bash, Write, Edit, WebFetch et WebSearch sont retirés, sauf si vous les accordez avec --allow-tools.
Si vous accordez Bash, chaque commande tourne dans le sandbox système de Claude Code : écritures confinées au dossier du run, dossier personnel illisible, réseau limité aux domaines accordés. Sous Windows natif, il n'y a pas de sandbox, donc les suites qui accordent un shell doivent tourner sous WSL2.
Les serveurs MCP réels de votre plugin ne démarrent pas pendant un run, sauf si vous le demandez. Vous pouvez les remplacer par des mocks en Markdown sous evals/mocks/.
En CI
claude plugin eval peut servir de garde-fou dans un pipeline. La documentation conseille notamment de fixer le modèle testé avec --model, pour qu'un changement de modèle par défaut ne soit pas pris pour une régression de votre plugin. Pensez aussi à ajouter evals/results/ à votre .gitignore.
Prochaines étapes
- Qu'est-ce qu'un plugin Claude Code ? : les bases avant d'écrire vos évaluations
- Guide des skills : écrire des descriptions que Claude comprend
- Claude Code en CI, en mode headless : intégrer vos évaluations dans un pipeline
- Nouveautés Claude Code d'août et septembre 2026 : le reste des nouveautés, dont
/skill-doctor