Claude Code で機能の実装を始めたとします。厄介な型エラーで行き詰まったので、同じリポジトリを、そういう泥臭い作業が得意な Codex に渡します。Codex はそれを修正しますが、その機能が何のためのものだったのか、どのファイルに触らないと既に合意していたのか、ここでの「完了」が何を意味するのか、もう分かりません。あなたは記憶を頼りに、すべてを一から説明し直します。10分後に元に戻ると、Claude Code も忘れています。コードは前に進みました。コンテキストは進みませんでした。
これが、複数のコーディングエージェントを動かすことにかかる税金です。各ツールはそれぞれの形式とそれぞれのセッションで独自のメモリを保持するため、作業がエージェントからエージェントへ移った瞬間、diff 以外のすべてが床に落ちてしまいます。コーディングエージェントを切り替えるときにコンテキストを保つとは、そのコンテキストをどの単一のエージェントの外側に、あなたが語り直さなくても次のエージェントが読める形で存在させることです。
この記事ではその方法を、Sharkly をワークフローとして使って順を追って説明します。Sharkly はあなたのコーディングエージェントの上に位置するレイヤーで、コンテキスト、進捗、ブロッカー、結果、そして人間によるレビューを、リクエストからリリースまで可視化し続けます。あなたには既にコーディングエージェントがいます。ここでの問題はエージェント間の継ぎ目であり、エージェントを追加するたびにその継ぎ目は広がっていきます。
なぜコンテキストはエージェント間を移動しないのか
コーディングタスクのコンテキストは3つの場所に存在し、そのうち可搬なのは1つだけです。
1つ目は指示ファイルです。CLAUDE.md、AGENTS.md、GEMINI.md。常設のルール、規約、テストを実行するコマンド。2つ目はセッション状態です。あなたとエージェントが先ほど話した内容、試したこと、除外したことのスクロールバック。3つ目は成果物そのもの、つまりディスク上の diff またはブランチです。
無料で移動するのは3つ目だけです。別のエージェントはコードは読めますが、自分が参加していない会話は読めず、別のツール宛ての指示ファイルは読みません。これがはっきり言うべき境界線です。エージェントを切り替えるとコードは保たれ、推論は失われる。コミットは生き残ります。「なぜ」は、あるエージェントが見て次のエージェントは決して見ることのないスクロールバックバッファにあったのです。
つまり、切り替えをまたいでコンテキストを保つとは、実質的に2つの仕事です。常設のルールをすべてのエージェントが読めるようにすること、そしてライブのタスク状態を、ある1つのツールのメモリ以外の何かとして存在させること。次のセクションで順に見ていきます。(もしあなたの悩みが同じエージェントの実行間でコンテキストを失うことなら、それは関連するものの別の問題で、AI セッション間でコンテキストを維持する方法で扱っています。)
常設のルールを、すべてのエージェントが読む1つのファイルにする
まずは安上がりな成果から始めましょう。Claude Code は CLAUDE.md を読み、Codex は AGENTS.md を読み、Gemini CLI は GEMINI.md を読みます。同じ役割で、ファイル名が3つ。これらを別々に管理すると、内容がずれていき、切り替えた先のエージェントは古いルールに従っているのに、あなたはそうでないと思い込むことになります。
ルールは一度だけ書いて、他のファイル名からそこを指すようにします。macOS または Linux では:
# AGENTS.md is the source of truth; the others are aliases
ln -s AGENTS.md CLAUDE.md
ln -s AGENTS.md GEMINI.md
git add AGENTS.md CLAUDE.md GEMINI.md
これで、リポジトリを開くすべてのエージェントが同じ規約を読み、変更があったときに更新するファイルは1つだけになります。短く事実に徹しましょう。テストコマンド、触ってはいけないディレクトリ、レビューのルール、コミットの見た目。これは、どのエージェントを切り替えた先でも、起動した瞬間に各エージェントが引き継ぐ共有の契約です。
注意すべき失敗パターンは、タスク固有の詳細をこれらのファイルに入れてしまうことです。指示ファイルは、リポジトリのあらゆるタスクに当てはまるルールのためのものです。「Jest ではなく Vitest を使う」はここに属します。「チェックアウトのリトライロジックを完成させ、認証ミドルウェアには触らないこと」は属しません。それは今週の1つのタスクには当てはまり、次には当てはまりません。この2つを混ぜると、すべてのエージェントが、すでに出荷済みの仕事向けだった指示を読むことになります。
ルールだけでなく、作業中のコンテキストも引き継ぐ
ルールファイルは新しいエージェントをスタートラインに連れて行きます。しかし進行中のタスクについては何も語りません。何が決まったのか、何が半分終わっているのか、何がまだ不確かなのか。その知識こそが、切り替えのときに蒸発してしまうものなのです。なぜなら、それは常に前のエージェントのセッションの中にしか存在しなかったからです。
手作業での対処法は引き継ぎメモです。エージェントを切り替える前に、今のエージェントに現在地を書き出させます。目標、変更したファイル、検証したこと、そして1つだけ確信が持てなかったこと。それを次のエージェントへの最初のメッセージとして貼り付けます。これはうまく機能し、1回の切り替えなら十分です。このパターン自体は身につける価値があり、良い引き継ぎメモの形についてはエージェント引き継ぎテンプレートで扱っています。
失敗パターンは、そのメモがどこにも永続的に残らないことです。あなたが閉じてしまうターミナルの中の1段落だったり、毎回打ち直すメッセージだったりします。2回往復するだけで、あなたは3つのツールをまたいで、手作業で、頭の中で、引き継ぎメモを維持していることになります。コンテキストは存在しますが、あなた自身がその保管先のデータベースになってしまっているのです。これは1つのタスクなら持ちこたえます。しかし複数のタスクを回しているときには持ちこたえません。ここが DIY アプローチの限界です。
DIY 構成がスケールしなくなる地点
シンボリックリンクしたルールと貼り付けた引き継ぎメモは、1つのリポジトリと2つのエージェントなら大いに助けになります。3つ目のエージェント、2つ目のリポジトリ、あるいは丸一日に及ぶタスクが加わると、算術が裏目に出ます。切り替えのたびに手作業でのエクスポートと再インポート。各タスクは「何が終わったか」の独自の糸を持ち、それは前のエージェントが残した場所にしか存在しません。バックエンドのエージェントが、フロントエンドのエージェントが待っているエンドポイントを仕上げたことを、何も知らせてくれません。なぜなら「知らせる」とは、誰も見ていないターミナルの中のメッセージだったからです。
その時点での解決策は、より良いメモではありません。作業中のコンテキストをエージェントから完全に引き離し、すべてのエージェントと人間が読み書きする共有の Task の上に移すことです。Sharkly の Task は、目標、受け入れ基準、diff、ブロッカー、そして議論を1つのレコードに保持します。実行、ブロッカー、結果、フォローアップはその Task のタイムラインに戻るので、エージェントの切り替えはもはやエクスポートではなくなります。Task を再アサインすれば、次のエージェントは前のエージェントが書き込んだのと同じレコードを読みます。
ここが、人間とエージェントの役割分担がすっきりする場所でもあります。エージェントは調査し、実行し、テストし、Task に報告します。人間は方向性を定め、権限を付与し、結果を受け入れます。自動化はチームの判断が必要なところで止まり、次の作業者が読むレコードは、レビュアーが読むのと同じものです。これが成り立つのは、コンテキストがもはやセッションに閉じ込められていないからにほかなりません。
ここで正直な判断の分かれ目を示します。1つのターミナルで1つのリポジトリに対して1つのエージェントを動かしているなら、これは一切必要ありません。コンテキストは決して外に出ないので、保つものがないのです。共有の Task に手を伸ばすのは、コンテキストが切り替えを生き延びなければならなくなった瞬間です。その切り替えがエージェント間であれ、エージェントと人間の間であれ、あるいは単に明日の朝のあなた自身であれ。1つのエコシステムに決め打ちするのではなく、複数のコーディングエージェントを使い続けたいなら、その可搬性こそが要点です。あなたのワークフローは、次にどのエージェントを選んでも生き残ります。コンテキストがどのエージェントの中にも保存されていなかったからです。これはまた、1つのコードベースで Claude Code と Codex を一緒に動かすことを可能にする構成でもあり、引き継ぎでどちらかが盲目になることがなく、worktree、1タスクにつき1チェックアウトと自然に組み合わさって、並行するエージェントが衝突しないようにします。
今日から実行できるチェックリスト
これを順番に進めましょう。最初の3つはコストゼロ。4つ目は、最初の3つが追いつかなくなったときにステップアップするものです。
- ルールファイルを統一する。
CLAUDE.md、AGENTS.md、GEMINI.mdを1つのソースにシンボリックリンクします。リポジトリ全体の規約だけに保ち、タスクの詳細は入れません。 - 切り替えの前に必ず引き継ぎメモを書く。 目標、変更したファイル、検証したこと、未解決の疑問。今のエージェントに下書きさせ、次のエージェントに貼り付けます。
- 切り替えを習慣ではなくタスクで決める。 目先の作業にエージェントを合わせ、開いているターミナルで適当に決めるのではなく、ルーティングガイドを使います。
- メモがスケールしなくなったら、コンテキストをエージェントから移す。 複数のエージェントやリポジトリをさばくようになったら、目標、状態、レビューを共有の Task に置き、切り替えを再説明ではなく再アサインにします。
もし既に複数のエージェントを動かしていて、切り替えのたびに同じコンテキストを語り直しているなら、それが Sharkly が解決しようとしている問題です。各エージェントのタスク、進捗、結果が見える状態に保たれる1つの場所があり、コンテキストが切り替えよりも長生きします。



