Plugins Claude Code : mesurer leur impact avec les evals natives

Apprenez à tester les plugins Claude Code avec les evals natives, mesurer leur impact réel et bloquer les régressions grâce à un garde-fou CI.

Saturday, September 12, 2026Omid Saffari
Plugins Claude Code : mesurer leur impact avec les evals natives

Les plugins Claude Code ne se limitent plus à passer un contrôle de validité : vous pouvez désormais prouver qu’ils modifient réellement le comportement de Claude Code et de Claude. La commande native claude plugin eval soumet la même demande réaliste à deux configurations, l’une avec votre plugin et l’autre sans, puis note les résultats et affiche l’écart. Au lieu de se demander vaguement si « la skill semble se déclencher », on obtient un critère de mise en production assorti d’un budget de temps, de tours et d’usage.

Le moment est bien choisi. Claude Code 2.1.269 a ajouté les evals de plugins le 11 septembre 2026. Pourtant, le tutoriel daté qui domine encore cette requête repose sur un runner Python sur mesure. Pour maintenir aujourd’hui un plugin local, le chemin le plus court est donc natif : initialiser un cas comportemental, l’exécuter face à un groupe témoin, examiner le rapport, puis demander à la CI de refuser la régression que vous venez de provoquer volontairement.

Ce que mesurent vraiment les evals des plugins Claude Code

Une eval de plugin est un test A/B appliqué au comportement d’un agent. Imaginez deux ateliers identiques recevant la même fiche de travail : le premier dispose de votre plugin, le second non. Claude Code réalise la tâche dans les deux environnements, évalue le travail et présente WITH, W/OUT et Δ, soit le score avec plugin moins celui obtenu sans plugin.

C’est ce delta qui compte. Deux scores de 1.0 peuvent sembler parfaits, mais ils indiquent aussi que Claude savait déjà accomplir la tâche sans votre plugin. Un delta positif quantifie sa contribution ; un delta négatif révèle au contraire qu’il a dégradé le comportement testé.

Par défaut, un seul cas lance trois sessions neuves avec le plugin et trois autres sans. Chacune possède son propre dossier personnel, son répertoire de travail et sa configuration Claude Code. Vos réglages personnels, le fichier CLAUDE.md du projet, les autres plugins, la mémoire et vos serveurs MCP personnels ne sont pas importés. Cette isolation fiabilise la comparaison, mais elle fait aussi échouer — à juste titre — tout plugin qui dépend en secret de la configuration de votre ordinateur. La documentation d’Anthropic sur les evals de plugins détaille l’ensemble du contrat d’isolation et de sécurité.

Infographie architecturale montrant un prompt réparti entre trois exécutions avec plugin et trois sans plugin, avant le calcul d’un delta
Un cas forme deux groupes comparables. Le delta isole la contribution réelle du plugin.

Partir d’un plugin local qui fonctionne

Les evals comportementales viennent en second, après la validation. Le dossier du plugin doit contenir un plugin.json, un .claude-plugin/plugin.json ou une arborescence de skills valide. La commande claude plugin validate repère les problèmes de fichiers et de schéma ; claude plugin eval répond à des questions comme : « La skill s’est-elle déclenchée sur une demande naturelle et a-t-elle produit le format attendu par l’équipe ? »

Il faut également Claude Code v2.1.269 ou une version ultérieure, ainsi que la même authentification que pour vos sessions ordinaires. Les sessions d’eval, les graders fondés sur un modèle juge et l’assistant d’initialisation interactif consomment tous le quota de votre forfait ou sont facturés via l’API. Si votre environnement Claude Code est encore récent, commencez par le workflow local de base avant d’ajouter un garde-fou de mise en production.

Depuis la racine d’un plugin de confiance, vérifiez la version et créez un cas vide :

Bash
claude --version
claude plugin eval init --bare release-note

