はじめに
こんにちは。ねばねばです。
私は普段IntelliJ IDEA で、JetBrains AI のコーディングエージェントを切り替えてテストをしています。
JetBrains AI サブスクリプションには、
- Junie(JetBrains 自社製、IDE と密に統合されたエージェント)
- Claude Agent(Anthropic、Claude Agent SDK 経由で IDE に接続)
- Codex(OpenAI、ACP = Agent Client Protocol 経由で接続)
の3つが含まれていて、サブスクリプション外でも BYOK や ACP 互換エージェントを追加できる、ベンダー中立な作りになっています。
この記事の結論
Junie と Codex はAGENTS.mdを読む。Claude Agent だけはCLAUDE.mdを読む。
CLAUDE.md を AGENTS.md へのシンボリックリンクにすることで、実体ファイル1つで3エージェント全部に同じ指示が行き渡る。
同じ内容を AGENTS.md と CLAUDE.md に二重管理して、片方だけ更新して挙動割れをなくそうの記事です。
JetBrains IDE と AGENTS.md の相性
「AGENTS.md と JetBrains IDE の相性のよさ」を整理しておきます。両者がどちらも "ベンダー中立" を志向しているからではないでしょうか。
JetBrains IDE 側:どのエージェントでも受け入れる設計
JetBrains AI サブスクリプションに含まれる3エージェントは、それぞれ違う連携方式で同じ IDE に同居しています。
| エージェント | 連携方式 | 開発元 |
|---|---|---|
| Junie | 自社ネイティブ(IDE と最も密に統合) | JetBrains |
| Claude Agent | Claude Agent SDK 経由 | Anthropic |
| Codex | ACP(Agent Client Protocol、Zed 発のオープン標準)経由 | OpenAI |
「JetBrains 製の Junie + 他社製エージェント2種」が同じ AI Chat の中で切り替えられる状態。さらにサブスクリプション外でも BYOK / OAuth / ACP 互換エージェントを後から追加できて、IDE 側は「どのエージェントが来ても受け入れる」スタンスです。
AGENTS.md 側:どのツールでも読める共通フォーマット
一方の AGENTS.md は、OpenAI Codex・Amp・Google Jules・Cursor・Factory などの協働から生まれたオープンフォーマットで、2025年12月には Linux Foundation 配下の Agentic AI Foundation の創設プロジェクトに採用されました。60,000+ リポジトリが既に採用しています。
特定のベンダー製品に紐付かない「AI エージェント向け README」として、ビルド・テスト・規約・禁止事項を1ファイルにまとめる思想です。
ベンダー中立 × ベンダー中立 = AGENTS.md一本化の希望
IDE は「特定の AI 機能」と密結合していて、別エージェントに乗り換えるとプロジェクト指示も書き直しになりがちです。一方 JetBrains IDE は 複数エージェントが共存する前提なので、
- 軽い質問は Junie
- 大きめのリファクタは Claude Agent
- コードベース横断の調査は Codex
…のような使い分けが可能です。このとき指示ファイルがエージェントごとに別だと大変なので、ツール中立な AGENTS.md をひとつ置いて全員に読ませる、という運用が一番自然になります。
唯一の引っかかりが「Claude Agent だけは CLAUDE.md を読みにいく」点で、これを次のシンボリックリンクで解決します。
やったこと
2.1 AGENTS.md を書く
まずプロジェクトルートに AGENTS.md を置きます。書き方はいくつかありますが、Matt Nigh が 2,500+ リポジトリを分析して整理した 6つのコア領域を参考にしました。
# AGENTS.md
## Commands- 開発サーバ起動: `npm run dev`
- テスト実行: `npm test`
- Lint: `npm run lint`
- ビルド: `npm run build`
## Testing- フレームワーク: Vitest
- 新規ロジックには必ずユニットテストを追加
- E2E は `e2e/` 配下
## Project structure- フロント: React 19 + TypeScript 5.6
- バック: Node 22 + Hono
- `src/` がアプリ本体、`packages/` が共有ライブラリ
## Code style(コード例を1つ載せる方が説明文より強い)
```ts
// Good
export function fetchUser(id: string): Promise<User> { ... }
```
## Git workflow- Conventional Commits を使用
- main への直 push 禁止
## Boundaries
### Always- 変更後は `npm test` を必ず通すこと
### Ask first- マイグレーションファイルの追加・変更
- 依存ライブラリの追加
### Never- `.env*` を開かない・出力に含めない
- `node_modules/` を編集しない
ポイントは Boundaries を Always / Ask first / Never の3層で書くこと。
次はシンボリックリンクについて見ていきましょう。
2.2 シンボリックリンクとは
シンボリックリンクとは
ファイルやディレクトリへの「ショートカット」のこと。
実体は1つだけなので、どちらのパスから開いても常に同じ内容が読み書きされる。
ln -s 実体 リンク名で作れる。
イメージとしては、
[実体] AGENTS.md ←──┐
│ "中身を見せて" と聞かれたら同じ実体に転送
[リンク] CLAUDE.md ──┘
CLAUDE.md を開いても、Finder/エクスプローラからは普通のファイルに見えますが、OS が裏で「これはリンクだから AGENTS.md の内容を返すね」と処理してくれます。コピーではないので、AGENTS.md を編集すれば CLAUDE.md 側からも即座に新しい内容が読めます。
2.3 CLAUDE.md → AGENTS.md のリンクを張る
macOS
# プロジェクトルートで
ln -s AGENTS.md CLAUDE.md
ls -la で確認するとリンク矢印が見えます:
$ ls -la CLAUDE.mdlrwxr-xr-x 1 user staff 10 5 15 14:22 CLAUDE.md -> AGENTS.md```
#### Windows(PowerShell)
```powershell
# プロジェクトルートで
New-Item -ItemType SymbolicLink -Path CLAUDE.md -Target AGENTS.md
または cmd で:
mklink CLAUDE.md AGENTS.md
ただし Windows でシンボリックリンクを作るには 開発者モードを ON にするか 管理者として実行する必要があります。
検証
3エージェント全部に同じ質問を投げて、AGENTS.md の内容がちゃんと反映されるかを確かめます。
質問は揃えて:
「このプロジェクトでテストを走らせるコマンドと、触ってはいけないファイルを教えて」
期待する答えは AGENTS.md の Commands と Boundaries → npm test と .env* / node_modules/。
3.1 Junie が AGENTS.md を読んでいることを確認
IntelliJ IDEA の AI Chat でエージェントを Junie に切り替えて質問。
Junie はセッション開始時に AGENTS.md をガイドラインとして読み込む仕様なので、期待通り npm test と .env* / node_modules/ を返してくれました。
3.2 Codex が AGENTS.md を読んでいることを確認
エージェントを Codex に切り替えて同じ質問。
Codex も AGENTS.md 対応しているので、同じ答えが返ります。
3.3 Claude Agent がシンボリックリンク経由で AGENTS.md を見ていることを確認
エージェントを Claude Agent に切り替えて同じ質問。Claude Agent は本来 CLAUDE.md を見にいく仕様ですが、CLAUDE.md の実体が AGENTS.md なので同じ内容が読まれます。
確認のために、Claude Agent に「いま読んでいる指示ファイルのパスとサイズを教えて」と聞くと、CLAUDE.md を読んでいると答えますが、OS 側で AGENTS.md にリダイレクトされているので中身はAGENTS.mdから供給されています。
まとめ
JetBrains AI で複数エージェントを使い分けるなら、
- プロジェクトルートに AGENTS.md を設置
-
ln -s AGENTS.md CLAUDE.md(Windows ならmklinkorNew-Item -ItemType SymbolicLink)でリンクを張る - これで Junie / Codex / Claude Agent の3エージェント全部に同じ指示が届く
という運用が、いまのところ気持ちいいです。
ぜひ試してみてください!
ナットウシステムからのお知らせ
弊社は JetBrains 製品に関するご質問、ご相談等を受け付けております。弊社のXまたはメールでご連絡ください。
参考資料
AGENTS.md(オープン標準)
- AGENTS.md 公式サイト — フォーマット定義、採用ツール一覧、サンプル
- Linux Foundation: Agentic AI Foundation (AAIF) 発足プレスリリース — MCP / goose / AGENTS.md が創設プロジェクトに採用された経緯
- OpenAI: Agentic AI Foundation 共同設立アナウンス
- InfoQ: OpenAI と Anthropic が AGENTS.md / MCP を AAIF に寄贈 — 60,000+ リポジトリ採用の文脈
Junie(JetBrains 自社エージェント)
-
Junie Docs: Guidelines and memory —
.junie/AGENTS.md→AGENTS.md→.junie/guidelines.mdの探索順 - YouTrack JUNIE-618: Support AGENTS.md — AGENTS.md 対応の議論履歴
- JetBrains/junie-guidelines (GitHub) — 公式ガイドライン集
- Junie Playbook
ACP(Agent Client Protocol)と Codex / Claude Agent の同居
- Agent Client Protocol 公式 (Zed) — 仕様、Apache ライセンス
- JetBrains AI Blog: JetBrains × Zed — ACP 採用
- JetBrains AI Blog: ACP Agent Registry Is Live (2026/01) — Claude Code / Codex CLI / Gemini CLI などが登録済み
- JetBrains ACP ランディング
- Zed Blog: Codex is Live in Zed



