著者:Pablo Kuschniroff、Claude Codeの支援による。第1版、2026年10月19日。この文書は 主文書を補うものだ:一人の人間と一つのエージェントではなく、複数の開発者がそれぞれ自分のエージェントとともに、同じリポジトリと同じブランチの上で働くとき、方法がどう適用されるかを言う。見慣れない言葉は主文書の用語集にある。公開リポジトリ: github.com/pkuschnirof/urazuke。
方法は単数形で書かれている:オーナー、エージェント、保留項目。私の三つのシステムはそう作った。一人の人間と一つのモデルで。だが方法を採用するチームには人間が一人ではない:三人、あるいは五人いて、それぞれが同じコードの上に自分のエージェントのセッションを開いており、小さなチームの大半では同じブランチの上にいる。長命なブランチの森は、二週間分の作業が金曜日に怒鳴り声とともに統合される最も確実な方法だからだ。共有ブランチの上で働くことはうまくやれるし、業界は何年も前から知られたルールでそれをやっている(小さなコミットを一日に何度も統合する、継続的インテグレーションを審判にする、中途半端な機能はスイッチの後ろに隠す)。方法によって変わるのは、それらのルールを守るのがもはや他人のコードを読む人間ではないということだ:互いを見ないエージェントたちが守るのであり、だから各エージェントが読む場所にルールを書かなければならない。
ここに続くのがルールであり、その後にプロンプトだ。段は足さない:二十四のままだ。足すのは、複数で同時に登るために各段が必要とするものだ。
初心者の方へ。 *ブランチ*とは作業するコードの複製です。*共有ブランチ*(*main* または trunk と呼ばれることが多い)は唯一重要なもので、デプロイされるものです。*統合する*とはあなたの変更をそのブランチへ入れることです。*衝突*とは、二人が同じ行を変えて、道具がどちらが正しいかわからなくなることです。*機能スイッチ*とは、コードがもう入っていても機能を消したままにしておける設定の鍵で、利用者に見せずに中途半端なまま統合できるようにするものです。そして保留項目を*reclamar*(自分のものと宣言する)とは、他の誰にも取られないよう、そこに自分の名前を書くことです。
docs/PENDING.md で自分の名前で宣言した保留項目なしには誰も働かない。そして一つの保留項目は一度に一人の所有者しか持たない。二人が同じモジュールに触れる二つの保留項目を同時に取ることはしない。避けられないなら、互いに知らせ、二人目は一人目が統合するまで待つ。エージェントはセッションを始めるとき、他人が宣言した保留項目を読み、それらに触れない。docs/DECISIONS.md へ行く。隣のエージェントがその日の午後にそれを必要とするのであり、推測はしてくれないからだ。共働の約束(1)はチームに一つだけだ。他人が読まない自分専用のルールを持つ者はいない。そしてエージェントについてのルールが一つ。モデルのないチームと比べて本当に変わるのはこれだ: 各エージェントは一人の人の名において働く。自分自身のセッションの文脈を持ち、共有されるのはリポジトリに書かれているものだけだ。ファイルの外に共通の記憶はない。だから生きた状態(docs/STATUS.md)、保留項目、決定はその場で書かれる。「一日の終わりに」ではない:同僚のエージェントは五分後にそれを読むのだから。
| 段 | 誰が登るか | チームで何が変わるか |
|---|---|---|
| 0から4、立ち上げ | 一人だけ、先導する人が、オーナーとともに。 | 一度、残りの人が入る前に行う。骨組み(4)には審判となるインテグレーションの連鎖が含まれ、ゲート(docs/GATES.md)には共有ブランチのものが含まれる。 |
| 1、約束 | 先導者が書き、全員が署名する。 | 上の七つのルールをルーチンとして加える。チームに一つのファイル。 |
| 5、保留項目 | 先導者がオーナーとブロックを開き、各自が宣言する。 | 保留項目は「宣言者」と「触れるモジュール」の欄を持つ。同じモジュールに触れる二つの保留項目は同時に宣言されない。 |
| 6、決定 | それを必要とする人が、オーナーとともに。 | その場で書く。一日の終わりにではない。 |
| 7から12、ループ | 各自が、自分のエージェントとともに、自分の保留項目の上で。 | 統合の前に:取り込み、すべて走らせ、上げる。中途半端なものはスイッチの後ろへ。報告(12)は別の人が読む。 |
| 9、品質 | 全員に単一の設定。 | リンタへの自分専用の例外を持つ者はいない。 |
| 10、手動テストケース | 保留項目の所有者が書き、別の人が実行する。 | その機能を構築しなかった人が、最もよくそれを試せる。 |
| 11、対称性 | 契約に触れる者が、誰のものであれ消費者を更新する。 | 地図が衝突検出器だ。 |
| 13、監査 | 構築したすべてのセッションとは別のセッション。 | チームでは容易だ:そのモジュールに触れなかった人が監査者になる。 |
| 14から20、リリース | 先導者が調整し、各段に責任者がいる。 | 一人が本番へ昇格させる。他の人はしない。 |
| 21から23、運用 | サイクルごとに監視の責任者を一人、持ち回りで。 | 周期報告はチーム全体で読む。そこから出る保留項目は他と同じように宣言される。 |
プロンプトを送る前に、次のものが存在していなければなりません。作るのはあなた(またはチームの先導者)で、エージェントではありません:
docs/WORKING_AGREEMENT.md(第1段)、締められたもの、チームに一つだけ。メンバーの一覧とリポジトリ上のユーザー名とともに。docs/PENDING.md(第5段)。各保留項目に「宣言者」と「触れるモジュール」の欄があること。空でも構いません。PROJECT.md に書いたもの。共有ブランチのルーチン(共働の約束に入る):
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.
私たちは一つの共有ブランチの上でチームとして働きます。各人が自分自身のエージェントのセッションを持ち、共有される記憶はリポジトリに書かれているものだけです。ルール:(1) 各セッションの始めに docs/STATUS.md、docs/DECISIONS.md、docs/PENDING.md を読んでください。他人が宣言した保留項目には決して触れず、他人が宣言した保留項目が触れるモジュールに触れるものを決して取らないでください。(2) 共有ブランチへの各統合の前に:他の人の変更を取り込み、完全なテスト群と品質のゲートを走らせ、その後で初めてプッシュしてください。一日に何度も統合し、決して週の終わりにではなく。(3) 連鎖が赤のときは決してプッシュしないでください。赤にした者が、他の何よりも先に直すか、戻します。(4) 今日中に終えて統合できないものは、既定で消した機能スイッチの後ろへ置き、保留項目に書き留めてください。(5) 部分と部分の間の契約(サービス、テーブル、値のリスト)に触れる前に、docs/PRODUCER_CONSUMER_MAP.md でその消費者を調べ、誰のものであれ同じ変更の中で更新してください。(6) すべての事業上の決定は、決まったその瞬間に、人の名前と日付とともに docs/DECISIONS.md へ行きます。(7) 始めるときと止めるときに、何をしているかを docs/STATUS.md に更新してください。他の人のエージェントがそれを見られるように。私の言語で答えてください。
何を求めているか:七つのルールをエージェントのルーチンにすること。エージェントは他のエージェントを見ないのであり、読んだものしか守らないからだ。セッションを始めるときの必読、それが廊下での会話に代わるものだ。テスト群を条件とする、小さく頻繁な統合。中途半端なもののためのスイッチ。衝突検出器としての地図。そしてその場で書かれる生きた状態。
保留項目を宣言するとき:
プロンプトを送る前に、次のものを手元に用意しておいてください:
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.
保留項目 [PND-NNN] を取ります。何よりもまず:他人が宣言した保留項目を列挙し、「触れるモジュール」の欄と生産者・消費者の地図によって、そのどれかが私のものと同じモジュールに触れるかを教えてください。重なりがあれば、止まって私に教えてください。始めないでください。なければ、「宣言者」の欄に今日の日付とともに私の名前を書き、docs/STATUS.md に私が何を始めるかを書き、保留項目の仕様を読み直し、この保留項目が地図のどの契約に触れることになり、誰がそれを消費しているかを教えてください。私の言語で答えてください。
何を求めているか:始める前の重なりの検証、衝突を避けるのに最も安い瞬間だ。書かれた宣言。そして私が触れることになる消費者の一覧、最初から誰に何を変えるのかを知るために。
統合するとき:
プロンプトを送る前に、次のものを手元に用意しておいてください:
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.
共有ブランチへ統合します。まず他の人の変更を取り込み、何が入ってきたか、そして何かが私のモジュールに触れるかを教えてください。衝突があれば、両側を読んで解決し、事業ルールが絡むときは私に聞いてください。決して私のものを残すことで解決しないでください。完全なテスト群、品質のゲート、そしてこれが受け継いだシステムなら特性化テスト群を走らせ、数字を見せてください。何かが赤なら、止まってください:何が、誰の変更から来ているかを教えてください。この保留項目が終わっていないなら、機能スイッチが既定で消えていることを確認し、コミットのメッセージでそう言ってください。その後プッシュし、共有ブランチの上で連鎖が緑であることを見せ、docs/STATUS.md と保留項目を更新してください。私の言語で答えてください。
何を求めているか:上げる前に取り込むこと。衝突を両側を読んで解決し、「勝つ」のではないこと(衝突を前にしたモデルの反射は自分の版を残すことだ)。条件としてのテスト群。エージェントのマシンではなく共有ブランチの上での連鎖の緑を証拠とすること。そして最新の生きた状態。
docs/STATUS.md は今日それぞれが何をしているかを言っているか。仮説