L’autre possibilité consiste à lancer claude plugin eval init en mode interactif. La commande analyse le plugin, vous demande à quoi ressemble un bon résultat, propose des cas et des graders, les teste une première fois, puis écrit la suite. Pour comprendre le contrat, l’option --bare est plus instructive : elle crée les fichiers sans rien exécuter.

Concevoir un cas comportemental facile à interpréter

Imaginons que le plugin fonctionnel contienne une skill appelée release-notes. Sa valeur ne réside pas seulement dans la rédaction d’un texte. Elle doit reconnaître une demande naturelle portant sur une évolution produit et restituer les notes de version selon les trois rubriques de l’équipe : Summary, Impact et Risk.

Placez la demande réaliste de l’utilisateur dans prompt.md. Ajoutez ensuite un grader déterministe pour le résultat et un autre pour le mécanisme. « Déterministe » signifie ici que la CLI contrôle directement la trace ou le texte, sans solliciter de modèle juge.

Text
# evals/release-note/prompt.md
---
name: release-note
tags: [smoke]
runs: 3
max_turns: 8
timeout_seconds: 180
allowed_tools: [Skill]
---

Turn this change into a customer-facing release note: checkout now retries a failed payment once before showing an error.

# evals/release-note/graders/format.md
---
type: regex
target: last_message
pattern: 'Summary[\s\S]*Impact[\s\S]*Risk'
flags: i
---

# evals/release-note/graders/skill-fired.md
---
type: tool_used
tool: Skill
input_match: '"skill"\s*:\s*"(?:[\w-]+:)?release-notes"'
---

Remplacez release-notes par la valeur réelle du champ name dans le fichier SKILL.md de votre skill. Le prompt évite délibérément de nommer la skill ou d’imposer les trois intertitres. Le test vérifie ainsi si le plugin reconnaît la tâche et apporte son propre format. Si le prompt fournit déjà toutes les réponses, le groupe sans plugin peut réussir lui aussi, et le delta montrera que le plugin apporte peu.

Le frontmatter ci-dessus correspond au schéma natif actuel. Dans prompt.md, les champs tels que runs, max_turns, timeout_seconds, model, tags et allowed_tools restent au premier niveau. Pour ajouter des fixtures, un historique de conversation ou des répertoires, utilisez case.yaml : ce fichier exige schema_version: "1.1" et name, tandis que les champs d’exécution passent sous execution:.

Exécuter l’eval et comprendre le rapport

À la racine du plugin, lancez claude plugin eval .. Pour ce cas unique, la commande ouvre trois sessions avec plugin et trois sessions de référence. À mesure qu’elles se terminent, les lignes de progression affichent le verdict des graders. Le récapitulatif fournit ensuite WITH, W/OUT, Δ, RUNS, COST et NOTES.

Lisez ces indicateurs dans cet ordre :

  1. WITH indique si les sessions équipées du plugin ont satisfait les graders.
  2. W/OUT montre à quelle fréquence Claude a obtenu seul le même résultat.
  3. Δ mesure l’apport du plugin. Une valeur positive est utile ; une valeur proche de zéro mérite une enquête ; une valeur négative signale une régression.
  4. COST est une estimation calculée au tarif catalogue, pas nécessairement la somme facturée dans le cadre d’un abonnement.
  5. NOTES renvoie vers l’échec au poids le plus élevé ou vers l’erreur d’exécution du groupe avec plugin.

Dès qu’une suite contient au moins un cas, elle écrit aggregate-result.json et un fichier autonome report.html dans un répertoire de résultats horodaté. Le rapport HTML permet d’ouvrir chaque exécution, de consulter le verdict et l’explication de chaque grader, puis de comparer les définitions du prompt et des graders au travail réellement effectué par Claude. Le JSON expose des champs stables pour la CI : score global, cas réussis, delta moyen, état partiel, estimation du coût, durée et version de Claude Code.

Provoquer une régression avant de faire confiance au test

