- AGENTS.md complète le README et sert de fichier dédié contenant le contexte et les instructions dont les agents de codage IA ont besoin lorsqu’ils travaillent sur un projet
- Déjà utilisé dans plus de 20 000 projets open source, il regroupe des informations importantes pour les agents, mais inutiles pour les humains, comme le build, les tests ou le style de code
- Il fournit des instructions dédiées aux agents dans un emplacement clair et prévisible, ce qui permet de garder le README concis tout en renforçant l’efficacité de la collaboration
- Un seul fichier AGENTS.md est compatible avec divers agents et outils, et dans les grands monorepos, il est possible d’utiliser un AGENTS.md distinct par sous-projet
- Un standard ouvert conçu grâce à la collaboration de plusieurs écosystèmes, dont OpenAI Codex, Cursor et Google Jules
Why AGENTS.md?
- README.md est une documentation pour les humains : démarrage rapide, présentation du projet et consignes de contribution
- AGENTS.md est une documentation complémentaire pour les agents ; il contient un contexte détaillé comme les règles de build, de test et de code, sans alourdir le README
- Pourquoi un fichier séparé ?
- Fournir aux agents un emplacement prévisible pour les instructions
- Garder le README concis et centré sur les contributeurs humains
- Fournir des instructions précises dédiées aux agents en complément de la documentation existante
- Adoption d’un nom de standard ouvert que tout le monde peut utiliser, et non d’un format propriétaire
- Un seul AGENTS.md permet une compatibilité avec plusieurs agents de codage IA et outils
How to use AGENTS.md?
- 1. Créer le fichier AGENTS.md
- Le placer à la racine du dépôt (de nombreux agents prennent en charge sa création automatique)
- 2. Rédiger les sections principales
- Vue d’ensemble du projet
- Commandes de build et de test
- Consignes de style de code
- Méthode de test
- Considérations de sécurité
- 3. Ajouter des instructions supplémentaires
- Tout ce que vous transmettriez à un membre de l’équipe : règles de commit/PR, précautions de sécurité, grands jeux de données, étapes de déploiement, etc.
- 4. Gérer les monorepos
- Il est possible de placer un AGENTS.md pour chaque package
- Les agents lisent le fichier le plus proche et suivent les instructions adaptées au sous-projet concerné
- Exemple : le dépôt d’OpenAI contient 88 fichiers AGENTS.md
FAQ
- Éléments obligatoires : aucun, le format Markdown classique peut être utilisé librement
- En cas de conflit : le fichier AGENTS.md le plus proche prévaut, et le prompt explicite de l’utilisateur s’applique en dernier ressort
- Exécution automatique : les commandes de test indiquées dans le fichier peuvent être exécutées par l’agent pour tenter de corriger les erreurs
- Possibilité de mise à jour : modifiable à tout moment, à gérer comme un document vivant
- Migration depuis la documentation existante : conserver la compatibilité via un lien symbolique après changement de nom du fichier
mv AGENT.md AGENTS.md && ln -s AGENTS.md AGENT.md
1 commentaires
Avis Hacker News
Pour les petits projets, un seul fichier
.mdsuffit, mais d’expérience, pour les projets complexes, une structure de dossiers hiérarchique avec unindex.mdest bien plus efficaceUne structure composée d’un
index.mdet de fichiers enfants commeauth.mdouperformance.mdest aussi plus facile à maintenir, et permet à un LLM ou à un agent d’extraire uniquement le contexte pertinent sans gaspiller inutilement des tokensLes fichiers
.docsdeviennent adaptés à la fois aux humains et aux LLM, etindex.mdpeut aussi contenir de brèves indications sur chaque fichier ainsi qu’un guide d’organisationEn revanche, un nom comme
.agentsme paraît moins bon que.codebotsou.context, qui sont plus intuitifsJe ne pense pas qu’il soit nécessaire de cacher les fichiers et répertoires importants
Surtout pour la documentation, la cacher la rend au contraire plus opaque ; c’est peut-être une habitude héritée de la tradition, mais ce n’est pas un bon modèle
Je me demande si un nom comme
robot_docsne serait pas mieuxEn réalité, ces informations recoupent ce que les contributeurs veulent savoir, donc je pense qu’elles devraient à l’origine aller dans
CONTRIBUTING.mdCette structure ressemble à une documentation de conception logicielle / guide de style de code pour humains et robots
Moi, je mets ce type de fichiers
.mddans le dossierdocs/, rédigés directement par Claude CodeAGENTS.mdetCLAUDE.mddevraient être réservés uniquement aux robots, et qu’on découpe un gros fichier unique en sections via des en-têtes h2 ou qu’on le répartisse en plusieurs fichiers, chaque approche a ses avantages et ses inconvénientsIl existe aussi des formats de documentation d’architecture comme Arc42 qui prennent en charge les deux
Plutôt que de référencer une section précise dans un gros Markdown, il est plus simple et moins sujet aux erreurs d’en faire un fichier séparé puis de le @mentionner
Quand il faut se concentrer sur une partie précise, mieux vaut aussi pour les agents de code la découper en petits fichiers
Les petits fichiers sont aussi plus pratiques pour les diff et les revues de PR
On peut aussi avoir plusieurs fichiers
AGENTS.mddans une même codebaseL’outillage pourrait lire à la fois le
AGENTS.mddu répertoire courant et celui de la racine, ce qui permettrait de garder l’information proche du code tout en restant compatible avec l’approche souhaitéeJ’utilise moi aussi une structure similaire, et j’ai obtenu de très bons résultats en ajoutant à
index.mdune brève présentation de chaque fichierJ’expérimente aussi une approche consistant à placer des fichiers de règles de comportement souhaité par répertoire, comme
rules.mdPar exemple, dans un répertoire qui regroupe différents services comme
realtime-service.tsetqueue-service.ts, j’ajoute unrules.mdà côtéOn peut ensuite désigner ce fichier de règles dans le prompt pour générer facilement de nouvelles choses ; il faut encore réfléchir au nom
Nous sommes actuellement dans une phase transitoire où il faut écrire des guides spéciaux, au-delà de ce dont les humains ont besoin, pour aider les agents à comprendre la codebase
Je pense que bientôt ce ne sera plus nécessaire
Si la documentation de nos projets était dès le départ suffisamment complète, tout le contenu de
AGENTS.mdpourrait aussi s’y trouverNous devons toujours écrire la documentation pour les humains, et l’avantage des LLM, c’est justement qu’ils peuvent lire ce qu’ont écrit les humains
Je pense que c’est dans cette direction qu’il faut concevoir les choses
Ce n’est pas seulement utile pour comprendre la codebase, mais aussi pour expliciter certaines conventions de style précises (par exemple quelle bibliothèque d’assertions utiliser pour les tests, interdiction des commentaires, usage de logs structurés, etc.)
Cela peut même être encore plus utile dans un nouveau projet avec très peu de code
Je m’attends à voir davantage de règles lisibles par machine apparaître partout dans la société
On peut prendre l’exemple de la conduite autonome et du code de la route : des panneaux déjà difficiles à interpréter pour les humains selon le contexte (par exemple « virage à droite au feu rouge interdit, jours scolaires 7h–9h ») sont encore plus compliqués pour les machines
À terme, les administrations devront soit réduire le besoin de contexte, soit adopter des signaux lisibles par machine (QR codes, etc.)
Sans ce type de changement, les machines enfreindront souvent les règles
Dans des domaines comme la logique métier, je pense qu’il faudra toujours des indications spécifiques pour les agents
Ce qu’on construit, l’intention, l’objectif final du projet : la machine ne peut pas le deviner sans qu’un humain ne le lui explique concrètement
C’est aussi vrai pour l’architecture : comme chacun a ses propres critères, il faut avoir une représentation structurée en tête pour comprendre réellement les changements, et c’est au fond le vrai goulot d’étranglement
Je suis globalement d’accord, mais pour certaines informations (par exemple celles qu’on veut absolument injecter dans le contexte à chaque fois), on peut avoir envie de les forcer dans un fichier séparé
Si nous ne documentons pas les règles et hypothèses implicites que nous avons en tête, les LLM ne peuvent pas les connaître
Ils peuvent en inférer une partie à partir du code, mais jamais à 100 %, donc il est important d’écrire explicitement les exigences
AGENTS.md, au fond, joue le même rôle queREADME.md, mais avec un aspect hype, et il est amusant de voir que les gens remplissent réellement son contenuLes gens hésitent à écrire de la documentation pour d’autres humains, mais pour les robots ils s’y mettent avec enthousiasme, ce qui est fascinant
Cela me rappelle ces cas où un design ergonomique pensé pour une petite minorité finit par mieux convenir à tout le monde
C’est plutôt l’inverse : comme les gens ne lisaient pas la documentation, personne n’était motivé à l’écrire
Un
CLAUDE.mddestiné aux agents, une fois écrit, sera bientôt lu par 1000 agents, donc on a davantage envie de l’écrireAu fond, ne suffirait-il pas simplement de mettre le minimum dans
README.md?En pratique, même les agents risquent de ne pas lire ce document, ou d’oublier tout son contenu après quelques instructions supplémentaires
La situation actuelle vient du fait que les gens essaient activement d’écarter les développeurs humains — eux compris — du processus de développement, ce qui rend indispensable un guidage adéquat des agents
Parce qu’il y a un désir croissant d’éliminer toute implication humaine dans le développement logiciel
En plaisantant, on dira que l’ambiance du moment est au vibe coding
Il me semble aussi avoir déjà vu passer l’idée qu’écrire de la documentation pour les bots n’est au fond pas différent d’écrire une bonne documentation, tout court
Au final, on a l’impression qu’on dit simplement « créez un fichier
AGENTS.mdet remplissez-le de magie », puis qu’on renvoie vers un site externeDans mon cas, je développe un agent de code qui gère plus de 5 000 dépôts
L’état de l’agent est stocké dans un répertoire caché
.agent, avec des dossiers de configuration par rôle et des instructions clairement séparées selon le rôleDans le dossier du projet, je place un répertoire
agentsoù plusieurs fichiers sont répartis par rôle selon le modèle<Role> <instruction>L’agent ne lit que les fichiers correspondant au rôle défini, et l’état est conservé dans un dossier
dot<coding agent name>L’initialisation se fait avec
/init, et au lieu de simplement indexer tout le code du dépôt, on génère un résumé high-level de l’architecture et de la logique globaleCe résumé est fourni dans l’éditeur sous forme de « ghost comments » activables, une métadonnée non commitée dans le vrai code
Un système de mapping sophistiqué relie précisément chaque résumé aux lignes de code correspondantes
Au départ, je n’obtenais pas les résultats souhaités en appliquant directement le RAG au code, d’où cette structure actuelle
Aujourd’hui, j’utilise un modèle de recherche hybride combinant une recherche syntaxique rapide basée sur l’AST et une exploration sémantique (RAG) fondée sur les résumés
Par exemple, si on demande « comment fonctionne l’authentification de cette app ? », la recherche syntaxique ne trouvera que des fonctions contenant des mots comme
login, alors que la recherche sémantique, via les résumés, reconstitue tout le flux d’authentification de manière narrative et relie des éléments dispersés dans plusieurs fichiers ; ça fonctionne presque comme par magiePour aller plus loin, on peut créer une hiérarchie de résumés (sous forme de B-tree ou d’arbre classique)
Autrement dit, on a un résumé pour chaque méthode / classe / module, et chaque niveau pointe vers le niveau inférieur
Le RAG peut alors descendre aussi profondément que nécessaire selon la requête sémantique, chaque étape résumant le niveau en dessous pour réduire la quantité d’information tout en conservant le sens essentiel
Cette approche est particulièrement efficace quand le code présente de bonnes abstractions
Par exemple, pour une fonction comme
add(n1, n2), le nom suffit à transmettre le sens et il n’est pas nécessaire de connaître l’implémentation réelle, mais dans le monde réel les fonctions font souvent plusieurs choses — logs, cache, etc. — donc selon le contexte, il peut être nécessaire d’inclure aussi le code réelJ’aimerais beaucoup en savoir plus
On a l’impression que les humains sont lentement poussés à enfin rédiger correctement la documentation des projets
C’est une blague, mais c’est effectivement un argument que je mets en avant dans l’équipe
Même si les LLM n’augmentaient pas énormément la productivité en pratique, ils ont au moins pour effet secondaire de nous pousser à bien mieux documenter
"Mission. Fucking. Accomplished." xkcd 810
Je ne suis toujours pas convaincu qu’il faille absolument séparer
README.mdetAGENTS.mdD’après ce récapitulatif,
les raisons de les séparer seraient :
La principale raison de ne pas les séparer serait :
J’ai l’impression que
README.mdsert désormais un peu de page marketing / landing page, tandis queAGENTS.mdetCLAUDE.mdsont les endroits où l’on va chercher le vrai contenu sur le code, l’architecture et l’usageEn lisant les exemples, j’ai eu exactement la même impression, et je me demande si un bon
README.mdunique ne pourrait pas suffireREADMEest pour les humains,AGENTS.mdet consorts sont pour les LLMLes instructions d’usage et d’installation vont dans le readme ; la compilation, les tests, les décisions d’architecture, les standards de code, la structure du dépôt, etc. vont dans les documents destinés aux agents
Il faut aussi penser au problème de capacité du contexte côté LLM
README.mddevient trop volumineux pour être injecté en entier dans le contexteDans
AGENT.md, on ne met donc de manière concise que les commandes essentielles pour le LLM, comme les tests et le buildIl peut y avoir des recoupements avec le README, mais on veut éviter de retransmettre dans le contexte des contenus inutiles ou redondants
La promesse de l’IA, ce n’était pas justement qu’on n’aurait pas besoin d’être obsédés par un format précis, qu’on pourrait écrire comme on veut et que la machine s’adapterait ?
En pratique, seul le nom de fichier a été standardisé, et c’est probablement le bon choix : aucun format de contenu n’est imposé, chacun peut rédiger comme il veut
AGENTS.mdest un Markdown standard, donc on peut utiliser les titres que l’on veut, et l’agent analysera le texteMalgré tout, un certain degré de structure et de forme garde de l’importance
Même si on n’est pas au niveau de rigidité d’une syntaxe de code
Au final, tout se ramène à la nécessité d’écrire clairement le contenu
Et plus la documentation s’allonge, plus une approche structurée devient avantageuse pour sa maintenance côté humain
Chaque agent utilisé (
Claude Code,Gemini,Aider) a un nom de fichier différentCe serait bien qu’il y ait une standardisation, mais pour l’instant j’accepte l’effort supplémentaire consistant à utiliser ruler pour générer automatiquement plusieurs formats
En particulier, chaque agent consomme aussi différemment les fichiers de configuration MCP, donc je pense qu’une standardisation rapide sera difficile
ruler
Si l’on veut être un peu cynique, on peut y voir une manière de créer du vendor lock-in
Les entreprises semblent réticentes à la standardisation, sans doute parce qu’elle peut conduire à une forme de banalisation des produits
Jules utilise
AGENTS.md, ce qui montre que Google adhère aussi à ce standardSi
Gemini Code Assistcontinue d’être maintenu, on peut s’attendre à ce qu’il prenne lui aussi en chargeAGENTS.mdJe n’ai pas vu de nom de fichier spécifique mentionné dans la documentation d’Aider ; si tu as un lien, je veux bien
Anthropic semble être le seul à ne pas encore prendre en charge un nom de fichier standard
C’est un peu regrettable qu’un outil comme ruler soit réellement nécessaire
Ce site web a quelque chose d’étrange
Je me demande s’il a été créé par OpenAI pour attirer des visiteurs et se positionner sur le plan marketing
En réalité, il ne définit aucun format, seulement un nom de fichier
L’absence d’Anthropic / Claude se remarque aussi ; on pourrait à la rigueur utiliser un lien symbolique pour faire pointer
CLAUDE.mdversAGENTS.mdEn fait, il a été créé par Sourcegraph et existe depuis mai
Auparavant, c’était
agent.md, et maintenant le site redirige en 301 versagents.mdVoir l’ancien lien
Il y a aussi l’annonce officielle
Ils semblent avoir conclu récemment un partenariat avec OpenAI
Fait intéressant, c’était au départ
agent.md, puis c’est devenuagents.mdSi Claude n’apparaît pas dans la liste, c’est simplement parce que Claude ne prend pas encore en charge une convention standard de nom de fichier