ブログ

AGENTS.md で統一したはずが、1台に111個あった

2026年8月17日untactit

フォーマット論争は AGENTS.md で決着がつきました。Codex CLI、GitHub Copilot、Cursor、Windsurf、Amp、Devin はいまや同じファイルを読みます。Claude Code は CLAUDE.md、Gemini CLI は GEMINI.md のままですが、この例外リストは短くなる一方です。

ただ、高くついていたのはフォーマットではありませんでした。

今朝、普段使っているノート PC を 1 台スキャンしました。特別な環境ではありません。開発者 1 人、数年ぶんのプロジェクト、ごく普通のエージェント構成です。

ファイルディスク上のコピー数中身の種類数
AGENTS.md11119
CLAUDE.md3819
GEMINI.md22
SKILL.md(エージェントスキル)3,073887

計測方法は find ~ -maxdepth 7 -type f -name <X> で、node_modules.venv*site-packagesLibrary/Caches は除外しました。「中身の種類数」は md5 ハッシュのユニーク数です。ベンダーが同梱したスキルバンドルも SKILL.md の行に入れてあります。除外しないのが趣旨です。マシン上に置かれていて、エージェントが読める。それだけで対象になります。

ファイル 111 個に対して、書かれている内容は 19 通り。

入れ子のファイル自体は仕様どおりの使い方です。モノレポならパッケージごとに指示を分けるべきで、仕様にもそう書かれています。しかし 111 個のコピーに対して中身が 19 種類というのは、スコープ分割ではありません。コピーして、片方だけ直して、忘れた結果です。

コピーはどこから増えるのか

1. 手で貼る。 うまく書けた指針を、次のリポジトリにも貼り付けます。半年後、そのうちの 1 つで誤字を直します。残りのコピーはその瞬間に古くなりますが、それを知らせるものはどこにもありません。

2. マシンの境界。 グローバル設定はどのリポジトリにも属しません。~/.claude/CLAUDE.md~/.gemini/GEMINI.md~/.config/opencode/AGENTS.md。ノート PC が 2 台あればバージョンも 2 つになり、その差は 3 週間後に「自分の環境では挙動が違う」という形で表に出ます。

3. 生成スクリプト。 よくある対処は、正となるファイルを 1 つ決めて残りを生成する方法です。AGENTS.mdCLAUDE.md.cursor/rules/*.mdc.github/copilot-instructions.md。実行した日はきれいに揃います。ただし、生成されたファイルを誰かが直接編集した時点で崩れます。ディスク上のファイルには「生成物である」という印がなく、確認する仕組みもないからです。

この失敗パターンは別記事にまとめました。1つのファイルから生成しても、ズレは止まらなかった

どのエージェントが、どこを読むのか

一覧にしておく価値があります。間違えやすいのはパスだからです。

ツール読むファイル
Claude CodeCLAUDE.md(プロジェクトルート、サブディレクトリ、~/.claude/)、.claude/skills/*/SKILL.md.claude/agents/*.md
Codex CLIAGENTS.md(ルートと入れ子。最も近いものが優先)
GitHub Copilot.github/copilot-instructions.md、スコープ指定は .github/instructions/*.instructions.md
Cursor.cursor/rules/*.mdc(旧 .cursorrules
Windsurf.windsurf/rules/*.md(旧 .windsurfrules
Gemini CLIGEMINI.md~/.gemini/、ワークスペースルート、サブディレクトリ)
opencodeAGENTS.md、なければ CLAUDE.md、グローバルは ~/.config/opencode/AGENTS.md

散らばり具合を出すスクリプト

agent-drift は単一ファイルの Python スクリプトです。MIT ライセンス、依存なし。ツリーを走査して、上記のエージェントが読む指示ファイルを集め、内容のハッシュでまとめ、食い違っているものを出力します。

curl -O https://raw.githubusercontent.com/untactit/agent-drift/main/agent_drift.py
python3 agent_drift.py ~

リポジトリ: https://github.com/untactit/agent-drift

直す機能はありません。どれだけひどいかを数字で出すだけです。多くのチームに足りていないのはその数字のほうで、数字がないままプロセスの変更を通すことはできません。

いま作っているもの

私は untactit を作っています。エージェントが動くために読むスキル・指針・メモリを 1 か所に置き、変更のレビューは一度だけ。そのあとは誰もファイルを開かないまま、対象へ反映される、という形です。

区別しておきたいのはここです。判断は人が、伝播は無接触。 何を承認するかは人が決めますが、そこから先に手作業は入りません。ドリフトを後から直すのではなく、生まれる側が止まります。コピーを編集する人がいなくなるからです。触らないから、ばらつかない。

まだ公開前です。上のスキャナは untactit がなくても動きます。そこは意図してそうしてあります。詳しい話はプロダクトページにまとめてあります。


自分のマシンでスキャンしたら、その数字を見せてほしいです。3 人以上のチームなら、AGENTS.md の行は私の環境より悪いはず、と踏んでいます。

関連記事

エージェントが何で動いているのか。推測は、もう終わり。

ワークスペースをひとつ接続するだけで、チームで動いているスキル・ルール・メモリの全体が見えます。所要はおよそ10分です。

無料で始める 相談する

クレジットカードは不要です。いまお使いのツールのままで動きます。