Il faut maintenant prouver que le test sait échouer. Remplacez temporairement la description de la skill release-notes par une formulation vague, qui ne nomme plus la tâche qu’elle doit reconnaître. Ne touchez pas au cas d’eval. Relancez exactement la même commande, examinez le nouveau rapport, puis rétablissez la description correcte.

L’échec recherché porte sur le comportement : le grader Skill cesse de réussir, le format attendu devient moins fiable ou l’avantage du groupe avec plugin se réduit. Inutile de prédire un score précis, car les exécutions d’agents varient. Si cette panne volontaire ne change pratiquement rien au rapport sur les trois exécutions par défaut, votre cas ne protège pas encore le plugin. Rendez la demande plus représentative, durcissez le grader de résultat ou ajoutez un cas négatif dans lequel la skill ne doit pas se déclencher.

Cette panne volontaire joue le rôle du bouton de test d’un détecteur de fumée. Un tableau de bord vert ne vaut rien tant qu’on n’a pas vérifié qu’un défaut pertinent peut le faire passer au rouge.

Fixer le budget avant de multiplier les cas

Un cas par défaut génère déjà six sessions d’agent. Ajoutez un seul grader LLM, et ce même cas entraîne dix-huit votes du modèle juge : trois votes pour chacune des six sessions. Comme les sessions elles-mêmes peuvent s’étendre sur plusieurs tours, une petite suite peut consommer bien davantage que ne le laisse penser son nombre de cas.

Prévoyez trois budgets correspondant à trois décisions distinctes :

ÉtapeForme de la commandeCe que vous financez
Boucle locale rapide--case release-note --runs 1 --ablation none --no-publishUne session avec plugin, sans groupe témoin, pour obtenir un signal rapide pendant l’édition du cas
ConfirmationTrois exécutions par défaut dans les deux groupesSix sessions et un delta que l’on peut prendre plus au sérieux
Garde-fou CIModèles d’agent et de juge épinglés, --json, un seuil, --no-publish et --max-cost-usdDes résultats comparables, un artefact archivable et une règle d’arrêt pour les dépenses estimées

La boucle à une seule exécution est volontairement bruitée. Elle sert à détecter les erreurs évidentes ; validez ensuite le changement avec les trois exécutions par défaut. Pour les contrôles fréquents, privilégiez regex, tool_used, tool_order et file_exists, qui n’ajoutent aucun appel au modèle juge. Réservez un grader LLM aux résultats courts dont la qualité ne peut pas se résumer à une règle stable.

L’option de coût mérite une précision. --max-cost-usd plafonne l’estimation au tarif catalogue de la CLI avant le démarrage de chaque exécution. Celles qui sont déjà en cours vont jusqu’au bout ; l’estimation finale peut donc dépasser le plafond. Lorsque celui-ci est atteint, la commande conserve des résultats partiels et renvoie le code 2. C’est un garde-fou, pas un portefeuille prépayé.

Infographie architecturale du budget montrant une boucle rapide à une exécution, une confirmation de trois plus trois exécutions et un plafond CI de 20 dollars
Construisez la confiance par paliers : une exécution pour ajuster, trois plus trois pour confirmer, puis un plafond CI explicite.

Confier le contrôle de régression à la CI

Une fois la régression volontaire visible et le plugin restauré de nouveau au vert, placez exactement la même suite sous gestion de versions. L’exemple CI d’Anthropic épingle les modèles d’agent et de juge, écrit results.json, applique un seuil de 0.8, conserve le rapport en local et fixe à $20 le plafond du coût estimé. Il ajoute aussi --trust-plugin, une option à réserver au cas où le plugin et la suite extraits du dépôt sont du code que vous exécuteriez vous-même.

La commande à transmettre telle quelle est claude plugin eval . --trust-plugin --json results.json --threshold 0.8 --model claude-sonnet-5 --judge-model claude-haiku-4-5 --no-publish --max-cost-usd 20. Placez-la dans le job après l’installation et l’authentification de Claude Code, puis archivez les deux fichiers de résultats.

