- Dans une évaluation portant sur l’API de Next.js 16, l’index de documentation
AGENTS.mdinclus à la racine du projet a obtenu une précision supérieure à l’approche fondée sur les skills - Les skills prennent la forme de packages de connaissances métier invoqués par l’agent en cas de besoin, mais comme leur appel est instable, le taux de réussite n’atteint que 53 % dans la configuration par défaut
- À l’inverse, l’index
AGENTS.mdcompressé à 8 KB a atteint un taux de réussite de 100 % sur tous les tests (Build, Lint, Test) - Cette méthode montre des résultats plus stables que l’invocation proactive grâce à la suppression des points de décision, à la disponibilité permanente et à l’élimination des problèmes d’ordre
- Les mainteneurs de frameworks peuvent inclure dans AGENTS.md un index de documentation aligné sur la version afin d’améliorer la précision de génération de code
Contexte du problème
- Les agents de codage IA ont une limite : leurs données d’entraînement reposent sur d’anciennes versions d’API, ce qui les empêche de gérer correctement les frameworks récents
- Dans Next.js 16,
'use cache',connection(),forbidden()et d’autres éléments n’existent pas dans les données d’entraînement des modèles actuels
- Dans Next.js 16,
- À l’inverse, sur des projets basés sur d’anciennes versions, les modèles ont aussi tendance à proposer des API récentes qui n’existent pas
- Pour résoudre ce problème, une approche d’accès à une documentation alignée sur la version a été testée
Deux approches
- Skills : un package standard ouvert regroupant prompt, outils et documentation, que l’agent invoque et utilise si nécessaire
AGENTS.md: un fichier de contexte persistant situé à la racine du projet, toujours consultable à chaque tour de conversation- Les deux méthodes ont été comparées à partir de la même documentation Next.js
Limites de l’approche par skills
- Résultat de l’évaluation : dans 56 % des tests, le skill n’a pas été invoqué, et le taux de réussite par défaut est resté à 53 %, sans amélioration
- Sur certains points, les scores ont même été inférieurs à la baseline (par ex. test 58 % contre 63 %)
- Cela met en évidence la limite actuelle des modèles, qui n’utilisent pas les outils de manière suffisamment fiable
Expérience avec ajout d’instructions explicites
- Lorsqu’une instruction explicite a été ajoutée dans
AGENTS.md— « invoquer le skill avant d’écrire du code » — le taux de réussite est monté à 79 % - Cependant, de petites différences dans la formulation ont eu un fort impact sur les résultats
- « Invoquer d’abord le skill » → fixation sur le schéma de la documentation, avec perte du contexte du projet
- « Explorer le projet puis invoquer le skill » → meilleurs résultats
- En raison de cette fragilité linguistique, la fiabilité en usage réel reste faible
Construire une évaluation fiable
- Les premiers tests manquaient de fiabilité à cause de prompts ambigus et de problèmes de validation redondante
- Ils ont ensuite été renforcés avec une validation fondée sur le comportement et des tests centrés sur des API de Next.js 16 absentes des données d’entraînement
- Principales API testées :
connection(),'use cache',cacheLife(),forbidden(),proxy.ts,cookies(),headers(),after(),refresh()entre autres
Expérience avec l’approche AGENTS.md
- Le processus de choix de l’agent a été supprimé, et l’index de documentation a été directement inséré dans AGENTS.md
- L’index ne contient pas la documentation complète, mais une liste des chemins de documentation par version
- Instruction supplémentaire :
IMPORTANT: Prefer retrieval-led reasoning over pre-training-led reasoning for any Next.js tasks.- Elle vise à amener le modèle à privilégier un raisonnement fondé sur la documentation plutôt que sur ses données d’entraînement existantes
Résultats de l’évaluation
- L’insertion de l’index dans AGENTS.md a permis d’atteindre 100 % de réussite
- Build, Lint et Test ont tous donné des résultats parfaits
- Statistiques comparatives :
- Baseline 53 %, Skill par défaut 53 %, Skill + instruction 79 %, AGENTS.md 100 %
- Pourquoi l’approche par contexte passif surpasse l’invocation active
- Aucun point de décision — l’information est toujours présente
- Disponibilité constante — incluse dans le prompt système à chaque tour
- Suppression des problèmes d’ordre — pas de dépendance à la séquence d’exploration de la documentation
Résoudre le problème de capacité de contexte
- L’index initial faisait 40 KB, mais il a été réduit à 8 KB grâce à une compression (baisse de 80 %)
- Une structure délimitée par des barres verticales (
|) permet de stocker les chemins et noms de fichiers de documentation dans un espace minimal - L’agent lit uniquement les fichiers nécessaires dans le répertoire
.next-docs/afin d’utiliser des informations précises correspondant à la bonne version
Comment l’appliquer
- La configuration peut se faire avec une seule commande
npx @next/codemod@canary agents-md - Cette commande :
- détecte la version de Next.js
- télécharge la documentation correspondante dans
.next-docs/ - insère l’index compressé dans
AGENTS.md
- Cela fonctionne de la même manière dans les agents qui reconnaissent AGENTS.md, comme Cursor
Ce que cela implique pour les développeurs de frameworks
- Les skills restent utiles, mais pour améliorer la précision générale de génération de code, l’approche AGENTS.md est plus efficace
- Les skills conviennent mieux à des workflows centrés sur des tâches spécifiques, comme une « mise à niveau de version » ou une « migration App Router »
- Recommandations :
- ne pas attendre l’amélioration des skills et utiliser AGENTS.md dès maintenant
- n’inclure que l’index de documentation afin de minimiser le contexte
- valider avec des évaluations centrées sur des API absentes des données d’entraînement
- concevoir la documentation avec une structure de recherche fine
- L’objectif est de passer d’un raisonnement centré sur le pré-entraînement à un raisonnement fondé sur la recherche, et
AGENTS.mdapparaît comme la méthode la plus stable pour y parvenir
4 commentaires
En utilisant Context7, ce problème semble être résolu dans une certaine mesure.
https://context7.com
C’est parce que context7 est inefficace qu’on utilise les deux méthodes ci-dessus...
Je comprends ce que vous voulez dire, mais cela dit, plutôt que de devoir à chaque fois recenser et ajouter un par un dans AGENTS.md ou Skills les liens vers la documentation la plus récente de tous les frameworks/bibliothèques actuellement utilisés, j’ai l’impression qu’utiliser context7 en complément n’est pas un si mauvais choix.
Par ailleurs, ni l’article de GeekNews ni celui de Vercel ne mentionnent context7. Il me semble que vous avez interprété le contenu avec un demi-pas d’avance, donc je me permets de vous répondre.
(Pour information, le fait qu’un Skills ou un AGENTS.md bien rédigé permette d’économiser des tokens est déjà largement connu, et je le sais moi aussi.)
Commentaires sur Hacker News
Le modèle n’est pas une AGI. C’est simplement un générateur de texte, entraîné à produire des effets comme l’édition de fichiers ou l’appel d’outils
Le modèle n’utilise pas des compétences parce qu’il les « comprend », mais parce qu’il génère ce texte grâce à l’apprentissage par renforcement (RL) fondé sur des exemples conçus par des humains et des journaux d’utilisation
S’il n’utilise pas toujours les compétences, c’est simplement parce qu’il n’a pas encore assez appris à partir de ce type de cas. Le forcer via le RL pourrait au contraire le rendre plus bête
En ce moment, nous accumulons des journaux d’usage des compétences afin que les futurs modèles apprennent mieux quand il faut les utiliser
AGENTS.mdn’est qu’un contexte. Le modèle est entraîné depuis le début à suivre le contexteAGENTS.mdet les compétences relève finalement de la façon dont elles sont injectées dans le contexteLe frontmatter des compétences finit lui aussi dans le contexte, donc si
AGENTS.mdfonctionne mieux, c’est à cause de différences dans la manière d’extraire et d’injecter les informations des compétencesCertains agents peuvent même utiliser un petit modèle (ex. Haiku) pour décider quelles informations de compétences transmettre à un grand modèle (ex. Sonnet, Opus)
Au fond, tout se joue sur les informations qui entrent dans le « prompt brut »
C’est utile, mais pas parfait. La technologie GPT elle-même semble déjà être entrée dans une phase de stagnation des performances
Les prochaines améliorations viendront probablement de systèmes auxiliaires comme les compétences. Mais la fonctionnalité de compétences telle qu’elle est implémentée aujourd’hui est moins bonne qu’écrire directement dans
AGENTS.mdL’évaluation a montré que dans 56 % des cas, les compétences n’étaient jamais appelées. Autrement dit, la documentation existait mais n’était pas utilisée. D’où la blague : « au moins, il a réussi le test de Turing… »
La différence, c’est que l’IA accepte les corrections sans ego
On n’est pas encore au niveau d’un développeur senior, mais elle suit mieux les consignes qu’un junior
La découverte clé, c’est que la compression des pointeurs vers la documentation est efficace
C’est difficile à lire pour un humain, mais pour un LLM c’est une structure de référence directe et efficace
À l’avenir, au lieu d’heuristiques comme
agents.md/claude.md/skills.md, on pourrait voir se standardiser un format d’index compressé chargé en permanenceDes suites de tests d’API pourraient aussi être réutilisées pour valider les performances de code des LLM
Plus l’adoption des LLM progressera, plus les bibliothèques et les API devront elles aussi évoluer dans ce sens
Dans Antigravity (= basé sur
GEMINI.md), on avait demandé de suivre les règles deAGENTS.md, mais elles étaient ignoréesEn revanche, le prompt « vérifie si le projet contient un
AGENTS.md» fonctionnait à tous les coupsC’est un phénomène intriguant, un peu comme à l’époque où « let’s think step by step » déclenchait une chaîne de pensée
Si on inclut directement
AGENTS.mddans le prompt système, il est toujours présent dans le contexteMais inclure toutes les compétences à chaque fois serait du gaspillage. Il faut donc une approche qui ne les charge qu’au moment voulu, comme l’advanced tool use d’Anthropic
Au final, c’est une question d’équilibre entre contexte et coût. Si on a de la marge, les compresser dans
AGENTS.mdpeut être efficaceAGENTS.mdsemble simplement mieux fonctionnerCe type d’agent à auto-gestion du contexte devrait beaucoup progresser cette année
index/sparknotes), et une autre doit être ajoutée dynamiquement via exploration et rechercheLe taux de respect des compétences par Claude est faible
Je travaille moi aussi dans une zone proche. J’essaie d’évaluer quel impact la structure de scaffolding du projet a sur les résultats de Claude Code / Opencode
Mais la méthode de test de Vercel n’est pas assez claire, ce qui rend les comparaisons difficiles
AGENTS.mdn’est pas totalement différent des compétences, c’est plutôt une forme simplifiée de compétenceL’essentiel est la qualité de conception des compétences, c’est-à-dire réduire au minimum le nombre d’étapes que l’IA doit franchir pour trouver la bonne information
Moins il y a d’étapes, moins les erreurs s’accumulent
Et pour éviter le gaspillage de tokens, les gros fichiers ne sont ajoutés qu’une seule fois dans le prompt système
Chaque fois qu’un blog compare des techniques de prompt engineering, je me demande toujours si le test a été exécuté une seule fois ou répété plusieurs fois
Les LLM ne produisent pas des résultats stables, même avec la même entrée
La plupart du temps, on a l’impression de voir des données anecdotiques emballées comme de la science
Mais quand on benchmarke sérieusement, on obtient peu de vues ; quand on fait ça à la va-vite, le trafic du blog est multiplié par 9
Le problème, c’est une structure d’incitations biaisée
Il existe peut-être une meilleure méthode que
AGENTS.mdCréer un dossier
.contextet y placer, via des liens symboliques, la documentation du projet (README, docs des dépendances, etc.), afin qu’elle soit toujours chargée dans le contexteAinsi, le LLM disposerait dès le départ de toutes les informations nécessaires, ce qui permettrait d’améliorer les performances tout en réduisant les coûts
_vendorLe LLM peut alors analyser directement le code pour comprendre son fonctionnement
Claude.mdouAgents.md, puis les lire au besoinVoici ce que j’ai appris en créant mon agent personnalisé
AGENTS.mdpour la table des matières et les résumés (sparknotes)Quand j’ai mis
read/write_filedans l’état et que je l’ai affiché dans le prompt système, ça a beaucoup mieux marchéJ’essaie maintenant de le démontrer avec des évaluations quantitatives (
evals). Empiriquement, les performances semblent très bonnes