Agent Skills et SKILL.md : la divulgation progressive, mesurée
Cinq skills réels contenant 128 374 tokens d’instructions occupent 253 tokens de contexte. Réduisez leurs descriptions, l’agent ne les trouve plus.
Dans cet article
Prenons un projet où sont installés cinq skills publiés. Voici leur coût.
ls .claude/skills/next-best-practices next-cache-components vercel-composition-patterns
vercel-react-best-practices vercel-react-native-skillsskill level 1 level 2 level 3 files
next-best-practices 40 966 19,374 19
next-cache-components 28 2,334 0 0
vercel-composition-patterns 59 533 10,667 13
vercel-react-best-practices 68 1,670 53,670 75
vercel-react-native-skills 58 950 37,957 41
------ ------- --------
total 253 6,453 121,668Cent vingt-huit mille tokens d’instructions, d’exemples et de règles — plus que ce qui tient dans une context window de 128 000 tokens — et le coût permanent pour rendre les cinq disponibles est de 253 tokens, deux dixièmes d’un pour cent. Rien d’autre dans ce cours n’a cette forme. Une définition d’outil se paie à chaque requête, qu’elle soit utilisée ou non, et le chapitre 26 a mesuré un serveur MCP à 1 619 tokens avant même qu’il fasse quoi que ce soit : trente-deux fois la ligne de niveau 1 moyenne du tableau ci-dessus.
Ce chapitre porte sur le mécanisme qui produit ce ratio, sur les deux façons dont il casse, et sur la question que ce mécanisme impose et à laquelle presque personne ne répond : étant donné un fragment de connaissance, à laquelle de quatre places appartient-il ?
Pourquoi ce chapitre n’a pas de langage de programmation
Lien vers la section : Pourquoi ce chapitre n’a pas de langage de programmationLe chapitre 14 a posé la règle pour la seconde moitié de ce cours — connexions, tentatives et annulation sont en TypeScript — et a déclaré cinq exceptions. Celle-ci en fait partie, et la raison n’est pas une préférence.
Un skill est un fichier Markdown. Pas un fichier qui configure un programme, pas un fichier qu’un programme compile : un document que le modèle lit, de la même manière qu’il lit le message que vous avez saisi. Donner un langage de programmation à ce chapitre reviendrait à ne pas avoir compris le format, et cette incompréhension est la plus courante à propos des skills. Tout ce qui suit est en Markdown et YAML, plus un petit script shell qui existe précisément pour montrer où le code a sa place, ou non, dans un skill.
La facture qu’il résout, et c’est l’arithmétique du chapitre 16
Lien vers la section : La facture qu’il résout, et c’est l’arithmétique du chapitre 16Voici une vraie instruction : la façon dont une entreprise rédige ses notes de publication. C’est une procédure, pas une préférence — elle a un ordre d’étapes, une taxonomie, une voix, un modèle et un script qui collecte la matière brute.
Mettez tout cela dans le system prompt, comme le font la plupart des équipes, et l’arithmétique du chapitre 16 prend le relais. Un system prompt est un préfixe, et un préfixe se paie à chaque appel. Mesuré avec o200k_base sur le dossier écrit pour ce chapitre :
whole thing pasted into the system prompt 1,716 x 40 = 68,640 input tokens $0.1373
as a skill, activated once on turn 12 46 x 40
+ 324 (SKILL.md body)
+ 665 (two reference files read)
= 2,829 input tokens $0.0057
as a skill, never activated at all 46 x 40 = 1,840 input tokens $0.0037Vingt-quatre fois moins cher quand il est utilisé, trente-sept fois moins cher quand il ne l’est pas. Les tarifs sont ceux du chapitre 16 : 2,00 $ par million de tokens d’entrée.
Voici maintenant l’objection honnête, car un chapitre qui l’ignorerait serait de la publicité. Le prompt caching comble presque l’écart financier. Un system prompt est stable et placé en premier, ce qui en fait le meilleur candidat au cache possible ; à 0,20 $ par million pour l’entrée mise en cache, les mêmes 68 640 tokens coûtent 0,0168 $ au lieu de 0,1373 $. Cela reste trois fois le skill, mais ce n’est plus un ordre de grandeur différent.
L’argent n’a jamais été l’argument le plus fort. Le voici :
Le caching rend un préfixe permanent moins cher. Il ne le rend pas plus petit.
Au tour 40, la version en system prompt contient toujours 1 716 tokens de politique de notes de publication dans la fenêtre pendant une conversation sur tout autre chose, en concurrence pour ce que le chapitre 24 appelait le budget d’attention du modèle. La version skill en a 46. Mettez en cache la mauvaise chose et vous avez acheté une remise sur une distraction.
Écrit sous forme de formule, avec tours, les métadonnées, le corps, l’ensemble du bundle et l’ensemble des fichiers du bundle effectivement lus :
Tout ce chapitre tient dans la différence entre multiplier le second terme par et le multiplier par un ou par zéro.
Ce qu’est réellement un skill
Lien vers la section : Ce qu’est réellement un skillUn skill est un répertoire. La spécification est assez courte pour être énoncée intégralement :
release-notes/
├── SKILL.md # required: YAML frontmatter + Markdown instructions
├── scripts/ # optional: executable code
├── references/ # optional: documentation read on demand
├── assets/ # optional: templates, schemas, examples
└── ... # anything else you likeSKILL.md doit commencer par un frontmatter YAML, et exactement deux champs sont requis : name et description.1 Quatre autres sont facultatifs et aucun autre n’est défini :
| Champ | Requis | Contrainte |
|---|---|---|
name | oui | 1 à 64 caractères, lettres minuscules, chiffres et traits d’union ; aucun trait d’union initial, final ou doublé ; doit correspondre au nom du répertoire |
description | oui | 1 à 1024 caractères, non vide ; dit ce que fait le skill et quand l’utiliser |
license | non | un nom de licence, ou le nom d’un fichier de licence inclus |
compatibility | non | jusqu’à 500 caractères : produit visé, packages requis, accès réseau |
metadata | non | une map libre de clés string vers valeurs string, pour vos propres outils |
allowed-tools | non | liste séparée par des espaces d’outils préapprouvés ; marqué expérimental |
Voici le skill de notes de publication, complet, avec son corps sous les trente lignes :
---
name: release-notes
description: Write the release notes for a tagged version in this company's house style. Use when preparing a release, drafting a changelog entry, or when someone asks for the notes for a version number or a tag.
allowed-tools: Bash(git log:*) Bash(git tag:*) Read
---
# Release notes
## Procedure
1. Run `scripts/collect.sh <previous-tag> <new-tag>`. It prints one line per merged
pull request: number, title, author and the labels.
2. Drop every line whose labels contain `internal`, `ci` or `chore`.
3. Put each surviving line into exactly one of the four categories in
[references/categories.md](references/categories.md). A change that seems to fit two
belongs in the higher one; the order in that file is the order of precedence.
4. Rewrite each line as a sentence in the voice defined in
[references/voice.md](references/voice.md). The pull request title is a note to
the team; the release note is a note to a stranger.
5. Check the result against [references/examples.md](references/examples.md).
## The one rule that is not negotiable
Every note says what a person can now do, or what stopped happening to them. If a
sentence can only be understood by someone who has read the diff, it is not finished.Lisez ce qu’est ce corps. Ce n’est pas la politique — c’est une table des matières avec un ordre d’opérations. La politique vit dans trois fichiers qu’il nomme et n’inclut pas. Et la première étape délègue le travail à un script, car le code d’un script n’entre jamais dans la context window : seule sa sortie y entre.2
Trois niveaux, et le coût de chacun
Lien vers la section : Trois niveaux, et le coût de chacunLe modèle de chargement a un nom et trois étapes. La spécification les énonce avec un budget de tokens associé :1
- Métadonnées, environ 100 tokens :
nameetdescription, chargés au démarrage pour chaque skill installé. - Instructions, recommandées sous 5 000 tokens : le corps
SKILL.md, chargé quand le skill est activé. - Ressources, selon les besoins : fichiers inclus, chargés seulement quand quelque chose les exige.
La documentation de référence ajoute une quatrième colonne au même tableau — quand chargé, coût en tokens, contenu — et la ligne qui compte est la troisième : aucun jusqu’à l’accès.3 La phrase qui résume tout le chapitre s’y trouve aussi :
Les fichiers ne consomment pas de contexte tant qu’ils ne sont pas consultés ; les Skills peuvent donc inclure une documentation API complète, de grands jeux de données ou de nombreux exemples. Le contenu inclus mais non utilisé n’entraîne aucune pénalité de contexte.3
Le tableau mesuré au début de ce chapitre vérifie cette affirmation sur cinq skills que personne n’a écrits pour cet article. Deux lignes méritent d’être lues l’une contre l’autre.
next-best-practices a un corps de 966 tokens qui pointe vers dix-neuf fichiers contenant 19 374 tokens. Demandez-lui de corriger une erreur d’hydratation et l’agent lit le corps plus hydration-error.md : 1 409 tokens sur 20 340, un facteur quatorze, et les dix-huit autres fichiers ne sont jamais ouverts.
next-cache-components a un corps de 2 334 tokens et aucun fichier inclus. C’est un skill valide et bien écrit, mais il n’a pas de niveau 3 à divulguer. C’est la limite honnête de la technique : la divulgation progressive n’économise quelque chose que s’il y a quelque chose à différer. Un skill dont la connaissance ne se décompose pas paie tout son corps à l’activation, et le seul levier restant est de ne pas l’activer.
Cassez-le : la description est toute l’interface
Lien vers la section : Cassez-le : la description est toute l’interfaceLe niveau 1 est une décision de routage prise à partir d’une phrase. Rien d’autre dans un skill n’influence le fait qu’il soit un jour ouvert — ni la qualité du corps, ni les exemples, ni les scripts. La description n’est donc pas une documentation. C’est la surface de requête, et elle peut être fausse.
La spécification le dit sous la forme d’un bon exemple et d’un mauvais, et le mauvais tient en quatre mots : description: Helps with PDFs.1 Cela mérite d’être mesuré plutôt qu’accepté.
Six skills, chacun avec une description plausible qui dit ce qu’il fait et quand l’utiliser. Vingt-quatre requêtes, quatre par skill, formulées comme une personne les formulerait et sans jamais nommer le skill. Le modèle voit les six lignes dans son system prompt et doit répondre par un nom ou par NONE. Décodage greedy, donc il reproduit. Puis les mêmes vingt-quatre requêtes avec les mêmes six skills, mais les descriptions réduites à leur sujet brut.
rich - sql-review: Review a SQL migration for locks, missing indexes and unsafe
defaults before it runs on the production database. Use when someone adds
or changes a migration, an index, or a table column.
thin - sql-review: Helps with SQL.rich 295 tokens of level 1 for six skills 18/24 correct = 75.0 % [55.1, 88.0]
thin 81 tokens of level 1 for six skills 10/24 correct = 41.7 % [24.5, 61.2]
paired: rich only 9, thin only 1, two-sided sign test p = 0.0215
answered NONE: rich 1 of 24, thin 9 of 24Lisez d’abord les intervalles, comme l’a exigé le chapitre 4 et comme le chapitre 29 l’exigera encore : ils se chevauchent, et vingt-quatre cas ne peuvent pas classer deux systèmes sur leurs seuls agrégats. La comparaison appariée tranche, avec l’instrument du chapitre 15 : sur les dix cas où les deux bras divergeaient, neuf sont allés aux descriptions riches et un aux descriptions minces. C’est établi au seuil habituel.
Lisez maintenant la dernière ligne, qui est le véritable résultat. Avec des descriptions minces, le modèle a répondu NONE à neuf requêtes sur vingt-quatre. Pas le mauvais skill : aucun skill. En voici quatre, verbatim :
"Check this migration before I run it against production." -> release-notes
"Will this CREATE INDEX lock writes?" -> NONE
"Is this ALTER TABLE safe to deploy at peak traffic?" -> NONE
"Is 'seamless and powerful' allowed in the app store listing?" -> next-best-practicesUn skill sql-review parfait était installé, avec un corps, des exemples et une checklist, et il n’a jamais été ouvert, trois fois d’affilée, sur les trois questions pour lesquelles il avait été écrit. Les niveaux 2 et 3 sont sans pertinence pour un skill que le niveau 1 n’atteint jamais.
Le coût de la correction : 214 tokens, la différence entre 295 et 81, répartie sur six skills. C’est le résultat du chapitre 18 qui arrive par l’autre côté. Là-bas, modifier seulement la description d’un outil a fait passer le formatage de dates de 2 bonnes réponses sur 24 à 24 sur 24. Ici, modifier seulement la description d’un skill fait passer l’activation de 10 sur 24 à 18. Dans les deux cas, la correction la moins chère du système est une phrase, et dans les deux cas cette phrase doit nommer le déclencheur, pas seulement le sujet : non pas ce qu’est la chose, mais ce que l’utilisateur viendra de dire quand elle s’applique.
Une réserve que ce chapitre doit à ses propres standards. Il s’agit d’un modèle d’un demi-milliard de paramètres, et un modèle frontier route bien mieux que 75 %. Retenez le mécanisme, pas l’ampleur : le signal de routage fait une phrase quel que soit le modèle qui la lit, et aucun modèle ne peut sélectionner à partir d’une information que vous n’avez pas mise dans cette phrase.
Cassez-le encore : l’échappatoire qui coûte 26 362 tokens
Lien vers la section : Cassez-le encore : l’échappatoire qui coûte 26 362 tokensLe second échec est l’inverse du premier. Le skill est trouvé, les niveaux sont correctement séparés, et l’agent lit quand même tout.
vercel-react-best-practices est un skill réellement bien construit. Son corps de 1 670 tokens est une table de priorités de huit catégories et une référence rapide nommant 70 fichiers de règles, une ligne chacun. Les règles sont sur disque à côté : 70 fichiers, le plus petit à 132 tokens, médiane 319, le plus grand à 1 052. Posez-lui une question sur les barrel imports et le coût honnête est le corps plus un fichier — moins de 2 400 tokens face à un bundle de 53 670.
Puis la dernière ligne du corps dit ceci :
## Full Compiled Document
For the complete guide with all rules expanded: `AGENTS.md`AGENTS.md fait 26 362 tokens. C’est la concaténation des 70 fichiers de règles : leur somme est 25 784, et la différence vient des titres entre eux. Le skill offre donc à l’agent le choix entre lire une règle médiane à 319 tokens et lire le même contenu, en entier, à quatre-vingt-trois fois le prix — et il propose ce choix dans une phrase sans coût attaché et sans condition indiquant quand le prendre.
Ce n’est pas un bug et le fichier n’est pas faux ; un document compilé est réellement utile à un humain, et à un agent auquel on a demandé d’auditer tout un codebase. C’est un fichier de niveau 3 avec une invitation de niveau 2, et la leçon dépasse ce skill : chaque chemin sortant d’un SKILL.md devrait dire ce qu’il coûte et quand il vaut la peine, parce que le modèle n’a aucun moyen de savoir qu’un nom de fichier est quatre-vingt-trois fois plus cher que le nom de fichier au-dessus.
Le même dossier porte une leçon plus petite sur l’obsolescence. Le corps dit « 70 règles dans 8 catégories » et en liste 70 ; le répertoire rules/ contient 72 fichiers, dont deux sont du scaffolding (_template.md et _sections.md) ; et le sidecar metadata.json dit « 40+ règles ». Trois décomptes du même ensemble dans un même dossier, l’un juste, l’un arithmétique, et l’un hérité d’une version antérieure. Un skill est un document, et les documents pourrissent exactement comme un commentaire de code qui s’est écarté du code qu’il accompagne — à ceci près que celui-ci est lu par une machine qui ne sourcillera pas.
Les champs ajoutés par l’implémentation de référence, et le piège de la portabilité
Lien vers la section : Les champs ajoutés par l’implémentation de référence, et le piège de la portabilitéLa spécification ouverte définit six champs de frontmatter. L’implémentation de référence, Claude Code, en accepte vingt.2 Cinq groupes méritent d’être connus par leur nom, car c’est là que le format cesse d’être seulement un document :
Permission et invocation. allowed-tools préapprouve les outils pour le tour qui a invoqué le skill, et l’autorisation disparaît au message suivant ; disallowed-tools les retire. disable-model-invocation empêche le modèle de le charger seul, ce qui transforme le skill en commande lancée par une personne. user-invocable: false fait l’inverse : caché aux personnes, disponible seulement pour le modèle, comme connaissance de fond.
Isolation et coût. context: fork exécute le skill dans un contexte de sub-agent séparé avec sa propre fenêtre — la frontière de sub-agent du chapitre 25 en une ligne de YAML — avec agent qui choisit le type et background qui décide si le tour attend. model et effort changent le modèle exécuté pendant que le skill est actif, pour ce tour seulement.
Arguments (arguments, argument-hint) permettent à une personne de passer des valeurs substituées dans le corps, ce qui rend un skill utilisable comme slash command. Scoping (paths) limite l’activation aux fichiers correspondant à un glob. Et l’injection dynamique de contexte est celle qui change le modèle mental : une ligne de la forme !`git diff HEAD` s’exécute avant l’envoi du corps, et sa sortie est substituée dans le texte. Le document est un template, et une partie est calculée au moment de la lecture.
Voici maintenant le piège, énoncé dans la même documentation : en dehors de Claude Code — dans le produit web, via la Skills API, dans le packaging — seuls les six champs spécifiés sont autorisés, et tout autre champ est une erreur bloquante à l’upload.2 Un skill qui fonctionne parfaitement dans un produit échoue donc à s’installer dans un autre appartenant au même fournisseur, et il échoue au niveau du frontmatter plutôt qu’à quoi que ce soit que vous pourriez tester en lisant la prose. Si vous voulez qu’un skill soit portable, les six champs constituent tout le budget. Sinon, dites-le dans compatibility, qui existe exactement pour cela.
Le tableau pour lequel ce chapitre existe
Lien vers la section : Le tableau pour lequel ce chapitre existeQuatre choses sont constamment confondues, et cette confusion n’est pas une pédanterie de vocabulaire : mal choisir coûte de l’argent à chaque tour, ou vous coûte une garantie que vous pensiez avoir.
| System prompt | Skill | Outil | Serveur MCP | |
|---|---|---|---|---|
| Ce que c’est | texte dans chaque requête | un dossier dont la racine est un SKILL.md | un JSON Schema plus un endpoint dans votre code | un processus ou service parlant un protocole |
| Ce que fait le modèle | il le lit, toujours | il le lit, quand il décide que la description correspond | il l’appelle, et attend votre résultat | il l’appelle, via l’hôte, un client par serveur |
| Ce que cela coûte | toute sa longueur, à chaque tour, pour toujours | environ 50 tokens par tour ; le corps une fois, si utilisé | son schéma, à chaque tour ; l’exécution quand il est appelé | chaque schéma plus le instructions du serveur, à chaque tour |
| Ce que cela peut garantir | rien — c’est un conseil | rien — c’est un conseil que le modèle peut ignorer | tout ce que votre code impose avant d’agir | tout ce que le serveur impose |
| Qui l’écrit | vous | vous, un collègue ou un fournisseur | vous | quelqu’un d’autre, pour de nombreux hôtes |
| Chapitre | 15 | celui-ci | 18 | 26 et 27 |
Les deux lignes en gras sont toute la distinction. Un skill se lit ; un outil s’invoque. Un skill est de la prose qui arrive dans la context window et rivalise pour l’attention avec tout le reste ; le modèle peut la suivre, la mal lire ou l’ignorer, et rien dans le système ne le remarque. Un outil est un appel qui quitte entièrement les mains du modèle : votre code reçoit des arguments, les valide, vérifie les permissions et décide. Le chapitre 18 le formulait ainsi : le modèle propose et votre code dispose, et cette division est exactement ce qu’un skill n’a pas.
Donc, six cas réels, résolus :
« Répondez dans la langue de l’utilisateur. N’indiquez jamais un prix qui ne vous a pas été donné. »
Lien vers la section : « Répondez dans la langue de l’utilisateur. N’indiquez jamais un prix qui ne vous a pas été donné. »System prompt. Cela s’applique à chaque tour, c’est une contrainte plutôt qu’une procédure, et cela tient en deux phrases. Quelque chose qui s’applique toujours n’a rien à divulguer progressivement, et payer une ligne de découverte à chaque tour pour éviter de payer deux phrases à chaque tour n’est pas une économie.
« Comment nous rédigeons les notes de publication ici. »
Lien vers la section : « Comment nous rédigeons les notes de publication ici. »Skill. Procédural, nécessaire peut-être un tour sur quarante, décomposable en voix, taxonomie et exemples, et c’est de la prose qu’une personne modifiera. C’est la forme pour laquelle le format a été conçu, et la mesure ci-dessus montre ce qu’elle économise.
« Chercher une commande par son identifiant dans la base de données de l’entrepôt. »
Lien vers la section : « Chercher une commande par son identifiant dans la base de données de l’entrepôt. »Outil. Il y a une fonction déterministe derrière, et le modèle ne doit pas improviser la requête. Écrire cela comme un skill — un document expliquant comment interroger l’entrepôt — donne le schéma au modèle et espère. Un schéma plus un endpoint lui donne une réponse.
« Lire et écrire des tickets dans notre tracker, depuis chaque produit agent utilisé par l’entreprise. »
Lien vers la section : « Lire et écrire des tickets dans notre tracker, depuis chaque produit agent utilisé par l’entreprise. »Serveur MCP. La capacité ne vous appartient pas, plusieurs hôtes en ont besoin, et elle a une histoire d’authentification. C’est le problème avec lequel le chapitre 26 s’ouvrait, un protocole est la réponse, et le chapitre 27 en livre un deux fois. Un skill ne peut pas être découvert par un hôte qui n’a jamais vu votre système de fichiers — ce qui est précisément le manque que le travail de standardisation en fin de chapitre est en train de combler.
« Le manuel de marque de quatre cents pages. »
Lien vers la section : « Le manuel de marque de quatre cents pages. »Aucun des quatre. C’est une connaissance à consulter, pas une procédure à suivre, et elle appartient à un index que l’agent recherche : chapitre 19. L’inclure en niveau 3 est permis, tentant et faux, parce que le modèle devrait deviner lequel de quarante fichiers contient la réponse à partir de leurs seuls noms. Ce qui est un bon skill, c’est la procédure de deux pages indiquant à l’agent quand rechercher cet index, ce que signifie un faible score de similarité, et comment citer ce qu’il trouve.
« Ne jamais rembourser plus de deux cents euros sans humain. »
Lien vers la section : « Ne jamais rembourser plus de deux cents euros sans humain. »Un outil avec une porte d’approbation, et jamais un skill. C’est le cas qui compte. Écrite dans un SKILL.md, la limite est une phrase que le modèle lit et respecte généralement ; écrite dans l’outil de remboursement, c’est une branche qui s’exécute avant que le moindre argent bouge. Une limite dont le franchissement vous mettrait dans l’embarras n’est pas de la documentation. La règle à mémoriser : si la conséquence d’ignorer l’instruction est pire qu’une réponse mal formatée, l’instruction n’a pas sa place dans un document.
Du jargon interne au standard, avec les chiffres
Lien vers la section : Du jargon interne au standard, avec les chiffresL’histoire est courte, exceptionnellement bien datée, et c’est la partie que presque personne ne raconte.
Les Agent Skills ont été publiés le 16 octobre 2025 comme fonctionnalité d’un fournisseur, définis dans cette annonce comme des « dossiers organisés d’instructions, de scripts et de ressources que les agents peuvent découvrir et charger dynamiquement pour mieux accomplir des tâches spécifiques », avec les trois niveaux décrits par une analogie à conserver : « comme un manuel bien organisé qui commence par une table des matières, puis des chapitres précis, et enfin une annexe détaillée ».4
Le 18 décembre 2025, la même page a été mise à jour pour annoncer le format comme un standard ouvert, avec sa propre spécification à agentskills.io, une gouvernance ouverte aux contributions et un validateur de référence.3 Lu le 7 septembre 2026, le showcase client du standard liste quarante-six produits — éditeurs, terminaux, plateformes cloud et runtimes mobiles, y compris les coding agents first-party d’Anthropic, OpenAI, Google et Mistral — chacun pointant vers sa propre documentation de configuration.1
La convergence avec MCP se fait au grand jour, avec des chiffres que vous pouvez vérifier :
| Ce que c’est | Ouvert | État au 7 sept. 2026 | |
|---|---|---|---|
| SEP-2076 | Agent Skills as a First-Class MCP Primitive : nouvelles méthodes skills/list et skills/get, une capacité skills, une notification list_changed | 13 janvier 2026 | clos, 24 février 2026 |
| Skills Over MCP working group | définit comment les skills sont « découverts, distribués et consommés via MCP » ; réunion hebdomadaire ; dix-sept membres listés, dont deux leads | interest group 1er février 2026 ; working group 16 avril 2026 | actif |
| SEP-2640 | Skills Extension, Extensions Track : convention de ressource skill://, identifiant d’extension io.modelcontextprotocol/skills, découverte via skills/list et contenu via resources/read | 23 avril 2026 | en revue |
La partie intéressante est la clôture, pas les propositions. SEP-2076 demandait une quatrième primitive à côté des outils, ressources et prompts. Le working group qui en est issu a décidé que la réponse était non : les skills voyagent sur la primitive resources qui existe déjà, comme extension opt-in.5 Le chapitre 26 mesurait le même instinct dans le changelog du protocole lui-même, où sampling, roots et logging ont été dépréciés plutôt que conservés. Un organisme de standardisation qui retire une proposition dont il est l’auteur se comporte bien, et la raison de raconter cette histoire avec les chiffres sous les yeux est que les résumés que vous lirez ailleurs décrivent encore les skills comme une primitive MCP.
Où cela mène ensuite
Lien vers la section : Où cela mène ensuiteVous pouvez maintenant écrire un SKILL.md, le diviser en trois niveaux qui se paient eux-mêmes, lire le frontmatter du skill de quelqu’un d’autre et savoir quels champs ne survivront pas à un upload ailleurs, et répondre à la question autour de laquelle tout le chapitre a été construit — system prompt, skill, outil ou serveur — avec une raison plutôt qu’une habitude.
Ce que vous ne pouvez pas faire, c’est dire si le vôtre fonctionne.
Chaque affirmation importante de ce chapitre était une mesure, et la plus importante était une précision : 18 sur 24 contre 10 sur 24, avec un intervalle sur chacune et un test apparié entre elles, parce que deux agrégats qui se chevauchent ne décident rien. Cet instrument a été emprunté. La description d’un skill est une clé de routage, son corps est une procédure que le modèle peut suivre ou non, et ces deux propriétés ne se découvrent qu’en exécutant la chose de nombreuses fois et en notant ce qui revient — ce qui exige un golden set, un grader écrit avant l’exécution, et la métrique qui demande si cela a fonctionné à chaque fois plutôt qu’au moins une fois.
Le chapitre 29 est cela, et il s’ouvre sur le nombre dont dépend la méthode de ce chapitre : un agent qui réussit sept fois sur dix ressemble à 70 %, et son pass^10 — la probabilité qu’il réussisse les dix — est zéro. Il mesure aussi trois graders sur les mêmes deux cents transcriptions et obtient 0 %, 13 % et 26 % sans régénérer un seul token. Avant de faire confiance à la phrase que vous venez d’écrire dans un description, il vous faut l’instrument capable de vous dire qu’elle est pire que celle que vous avez remplacée.
Sources et méthode
Lien vers la section : Sources et méthodeChaque décompte de tokens dans ce chapitre a été produit localement avec tiktoken 0.14.0 et l’encodage o200k_base, le 7 septembre 2026 : sur les cinq skills tiers listés au début de ce chapitre, et sur le skill release-notes écrit pour ce chapitre, dont le texte complet est reproduit ci-dessus en partie. Le niveau 1 est mesuré comme la ligne unique - name: description qu’un hôte rend dans le system prompt ; le niveau 2 est le corps SKILL.md après le frontmatter ; le niveau 3 est tout autre fichier du dossier. Les coûts utilisent les tarifs mesurés au chapitre 16 pour gpt-5.6-terra, 2,00 $ par million de tokens d’entrée et 0,20 $ par million de tokens d’entrée mis en cache, appliqués à ces décomptes — c’est de l’arithmétique sur des tokens mesurés, pas l’observation d’une facture réelle. Aucune API payante n’a été appelée pour écrire ce chapitre.
L’expérience d’activation a exécuté Qwen/Qwen2.5-0.5B-Instruct en demi-précision sur un GPU grand public, décodage greedy, 24 requêtes sur six skills, deux fois — une fois avec des descriptions indiquant ce que fait le skill et quand il s’applique, une fois avec des descriptions réduites à un sujet brut dans le style du « mauvais exemple » de la spécification. Les intervalles sont Wilson à 95 % ; la comparaison appariée est un test exact des signes bilatéral sur les dix cas discordants ; l’intervalle de Wilson est celui du chapitre 4 et le test exact apparié des signes celui du chapitre 15, tous deux réutilisés sans changement. Lisez les amplitudes comme une propriété d’un très petit modèle et la méthode comme transférable.
Les cinq skills mesurés ici sont des packages tiers, pas écrits pour ce chapitre : next-best-practices et next-cache-components depuis vercel-labs/next-skills, et vercel-composition-patterns, vercel-react-best-practices et vercel-react-native-skills depuis vercel-labs/agent-skills. Leurs décomptes internes — 70 fichiers de règles, AGENTS.md à 26 362 tokens, metadata.json daté de janvier 2026 et affirmant « 40+ règles » — ont été lus dans les fichiers sur disque le 7 septembre 2026 et sont des propriétés de cette version publiée, pas des critiques de leurs auteurs : chacun d’eux est le type de dérive qui apparaît dans tout arbre de documentation modifié plus souvent qu’il n’est compté.
Références
Lien vers la section : Références-
Agent Skills Specification et Overview,
agentskills.io/specificationetagentskills.io, lus le 7 septembre 2026. Source de la structure de répertoire ; du tableau de frontmatter reproduit ci-dessus avec chaque contrainte (name1 à 64 caractères et correspondant au répertoire,description1 à 1024 caractères,compatibilityjusqu’à 500,allowed-toolsmarqué expérimental) ; des bons et mauvais exemplesdescription; de la description de divulgation progressive en trois étapes avec son budget de tokens (métadonnées environ 100 tokens, instructions sous 5 000 recommandées, ressources selon les besoins) et du conseil de garderSKILL.mdsous 500 lignes ; de la note selon laquelle « l’agent chargera tout ce fichier une fois qu’il aura décidé d’activer un skill » ; des conventionsscripts/,references/etassets/; de la commandeskills-ref validate; de l’affirmation selon laquelle le format « a été développé à l’origine par Anthropic, publié comme standard ouvert, et adopté par un nombre croissant de produits agent » ; et du showcase client, qui listait quarante-six produits à la date de lecture. ↩ ↩2 ↩3 ↩4 -
Skills dans la documentation Claude Code,
code.claude.com/docs/en/skills, lu le 7 septembre 2026. Source du tableau complet des champs utilisé dans la section « champs ajoutés par l’implémentation de référence » —when_to_use,argument-hint,arguments,disable-model-invocation,user-invocable,allowed-tools,disallowed-tools,model,effort,context,agent,background,hooks,paths,shell,metadata,license,compatibility— de la description de l’injection dynamique de contexte avec!`command`exécuté avant l’envoi du corps, de la règle selon laquelle une autorisationallowed-toolsdisparaît au message suivant, et de la note de conformité selon laquelle, hors Claude Code, seuls les six champs spécifiés sont acceptés et tout autre provoque une erreur bloquante lors de l’upload ou du packaging. ↩ ↩2 ↩3 -
Vue d’ensemble Agent Skills,
platform.claude.com/docs/en/agents-and-tools/agent-skills/overview, lue le 7 septembre 2026. Source du tableau des niveaux avec ses quatre colonnes (niveau 1 métadonnées, toujours, environ 100 tokens par skill ; niveau 2 instructions, au déclenchement, sous 5k tokens ; niveau 3+ ressources, selon les besoins, aucun jusqu’à l’accès) ; de la phrase citée intégralement sur le contenu inclus n’entraînant aucune pénalité de contexte ; de « jusqu’à ce qu’un Skill soit déclenché, seuls son nom et sa description occupent le contexte » ; de l’affirmation selon laquelle le code d’un script n’entre jamais dans la context window et seule sa sortie le fait ; et de la section sécurité, qui vous dit de n’utiliser des skills que depuis des sources fiables et avertit qu’un skill malveillant « peut diriger Claude pour invoquer des outils ou exécuter du code d’une manière qui ne correspond pas à l’objectif déclaré du Skill » — le sujet du chapitre 30, arrivant par un document plutôt que par une description d’outil. ↩ ↩2 ↩3 -
Anthropic, Equipping agents for the real world with Agent Skills, 16 octobre 2025,
anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills, lu le 7 septembre 2026. Source de la définition citée ci-dessus, de l’analogie table des matières/chapitres/annexe, des trois niveaux tels qu’ils étaient décrits initialement, et du cadrage selon lequel les agents ont besoin de façons « plus composables, scalables et portables » de recevoir une expertise de domaine. L’annonce produit associée àclaude.com/blog/skillsporte la date de publication du 16 octobre 2025 et la mise à jour du 18 décembre 2025 qui a introduit la gestion à l’échelle de l’organisation et le standard ouvert. ↩ -
Skills Over MCP Charter,
modelcontextprotocol.io/community/working-groups/skills-over-mcp, lu le 7 septembre 2026. Source de l’énoncé de mission cité ci-dessus, des dates du changelog (interest group formé le 1er février 2026, charte initiale le 14 avril 2026, conversion en working group le 16 avril 2026, SEP-2640 lié le 25 avril 2026), de la direction et des dix-sept membres listés, du rythme de réunion hebdomadaire, et du critère de succès nommant le draft Skills Extension comme « une extension formelle utilisant les primitives Resources existantes ». SEP-2076, Agent Skills as a First-Class MCP Primitive,github.com/modelcontextprotocol/modelcontextprotocol/pull/2076, a été ouvert le 13 janvier 2026 et clos le 24 février 2026 ; il proposaitskills/list,skills/get, une capacité serveurskillset une notificationskills/list_changed, et définissait un skill comme « un bundle nommé d’instructions plus des références à des outils, prompts et ressources qui, ensemble, enseignent à un agent comment exécuter un workflow propre à un domaine ». SEP-2640, Skills Extension,.../pull/2640, a été ouvert le 23 avril 2026 sur l’Extensions Track et porte la convention de ressourceskill://et l’identifiant d’extensionio.modelcontextprotocol/skills. Le chapitre 26 liste le même working group parmi les extensions facultatives du protocole. ↩