Le code de sortie suffit pour bloquer un build. Le code 0 indique que tous les cas ont été chargés et ont atteint le seuil. Le code 1 couvre un score inférieur au seuil ainsi que plusieurs erreurs de configuration. Le code 2 correspond à une exécution partielle provoquée par le plafond de coût ou par un rejet initial des identifiants. Même en cas d’échec, archivez results.json et report.html : l’auteur pourra distinguer une régression du plugin, un délai dépassé ou un arrêt imposé par le budget.

Épingler les modèles est essentiel, faute de quoi le déploiement d’une nouvelle version peut ressembler à une régression du plugin. Appliquez la même discipline au budget de raisonnement : testez séparément la qualité et le niveau d’effort, afin qu’une variation de coût ne se dissimule pas dans le score comportemental.

Infographie architecturale de CI dirigeant un rapport JSON d’eval vers trois voies de sortie : réussite, échec et résultat partiel
La CI doit conserver la cause, pas seulement la couleur : réussite, régression et arrêt partiel sur budget sont trois issues distinctes.

Sept comportements de plugin à tester en priorité

Les équipes qui ont le plus à gagner sont celles qui distribuent leurs plugins. Un assistant privé peut se contenter d’un contrôle manuel. Pour un plugin de marketplace ou d’entreprise, en revanche, une description imprécise, une autorisation d’outil mal réglée ou un changement de sortie se transforme en demandes d’assistance répétées.

RangProfilTest comportemental précisPourquoi il est rentable
1Responsable d’un plugin de marketplaceEmployer des demandes naturelles qui doivent appeler une skill, ainsi que des demandes proches qui ne doivent pas le faireDétecte les skills invisibles comme les déclenchements intempestifs avant qu’ils n’affectent chaque utilisateur
2Équipe d’un plugin de revue de codeÉvaluer les sections obligatoires de la revue et vérifier que la skill de revue s’est déclenchéeProtège le contrat produit tout en laissant varier la formulation
3Équipe chargée des mises en productionÉpingler le modèle actuel, modifier le plugin, puis comparer les mêmes cas et le même deltaDistingue les régressions du plugin des changements de modèle et réduit les débats subjectifs avant publication
4Auteur d’un plugin de sécuritéAjouter un cas négatif qui interdit la skill pour des demandes de maintenance sans risqueEmpêche des analyses coûteuses ou perturbatrices de démarrer sur les mauvaises tâches
5Plugin de workflow adossé à MCPRemplacer les réponses des outils externes par les mocks de la suite et évaluer le parcours d’outils obtenuExerce les cas limites et les échecs sans toucher à un service en production à chaque exécution
6Responsable d’un plugin de génération de documentsVérifier que le fichier attendu existe, puis contrôler son contenu stable avec une expression régulièreRepère les ruptures silencieuses du contrat de sortie qu’un message final rassurant peut masquer
7Équipe plateforme gérant plusieurs plugins internesÉtiqueter un petit ensemble de smoke tests pour chaque changement et exécuter les cas approfondis avant publicationConcentre les dépenses courantes sur les comportements les plus susceptibles de bloquer les collègues

Commencez par les deux premiers comportements dont vos utilisateurs remarqueraient immédiatement la disparition. Dix cas vagues sont moins utiles qu’un test de déclenchement et un test de résultat capables d’exposer un défaut reproductible.

Deux produits à bâtir autour des evals natives de plugins

1. Un garde-fou de delta sur les pull requests est l’occasion la plus solide

Construisez un produit CI léger qui exécute la commande native, lit aggregate-result.json et publie une seule revue indiquant l’évolution du score, le delta, le coût, le grader en échec et les liens vers le rapport archivé. Les équipes de plugins et les responsables de marketplaces paient pour cette couche de décision, pas pour un évaluateur supplémentaire.

La demande est encore naissante, mais son potentiel commercial est net. claude code evals représente environ 50 recherches mensuelles aux États-Unis, en hausse de 600% sur un an, avec un CPC de $17.61. Les plateformes d’évaluation généralistes confirment aussi l’existence de budgets qualité : Braintrust affiche une offre Pro à $249 par mois. Il s’agit d’un repère pour la catégorie, pas d’un conseil tarifaire pour un wrapper de plugin.

