<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Frédéric Camblor</title>
        <link>https://devx.writizzy.blog</link>
        <description>Blog posts from Frédéric Camblor</description>
        <lastBuildDate>Fri, 21 Aug 2026 23:00:43 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>Writizzy</generator>
        <language>fr</language>
        <copyright>All rights reserved 2026, Frédéric Camblor</copyright>
        <item>
            <title><![CDATA[Un Skill n'est pas une librairie]]></title>
            <link>https://devx.writizzy.blog/p/un-skill-nest-pas-une-lib</link>
            <guid>https://devx.writizzy.blog/p/un-skill-nest-pas-une-lib</guid>
            <pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[On applique aux skills agentiques le réflexe de factorisation qui structure l'informatique depuis ses débuts. 
Je ne suis pas convaincu que ce soit le bon transfert. 


Plaidoyer pour une duplication assumée.]]></description>
            <content:encoded><![CDATA[<p><strong>Controversial opinion : je ne pense pas que partager des skills agentiques dans une logique de mutualisation soit une bonne idée.</strong></p>
<p>Je précise tout de suite, parce que la nuance va se perdre en trois secondes sinon : je ne dis pas qu&#39;il ne faut pas partager ses skills.<br>Je dis que <strong>partager n&#39;est pas mutualiser</strong>, et qu&#39;on est en train de confondre les deux.</p>
<p>Et le titre de ce billet n&#39;est pas juste une formule.<br>Aujourd&#39;hui, on distribue et on consomme des skills exactement comme on le ferait avec des librairies : des marketplaces et des registries qui les référencent (<a href="https://www.skills.sh/">skills.sh</a>, <a href="https://claudemarketplaces.com/skills">ccm-skills</a>, <a href="https://microsoft.github.io/apm/">APM</a> etc..), des CLIs pour les installer et les mettre à jour, des métadonnées, des stats de téléchargement, et même des audits Snyk pour évaluer leur sécurité.   </p>
<p>Toute la tuyauterie autour dit la même chose : <strong>traitez ces objets comme des dépendances</strong>.</p>
<p>Le problème, c&#39;est que <strong>la tuyauterie induit le mode d&#39;usage</strong>.<br>Quand quelque chose s&#39;installe comme une librairie, on l&#39;utilise comme une librairie - on attend une roadmap, des release notes, une rétrocompatibilité, un mainteneur…<br>Or un skill ne peut à peu près rien tenir de tout ça, pour des raisons qui n&#39;ont rien à voir avec la maturité de l&#39;écosystème et tout à voir avec la nature de l&#39;objet. </p>
<p>C&#39;est cette confusion-là que je veux défaire.</p>
<h2>Un réflexe vieux comme l&#39;informatique</h2>
<p>Factoriser, ce n&#39;est pas une mode récente.<br>C&#39;est probablement l&#39;un des gestes les plus fondamentaux dans ce métier, présent depuis les toutes premières sous-routines.<br>Extraire, nommer, réutiliser : c&#39;est la base.</p>
<p>D&#39;ailleurs, on factorise rarement dès la première duplication. La règle empirique la plus répandue, c&#39;est plutôt d&#39;attendre la troisième occurrence avant d&#39;extraire quoi que ce soit, précisément parce qu&#39;avec deux exemplaires on n&#39;a pas encore assez de recul pour savoir ce qui est réellement commun.</p>
<p>Mais une fois ce seuil franchi, le pipeline mental s&#39;enclenche tout seul :</p>
<blockquote>
<p>duplication → factorisation → abstraction → composant partagé → maintenance commune</p>
</blockquote>
<p>Ce pipeline a fait ses preuves sur du code. Il est aujourd&#39;hui appliqué tel quel aux skills.<br><strong>... et je pense qu&#39;il s&#39;y applique mal.</strong></p>
<h2>Écrire un skill coûte peu. Se l&#39;approprier coûte cher.</h2>
<p>La barrière à l&#39;entrée pour <strong>écrire</strong> un skill est <strong>ridiculement basse</strong> : tu brainstormes avec Claude pendant dix minutes pour sortir le premier jet. Puis tu itères pendant une vingtaine de minutes pour combler les trous dans la raquette. Le coût reste marginal, et le ROI est presque immédiat dès lors que tu es amené à l&#39;utiliser 4 ou 5 fois.</p>
<p>Le calcul change complètement quand il ne s’agit plus d’écrire un skill, mais d’en récupérer un.<br>Là, deux usages qu’on confond en permanence coexistent :</p>
<p><strong>Utiliser</strong> le skill de quelqu&#39;un d&#39;autre : coût quasi nul, et c&#39;est toute la promesse - tu l&#39;installes, ça marche, tu n&#39;es pas rentré dedans profondément et ce n&#39;est pas grave.<br><strong>Se l&#39;approprier</strong> : pouvoir décider si tu acceptes sa v2, arbitrer un désaccord, l&#39;étendre sans le casser.</p>
<p><strong>La mutualisation exige le deuxième, pas le premier.</strong> Tant que tu consommes, tu peux rester ignorant.<br>Dès que tu co-maintiens, il faut reconstituer les choix implicites, les exceptions, les garde-fous, les compromis, et surtout le contexte de conception.<br>Ce contexte n&#39;est presque jamais écrit : il est dans la tête des auteurs, perdu dans la discussion que ces derniers ont eu avec leur LLM favori.<br><strong>Pire</strong> : tu n&#39;as aucun moyen de distinguer un skill affiné pendant des semaines, voire des mois, d&#39;un skill sorti d&#39;un prompt d&#39;une phrase via Sonnet.</p>
<blockquote>
<p><strong>Bref, le calcul est vite fait : forker est souvent plus rapide que converger.</strong> Tu fais l&#39;inverse de ce que tu ferais avec du code, et c&#39;est normal, parce que l&#39;économie n&#39;est pas la même.</p>
</blockquote>
<h2>Le contexte n&#39;est pas un détail, c&#39;est la substance</h2>
<p>Un skill taillé pour un projet, une équipe, une manière de bosser, devra presque toujours être modifié ailleurs. Ce n&#39;est pas un défaut de conception : <strong>c&#39;est exactement ce qui le rend bon là où il a été écrit.</strong></p>
<p>Et je préfère très souvent <strong>un skill simple qui fit parfaitement avec mon cas d&#39;usage</strong> (à la Unix) à un skill générique capable de gérer dix scénarios exceptionnels dont je n&#39;ai pas besoin.<br>Cette généricité a un coût d’autant plus important avec les LLM : elle dilue les instructions, elle allonge le contexte, elle noie le cas nominal dans des branches mortes.</p>
<p>Le skill générique n&#39;est pas la version supérieure du skill spécifique. <strong>C&#39;est un autre objet, avec d&#39;autres compromis</strong>, généralement moins bons pour mon besoin spécifique.</p>
<h2>Une v2 de skill, c&#39;est un pari mal outillé</h2>
<p><strong>Sur du code, une régression se détecte. Sur un skill, non.</strong></p>
<blockquote>
<p>En améliorant un comportement : qu&#39;est-ce qui te dit que tu n&#39;en as pas dégradé 3 autres, silencieusement ?</p>
</blockquote>
<p>Il n&#39;y a pas de suite de tests qui tombe au rouge. Il y a juste un agent qui, dans deux semaines, prendra une décision légèrement à côté sans que personne ne comprenne pourquoi.</p>
<p>Sur une librairie, tu as une release note. Tu la parcours en deux minutes et tu sais ce que tu gagnes à migrer, ce qui casse, ce qui est déprécié. C&#39;est factuel et vérifiable.</p>
<p>Sur un skill, la release note serait <strong>purement subjective</strong>. Une ligne du type “<em>meilleure gestion des cas ambigus”</em> ne te dit rien : meilleure selon qui ? mesurée comment ? sur quel corpus ?<br>Tu n&#39;as aucun moyen de décider si tu dois migrer, à part relire le diff en entier et te reforger ton propre avis. Ce qui te ramène au coût d&#39;appropriation du point précédent.</p>
<p>Et le pire n&#39;est même pas là. <br><strong>Le pire, c&#39;est que ce qui est une feature pour moi est parfaitement susceptible d&#39;être un bug pour toi.</strong> <br>Sur une dépendance partagée, ça se règle avec une issue et un flag de configuration.<br>Sur un skill, ça se règle en ajoutant une exception, puis une deuxième, puis en transformant un texte clair en arbre de décision illisible.</p>
<h3>Les outils commencent à exister, mais ils déplacent le problème</h3>
<p>Il faut être honnête : évaluer un prompt n&#39;est plus le désert méthodologique d&#39;il y a un an.</p>
<p>Des outils comme <a href="https://github.com/anthropics/skills/tree/main/skill-creator">skill-creator</a> d’Anthropic, permettent aujourd&#39;hui de <strong>lancer des évaluations pour un skill</strong> (<em>jeux de cas, mesure de variance, benchmark de la description pour améliorer son déclenchement</em>).<br>Faire tourner un skill N fois sur un corpus de cas et mesurer la variance, ça se fait techniquement.<br>Mais constituer ce corpus, le maintenir, le rejouer à chaque évolution : c&#39;est un investissement qui n&#39;a plus rien à voir avec l&#39;idée de départ.</p>
<p>Un skill, c&#39;est censé rester quelque chose de simple qu&#39;on écrit en trente minutes ; si on doit s&#39;outiller comme pour un produit pour valider ses évolutions, <strong>on passe sur un autre braquet</strong>.<br>Le coût d&#39;écriture et de maintenance d&#39;une bonne suite d&#39;evals dépasse presque toujours le coût de réécriture du skill lui-même.<br>On outille la mutualisation en la rendant plus chère.</p>
<h3>Le vrai levier : faire compound le skill sur son propre usage</h3>
<p>La pratique qui a le plus payé pour moi n&#39;est pas d&#39;écrire des evals, c&#39;est d&#39;instrumenter la plupart de mes skills pour qu&#39;ils <strong>s&#39;auto-évaluent à chaque fin d&#39;exécution</strong> : qu&#39;est-ce qui a manqué ? qu&#39;est-ce qui a été deviné ? quelle instruction aurait dû être plus explicite ?<br>Cette auto-évaluation doit se faire de manière “meta”, dans une discussion qui analyse la discussion (<a href="https://www.conductor.build/">Conductor</a> est très bien pour ça, car il permet très facilement de référencer une discussion)</p>
<p>À chaque cas d&#39;usage réel, <strong>le skill produit ses propres axes d&#39;amélioration</strong>, que je réintègre (si pertinent) à la version suivante. Le skill ne devient pas un artefact figé qu&#39;on partage ; il devient un artefact vivant, calé sur mes usages qui me sont propres.<br>Ce qui, incidemment, le rend encore moins partageable  -  et c&#39;est très bien comme ça !</p>
<h3>Et par-dessus tout ça, les skills vieillissent</h3>
<p>Les modèles progressent vite. Beaucoup de skills existent uniquement pour compenser une faiblesse d&#39;un modèle à un instant T.<br>Six mois plus tard, cette faiblesse a disparu, et le skill est devenu au mieux inutile, au pire <strong>contre-productif</strong> : il contraint explicitement un modèle qui savait très bien faire implicitement.</p>
<p>L&#39;exemple le plus parlant, ce sont les bonnes pratiques de développement d&#39;un langage.<br>Il y a 1 an, on avait envie de les expliciter pour cadrer le modèle.<br>Mais les vendors entraînent leurs modèles sur les usages réels, en continu.<br>Mécaniquement, <strong>ces modèles convergent d&#39;eux-mêmes vers les pratiques les plus couramment attendues</strong>.</p>
<p>Typiquement, ton skill de conventions TypeScript écrit en septembre 2025 a toutes les chances d&#39;être un boulet en 2027 (spoiler alert, il l’est même sûrement en 2026 depuis Sonnet 4.5 et Opus).<br>Sans même parler du fait qu&#39;il n&#39;intégrera sûrement pas les nouveautés apparues entre-temps, en 2026 (tu as l&#39;idée).  </p>
<p>Ce vieillissement frappe aussi mon fork perso, évidemment. Il ne départage donc pas la duplication de la mutualisation.<br>Ce qu&#39;il fait vraiment apparaître, c&#39;est autre chose :</p>
<blockquote>
<p><strong>Un skill est plus souvent un consommable qu&#39;un actif.</strong><br>La bonne question n&#39;est pas &quot;comment je le maintiens à plusieurs&quot;, c&#39;est <strong>&quot;à quelle occasion je le jette&quot;</strong> (sous-entendu : comment puis-je détecter qu&#39;il devient du slop pour l&#39;agent ?).</p>
</blockquote>
<h2>Selfware : le contrat que personne n&#39;a signé</h2>
<p>Finalement, un skill c&#39;est à peu près la différence entre un projet OSS pensé dès le départ comme un produit générique, et du <em><a href="https://www.selfware.md/">selfware</a></em> : <strong>un truc construit d&#39;abord pour soi, qu&#39;on décide ensuite de rendre public</strong>.</p>
<p>Le selfware peut être extrêmement utile aux autres. Il n&#39;a simplement <strong>aucune vocation à répondre aux besoins de tout le monde</strong>. Personne n&#39;attend de lui une roadmap, une rétrocompatibilité, une gouvernance.</p>
<p>Et pourtant, dès qu&#39;un skill devient un asset partagé, il y a un ownership associé, dédié à le faire vivre.<br>Le mettre à jour quand un modèle ou un besoin change. Arbitrer entre deux besoins contradictoires. Comment est géré cet ownership concrètement ? Sur quel budget ? Avec quel temps alloué ?</p>
<p>La plupart d&#39;entre nous ont déjà vécu ça avec les librairies internes.<br>C&#39;est toujours la même trajectoire : une personne motivée la crée, elle est adoptée, puis la personne part sur d’autres sujets, elle quitte le projet qui l’utilise, voire l&#39;entreprise.<br>Sauf cas exceptionnels, il arrive fatalement un moment où <strong>il n&#39;y a plus de bande passante pour la maintenir</strong>.<br>Les tickets s&#39;accumulent. Le budget de maintenance n&#39;a jamais existé sur aucune ligne. Et la lib devient <em>stale</em> : encore installée partout, mais plus personne n&#39;ose ni ne veut y toucher.</p>
<p>Un skill mutualisé suit exactement le même chemin, <strong>en plus rapide</strong>, parce que la barrière à la contribution est très faible ET son environnement (les modèles) bouge beaucoup plus vite que celui d&#39;une librairie.<br>Sauf qu&#39;un skill obsolète <strong>ne casse pas bruyamment le build</strong>.<br>Il dégrade doucement la qualité de ce que produit l&#39;agent, et personne ne fait le lien.</p>
<blockquote>
<p><strong>La majorité des skills relèvent du selfware. Les traiter comme des librairies OSS, c&#39;est leur imposer un contrat qu&#39;ils n&#39;ont jamais signé.</strong><br>La bonne question n&#39;est pas de savoir qui maintient ce skill, mais qui se l&#39;est approprié et pourra mesurer son efficience dans le temps.</p>
</blockquote>
<h2>Quand le skill devient long, ce n&#39;est peut-être plus un skill</h2>
<p>Un skill qui décrit un processus en quinze étapes est un objet intéressant.<br>C&#39;est même l&#39;un des cas où lire celui d&#39;un autre a le plus de valeur : <strong>tu comprends son workflow, pas juste son résultat</strong>.</p>
<p>Mais je ne suis pas convaincu que le format skill soit le bon réceptacle à ce besoin.<br>Plus un skill est long, plus il est exposé au <em>context rot</em> : le modèle dérive, perd son objectif initial, applique 15 % du temps l&#39;étape 12 en ayant oublié la contrainte posée à l&#39;étape 3.</p>
<p>À ce niveau de complexité, la vraie question n&#39;est plus de savoir comment le mutualiser, mais plutôt <strong>s&#39;il ne devrait pas devenir un workflow davantage déterministe</strong>.<br>Je te partage ci-dessous les quelques signaux assez nets qui me font dire que tu es en train d’écrire du code dans le pire des langages de programmation possible (l’anglais/le français) :</p>
<ul>
<li><strong>Tu numérotes les étapes.</strong> Une numérotation, c&#39;est un aveu : tu veux un ordre garanti. Un prompt ne garantit pas un ordre, un script si.</li>
<li><strong>Tu écris &quot;ne surtout pas oublier de...&quot;.</strong> Chaque rappel défensif est un test unitaire déguisé - le genre de chose qu&#39;un hook forcerait à passer, plutôt que de compter sur le modèle pour s&#39;en souvenir au bon moment.<br>Les hooks sont d&#39;ailleurs à peu près le seul moyen d&#39;injecter du déterministe au milieu d&#39;une discussion : quand tu en écris 3 dans le même skill, <strong>tu ne fais plus que ceinturer une prose qui ne tient pas debout toute seule</strong>.</li>
<li><strong>Ton skill contient des branches conditionnelles imbriquées</strong> : <em>si... sauf si... mais dans ce cas...</em>.</li>
<li><strong>Tu relances deux fois pour avoir un résultat correct.</strong> <br>Le non-déterminisme n&#39;est plus une souplesse, c&#39;est un défaut.</li>
</ul>
<p>La frontière que j&#39;utilise pour ranger tout ça est simple :</p>
<blockquote>
<p><strong>Ce qui relève du jugement reste dans le prompt ; ce qui relève de l&#39;enchaînement sort dans le harnais (ou un workflow scripté).</strong></p>
</blockquote>
<p>Le prompt, c&#39;est ce qui gagne à rester en texte : parce que c&#39;est plus rapide à écrire que du code, plus facile à ajuster, et surtout parce que <strong>ça laisse une vraie flexibilité au modèle</strong>.<br>On y met naturellement tout ce qui relève du jugement - décider si une remarque est ambiguë, choisir un ton, arbitrer un compromis entre deux contraintes qui se contredisent - précisément parce qu&#39;un modèle est là pour ça : appliquer une intuition floue à un cas nouveau, sans qu&#39;on ait besoin d&#39;anticiper tous les cas.<br>C&#39;est aussi une question de barrière à l&#39;entrée : <strong>décrire textuellement ce qu&#39;on veut coûte dix fois moins cher que de le coder</strong>, tant qu&#39;on accepte le prix de cette souplesse.</p>
<p>Le harnais, c&#39;est ce qui doit sortir du texte <strong>dès que la souplesse devient un défaut</strong> : appeler tel outil avant tel autre, vérifier qu&#39;une étape a bien produit son artefact (un rapport de tests passants) avant de passer à la suivante, boucler jusqu&#39;à ce qu&#39;un critère soit atteint, s&#39;arrêter proprement quand une étape échoue.<br>Ça se code dans un workflow, un script, un hook - quelque chose qui <strong>garantit ce que le prompt ne peut que suggérer</strong>.<br>Le curseur entre les deux n&#39;est pas moral, il est économique : tant que le texte suffit et que tu peux vivre avec le non-déterminisme, tu restes dans un prompt ; le jour où tu ne peux plus, tu paies le coût du code, et tu récupères ce qu&#39;il apporte.</p>
<blockquote>
<p><strong>Ce n&#39;était pas le skill qui était mutualisable, c&#39;était le workflow qui dormait dedans.</strong></p>
</blockquote>
<h2>La foire aux skills sur étagère</h2>
<p>Autre effet de bord, très concret dans les grandes organisations : passé un certain volume, <strong>plus personne ne s&#39;y retrouve</strong>.</p>
<p>Des dizaines de skills disponibles, avec des noms qui se ressemblent, des périmètres qui se recouvrent à moitié, trois versions du même besoin écrites par trois équipes.</p>
<p>Je n&#39;ai pas de cas vécu à cette échelle. </p>
<p>Mais quand <a href="https://devx.writizzy.blog">j'écoute les équipes de Doctolib</a> parler de leur adoption des agents IA, ils évoquent une gouvernance qui porte sur 3000 agents (et donc implicitement, de skills/prompts associés) 🤯.<br>On parle d&#39;un objet dont l&#39;argument de vente est qu&#39;on l&#39;écrit en trente minutes - et à ce volume, <strong>produire n&#39;est plus la question, tout le travail est passé côté gouvernance</strong>.</p>
<blockquote>
<p><strong>Trouver le bon skill devient un travail en soi. Et savoir s&#39;il est encore à jour, un pari.</strong>  </p>
<p><strong>On finit par industrialiser la mutualisation d&#39;un objet qui coûtait moins cher à réécrire qu&#39;à référencer.</strong></p>
</blockquote>
<h2>Quand la théorie rencontre ma pratique</h2>
<p>Tout ce qui précède est plus intéressant si je le confronte à ce que je fais vraiment.<br>Deux exemples, qui vont dans deux directions opposées  -  c’est de cette contradiction qu’a émergé ma grille de lecture.</p>
<p><strong>Premier cas : la revue de code.</strong> </p>
<p>Sur ce sujet, j&#39;ai lu moi-même un nombre important (une dizaine) de skills existants.<br>Je n&#39;en ai adopté aucun, et je n&#39;ai forké aucun d&#39;entre eux.<br>J&#39;ai fini par écrire le mien, en gardant les trois idées que je trouvais bonnes, glanées ici et là :</p>
<ul>
<li>un <strong>council de subagents spécialisés</strong> qui reviewent en parallèle avec des angles différents, plutôt qu&#39;une passe unique qui essaie de tout voir ;</li>
<li>un <strong>ancrage dans les rules du projet</strong>, pour que la revue parle des conventions réelles (et que la source de vérité soit dans la rule, plutôt que dans le skill) ;</li>
<li>une <strong>classification par criticité</strong>, parce que le vrai coût d&#39;une revue automatique n&#39;est pas de la produire mais de la relire - et relire vingt remarques cosmétiques pour en trouver une pertinente, c&#39;est clairement une perte de temps !</li>
</ul>
<p>Le coût réel était dans la lecture, pas dans l&#39;écriture.<br>Et ce que j&#39;en ai retiré, ce n&#39;est pas du texte, <strong>c&#39;est trois idées</strong>. </p>
<p>Aucun des skills que j&#39;ai lus n&#39;est installé chez moi, et pourtant, <strong>tous m’ont servi</strong> (à leur niveau). <br>C&#39;est exactement le modèle &quot;partage → appropriation → réécriture&quot; : pas de fork, pas de dépendance, mais une vraie reconnaissance intellectuelle envers leurs auteurs.</p>
<p><strong>Deuxième cas : le design d&#39;interface.</strong> </p>
<p>J&#39;utilise <a href="https://impeccable.style/">impeccable</a> sans y toucher, et je le recommande : il produit des UIs qui sortent de l&#39;ordinaire, et que je trouve plus jolies que ce que Claude me génère par défaut.<br>C&#39;est probablement le skill que j&#39;ai le moins envie de réécrire - sauf qu&#39;il <strong>ne rentre dans aucune des cases que je viens de défendre</strong>.<br>Il embarque le “goût” (au sens artistique du terme) de ses auteurs, pas une norme extérieure ; je ne le maintiens pas ; je ne participe pas à ses évolutions.<br>Selon ma propre logique, je devrais le dupliquer et le spécialiser.</p>
<p>Je ne le fais pas. Et c’est pour une raison très naturelle.</p>
<h2>Une question de sphère</h2>
<p>Ce qui fait qu&#39;un skill se duplique ou se réutilise tel quel, ce n&#39;est pas sa qualité intrinsèque : <strong>c&#39;est la distance entre la sphère où il est né et la sphère où il est consommé</strong>.</p>
<ul>
<li><strong>Sphère personnelle</strong> : contexte réduit à une seule tête : la mienne.<br>Ce sont les skills les plus opinionated que j&#39;ai, ceux qui encodent mes préférences, ma façon de commit, de review, d’écrire du texte ou d’interagir avec mon LLM.<br>Aucune vocation à être partagés, parce que le contexte n&#39;est littéralement transmissible à personne. En revanche, j&#39;ai besoin qu&#39;ils me suivent : d&#39;une machine à l&#39;autre, quand j&#39;en change ; d&#39;un environnement local à un environnement remote (une exécution d&#39;agent via <a href="https://hermes-ai.net/">Hermes</a>, <a href="https://openclaw.ai/">Openclaw</a>, un container éphémère, un devcontainer).<br>Donc besoin de versioning et de portabilité, sans besoin de publication. Un dépôt privé, un dotfiles-like synchronisé, une CLI qui les pousse dans <code>~/.claude/skills</code> à la connexion - le vecteur importe peu tant que <strong>la distribution reste à sens unique et à destinataire unique</strong>.</li>
<li><strong>Sphère projet / équipe</strong> : contexte fort, partagé, versionné avec le code.<br>Le skill est un artefact d&#39;équipe, sa mutualisation est légitime parce que la maintenance est de facto collective. Les conventions, les outils, les contraintes métier sont réellement communs.<br>À cette échelle, un skill devient un <strong>support de consensus</strong> : un endroit où l&#39;équipe formalise les choix qu&#39;elle a arbitrés ensemble, plutôt qu&#39;un artefact à consommer aveuglément.<br>Le contexte de conception se transmet à l&#39;oral, les désaccords se règlent en face à face, et une régression silencieuse se détecte plus vite à cinq qu&#39;à un.</li>
<li><strong>Sphère outil</strong> : un skill livré avec le produit qu&#39;il pilote (Docker, un ORM, un CLI interne).<br>Le contexte est celui de l&#39;outil, pas du consommateur. La mutualisation est portée par l&#39;éditeur, pas par la communauté : c&#39;est lui qui connaît son outil, qui suit ses évolutions, qui a une raison structurelle de maintenir.<br>Le contrat de maintenance existe vraiment, parce qu&#39;<strong>il coïncide avec la vie du produit</strong>.</li>
<li><strong>Sphère marketplace / globale</strong> : aucun contexte partagé.<br>Ici la duplication devient le mode par défaut, et le partage n&#39;a de valeur que <strong>comme véhicule d&#39;idées</strong>.</li>
</ul>
<p>Cette grille, ça n&#39;est pas juste une nouvelle typologie : ça résout la contradiction du deuxième cas évoqué précédemment.<br>Et ces quatre sphères ne sont pas des cases hermétiques : un skill peut migrer de l&#39;une à l&#39;autre (typiquement : une astuce personnelle qui, une fois éprouvée, se généralise à l&#39;équipe).<br><em>Cela pose toutefois des questions d’overlap lorsqu’un skill personnel est susceptible de se déclencher sur les mêmes événements que les skills projet.</em></p>
<p><strong><a href="https://impeccable.style/">impeccable</a></strong> <strong>ne contredit pas la thèse : il opère dans une sphère où je n&#39;ai pas d&#39;avis</strong>, donc où je n&#39;ai rien à spécialiser.<br>Le jour où je me serai fait un avis, je dupliquerai le skill.<br>En attendant, importer le goût de quelqu&#39;un d&#39;autre - particulièrement quand l&#39;auteur est reconnu pour ses opinions solides -  est le meilleur deal possible.</p>
<p>Sur la revue de code à l&#39;inverse, j&#39;ai des opinions solides : <strong>dupliquer et diverger a de la valeur, parce que la divergence va quelque part</strong>.<br>Sur le design d&#39;interface, je n&#39;en ai pas, et &quot;diverger&quot; signifierait juste dégrader vers ma propre médiocrité esthétique.</p>
<p>D&#39;où la règle que je m&#39;applique, et que je te propose : <strong>tu peux prendre un skill <em>tel quel</em> quand tu n&#39;as pas de préférence</strong> - à condition d&#39;assumer que tu ne le maintiendras jamais, et de le jeter le jour où tu développes un avis sur la question.</p>
<h2>Donc : duplique, sans culpabiliser</h2>
<p>Prendre un skill.<br>Le copier.<br>Supprimer ce qui ne te concerne pas.<br>Ajouter tes propres contraintes. <br><strong>Le faire diverger.</strong> <br>Et ne pas chercher ensuite à refaire converger les versions.</p>
<p>Le modèle mental que je défends n&#39;est pas celui du composant partagé. C&#39;est plutôt :</p>
<blockquote>
<p>partage → appropriation → duplication → spécialisation → divergence</p>
</blockquote>
<p>Et cette divergence n&#39;est pas l&#39;échec du partage. <strong>C&#39;est son résultat souhaitable.</strong></p>
<h2>Le partage, pour quoi faire alors ?</h2>
<p>Si mutualiser est illusoire dans la sphère globale et que dupliquer devient la règle, à quoi sert-il encore de publier ?</p>
<p><strong>À onboarder les gens qui découvrent les agents IA.</strong></p>
<p>Avoir des skills sur étagère est probablement le meilleur moyen de comprendre rapidement ce qui est possible. Ils rendent concrets des usages qu&#39;on n&#39;aurait pas imaginés et ils montrent comment d&#39;autres structurent leurs interactions avec un modèle.  </p>
<p>Quand tu ne connais pas encore le champ des possibles, <strong>un catalogue vaut mille explications</strong>.</p>
<p><strong>Et surtout, à donner des idées</strong></p>
<blockquote>
<p><strong>Le vrai objet du partage n&#39;est pas le fichier, c&#39;est l&#39;idée qu&#39;il transporte.</strong></p>
</blockquote>
<p>Découvrir qu&#39;on peut déléguer telle tâche, cadrer tel raisonnement, automatiser tel enchaînement auquel on n&#39;avait pas pensé.<br>Cette idée-là, tu la gardes même après avoir jeté le skill qui te l&#39;a fait découvrir.</p>
<p>Quand je publie un skill, <strong>mon objectif n&#39;est pas que ma façon de faire soit adoptée</strong>.<br>Ce n&#39;est pas un standard que je propose, ni un composant que j&#39;espère voir installé partout.<br>Ce que j&#39;ouvre, c&#39;est une fenêtre sur la manière dont j&#39;ai appréhendé un problème : ce que j&#39;ai considéré comme important, ce que j&#39;ai décidé d&#39;ignorer, les compromis que j&#39;ai acceptés.</p>
<p>Si tu lis ça et que tu en tires une meilleure version pour toi, y compris en jetant 80 % de ce que j&#39;avais écrit, <strong>alors le partage a parfaitement fonctionné</strong>.</p>
<h2>Ce que ça change pour moi</h2>
<blockquote>
<p>Give a man a fish and you feed him for a day; teach a man to fish and you feed him for a lifetime !</p>
</blockquote>
<p>Cet adage est bien connu.<br>Un skill partagé, ce n’est pas un poisson qu’on te sert : c’est quelqu’un qui pêche devant toi.<br>À toi de prendre la canne ensuite et d’écrire le tien.</p>
<p>Je m’inscris quand même en faux sur un point: donner du poisson peut avoir une utilité réelle.<br>Ça permet par exemple de <strong>découvrir très vite qu&#39;on n&#39;aime pas le poisson</strong>, sans avoir passé des après-midi à apprendre à pêcher.<br>C&#39;est exactement la valeur du skill sur étagère pour quelqu&#39;un qui débute.</p>
<p>Mais sur la durée, je préfère largement demander aux gens d’apprendre à pêcher (<em>particulièrement quand l’investissement de cet apprentissage est faible</em>).</p>
<p>Concrètement, ça veut dire arrêter de raisonner en catalogue et commencer à raisonner en sphères.<br>Avant de publier un skill, se demander : <strong>dans quelle sphère est-ce qu&#39;il vit</strong> ?<br>Avant d&#39;en installer un, se demander : <strong>dans quelle sphère est-il né, et est-ce que je vais l&#39;habiter ou juste passer</strong> ?</p>
<p>Le partage reste précieux, mais son unité de valeur n&#39;est pas le fichier qu&#39;on installe.<br>C&#39;est l&#39;idée qu&#39;on emporte, le pattern qu&#39;on reconnaît, la contrainte qu&#39;on n&#39;avait pas vue.<br><strong>Le succès d&#39;un skill ne se mesure pas au nombre d&#39;installations.</strong><br>Un skill bien partagé, ce n&#39;est pas un skill installé partout : c&#39;est un skill qui a fait réfléchir, puis qu&#39;on a réécrit à sa main.</p>
<blockquote>
<p><strong>Un bon skill n&#39;est peut-être pas celui qu&#39;on réutilise tel quel, mais celui qu&#39;on a envie de réécrire après se l&#39;être approprié.</strong><br>Et si on a envie de le jeter six mois plus tard, tant mieux. Ça veut dire que le contexte a bougé, et qu&#39;on a nous-même bougé avec.</p>
</blockquote>
]]></content:encoded>
            <category>ai</category>
            <category>skills</category>
            <enclosure url="https://writizzy.b-cdn.net/blogs/b3934023-35bd-489d-a565-9c0a6da9a406/1786488403648-bwq128a.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[IA au quotidien - Paralléliser sa production agentique de code]]></title>
            <link>https://devx.writizzy.blog/p/paralleliser-sa-production-agentique-de-code</link>
            <guid>https://devx.writizzy.blog/p/paralleliser-sa-production-agentique-de-code</guid>
            <pubDate>Sun, 08 Mar 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Avec les agents IA, ma production de code a cessé d’être mono-thread : la limite n’est plus ma vitesse de frappe, mais ma capacité à organiser plusieurs flux de travail simultanément. Worktrees Git, Vibe Kanban et tâches lancées en parallèle ont profondément changé ma façon de développer - au point de questionner l’idée même de mesurer le travail en temps passé.]]></description>
            <content:encoded><![CDATA[<p><em>Je suis développeur fullstack senior et, depuis 3-4 mois, <strong>je code presque exclusivement avec Claude Code</strong>.</em></p>
<p><em>Ce n&#39;est pas une figure de style : je ne tape quasiment plus de code à la main, parce que je suis dorénavant convaincu que Claude est plus rapide et généralement plus fiable que je ne le suis moi-même sur l&#39;activité de production &quot;brute&quot; de code. J&#39;ai fini par l&#39;accepter et me faire une raison : <strong>mon métier va changer</strong>.</em></p>
<p><em>Dans une série de posts, j&#39;ai envie de raconter comment ça se passe pour de vrai : ce que ça change dans mon quotidien, les limites, les petites habitudes bizarres que j&#39;ai prises et en quoi ça transforme en profondeur mon métier de développeur.</em></p>
<hr>
<p>Précédemment, j&#39;ai partagé un retour d&#39;expérience sur un sujet très concret : ++<strong><a href="https://devx.writizzy.blog/p/gerer-ses-quotas-claude-code">comment je gère les quotas et la consommation quotidienne de Claude Code</a></strong>++.</p>
<p>Aujourd&#39;hui, j&#39;aimerais aborder un autre aspect, beaucoup plus structurant dans mon usage au quotidien.</p>
<h3><strong>Le jour où ma production de code a cessé d&#39;être mono-thread</strong></h3>
<p>Pendant longtemps, mon mode de fonctionnement était simple : une tâche, une branche, <strong>un seul flux de travail à la fois</strong>.</p>
<p>Bien sûr, il m&#39;arrivait de gérer des urgences ou de contribuer a plusieurs branches <strong>en parallèle</strong>. Mais même dans ces cas-là, <strong>ma production de code restait fondamentalement séquentielle</strong>, tel un (mono)thread qui saute d&#39;unité de travail en unité de travail dès qu&#39;il est bloqué.</p>
<p>C&#39;est un modèle très naturel pour un développeur. Le coût principal de mon métier a toujours été <strong>la concentration</strong> : comprendre un contexte, se représenter un modèle mental du système, éviter les erreurs introduites par les changements de contexte.</p>
<p>Pendant des années, optimiser ma productivité consistait surtout à <strong>protéger mon focus</strong> : éviter les interruptions, limiter le context switching, <strong>préserver le &quot;flow&quot; de développement</strong>.</p>
<p>… Et puis Claude Code est arrivé dans mon quotidien.</p>
<p>Au début, je l&#39;utilisais <strong>comme un simple accélérateur</strong> : je lui confiais une tâche pendant que <strong>je réfléchissais au(x) &quot;coup(s) d&#39;après&quot;</strong> (quelle tactique allais-je adopter pour enchaîner les incréments/commits afin de réaliser mon objectif de plus haut niveau (Sprint ou Epic))</p>
<p>Ce n&#39;était pas tout le temps simple car, bien souvent, le LLM <strong>cassait ma réflexion</strong> d&#39;anticipation en me <strong>ramenant brutalement</strong> au concret de la tâche qu&#39;il implémentait : il fallait répondre à ses demandes de précisions, relire un plan que j&#39;avais déjà relu et annoté 3 fois, review le code qu&#39;il avait produit ou encore valider et vérifier que la feature qu&#39;il avait implémenté fonctionnait comme attendu.</p>
<p>Pendant plusieurs semaines, j&#39;ai travaillé avec des <em>Scratch files</em> dans IntelliJ, dans lesquels j&#39;essayais d&#39;organiser ma pensée textuellement et chronologiquement, en listant les 2 ou 3 prompts à enchaîner une fois la tâche courante terminée.</p>
<p>Je me forçais à ne me focaliser <strong>que sur des tâches de réflexion</strong> pendant que l&#39;agent <strong>codait</strong>. Je pense que ça n&#39;était pas optimal <strong>mais c&#39;était une première étape nécessaire</strong> pour <strong>prendre confiance</strong>, <strong>solidifier ma pratique d&#39;utilisation</strong> de l&#39;IA tout en <strong>gardant très fortement le contrôle</strong> sur le code produit.</p>
<p>Et puis j&#39;ai eu <strong>un déclic</strong>.</p>
<p>J&#39;ai réalisé que je pouvais <strong>produire du code en parallèle</strong>, et pas seulement <strong>réfléchir en parallèle</strong>.</p>
<p>Pour la première fois, <strong>la limite n&#39;était plus ma capacité à écrire du code</strong> dans sa forme la plus brute (taper au clavier), mais <strong>ma capacité à organiser plusieurs flux de travail simultanément</strong>.</p>
<p>C&#39;est ce qui a entraîné un premier changement : je me suis mis à utiliser <strong>les worktrees de Git</strong>. On était alors mi-octobre 2025 et <strong>c&#39;est à ce moment que ma production de code a cessé d&#39;être mono-thread.</strong></p>
<h3><strong>Un worktree Git, qu&#39;est-ce que c&#39;est ?</strong></h3>
<p>Tu ne connaîs peut-être pas la commande <strong>git worktree</strong>, je vais tâcher de te l&#39;expliquer rapidement et simplement.</p>
<p><em>Si tu connais et utilises déjà cette commande, je vais t&#39;économiser quelques tokens : tu peux sauter à la section suivante :-)</em></p>
<p>Un worktree c&#39;est :</p>
<ul>
<li>Une <strong>duplication</strong> de ta working copy git d&#39;origine, <strong>dans un répertoire à part</strong></li>
<li><strong>Le graphe git est partagé</strong> entre la working copy d&#39;origine et le worktree (un commit réalisé d&#39;un coté se voit immédiatement de l&#39;autre ; si tu fetch ton remote, les commits fetchés seront accessibles sur les 2 working copy, etc.)</li>
<li>Une contrainte : <strong>une même branche ne peut être référencée par la HEAD</strong> <strong>que d&#39;une seule working copy</strong> à la fois</li>
<li>De manière plus terre à terre, et pour garantir que la configuration git de ton repository local soit la même au sein de tes worktrees, <strong>le .git</strong> <strong>d&#39;un worktree n&#39;est plus un répertoire,</strong> mais un fichier, dont le contenu est simplement :</li>
</ul>
<pre><code class="language-bash">gitdir: /absolute/path/to/original/working-copy/.git/worktrees/&lt;worktree_identifier&gt;
</code></pre>
<p><em>(oui, ça fait penser à un lien symbolique - mais les liens symboliques n&#39;existant pas sur tous les OS, il fallait avoir quelque chose de portable)</em></p>
<p><em>Le fait que le .git soit un fichier peut d&#39;ailleurs poser des problèmes à certains outils qui considèrent que le .git est tout le temps censé être un répertoire : perdu ! Ce n&#39;est pas tout le temps le cas !</em></p>
<p>Le cycle de vie (création/suppression) d&#39;un worktree est le suivant :</p>
<pre><code class="language-bash"># Let&#39;s assume this is a git working-copy (there is a .git inside)
cd /path/to/original/working-copy

# Let&#39;s create a new worktree from current working copy
# new-branch is going to be created and checked out on worktree
git worktree add -b new-branch ../working-copy-wt1

# Let&#39;s list worktrees
git worktree list
/path/to/origin/working-copy     8a1a180 [main]
/path/to/origin/working-copy-wt1 8a1a180 [new-branch]

# Let&#39;s remove a worktree
git worktree remove /path/to/original/working-copy-wt1
</code></pre>
<p><strong>Et concrètement, ça donne quoi au quotidien ?</strong></p>
<p>Lorsque tu commences à travailler avec des worktrees, tu es rapidement confronté à <strong>plusieurs problématiques liées à la duplication de workspaces</strong>.</p>
<h3><strong>Comment gérer les fichiers ignorés ?</strong></h3>
<p>Lorsque tu crées un worktree, les fichiers en .gitignore de ton workspace d&#39;origine <strong>ne sont pas recopiés</strong> car il les considère comme en-dehors de son périmètre.</p>
<p>La réponse (quasi) universelle à ce problème : <strong>les liens symboliques</strong> !</p>
<p>J’ai commencé par migrer de npm à pnpm sur mes frontends, afin de bénéficier <strong><a href="https://pnpm.io/symlinked-node-modules-structure">de liens symboliques dans mon node_modules</a></strong>￼. Ça permet de <strong>dupliquer l’arborescence</strong> des node_modules <strong>de manière quasi instantanée</strong> là où, auparavant, la copie était longue et prenait de la place sur le disque.</p>
<p>Ensuite, je me suis rapidement <strong>outillé avec de petits scripts utilitaires</strong> me permettant de rapidement bootstrap un nouveau worktree en faisant un ln -s sur un ensemble de fichiers (<em>majoritairement ceux que j’avais dans mon .gitignore</em>), considérant ceux de mon workspace d’origine comme la référence. Le répertoire .claude se retrouvait notamment dans ce cas de figure, et me permettait de <strong>partager très simplement ma configuration claude</strong> (permissions, MCPs, skills et autres commandes spécifiques au projet) <strong>d’un worktree à un autre</strong>.</p>
<p>Sur ce sujet, l’utilitaire <strong><a href="https://worktrunk.dev/#worktrunk">Worktrunk</a></strong>￼ (partagé par mon ancien collègue <strong><a href="https://www.linkedin.com/in/maxime-ribera?miniProfileUrn=urn%3Ali%3Afs_miniProfile%3AACoAABHRDJQBxqsBLwwp8yW-u5TkNSGn_88xYeE">Maxime Ribera</a></strong>) s&#39;est mis à remplacer efficacement mes scripts maison depuis quelques jours: il me permet de copier automatiquement les fichiers ignorés, allouer des ports spécifiques au worktree (db, frontend, etc), gérer les stacked branches etc.</p>
<p>Et puis si tu utilises <strong><a href="https://code.claude.com/docs/en/desktop">Claude Code Desktop</a></strong>￼, sache que <strong>ce dernier peut gérer les worktrees pour toi</strong>, et qu&#39;il est possible <strong><a href="https://code.claude.com/docs/en/desktop#work-in-parallel-with-sessions">de définir un .worktreeinclude￼</a></strong> qui est pris en compte à chaque fois que Claude Desktop crée un worktree.</p>
<p>Enfin, il y a le fait de gérer l&#39;état de son backend, et notamment de la persistence (db). Je <strong>n&#39;ai pas de silver bullet à te partager ici</strong>, car ça dépendra beaucoup de ton contexte et de la db que tu utilises :</p>
<ul>
<li>Si tu ne travailles que sur des frontends dans tes worktrees : le plus simple sera de <strong>démarrer une instance unique de backend partagée</strong> entre tous les frontends de tes worktrees, qui pointeront dessus</li>
<li>Si ta DB n&#39;est pas trop volumineuse : essaies <strong>d&#39;embarquer la persistance de ta DB au niveau du filesystem</strong> de ton worktree.</li>
<li>Dans le cas de DB volumineuses, l&#39;objectif sera d&#39;avoir du branching incrémental de DB (peu d&#39;I/O pour garder une rapidité et un espace raisonnable) : features de templating de DB <em>(CREATE DATABASE ... WITH TEMPLATE)</em>, snapshoting de volumes Docker ou de filesystem (ZFS), ou encore DBs Copy-on-write (type <strong><a href="https://xata.io/">Xata</a></strong>). <em>Je te laisse creuser car je n&#39;ai pas moi-même encore beaucoup de recul là-dessus.</em></li>
</ul>
<p>&nbsp;</p>
<h3><strong>Comment gérer les worktrees dans Intellij ?</strong></h3>
<p>Au départ, et pour éviter d&#39;avoir à configurer mon setup IDE à chaque worktree, j’ai rajouté tous mes worktrees <strong>dans un unique workspace Intellij</strong>.</p>
<p>C’était <strong>une mauvaise idée</strong> :</p>
<ul>
<li>Les recherches de fichiers retournent <strong>les mêmes fichiers en N exemplaires</strong> (sauf à constamment scoper les recherches aux bons modules) =&gt; beaucoup de bruit inutile</li>
<li><strong>La vue Project est problématique</strong> : il est possible de créer des scopes (ex: 1 par worktree) pour filtrer les répertoires affichés dans l’arborescence de la vue Project. Problème: dès lors que tu appliques un filtre en mode allow list, il est impossible d’inclure les répertoires ignorés (ex: node_modules) au niveau du filtre : c’est très handicapant !</li>
<li>La vue git présente 1 graphe Git complet par worktree. <strong>L&#39;entièreté de chaque DAG est donc dupliqué N fois</strong> ! (sauf là encore, à jongler constamment entre les filtres de paths dans cette vue)</li>
<li>Les <strong>runners sont tous dupliqués en N exemplaires</strong>, tous nommés de la même façon mais intervenant sur des arborescences différents.</li>
</ul>
<p>... Bref: c&#39;était un enfer, j&#39;ai changé assez rapidement mon setup !</p>
<p>J’ai plutôt fait en sorte de créer <strong>un workspace Intellij distinct par worktree.</strong></p>
<p><strong>L’inconvénient</strong> : il a fallu enrichir le process de création de worktree en pré-configurant mon workspace Intellij (<strong>spoiler alert</strong>: tout n’est pas configurable facilement car certaines infos sont persistées en-dehors de l’espace de travail et nécessitent une configuration manuelle).</p>
<p>Sur ce point, <strong><a href="https://mise.jdx.dev/">mise</a></strong> (et <strong><a href="https://plugins.jetbrains.com/plugin/24904-mise">son plugin intellij</a></strong>) m&#39;a beaucoup aidé pour pré-configurer les runtimes nécessaires à mes projets (en plus de rendre cet aspect reproductible en CI/CD).</p>
<p><em>Je n’ai pas tenté de faire l’exerice sous VSCode car ce n’est pas un IDE que je maîtrise aussi bien qu’Intellij, mais je pense que la plupart des problèmes que j’ai rencontré sous Intellij se retrouvent sur VSCode car aucun de ces 2 IDEs ne considère les worktrees comme de réels &quot;first class citizens&quot;.</em></p>
<h3><strong>Quelle stratégie de création de worktrees ?</strong></h3>
<p>Une autre problématique rencontrée a été de <strong>déterminer le moment</strong> où j&#39;avais réellement besoin d&#39;un worktree : par exemple, est-il raisonnable de créer un nouveau worktree dès que je commence à travailler sur une nouvelle feature ?</p>
<p>Dans les sections précédentes, tu as pu constater que <strong>le setup d’un worktree n’est pas toujours une opération indolore</strong> : même si on peut automatiser un certain nombre d’étapes, il en reste certaines manuelles (config IDE notamment).</p>
<p>D’autre part, mes premiers usages des worktrees m&#39;ont fait prendre conscience d&#39;une limite forte : <strong>ma capacité cognitive à pouvoir gérer plusieurs tâches en parallèle</strong>.</p>
<p>🤫 Je vais te faire un aveu : <strong>au-delà de 3 tâches en parallèle, mon cerveau 🤯</strong></p>
<p>J’ai donc fait en sorte de me limiter à seulement 3 worktrees, que j’ai passé du temps à configurer une fois pour toutes à tous les niveaux (liens symboliques, intellij, etc.).</p>
<p>Et au sein de chacun de ces worktrees, je bascule de branche en branche (feature branch par-ci, hotfix par-là).</p>
<p>J’ai utilisé ce mode de fonctionnement entre fin novembre et mi-janvier environ, et franchement <strong>j’en était plutôt satisfait</strong> ! J’étais limité à 3 tâches de production en parallèle (maximum), mais c’était OK compte tenu de mes limites cognitives.</p>
<p>… et puis le 13 janvier, un message anodin de <strong>Tristan DEBROISE</strong> sur <strong><a href="https://devw.ai/">le Slack Dev with AI</a></strong>￼ <strong>a tout remis en question</strong></p>
<p><em>(en vrai, <strong><a href="https://www.linkedin.com/article/edit/7425957306359721984/#">Maxime Ribera</a></strong> m’en avait aussi un peu parlé avant ce message, mais je n’avais pas pris le temps de tester vibe-kanban à ce moment-là 🙇)</em>  </p>
<h3><strong>Un scaling au-delà de 3 tâches avec Vibe Kanban !</strong></h3>
<p>Je t&#39;avoue que <strong>je n’étais pas prêt</strong> : <strong><a href="https://www.vibekanban.com/">Vibe Kanban</a></strong> est l’outil qui est venu adresser <strong>la plupart des problèmes que j’avais rencontré les semaines précédentes</strong>, en fluidifiant certaines aspects et en y rajoutant un aspect visuel !</p>
<ul>
<li><strong>Le lancement se fait en 5 secondes</strong> : npx vibe-kanban@latest et c’est parti ! <em>(je ne suis généralement pas fan d’utiliser des @latest, mais depuis 3 semaines d’utilisation avec des releases quasi quotidiennes, je peux te garantir que mettre à jour au fil de l’eau est à la fois stable et utile !)</em></li>
<li><strong>Très simple d’utilisation</strong> : très visuel avec une représentation Kanban (TODO / In Progress / In Review / Done / Cancelled)</li>
<li>L’implémentation d’une <strong>Tache</strong> (notion d’<strong>Attempt</strong>) crée <strong>un worktree Git dédié</strong> et démarre une session/conversation avec un <strong>Agent</strong> donné (Claude Code, Gemini, Codex, OpenCode, Copilot, Cursor, etc.) et <strong>en réutilisant ton assistant installé localement</strong> sur ta machine (avec ses préférences, ton authent, etc.)</li>
<li>Chaque discussion avec l’AI Assistant utilise <strong>un Profile d’Agent</strong> : mode plan (ou non), quel modèle, quel prompt, etc</li>
<li>Il est possible de <strong>customiser</strong> ce qui se passe lors de la création d’un worktree sur un repository donné (possibilité d’exécuter des commandes suite à la création du worktree, possibilité de copier des fichiers/répertoires depuis le workspace d’origine, etc.)</li>
<li>Il est possible de <strong>rassembler plusieurs repositories</strong> au sein d’un projet (utile si tu n&#39;es pas sur un monorepo)</li>
<li>Toutes les discussions/prompts sont <strong>historisés</strong></li>
<li>Il y a un <strong>indicateur visuel</strong> qui montre, sur chaque tâche, si le LLM est en train de travailler … ou qu’il est en attente d’un input de ta part (très pratiques pour s&#39;y retrouver lorsque tu parallélises plusieurs tâches).</li>
<li>Des <strong>notifications visuelles</strong> <strong>ou sonores</strong> (bien identifiables 🐄 si tu laisses les défauts) te permettent d&#39;être directement mis au courant d&#39;un agent qui s&#39;est suspendu.</li>
<li>Il y a la possibilité de créer <strong>plusieurs sessions de discussions autours de la même tâche</strong>, si tu souhaites utiliser des contextes cloisonnés sur le même worktree</li>
<li>Un raccourci existe pour <strong>ouvrir ton IDE favori</strong> dans le worktree de la discussion courante</li>
<li>Depuis mardi et <strong><a href="https://www.vibekanban.com/blog/introducing-vibe-kanban-cloud">l’annonce de la version Cloud</a></strong>￼, il est même possible d’utiliser une base de données partagée et donc de <strong>consulter, revoir et collaborer sur les tâches de tes collègues</strong>. Pour moi c’est une killer feature car revoir le prompt et la discussion va être, dans un monde où le vibe coding devient prépondérant, <strong>encore plus important que de revoir le code généré</strong> !</li>
<li>Un <strong>Diff editor</strong> est intégré pour comparer le contenu du worktree avec une branche cible et faire des commentaires sur les lignes du diff</li>
<li>Un <strong>Rebase</strong> est possible depuis l&#39;UI sur une branche cible, et il est possible de résoudre les conflits via l’AI (et franchement, je suis assez étonné du résultat !.. l&#39;AI sait très bien résoudre les conflits !). <em>Sur ce point, il faut vraiment que je me force à utiliser <strong><a href="https://docs.jj-vcs.dev/latest/">jujutsu</a></strong> car il possède des propriétés très intéressantes.</em></li>
<li>On peut <strong>créer une PR</strong> très facilement depuis l&#39;UI (en ciblant une branche en particulier)</li>
<li>Il est possible de <strong>démarrer et visualiser le frontend</strong> dans une iframe intégrée à vibe-kanban (une ligne de commande est paramétrable pour lancer un “dev server” depuis le worktree cible). Très pratique pour tester rapidement un bugfix sur le front.</li>
<li>Il est possible qu’une Tâche <strong>créée des sous-taches</strong> via le MCP de vibe-kanban</li>
<li>Tu as <strong>accès à un terminal</strong> positionné au niveau du worktree</li>
<li>… et je suis sûr que j’en oublie !</li>
</ul>
<p>Ça fait plus de 3 semaines que j’utilise vibe-kanban au quotidien et <strong>c’est vraiment l’outil qui m’a fait changer de dimension au niveau de la parallélisation de mes tâches agentiques</strong> (fini le jonglage avec les worktrees dans intellij, tout est maintenant géré dans/par Vibe Kanban !)</p>
<p>Il me permet notamment de <strong>rentabiliser plus qu&#39;avant mes fenêtres de tokens inutilisées</strong> pour traiter des tâches en background pendant que je travaille sur des tâches non-IA. Et puis lorsque je veux débugger / zoomer sur un problème, <strong>j&#39;ouvre le worktree dans Intellij</strong> et je fais comme avant.</p>
<p><strong>EDIT</strong>: *Le 10 avril, Bloop, la société derrière Vibe-kanban, <strong><a href="https://vibekanban.com/blog/shutdown">a annoncé fermer</a></strong>. Le projet restera opensource, mais on peut imaginer qu&#39;il n&#39;évoluera pas (plus ?) à la même vitesse qu&#39;avant malheureusement.*</p>
<h3><strong>Le temps n’est plus la bonne unité</strong></h3>
<p>Lorsque je lance un Agent sur 5 Tâches <strong>le soir en partant me coucher</strong>, et qu&#39;il m&#39;en one-shot 2 pendant la nuit : <strong>cela a produit la même valeur</strong> que ce que j’aurais sûrement passé 1j ou 2j à produire pendant la journée, il y a de ça 2 ans.</p>
<p>Ça m&#39;interroge énormément sur la <strong>valorisation du temps passé</strong> versus <strong>la valeur produite</strong>.</p>
<p>Sachant que <strong>je reste le garant du code produit</strong>, particulièrement celui qui part en prod (à l&#39;opposé des outils dont je suis le seul consommateur/utilisateur). Qu&#39;il m&#39;incombe donc <strong>d&#39;être absolument vigilant</strong> sur ce qui est généré. Mais qu&#39;il est très difficile de maintenir cette vigilance dans le temps, sans qu&#39;elle ne s&#39;érode à force d&#39;être grisé par les features qui s&#39;enchaînent et la performance des modèles qui sans cesse s&#39;améliorent.</p>
<p>Et puis il y a des effets pervers à tout ça : <strong>la barrière entre le travail et le perso n&#39;a jamais été aussi fine</strong> depuis qu&#39;il m&#39;est très facilement possible de lancer un agent sur un sujet dès qu&#39;une idée me passe par la tête (j&#39;en ai beaucoup en ce moment !)</p>
<p>Et puis il y a <strong><a href="https://siddhantkhare.com/writing/ai-fatigue-is-real">l'IA fatigue</a></strong> dont on ne parle que trop peu (ainsi que <strong><a href="https://hbr.org/2026/02/ai-doesnt-reduce-work-it-intensifies-it">cette étude</a></strong> qui évoque aussi ces sujets, ainsi que l&#39;article sur <strong><a href="https://steve-yegge.medium.com/the-ai-vampire-eda6e4f07163">The AI Vampire</a></strong> - merci <strong>Sylvain Wallez</strong> dans les commentaires)</p>
<p>Tout ceci me fait de plus en plus <strong>m’interroger sur mon rapport à la valeur travail</strong> (une auto-introspection <strong><a href="https://chatgpt.com/share/697e29e1-6910-800c-bb43-0076a0cb8eb7">ici</a></strong>￼ et <strong><a href="https://claude.ai/share/e87a1f56-4294-41df-8e8a-2bace0471c7e">là</a></strong>￼)</p>
<p>Je n’ai pas les réponses, et je dois encore y réfléchir avant de pouvoir coucher tout ça par écrit (peut-être dans un futur article).</p>
]]></content:encoded>
            <enclosure url="https://writizzy.b-cdn.net/blogs/b3934023-35bd-489d-a565-9c0a6da9a406/1786468180733-9aa978e.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Claude Code au quotidien - Gérer ses quotas]]></title>
            <link>https://devx.writizzy.blog/p/gerer-ses-quotas-claude-code</link>
            <guid>https://devx.writizzy.blog/p/gerer-ses-quotas-claude-code</guid>
            <pubDate>Tue, 20 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Quand Claude Code devient ton outil de travail principal, les quotas ne sont plus un détail : ils finissent par structurer tes journées. Entre fenêtres de 5 heures, quota hebdomadaire et jonglage entre abonnements, voici les petites optimisations que j’ai mises en place pour éviter de casser mon flow de dev.]]></description>
            <content:encoded><![CDATA[<p><em>Je suis développeur fullstack senior et, depuis 3-4 mois, <strong>je code presque exclusivement avec Claude Code</strong>.</em></p>
<p><em>Ce n&#39;est pas une figure de style : je ne tape quasiment plus de code à la main, parce que je suis dorénavant convaincu que Claude est plus rapide et généralement plus fiable que je ne le suis moi-même sur l&#39;activité de production &quot;brute&quot; de code. J&#39;ai fini par l&#39;accepter et me faire une raison : <strong>mon métier va changer</strong>.</em></p>
<p><em>Dans une série de posts, j&#39;ai envie de raconter comment ça se passe pour de vrai : ce que ça change dans mon quotidien, les limites, les petites habitudes bizarres que j&#39;ai prises et en quoi ça transforme en profondeur mon métier de développeur.</em></p>
<hr>
<h3><strong>Pourquoi parler d&#39;abonnement en premier</strong></h3>
<p>On parle souvent de prompts, de qualité de code, de productivité, mais rarement d&#39;un truc très terre-à-terre : <strong>comment utiliser intelligemment son abonnement Claude Code</strong>.</p>
<p>Pourtant, quand tu utilises l&#39;IA toute la journée avec un abonnement Claude Pro à 20$, ce sont tes quotas de tokens qui décident si tu continues à avancer... ou si tu vas devoir aller te faire un thé, voire changer complètement de tâche, en attendant le prochain reset.</p>
<h3><strong>Comment fonctionnent vraiment les quotas</strong></h3>
<p>Les abonnements Claude reposent sur <strong>un volume de tokens consommés</strong> (contrairement à d&#39;autres comme Copilot ou Cursor qui fonctionnent davantage en <strong>nombre</strong> <strong>d&#39;interactions</strong> (requests) avec le LLM) :</p>
<ul>
<li>En <strong>consommation à l&#39;usage</strong> (pay as you go, basée sur des clefs d&#39;API et des budgets associés) : <strong>tu ne payes que ce que tu consommes</strong> ... mais généralement cette flexibilité vient avec un prix assez élevé (<strong>5 à 10x plus important</strong> que le mode forfait ci-dessous)</li>
<li>En mode <strong>forfait</strong> : tu payes chaque mois un montant fixe (20$ pour Claude Pro, 150$ pour Claude Max, etc.), et tu peux <strong>utiliser un volume de tokens capé pour des fenêtres de temps données</strong>. Dans le cas de Claude, il existe <strong>deux fenêtres de temps</strong>: une fenêtre de 5 heures et une fenêtre d&#39;1 semaine. Une fois le quota atteint, il est également possible de basculer en mode pay-as-you-go jusqu&#39;au reset de la fenêtre de temps.</li>
</ul>
<p>Je me concentrerai dans cet article <strong>sur le mode forfait</strong> car le coût de la consommation à l&#39;usage était vraiment rédhibitoire dans mon cas (<em>quand j&#39;ai vu que je consommais 20$ de budget pay-as-you-go en 1 journée et demie, j&#39;ai vite compris que ce n&#39;était pas fait pour moi</em>).</p>
<p>Anthropic ne publie pas les chiffres exacts associés aux quotas de chaque forfait (<strong><a href="https://support.claude.com/en/articles/8324991-about-claude-s-pro-plan-usage">ils restent assez vagues</a></strong>), et <strong><a href="https://www.reddit.com/r/ClaudeCode/comments/1q2prvg/anthropic_has_secretly_halved_the_usage_in_max/">les limites semblent bouger de temps en temps</a></strong>, ce qui rend le système parfois assez opaque.</p>
<p>De manière empirique, j&#39;estimerais à <strong>un ratio d&#39;environ 1 pour ~14 entre la fenêtre 5h et la fenêtre hebdomadaire</strong> : en gros, tu peux remplir à 100% environ 14 fenêtres de 5h avant de taper les 100% du volume hebdomadaire.</p>
<p>Si tu souhaites consulter là où tu en es de ton usage sur les 2 fenêtres, tu peux simplement faire un <strong>/usage</strong> dans claude code qui va te présenter ta consommation (tu peux aussi utiliser un plugin du type de <strong><a href="https://github.com/sirmalloc/ccstatusline">ccstatusline</a></strong> pour ça - des gens ont même fourni <strong><a href="https://github.com/sirmalloc/ccstatusline/issues/94#issuecomment-3705080750">un script</a></strong> pour afficher la partie weekly)</p>
<p><img src="https://writizzy.b-cdn.net/blogs/b3934023-35bd-489d-a565-9c0a6da9a406/1786466409721-s9sh1c3.png" alt="My current claude code usage showing both 5h and weekly time windows consumptions" /></p>
<p>Si on ramène ça à une semaine, ça donne environ 2.8 fenêtres &quot;pleines&quot; de 5 heures par jour ouvré, ou 2 par jour si tu étales sur la semaine entière.</p>
<h3><strong>Jouer avec la fenêtre de 5 heures</strong></h3>
<p>Détail important: la fenêtre de 5 heures démarre <strong>à ta première interaction</strong> (en dehors d&#39;une fenêtre) avec Claude Code, mais est <strong>alignée sur l&#39;heure entière</strong>.</p>
<p>Exemple: si ta première interaction est à 8h45, ta fenêtre va courir de 8h à 12h59.</p>
<p>Donc si tu commences à travailler vers 9h, il devient intéressant de ping Claude <strong>juste avant 9h</strong> pour récupérer presque une heure bonus sur la fenêtre totale. Bon, le problème, c&#39;est qu&#39;en commençant à travailler un peu avant 9h, tu ne disposes en tout et pour tout que de 2 fenêtres de 5h entre 8h et 18h (<strong>tu ne maximiseras alors pas ton quota hebdo</strong> qui nécessite que tu remplisses 2.8 fenêtres par jour ouvré, dommage !)</p>
<p>J&#39;ai donc poussé le vice un peu plus loin: j&#39;ai pris l&#39;habitude de dire &quot;hello&quot; à Claude dès mon réveil, vers 6h55, juste avant d&#39;aller sous la douche <em>(oui, cette phrase est très bizarre... et on pourrait se questionner sur mon anthropomorphisation de Claude ici mais c&#39;est un autre sujet..)</em>.</p>
<p>Résultat, j&#39;arrive à caser trois fenêtres &quot;productives&quot; dans ma journée avec, <strong>en bonus</strong>, pas mal <strong>d&#39;espaces temps improductifs</strong> entre ces fenêtres) :</p>
<ul>
<li>6h -&gt; 11h : je commence à réellement bosser vers 8h, ça fait ~2h improductives <em>(pendant lesquelles je ne consomme pas mon quota (et ça c&#39;est bien !))</em></li>
<li>11h -&gt; 16h : ça englobe la pause dej&#39;, soit ~1h30 improductives</li>
<li>16h -&gt; fin de journée : de quoi terminer sereinement la journée sans se retrouver à sec de tokens</li>
</ul>
<p><em>Est-ce qu&#39;on pourrait automatiser le &quot;hello&quot; du matin ? Techniquement oui, mais pas forcément une bonne idée car contraire aux Terms of Service d&#39;Anthropic - je vous laisse seuls juges de si le risque en vaut la chandelle.</em></p>
<h3><strong>Quand ça ne suffit plus</strong></h3>
<p>Pendant les deux premiers mois, cette organisation m&#39;a largement suffi, surtout en utilisant Haïku par défaut et Sonnet en mode plan (<em>je vous parlerai sûrement dans un autre article de pourquoi je n&#39;utilise pas Opus</em>).</p>
<p>Puis <strong>mes usages ont augmenté</strong>, je me suis mis à utiliser les worktrees git intensivement et ai commencé à davantage paralléliser mes tâches: régulièrement je tapais le plafond de la fenêtre de 5 heures et parfois, plus ennuyeux, celui de la fenêtre hebdomadaire, particulièrement le week-end sur des side projects, avec plusieurs jours de blocage derrière.</p>
<p>Rien de tel pour casser un flow de dev que d&#39;avoir ton agent qui se met en grêve pendant 48 à 72 heures.</p>
<p>J&#39;ai donc fait le choix de <strong>prendre un second abonnement Claude Pro à 20$</strong> en perso, de manière à pouvoir balancer entre mes 2 comptes (après tout, le temps que cela me fait gagner sur mes side projects vaut largement les 20$ &quot;perso&quot; que j&#39;investis là-dedans - <em>je n&#39;aurais certainement pas eu le même raisonnement avec un abonnement plus onéreux comme celui à 150$</em>).</p>
<p>Du coup, je jongle dorénavant entre mes 2 comptes :</p>
<ul>
<li>lorsque <strong>j&#39;atteins le plafond de la fenêtre de 5h</strong> (souvent après ~3h d&#39;utilisation), <strong>je bascule sur mon 2nd compte</strong> pour compléter (<em>jusqu&#39;à maintenant, je n&#39;ai jamais tapé le plafond de 5h sur mes 2 comptes à la fois ... particulièrement car l&#39;overlap entre les fenêtres n&#39;est généralement pas très important</em>)</li>
<li>lorsque <strong>j&#39;arrive à 50% de mon quota weekly</strong>, j&#39;essaie de <strong>privilégier mon second compte</strong> de manière à essayer de répartir intelligemment la consommation sur les 2 fenêtres weekly</li>
<li>si possible, <strong>j&#39;essaie d&#39;avoir 2-3j de décalage entre le début de mes 2 fenêtres weekly</strong>. Typiquement, j&#39;essaie de faire commencer ma fenêtre perso le vendredi et ma fenêtre pro le lundi</li>
</ul>
<p>Ça peut paraître compliqué, mais c&#39;est assez simple à faire car un /login permet de changer de compte sans perdre le contexte de vos sessions Claude (l&#39;aspect stateless d&#39;une conversation avec un LLM fait qu&#39;il n&#39;y a pas grand chose de lié à votre session utilisateur pendant une discussion/session avec Claude Code)</p>
<h3><strong>Et en entreprise ?</strong></h3>
<p><strong>LE gros défaut</strong> du forfait Claude Pro à 20$, c&#39;est qu&#39;il n&#39;est clairement pas enterprise-friendly :</p>
<ul>
<li>La facturation se fait compte par compte, ce qui peut représenter <strong>une lourdeur administrative</strong> dès que vous allez devoir gérer plusieurs dizaines de comptes de vos employés</li>
<li>Vous ne disposez <strong>pas de politique d&#39;entreprise</strong> sur les comptes concernés : il n&#39;est pas possible <strong>de garantir</strong> que vos employés ne se mettent pas à partager le contenu de leurs chat &amp; coding session, ni <strong>d&#39;interdire le pay-as-you-go</strong> dès qu&#39;un quota est atteint : chaque employé est maître de sa configuration et peut tout à fait changer cette configuration (sciemment ou par mégarde). Vous ne disposez pas non plus d&#39;APIs/métriques/dashboard vous donnant le volume d&#39;usage dans le temps des développeurs, ce qui peut rendre difficile l&#39;exposition d&#39;un ROI auprès des instances financières.</li>
</ul>
<p><img src="https://writizzy.b-cdn.net/blogs/b3934023-35bd-489d-a565-9c0a6da9a406/1786466450234-jq0iy6i.png" alt="Capture d'écran de la partie section Privacy de mon compte Claude, où j'ai désactivé le fait de partager le contenu de mes sessions de Coding avec Claude" /></p>
<p>Le problème, c&#39;est que pour bénéficier de ces fonctionnalités, il faut sortir le portefeuille et passer au <strong>Team Premium Plan</strong> à 150$. Ce n&#39;est clairement pas le même ticket d&#39;entrée.. et si je suis intimement persuadé que le temps gagné à utiliser l&#39;IA vaut largement ces 150$ (rapporté à un CJM de 300$ - qui est assez bas - si l&#39;IA vous fait gagner 1/2 journée dans le mois vous êtes gagnant !), je comprends que certaines entreprises soient plus regardantes sur l&#39;investissement, particulièrement au regard de l&#39;usage/adoption souvent hétérogène des coding assistants d&#39;un employé à l&#39;autre.</p>
<p><strong>🆕 Breaking news</strong>: Depuis le 10 janvier 2026 (<strong><a href="https://web.archive.org/web/20260108032658/https://claude.com/pricing/team">le 8 janvier</a></strong>, ça n&#39;y était pas), la page <strong><a href="https://claude.com/pricing/team">Teams Plans</a></strong> de Claude affiche que Claude Code est dorénavant inclus dans les <strong>Standard Seats (à 25$/mo.) du Team Plan</strong>. Ça devient une <strong>offre enterprise très correcte</strong> sur le marché !</p>
<p><img src="https://writizzy.b-cdn.net/blogs/b3934023-35bd-489d-a565-9c0a6da9a406/1786466487943-jurnuec.png" alt="Claude Code est dorénavant inclus dans les Standard Seats du Team Plan (25$/mo billed monthly) de Claude" /></p>
<p>Les concurrents ne sont pas en reste : je me suis beaucoup focalisé sur Claude Code car c&#39;est le cheval sur lequel j&#39;ai misé depuis 2-3 mois. Mais <strong>les autres vendors ont également des offres intéressantes</strong> : Google avec Antigravity (attention à bien lire les T&amp;C !), Microsoft avec Github Copilot (qui a bien rattrapé son retard au niveau de la qualité produite), Cursor qui est le joueur historique, Mistral avec <strong><a href="https://mistral.ai/fr/news/devstral-2-vibe-cli">Mistral Vibe</a></strong> une alternative Européenne, et je ne parle pas d&#39;Opencode qui permet d&#39;avoir un Claude Code like couplé à la plupart des LLMs du marché... Ça mériterait un article entier pour comparer !</p>
<h3><strong>Pour conclure</strong></h3>
<p>On a vu que la gestion des quotas, bien que triviale de prime abord, pouvait être un vrai sujet au quotidien. À fortiori en 2026 où le vibe coding risque de rentrer dans les outils du dev du quotidien.</p>
<p>Si cela n&#39;est pas déjà fait, je vous encourage fortement à tester (ou à re-tester si vous aviez testé il y a plusieurs mois) : 20-30$ ce n&#39;est pas un gros investissement, et je peux vous assurer qu&#39;il est important, en 2026, de commencer à s&#39;acculturer à ce changement profond de notre métier de dev.</p>
<p><em>Si cet article vous a plu, ou même que vous êtes en désaccord ou que vous souhaitez nuancer certains points, faites m&#39;en part en commentaire, ça me motivera à en faire d&#39;autres (j&#39;ai plein d&#39;idées !)</em></p>
]]></content:encoded>
            <enclosure url="https://writizzy.b-cdn.net/blogs/b3934023-35bd-489d-a565-9c0a6da9a406/1786468168085-vpu6xfb.png" length="0" type="image/png"/>
        </item>
    </channel>
</rss>