Auteur : Pablo Kuschniroff, assisté par Claude Code. Version 1, 19 octobre 2026. Ce document complète le document principal : il dit comment s'applique la méthode quand il n'y a pas un seul humain avec un seul agent, mais plusieurs développeurs, chacun avec le sien, travaillant sur le même dépôt et sur la même branche. Les mots étranges sont dans le glossaire du document principal. Dépôt public : github.com/pkuschnirof/urazuke.
La méthode est écrite au singulier : le propriétaire, l'agent, l'élément en attente. Mes trois systèmes, je les ai construits ainsi, un humain et un modèle. Mais une équipe qui adopte la méthode n'a pas un humain : elle en a trois, ou cinq, chacun avec sa session d'agent ouverte sur le même code, et dans la plupart des petites équipes, sur la même branche, parce que la forêt de branches à longue vie est la façon la plus sûre de faire que deux semaines de travail s'intègrent un vendredi dans les cris. Travailler sur une branche partagée peut se faire bien, et l'industrie le fait depuis des années avec des règles connues (des commits petits et intégrés plusieurs fois par jour, l'intégration continue comme arbitre, les fonctionnalités à moitié faites cachées derrière un interrupteur). Ce qui change avec la méthode, c'est que ces règles ne sont plus respectées par des personnes qui lisent le code des autres : elles le sont par des agents qui ne se voient pas entre eux, et il faut donc les écrire là où chaque agent les lira.
Ce qui suit, ce sont les règles, et ensuite les prompts. Je n'ajoute pas d'échelons : les vingt-quatre sont les mêmes. J'ajoute ce dont chaque échelon a besoin pour être gravi par plusieurs à la fois.
Si vous débutez. Une branche est une copie du code où l'on travaille ; la branche partagée (on l'appelle en général main ou trunk) est la seule qui compte, celle qui se déploie. Intégrer, c'est mettre votre changement dans cette branche ; un conflit, c'est quand deux personnes ont changé la même ligne et que l'outil ne sait pas laquelle vaut. Un interrupteur de fonctionnalité est une clé de configuration qui laisse une fonctionnalité éteinte même si le code est déjà là, pour pouvoir intégrer à moitié sans que l'utilisateur la voie. Et réclamer un élément en attente, c'est y inscrire votre nom pour que personne d'autre ne le prenne.
docs/PENDING.md, et un élément en attente a un seul propriétaire à la fois. Deux personnes ne prennent pas deux éléments qui touchent le même module en même temps ; si cela ne peut pas s'éviter, elles se préviennent et la seconde attend que la première intègre. L'agent, en commençant la session, lit les éléments réclamés par d'autres et n'y touche pas.docs/DECISIONS.md sur le moment, parce que l'agent d'à côté en aura besoin le même après-midi et ne la devinera pas. Le contrat de collaboration (1) est unique pour l'équipe ; personne n'a de règles à soi que les autres ne lisent pas.Et une règle sur les agents, qui est celle qui change vraiment par rapport à une équipe sans modèles : chaque agent travaille au nom d'une personne, avec son propre contexte de session, et la seule chose qu'ils partagent est ce qui est écrit dans le dépôt. Il n'y a pas de mémoire commune en dehors des fichiers. C'est pourquoi l'état vivant (docs/STATUS.md), les éléments en attente et les décisions s'écrivent sur le moment, et non « à la fin de la journée » : l'agent du collègue va les lire dans cinq minutes.
| Échelon | Qui le gravit | Ce qui change en équipe |
|---|---|---|
| 0 à 4, démarrage | Une seule personne, celle qui mène, avec le propriétaire. | Cela se fait une fois et avant que les autres n'entrent. Le squelette (4) inclut la chaîne d'intégration qui sera l'arbitre, et les portes (docs/GATES.md) incluent celles de la branche partagée. |
| 1, contrat | Le meneur l'écrit ; tous le signent. | On ajoute les sept règles ci-dessus comme routines. Un seul fichier pour l'équipe. |
| 5, éléments en attente | Le meneur ouvre le bloc avec le propriétaire ; chacun réclame. | L'élément en attente porte un champ « réclamé par » et « modules qu'il touche ». Deux éléments qui touchent le même module ne se réclament pas en même temps. |
| 6, décisions | Celui qui en a besoin, avec le propriétaire. | Cela s'écrit sur le moment, pas à la fin de la journée. |
| 7 à 12, la boucle | Chacun, avec son agent, sur son élément en attente. | Avant d'intégrer : récupérer, tout lancer, pousser. Ce qui est à moitié fait, derrière un interrupteur. Le rapport (12) est lu par un autre. |
| 9, qualité | Une seule configuration pour tous. | Personne n'a d'exceptions à soi au linter. |
| 10, cas de test manuel | Ils sont écrits par le propriétaire de l'élément ; ils sont exécutés par un autre. | Celui qui n'a pas construit la fonctionnalité est celui qui la teste le mieux. |
| 11, symétrie | Celui qui touche un contrat met à jour les consommateurs, quels qu'en soient les propriétaires. | La carte est le détecteur de conflits. |
| 13, audit | Une session distincte de toutes celles qui ont construit. | En équipe c'est plus facile : l'auditeur est celui qui n'a pas touché ce module. |
| 14 à 20, mise en production | Le meneur coordonne ; chaque échelon a un responsable. | Une personne promeut en production ; les autres non. |
| 21 à 23, exploitation | Un responsable de la supervision par cycle, à tour de rôle. | Le rapport cyclique est lu par toute l'équipe ; les éléments en attente qui en sortent se réclament comme n'importe quels autres. |
Avant d'envoyer le prompt, ceci doit exister, et c'est vous (ou le meneur de l'équipe) qui le faites, pas l'agent :
docs/WORKING_AGREEMENT.md (échelon 1), clos, un seul pour l'équipe, avec la liste des membres et de leurs noms d'utilisateur dans le dépôt.docs/PENDING.md (échelon 5) avec le champ « réclamé par » et « modules qu'il touche » dans chaque élément en attente, même s'ils sont vides.PROJECT.md.Routine de la branche partagée (va dans le contrat de collaboration) :
We work as a team on one shared branch, each person with their own agent session, and the only shared memory is what is written in the repository. Rules: (1) At the start of every session, read
docs/STATUS.md,docs/DECISIONS.mdanddocs/PENDING.md; never touch a pending item claimed by someone else, and never take one that touches a module another claimed item touches. (2) Before every integration into the shared branch: pull the others' changes, run the full suite and the quality gate, and only then push; integrate several times a day, never at the end of the week. (3) Never push with the pipeline red; whoever turns it red fixes it before anything else or reverts. (4) Anything that cannot be finished and integrated today goes behind a feature switch, off by default, noted in the pending item. (5) Before touching a contract between parts (a service, a table, a list of values), look up its consumers indocs/PRODUCER_CONSUMER_MAP.mdand update them in the same change, whoever owns them. (6) Every business decision goes todocs/DECISIONS.mdthe moment it is taken, with the person's name and the date. (7) Updatedocs/STATUS.mdwith what you are doing when you start and when you stop, so that the others' agents see it. Reply in my language.
Nous travaillons en équipe sur une seule branche partagée, chaque personne avec sa propre session d'agent, et la seule mémoire partagée est ce qui est écrit dans le dépôt. Règles : (1) Au début de chaque session, lis docs/STATUS.md, docs/DECISIONS.md et docs/PENDING.md ; ne touche jamais à un élément en attente réclamé par un autre, et ne prends jamais un élément qui touche un module que touche un autre élément réclamé. (2) Avant chaque intégration dans la branche partagée : récupère les changements des autres, lance la batterie complète et la porte de qualité, et seulement ensuite pousse ; intègre plusieurs fois par jour, jamais à la fin de la semaine. (3) Ne pousse jamais avec la chaîne au rouge ; celui qui la met au rouge la répare avant toute autre chose ou annule. (4) Tout ce qui ne peut pas être terminé et intégré aujourd'hui va derrière un interrupteur de fonctionnalité, éteint par défaut, noté dans l'élément en attente. (5) Avant de toucher un contrat entre parties (un service, une table, une liste de valeurs), cherche ses consommateurs dans docs/PRODUCER_CONSUMER_MAP.md et mets-les à jour dans le même changement, quels qu'en soient les propriétaires. (6) Toute décision métier va dans docs/DECISIONS.md au moment où elle est prise, avec le nom de la personne et la date. (7) Mets à jour docs/STATUS.md avec ce que tu es en train de faire quand tu commences et quand tu t'arrêtes, pour que les agents des autres le voient. Réponds dans ma langue.
Ce que je lui demande : les sept règles transformées en routine de l'agent, parce que l'agent ne voit pas les autres agents et qu'il ne respectera que ce qu'il lit ; la lecture obligatoire au début de la session, qui est ce qui remplace la conversation de couloir ; l'intégration petite et fréquente avec la batterie comme condition ; l'interrupteur pour ce qui est à moitié fait ; la carte comme détecteur de conflits ; et l'état vivant écrit sur le moment.
En réclamant un élément en attente :
Avant d'envoyer le prompt, vous devez avoir ceci sous la main :
I am taking pending item [PND-NNN]. Before anything: list the pending items claimed by others and tell me whether any of them touches the same modules as mine, by the "modules it touches" field and by the producer-consumer map; if there is an overlap, stop and tell me, do not start. If there is none, write my name in the "claimed by" field with today's date, write in
docs/STATUS.mdwhat I am starting, re-read the item's specification, and tell me which contracts of the map this item will touch and who consumes them. Reply in my language.
Je prends l'élément en attente [PND-NNN]. Avant tout : liste les éléments en attente réclamés par d'autres et dis-moi si l'un d'eux touche les mêmes modules que le mien, d'après le champ « modules qu'il touche » et d'après la carte producteur-consommateur ; s'il y a chevauchement, arrête-toi et dis-le-moi, ne commence pas. S'il n'y en a pas, écris mon nom dans le champ « réclamé par » avec la date d'aujourd'hui, écris dans docs/STATUS.md ce que je commence, relis la spécification de l'élément, et dis-moi quels contrats de la carte cet élément va toucher et qui les consomme. Réponds dans ma langue.
Ce que je lui demande : la vérification du chevauchement avant de commencer, qui est le moment pas cher pour éviter un conflit ; la réclamation écrite ; et la liste des consommateurs que je vais toucher, pour savoir dès le départ à qui je change quelque chose.
En intégrant :
Avant d'envoyer le prompt, vous devez avoir ceci sous la main :
We are going to integrate into the shared branch. Pull the others' changes first and tell me what came in and whether anything touches my modules. Resolve conflicts, if any, by reading both sides and asking me when a business rule is involved; never by keeping mine. Run the full suite, the quality gate and, if this is an inherited system, the characterization suite, and show me the counts. If anything is red, stop: tell me what and whose change it comes from. If this item is not finished, confirm the feature switch is off by default and say so in the commit message. Then push, show me the pipeline green on the shared branch, and update
docs/STATUS.mdand the pending item. Reply in my language.
Nous allons intégrer dans la branche partagée. Récupère d'abord les changements des autres et dis-moi ce qui est arrivé et si quelque chose touche mes modules. Résous les conflits, s'il y en a, en lisant les deux côtés et en me demandant quand une règle métier est en jeu ; jamais en gardant le mien. Lance la batterie complète, la porte de qualité et, s'il s'agit d'un système hérité, la batterie de caractérisation, et montre-moi les chiffres. Si quelque chose est au rouge, arrête-toi : dis-moi quoi et de quel changement de qui cela vient. Si cet élément n'est pas terminé, confirme que l'interrupteur est éteint par défaut et dis-le dans le message du commit. Ensuite pousse, montre-moi la chaîne au vert sur la branche partagée, et mets à jour docs/STATUS.md et l'élément en attente. Réponds dans ma langue.
Ce que je lui demande : récupérer avant de pousser ; résoudre les conflits en lisant les deux côtés et sans « gagner » (le réflexe du modèle face à un conflit est de garder sa version) ; la batterie comme condition ; la chaîne au vert sur la branche partagée comme preuve, et non sur la machine de l'agent ; et l'état vivant à jour.
docs/STATUS.md dit-il ce que chacun est en train de faire aujourd'hui ?hypothèse