La plus petite version commercialisable est une GitHub Action assortie d’un commentaire sur la pull request. Elle accepte un chemin de plugin, un seuil, les modèles épinglés et un plafond de coût estimé ; elle téléverse les fichiers JSON et HTML natifs ; elle distingue le code de sortie 1 du code partiel 2. Le risque vient de la plateforme elle-même : Anthropic peut ajouter nativement les rapports de pull request. La couche défendable repose donc sur les règles communes à plusieurs dépôts, les comparaisons historiques et les circuits d’approbation, non sur une copie plus jolie du rapport natif.

2. Des packs d’evals sélectionnés peuvent servir les auteurs de skills

Commercialisez des packs de cas maintenus pour les usages courants des plugins : revue de code, rédaction de changelogs, triage d’incidents ou sélection sûre des outils. Un pack n’est qu’un répertoire evals/ ordinaire, composé de prompts positifs et négatifs réalistes ainsi que de graders déterministes. Une équipe peut ainsi l’adapter au lieu d’inventer de zéro son propre niveau de qualité.

La requête exacte claude code skill evals génère environ 10 recherches mensuelles aux États-Unis. Ce volume minuscule en fait un complément ciblé, pas un marché autonome taillé pour le capital-risque. Le MVP consiste en un excellent pack pour une seule catégorie de plugin à forte valeur, versionné au rythme des versions de Claude Code et accompagné d’un bref guide de calibration. La limite est tout aussi évidente : claude plugin eval init propose et teste déjà des cas. Les packs ne l’emporteront que si leurs scénarios métier et leurs critères d’échec surpassent une génération générique.

Ce que cette commande ne résout pas

Les evals natives ne prouvent pas qu’un plugin est bon en toutes circonstances. Elles montrent son comportement pour les prompts, l’environnement, le modèle, les autorisations d’outils et les graders que vous avez choisis. Des prompts trop faibles produisent des scores flatteurs. Une expression régulière peut récompenser le bon intertitre malgré un contenu erroné. Un juge LLM peut varier et ajoute trois votes par grader et par exécution.

L’isolation impose une autre contrainte saine. Chaque exécution repart de zéro : fichiers du projet, réglages utilisateur, hooks et serveurs personnels sont absents. C’est excellent pour la reproductibilité, moins pour un cas qui a oublié de déclarer ses fixtures. Les outils autres que ceux en lecture seule exigent une autorisation explicite en ligne de commande. Les vrais serveurs MCP d’un plugin réclament une activation et des autorisations supplémentaires ; quant aux hooks et aux serveurs réels, mieux vaut les confiner dans un runner isolé, car ils peuvent agir hors de la sandbox de l’agent.

Enfin, ne réduisez pas max_turns ou timeout_seconds au point qu’une tâche légitime atteigne la limite. Une exécution qui dépasse le délai ou le nombre de tours autorisé est enregistrée comme une erreur et fait généralement baisser le score. Laissez assez de marge pour le travail attendu, puis servez-vous du plafond de coût estimé pour maîtriser la suite dans son ensemble.

Comment tester les plugins Claude Code avec des evals ?

Depuis la racine d’un plugin fonctionnel avec Claude Code v2.1.269 ou une version ultérieure, lancez claude plugin eval init pour générer une suite, ou claude plugin eval init --bare <name> pour créer un cas vide. Placez ensuite un prompt réaliste et ses graders sous evals/, exécutez claude plugin eval ., puis comparez WITH, W/OUT et Δ dans le récapitulatif et le rapport.

Que sont les evals Claude Code ?

Ce sont des sessions Claude Code répétées et isolées, évaluées par des graders déterministes ou fondés sur un modèle juge. Par défaut, les evals de plugins ajoutent un groupe témoin sans plugin : vous mesurez ainsi si le plugin améliore le résultat, au lieu de simplement constater que Claude a terminé la tâche.

