BLOG
Démontage technique 001|ponytail : le « développeur senior paresseux » qui fait écrire moitié moins de code à l'IA
I. Qu’est-ce que c’est ?
ponytail est un ensemble de règles (ruleset / skill) destiné aux agents de programmation IA. Il ne fait qu’une seule chose : faire en sorte que l’IA écrive « le code minimal qui fonctionne ».
Il imite ce vieux programmeur que l’on trouve dans chaque entreprise — avec une queue de cheval, des lunettes ovales, qui est là depuis plus longtemps que le système de gestion de versions. Tu lui montres 50 lignes de code, il jette un coup d’œil, ne dit rien, et les remplace par 1 seule.
Quelques faits clés :
- Projet GitHub DietrichGebert/ponytail, environ 129 000 étoiles, créé en juin 2026, a atteint cette ampleur en 3 mois, licence MIT
- Prend en charge 20 outils de programmation IA grand public : Claude Code, Codex, Copilot CLI, Gemini CLI, OpenCode, Cursor, Windsurf, Cline, Kiro, Zed, etc.
- Essentiellement, c’est un texte de règles : il n’écrit pas de code métier, mais injecte un ensemble de principes de contrainte dans l’agent.
Son principe fondamental se résume en une phrase : le meilleur code est celui que tu n’as pas écrit.
Pour dire les choses simplement, il transforme cette conscience que tu as dans la tête — « ne fais pas de surconception » — en quelque chose que l’agent passe en revue avant chaque intervention.
II. Mécanisme central : l’« échelle » à sept niveaux
Le cœur de ponytail est une échelle de décision (the ladder). Avant d’écrire un morceau de code, l’IA doit passer en revue ces sept questions dans l’ordre, en commençant par le premier niveau, et s’arrêter au niveau qui suffit :
- Est-ce que cette chose a vraiment besoin d’exister ? Les demandes spéculatives sont directement passées sous silence (YAGNI)
- Est-ce que ça existe déjà dans la base de code ? Réutiliser les helpers, utilitaires et motifs existants
- La bibliothèque standard peut-elle le faire ? Utiliser la bibliothèque standard, ne pas réinventer la roue
- Les fonctionnalités natives de la plateforme le couvrent-elles ? Par exemple, un simple
<input type="date">suffit, pas besoin d’installer une bibliothèque de sélecteur de date - Les dépendances déjà installées peuvent-elles résoudre le problème ? Si oui, ne pas ajouter de nouvelle dépendance
- Peut-on le faire en une ligne ? Une ligne
- Arrivé à ce stade, écrire seulement le code minimal qui fonctionne
Cet ordre n’est pas aléatoire : il place « ne rien écrire » en premier, « réutiliser l’existant » en deuxième, et « écrire du nouveau code » en dernier. Essentiellement, il transforme le bon sens de l’ingénieur — YAGNI, DRY, priorité à la bibliothèque standard — en une liste de vérifications que l’agent exécute avant chaque intervention.
Il y a trois niveaux d’intensité :
- lite (par défaut) : construit normalement, mais propose une alternative « plus économique » en une phrase, c’est toi qui décides
- full : oblige à parcourir toute l’échelle, avec priorité à la bibliothèque standard et aux fonctionnalités natives
- ultra : extrémisme YAGNI, écrit une ligne tout en remettant en question la demande elle-même
III. Évaluation technique : les données parlent
L’auteur de ponytail a réalisé un test de référence relativement honnête. Au lieu de faire générer un morceau de code par le modèle de manière isolée (ce qui est facile de gonfler), il a fait en sorte qu’une vraie session headless de Claude Code édite un vrai dépôt open source (un modèle full-stack FastAPI + React), exécute 12 tâches de fonctionnalités, avec le même agent qui tourne 4 fois avec et sans ce skill, et note selon le git diff laissé.
Résultats (par rapport à la « ligne de base sans skill ») :
| Solution | Quantité de code | tokens | Coût | Temps | Sécurité |
|---|---|---|---|---|---|
| ponytail | -54 % | -22 % | -20 % | -27 % | 100 % |
| caveman (contrôle de formulation concise) | -20 % | +7 % | +3 % | +2 % | 100 % |
| Prompt brut « YAGNI + une ligne » | -33 % | -14 % | -21 % | -30 % | 95 % |
Trois points remarquables :
-
ponytail est la seule solution où les quatre indicateurs baissent tous, tout en maintenant la sécurité à 100 %. Les autres solutions soit baissent peu (les tokens, le coût et le temps de caveman augmentent au lieu de diminuer), soit baissent mais la sécurité chute (la sécurité du prompt brut « écris en une ligne » tombe à 95 %).
-
Ce qui est le plus réduit, c’est précisément là où l’IA a le plus tendance à « surconstruire ». Pour un sélecteur de date, l’agent installe par défaut flatpickr, écrit un composant wrapper, ajoute une feuille de style, discute du fuseau horaire ; ponytail lui fait résoudre le problème en une ligne
<input type="date">— de 404 lignes réduites à 23. Le sélecteur de couleur passe de 287 lignes à 23. -
Ces données cachent l’honnêteté de l’auteur. Au début, ponytail affichait « 80-94 % de code en moins », puis quelqu’un (issue #126) a fait remarquer que le modèle de référence lui-même gonflait le code, l’auteur a donc changé la référence en mode agentique et corrigé le chiffre en un plus réaliste « -54 % en moyenne ». Un projet open source qui est prêt à baisser volontairement ses chiffres de communication, ce n’est pas courant.
IV. Jugement de valeur : quand l’utiliser, quand ne pas l’utiliser
Le vrai problème que résout ponytail est un défaut courant des agents de programmation IA : la surconstruction. Tu demandes à l’IA d’ajouter une petite fonctionnalité, elle t’installe une bibliothèque, écrit plein d’abstractions, introduit une structure dont on ne se sert pas. Plus il y a de code, plus le coût de maintenance est élevé, et — plus la génération est longue, plus elle est souvent chère, lente et sujette aux erreurs.
Les trois scénarios où il convient le mieux :
- Faire faire à l’IA de petites fonctionnalités, de petites modifications (ajouter un champ, écrire une validation, connecter une petite interface)
- Contrôler le coût et les tokens lors de l’exécution de tâches quotidiennes avec un modèle bon marché/rapide (comme Haiku 4.5)
- Pour les équipes qui veulent uniformiser le « style de code écrit par l’IA » et éviter que différentes personnes produisent du code aux styles très différents
Il faut aussi préciser ses limites :
- Son effet sur du code « déjà concis » est quasi nul, ce n’est pas un médicament miracle pour maigrir
- Il réduit la « quantité de code », pas la « correction » — quand la tâche elle-même est complexe et nécessite une structure, forcer à réduire à une ligne est au contraire nuisible (c’est pourquoi il y a les niveaux lite/full/ultra, ce n’est pas le plus extrême qui est le meilleur)
- Essentiellement, c’est une « injection de règles », il ne garantit pas que l’IA les respecte à chaque fois, il faut une revue pour se prémunir (c’est pourquoi il est livré avec des commandes de vérification comme /ponytail-review, /ponytail-audit)
- Si quelqu’un dans l’équipe a déjà une « manie de la propreté technique », ajouter le niveau ultra en plus risque de mener à l’autre extrême — une concision excessive qui rend le code illisible
Pour juger en une phrase : c’est un outil intelligent qui intègre le bon sens de l’ingénierie dans un agent IA, adapté aux petites tâches quotidiennes et aux scénarios sensibles au coût ; mais ce n’est pas une solution miracle, la structure qu’un système complexe doit avoir ne peut pas être supprimée.
V. Comment le mettre en place
L’installation se fait en deux lignes (exemple avec Claude Code) :
/plugin marketplace add DietrichGebert/ponytail
/plugin install ponytail@ponytail
C’est à peu près la même chose pour les autres outils : pour Codex, utilise codex plugin marketplace add DietrichGebert/ponytail, pour Copilot CLI, copilot plugin install ponytail@ponytail, pour Gemini CLI, gemini extensions install github.com/DietrichGebert/ponytail. Le README contient la liste complète des 20 outils.
Utilisation quotidienne (envoyer directement la commande dans l’agent) :
/ponytail lite|full|ultra|off— changer l’intensité ou désactiver/ponytail-review— vérifier la suringénierie dans le diff actuel/ponytail-audit— scanner la « graisse » de tout le dépôt/ponytail-debt— enregistrer dans un carnet les solutions temporaires « paresseuses » prises pour gagner du temps, pour les rembourser plus tard/ponytail-gain— voir combien on a économisé sur ce tour
Conseils de choix :
- Pour le quotidien, le lite par défaut suffit (il ne fait que « suggérer », c’est toi qui décides)
- Pour uniformiser le style de l’équipe et rechercher la cohérence, passe au full
- Pour un défi personnel extrême ou un prototype rapide, tu peux essayer ultra, mais ne l’utilise pas sur la logique cœur de la production
VI. Comment créer soi-même une solution similaire
Au final, ponytail n’est rien d’autre qu’un texte de règles. Tu n’as pas besoin de l’installer, tu peux en écrire un toi-même, ça marche pareil — et tu peux l’écrire pour qu’il soit plus adapté à ta propre équipe.
La méthode est simple : écris les « règles de base pour écrire du code » que ton équipe approuve dans un fichier de règles, et injecte-le dans ton agent IA. Avec Claude Code, écris-le dans CLAUDE.md, avec Cursor, dans .cursorrules, pour les autres outils, mets-le dans le system prompt ou un skill.
Tu n’as pas besoin de copier le contenu, mais cette « échelle » est une bonne structure. Il suffit d’écrire quatre phrases :
- Avant de commencer, demande-toi : cette demande est-elle vraiment nécessaire ? Si tu n’es pas sûr, demande d’abord, n’écris pas en devinant
- Est-ce qu’il y a déjà quelque chose de prêt dans la base de code ? Si oui, réutilise-le, ne le refais pas
- La bibliothèque standard ou les fonctionnalités natives peuvent-elles résoudre le problème ? Si oui, n’introduis pas de dépendance
- Quand il faut absolument écrire du nouveau code, écris le minimal qui fonctionne, ne fais pas de surconception
Puis ajoute tes propres règles d’équipe. Par exemple : les interfaces externes doivent obligatoirement avoir une authentification, les champs concernant des montants utilisent Decimal et pas float, quelles bibliothèques sont interdites, les normes de journalisation et de nommage. Ce sont ces choses qui ont vraiment de la valeur — ponytail ne donne que le « code minimal générique », les contraintes spécifiques au métier doivent être complétées par toi.
Il faut retenir une chose : les règles doivent être courtes, concrètes et applicables. Si tu en mets une page A4, l’IA ne les lira pas ; écris-en trois ou cinq qu’elle retiendra, et elle les appliquera vraiment.
Un dernier rappel : après avoir injecté les règles, laisse toujours quelqu’un faire une revue. ponytail lui-même est livré avec /ponytail-review et /ponytail-audit pour se prémunir — parce que même si l’IA respecte les règles, elle peut à un moment ou à un autre « paresser en toute confiance ». Les règles gèrent le plancher de l’IA, ta revue garde le plafond.
Conclusion
La valeur de ponytail ne réside pas dans « écrire moins de code » en soi, mais dans le fait qu’il transforme une évidence juste — « le meilleur code est celui qui n’a pas été écrit » — en une liste de vérifications que l’agent exécute avant chaque intervention. Avec un ensemble de règles, il maîtrise le défaut le plus agaçant des agents de programmation IA : résoudre un problème d’une ligne avec 50 lignes.
Mais pour l’utilisateur, ce qu’il faut vraiment apprendre, ce n’est pas « installer ce plugin », mais l’échelle à sept niveaux elle-même : avant d’écrire n’importe quel code, demande-toi d’abord « est-ce que ça a vraiment besoin d’exister ? ». Ce jugement, on peut l’installer dans l’agent, mais on devrait aussi l’installer dans sa propre tête.
Sources de référence
- Site officiel de ponytail : https://ponytail.dev
- Dépôt GitHub : https://github.com/DietrichGebert/ponytail
- Rapport complet du benchmark : benchmarks/results/2026-06-18-agentic.md dans le dépôt