同じ作業フォルダを、複数のAIで触るようになりました。私の場合、現在は4つです。ターミナルで動くClaude Code、クラウドで動くCowork、ChatGPTのCodex、そしてCursor。それぞれに愛称をつけて、コーちゃん、クロちゃん、チャッピー、グロちゃんと呼んでいます。
便利になった一方で、困ったことが起きました。あるAIに「こうしてほしい」と伝えて覚えさせても、その内容が別のAIにはまったく届かないのです。同じフォルダ、同じ仕事なのに、AIの数だけ同じ説明を繰り返し、同じ失敗を踏み直すことになります。
原因は単純でした。**AIごとに、読んでいるルールファイルが違う**のです。
この記事では、その状態をどう整理したのか、実際に測って確かめた結果とあわせてお伝えします。
## 同じフォルダを触るAIが、別々のルールファイルを読んでいる
AI向けの作業ルールを書いたファイルは、ツールによって名前が決まっています。
Claude Codeが読むのは `CLAUDE.md` です。ChatGPTのCodexが読むのは `AGENTS.md` です。私のフォルダには、この2つが並んでいました。
厄介なのは、この2つの中身がほとんど同じだということです。「作業は指示があってから始める」「実行前に許可を得る」「質問は一度に一つにする」といった内容は、相手がClaudeであろうとGPTであろうと変わりません。同じことを2箇所に書いて、2箇所で保守していたわけです。
当然、ズレます。片方に新しいルールを足して、もう片方を直し忘れる。しばらく経つと、どちらが正しいのかわからなくなる。私のフォルダでは、`AGENTS.md` のほうが更新から取り残されて、`CLAUDE.md` の劣化コピーのような状態になっていました。
しかも私は、そのズレを固定するルールまで書いていました。「`AGENTS.md` は他のAIツール用のファイルです。参照も更新もしないでください」と。お互いのファイルを勝手に書き換えられては困る、という意図でした。
ただ、この線引きには副作用があります。**Codexが踏んだ地雷の記録を、Claude Codeが読めない**のです。せっかく一方が学んだことが、構造として他方に届かない。同じ失敗をAIの数だけ繰り返すのは、当たり前の結果でした。
## AGENTS.mdという共通の置き場所ができている
調べてみると、状況は変わっていました。`AGENTS.md` が、AIツールをまたぐ共通のルールファイルとして広まってきていたのです。
読み込みに対応しているツールは30以上あります。OpenAIのCodex、GitHub Copilot、Cursor、Gemini CLI、Windsurf、Aider、Devinなど、主要なものはひととおり含まれています。中身はただのMarkdownで、決まった項目もありません。書き方の自由度が高いぶん、共通の置き場所として使いやすい形になっています。
ここまでは良い話なのですが、ひとつ落とし穴がありました。
**Claude Codeは `AGENTS.md` を読みません。**
「フォールバックとして読んでくれる」という説明をいくつか見かけましたが、公式のドキュメントにその記載はなく、実際の動作とも合いませんでした。Claude Codeが読むのは、あくまで `CLAUDE.md` です。この件は要望として挙がっており、賛同も相当な数が集まっていますが、現時点では読みません。
つまり `AGENTS.md` に全部まとめても、それだけではClaude系には届かない、ということになります。
## Claude Codeは`@AGENTS.md`で取り込める
橋を架ける方法は用意されていました。`CLAUDE.md` の1行目に、こう書くだけです。
“`
@AGENTS.md
(ここから下にClaude固有のことだけ書く)
“`
これでセッションの開始時に `AGENTS.md` が読み込まれ、その下にClaude専用の指示が積まれます。ルールの本体は `AGENTS.md` に一本化したまま、Claude Codeにも届けられるわけです。
似た方法として、`CLAUDE.md` を `AGENTS.md` へのシンボリックリンクにしてしまう手もあります。2つのファイルが物理的に同じものになるので、ズレようがありません。
ただ、Windowsで使うなら、私はインポートのほうを勧めます。シンボリックリンクはWindows環境だと `core.symlinks` の設定が必要になり、ツールによってはリンクを解決できずに弾かれることもあります。インポートなら管理者権限も開発者モードも不要で、初回に承認を求められるだけです。
そして実際に試したところ、Claude Codeでは**期待どおりに動きました**。`AGENTS.md` に書いた内容が、`CLAUDE.md` 経由でちゃんと届いていることを確認できました。
## ところがCoworkでは`@`が展開されない
ここで話が分かれます。
同じClaudeでも、クラウドで動くCoworkのほうでは、`@AGENTS.md` が展開されませんでした。1行目の `@AGENTS.md` という文字列が、文字列のまま置かれているだけの状態です。
私は念のため、新しい会話を3回立ち上げて確認しました。3回とも同じ結果でした。`AGENTS.md` の中身はどこにも入っていません。
一方で、`CLAUDE.md` そのものは自動で読み込まれていました。ファイル本体は届いているのに、その中の取り込み指定だけが働かない、という状態です。
同じClaudeで、同じ書き方をして、片方は効いて片方は効かない。この差が、後の設計を決めることになりました。
## だからミラー方式にする
取り込みで繋ぐのは諦めました。Coworkで効かない以上、そこに依存した設計はできません。
代わりに選んだのが、**中身をそのまま写す**やり方です。
“`
AGENTS.md ← 正本。ルールを直すのはここだけ
CLAUDE.md ← AGENTS.mdの全文コピー + Claude固有の追記
“`
`AGENTS.md` を正本と決めて、そこに全ルールを集約します。`CLAUDE.md` は、その全文をコピーしたうえで、末尾にClaude固有の内容だけを足したものにします。`@AGENTS.md` の行は削除します。写してしまう以上、取り込みがあると同じ内容が二重に入ってしまうからです。
見た目には、同じ内容を2箇所で持つことになります。最初に避けたかった二重管理そのものです。ただ、意味合いが違います。**片方を「生成物」と決めてしまえば、人が編集する場所は1箇所に固定できる**からです。ズレる余地は、写し忘れだけになります。
ファイルの中にも、それを書いておきました。
“`
– このファイルが正本です。ルールの追加・変更は、必ずこのファイルに対して行います。
– CLAUDE.md は、このファイルの全文を写した生成物です。直接編集しないでください。
“`
こう書いておけば、AIがうっかり `CLAUDE.md` を直そうとしたときに、自分で気づける可能性が上がります。
## 4つ全部で実測した結果
作り替えたあと、4つのAIすべてで確認しました。方法は、`AGENTS.md` にしか存在しない新しい言葉を1つ用意して、「自動で読み込まれた指示の中にその言葉があるか」を聞くだけです。
結果はこうなりました。
| 器 | 中のモデル | 読んでいるファイル | 結果 |
| — | — | — | — |
| Claude Code | Claude | `CLAUDE.md` | 届いた |
| Cowork | Claude | `CLAUDE.md` | 届いた |
| Codex | GPT | `AGENTS.md` | 届いた |
| Cursor | Grok | `AGENTS.md` と `CLAUDE.md` の両方 | 届いた |
中身のモデルは、Anthropic、OpenAI、xAIの3社に分かれています。開発元も設計思想もばらばらです。それでも、同じルールが4つ全部に効きました。
ここから見えてくることがあります。
**効くかどうかを決めているのは、モデルではなく器のほうだ**、ということです。
同じClaudeを積んでいても、Claude CodeとCoworkでは動きが違います。取り込み記法が効くかどうかも、フックが発火するかどうかも、フォルダの外が見えるかどうかも違います。逆に、中身がGPTだろうとGrokだろうと、その器が読むファイルに書いてあれば、内容はきちんと届きます。
ですから、ルールを効かせたいときに考えるべきなのは「このAIは賢いか」ではありません。「**このツールは、どのファイルを読みに行くのか**」です。ここさえ合っていれば、相手が何であっても効きます。
なお、Cursorは `AGENTS.md` と `CLAUDE.md` の両方を読んでいました。これはGrokの性質ではなく、Cursorという器の性質です。同じGrokを別の場所で動かしても、この2つのファイルは読みません。
## Cowork向けの保険 ― 個人設定に1行
ミラー方式で届くことは確認できましたが、Coworkについては、もう一段の保険をかけました。
Coworkで確実に読み込まれるものが、もうひとつあります。claude.aiの個人設定です。ここに書いた文章は、会話が始まった時点で必ず入っています。
そこで、こう書き足しました。
“`
【AI-AGENTS フォルダでの作業】
C:\Users\ユーザー名\AI-AGENTS 配下のファイルを扱うときは、作業を始める前に
C:\Users\ユーザー名\AI-AGENTS\AGENTS.md を読むこと。作業ルールは全部そこにある。
この読み込みだけは事前に許可済み。確認を取らずに実行してよい。
読んだら「AGENTS.md 読んだで」と最初に一言報告すること。
“`
3行目には理由があります。私は普段、AIに「勝手にファイルを開くな」というルールを課しています。そのままだと、この読み込みも止まってしまいます。ここだけは例外だと明示しておく必要がありました。
4行目にも理由があります。**読んだかどうかを、目に見えるようにするため**です。報告がなければ読んでいない、と一目でわかります。「ちゃんと確認する」のような、守れたかどうか判定できない指示は、書いても効いているかわかりません。
これも3回試しました。3回とも、頼んでいないのに `AGENTS.md` を読み、報告してから作業に入りました。指示文だけで動かす仕組みとしては、思っていたよりずっと安定していました。
ただし、これは確率で動く仕組みです。3回成功したからといって、100回目も成功する保証はありません。あくまでミラーが主で、こちらは保険という位置づけにしています。
## 検証でつまずいた3点
ここまで書くと順調に進んだように見えますが、実際は途中で何度もつまずきました。同じ検証をされる方のために、失敗のほうも残しておきます。
### 目印にHTMLコメントを使うと消える
最初、確認用の目印を `` というHTMLコメントで書きました。記事の見た目に影響しないように、という配慮のつもりでした。
結果、どのAIも「そんな行はない」と答えました。読み込みの過程でコメントが除去されていたのです。
見えないように書いたら、見えたかどうかを確かめられません。当たり前の話ですが、そのときは気づきませんでした。**目印は、必ず普通の本文として書いてください。**
### 2つのファイルに同じ目印を入れると切り分けられない
次に、目印を本文行に直しました。それでも判定できませんでした。
理由は、`AGENTS.md` と `CLAUDE.md` の冒頭が、どちらも同じ見出しで始まっていたからです。AIが「その内容は届いています」と答えたとき、それが `AGENTS.md` から来たのか、`CLAUDE.md` から来たのか、区別する手段がありませんでした。
**自分の仮説を切り分けられない検証を作ってしまっていた**わけです。
直し方は簡単で、2つのファイルに**別々の目印**を入れるだけです。`IMPORT-TEST-A` と `IMPORT-TEST-C` のように分けておけば、どちらが届いたのか必ずわかります。
### 「読みに行くな」と書かないと読みに行く
3つ目です。AIに「この文字列は入っているか」と聞くと、**わからないときにファイルを開いて確かめようとします**。
親切な動作ではあるのですが、今回見たかったのは「自動で入ってきたか」でした。開いて確認されると、判定が成立しません。実際に一度、これで結果が壊れました。
聞くときは、こう添えてください。
“`
ファイルは読みに行かんといて。
いま自動で読み込まれてる指示だけを見て答えて。
開かずに答えられへんかったら「開かんと分からへん」と正直に言うて。
“`
最後の1行が大事です。これがないと、わからないときに調べに行ってしまいます。
### おまけ ― 同じファイルを読んでも、数え方は揃わない
最後にひとつ、印象に残ったことを。
4つのAIに、まったく同じ質問をしました。「この言葉は入っているか。入っていたら前後を引用して」というものです。その言葉は、ファイル内に2箇所ありました。
– 2箇所とも正しく指摘したAIが2つ
– 1箇所しか挙げなかったAIが1つ
– 最初は「入っていない」と答え、指摘されてから2箇所とも挙げたAIが1つ
同じファイルを読んで、数え方がこれだけ分かれます。**AIの「全部見ました」という報告を、そのまま検証の結論にしてはいけない**ということです。1回の回答で決めず、聞き方を変えてもう一度確かめる。今回いちばん身にしみた教訓でした。
## まとめ
複数のAIで同じフォルダを触るときのルールの置き方を、あらためて整理します。
– **正本を1つ決める。** `AGENTS.md` が共通の置き場所として広まってきており、対応ツールも多いので、ここを本体にするのが素直です
– **Claude Codeへは取り込みで繋ぐ。** `CLAUDE.md` の1行目に `@AGENTS.md` と書けば届きます。Windowsではシンボリックリンクよりこちらが安全です
– **Coworkには取り込みが効かないので、中身を写す。** `CLAUDE.md` を生成物と決めて、人が編集する場所を1箇所に固定します
– **確実に読み込まれる場所に、1行だけ道しるべを置く。** Coworkなら個人設定です。読んだら報告させると、効いているか目で確かめられます
– **効くかどうかはモデルではなく器で決まる。** 「このツールはどのファイルを読むのか」を先に調べてください
そして何より、**推測せずに測ることです**。今回、私は「たぶんこうだろう」で判断して、2回も結論をひっくり返しました。実際に目印を入れて聞いてみれば、5分で答えが出る話でした。
## 確認していないこと
今回の検証で、確かめきれなかったことが3つあります。
– **Coworkの自動読み込みが常に起きるかどうか。** ほとんどの回で読み込まれていましたが、1回だけ入っていない事例がありました。原因は特定できていません
– **ミラーの同期を自動化する方法。** 現時点では、`AGENTS.md` を直したら `CLAUDE.md` へ手作業で写しています。フックやコミット時の処理で自動化できるはずですが、まだ試していません
– **ルールが増えて長くなったときの扱い。** 現在は144行に収まっていますが、AIが確実に守れる指示の数には上限があると言われています。増え続けたときにどう分割するかは、これからの課題です