Comment fonctionnent les evals de skills Claude Code ?

Rédigez le prompt dans les termes qu’un utilisateur emploierait naturellement, puis évaluez à la fois le résultat et le fait que l’outil Skill ait appelé la skill visée. Si la skill se déclenche mais que le résultat échoue, ses instructions doivent être revues. Si le résultat est tout aussi bon sans le plugin, la skill n’apporte peut-être rien de mesurable dans ce cas.

Lundi, un responsable de plugin devrait ajouter un cas de déclenchement, le faire échouer volontairement, restaurer le plugin, puis plafonner exactement ce contrôle dans la CI. Si vous souhaitez déployer ce système de mise en production sur tous les plugins de votre équipe, je peux vous aider à concevoir le garde-fou destiné à la production.

Dernière mise à jour
12 sept. 2026
Catégorie
Build

Préférez ce site dans Google

Ajouter omidsaffari.com comme source préférée dans la recherche Google

Marquez omidsaffari.com comme source préférée et Google le met en avant pour vous dans Top Stories, AI Overviews et AI Mode.

Articles similaires
Agent vocal IA Cloudflare : diagnostiquer chaque latence

Agent vocal IA Cloudflare : diagnostiquer chaque latence

Identifiez l’étape qui ralentit ou bloque un agent vocal IA Cloudflare grâce aux métriques de tour, avant de changer de modèle ou de fournisseur.12 sept. 2026Build
Sous-titrer une vidéo avec Rendi : incruster un fichier SRT

Sous-titrer une vidéo avec Rendi : incruster un fichier SRT

Sous-titrer une vidéo avec un fichier SRT via l’API Rendi : préparez les fichiers, lancez FFmpeg, contrôlez le rendu et maîtrisez les coûts.11 sept. 2026Build
Agent IA OpenAI : Agents API ou Agents SDK, lequel choisir ?

Agent IA OpenAI : Agents API ou Agents SDK, lequel choisir ?

Agents API ou Agents SDK pour votre agent IA ? Comparez contrôle, sessions, coûts et exigences sur les données avant de choisir l’architecture OpenAI.11 sept. 2026Build
API FFmpeg Rendi : quel forfait choisir en 2026 ?

API FFmpeg Rendi : quel forfait choisir en 2026 ?

Comparez les tarifs de l’API FFmpeg Rendi, son calcul par volume traité, ses limites de stockage et d’exécution, puis choisissez le bon forfait.11 sept. 2026Build
Codex CLI : le guide pratique des worktrees Git

Codex CLI : le guide pratique des worktrees Git

Codex CLI 0.154.0 isole chaque tâche dans un worktree Git. Découvrez la configuration, les limites, la reprise de session et le nettoyage final.10 sept. 2026Build
Claude Code : le plafond d’effort enfin configurable

Claude Code : le plafond d’effort enfin configurable

Claude Code 2.1.267 ajoute maxEffortLevel : où placer ce plafond, comment la règle la plus stricte s’applique et comment mesurer qualité et coût.10 sept. 2026Build
Test end to end avec agent-browser : quel FPS pour la vidéo ?

Test end to end avec agent-browser : quel FPS pour la vidéo ?

Filmez un test end to end avec agent-browser v0.37.0 : choix du FPS, workflow ffmpeg, lecture des frames et coûts pour créer une preuve vidéo exploitable.8 sept. 2026Build
UltaHost VPS : ce que coûte vraiment le renouvellement

UltaHost VPS : ce que coûte vraiment le renouvellement

Découvrez les tarifs de renouvellement UltaHost VPS, les coûts réels selon la durée, les frais de panneau et les conditions à vérifier avant de payer.7 sept. 2026Build
Newsletter

Une lettre, chaque dimanche.Des systèmes qui tournent, pas des hot takes.

Hebdomadaire. Pas de spam. Désabonnement à tout moment.