なぜチャットとエージェントで異なる指示に従うのか
まずはプロジェクトルールから始めましょう。JetBrainsのドキュメントでは、これらをチャット向けのガイダンスとして説明しています。「デフォルトでは、プロジェクトルールは各チャットセッションに自動的に追加されるため、AI Assistantは提供されたガイドラインを遵守します。」設定でルールを作成すると、「これにより、中に.mdファイルが含まれる.aiassistant/rulesフォルダーが作成されます。」
各ルールにはタイプがあり、適用されるタイミングが決定されます:
- "Always – すべてのチャットセッションに自動的に適用されます。"
- "Manually – チャット内で@rule:または#rule:を使用して明示的に呼び出された場合、または「添付ファイルの追加」アクションを介して追加された場合にのみ適用されます。"
- "By model decision – モデルがルールを関連性があると判断した場合に適用されます。" このタイプでは、「AI Assistantがルールを適用すべきタイミングを理解できるように、指示(Instruction)も提供する必要があります。」
- "By file patterns – チャットで参照されているファイルが、指定されたファイルパターン(例:
*.ktやsrc/**)に一致する場合に適用されます。" - "Off – ルールは非アクティブであり、適用されません。"
これらの説明のすべてに「チャット」が登場します。これは意図的なものです。エージェントの指示に関するJetBrainsのページでは、その境界線が明確に引かれています。「プロジェクトルールはIDEで設定され、AI Assistantのチャットモードにのみ適用されます。」
エージェントは代わりに指示ファイルを使用します。「エージェントは、コーディング規約、アーキテクチャの制約、一般的なワークフローなど、コードベース内での動作方法を定義するプロジェクト内の指示ファイルを使用して設定できます。」そして、どのファイルを使用するかはエージェントによって異なります。「ほとんどのエージェントは再利用可能なガイダンスとしてAGENTS.mdファイルに依存していますが、独自のフォーマットを使用するものもあります。たとえば、Claude AgentはCLAUDE.mdから指示を取得します。」
エージェントのページでもこれが確認されています。「JunieはプロジェクトのルートディレクトリにあるAGENTS.mdファイルから指示を読み込むため、これらをバージョン管理下に置き、プロジェクト全体で再利用できます。」そしてもう一方のエージェントについては、「Claude AgentはプロジェクトのルートディレクトリにあるCLAUDE.mdファイルから指示を読み込みます。」
JetBrainsは、意図された役割分担についても明記しています。「ツールや環境間でガイダンスを共有するには指示ファイルを使用し、AI Assistant内の動作をカスタマイズするにはプロジェクトルールを使用します。」影響範囲の違いも重要です。指示ファイルは「選択されたコーディングエージェントによって使用され、リポジトリとともに移動」しますが、プロジェクトルールはJetBrainsの言葉を借りれば「IDEで設定」されます。
まとめると、1つのプロジェクトに3つの指示ソースが存在する可能性があり、どれが適用されるかはドロップダウンの選択によって決まります。
JunieのスタンドアロンCLIには、さらにもう1つの特徴があります。ガイドラインの独自の検出順序があり、ルートファイルの前に.junie/AGENTS.mdをチェックします。そのルートについては、ルールフォルダーを遮断せずにJunieのガイドラインを配置するで説明しています。このガイドは、AI Assistant'のチャットモードとIDE内のエージェントに関するものです。
人々が代わりに試みること
すべてをプロジェクトルールとして記述する。 ルールのUIは設定画面のすぐそこにあり、タイプやファイルパターンも設定できるため、指示を記述するメインの場所のように感じられます。確かにチャットにとってはメインの場所です。しかし、エージェントは指示ファイルに従います。
すべてをAGENTS.mdに記述する。 ツール間で共有するのには適しており、Junieもこれを読み込みます。しかし、チャットモードはプロジェクトルールを適用し、Claude AgentはCLAUDE.mdを読み込みます。
以前のClaude Codeの設定から1つのCLAUDE.mdを維持し、Junieがそれを読み込むと想定する。 JunieのページではAGENTS.mdが指定されています。チームが2つのフォーマット間を移行している場合は、CLAUDE.mdからAGENTS.mdへの移行で注意すべき点を確認してください。
すべてのルールをAlwaysに設定する。 Alwaysルールは「すべてのチャットセッションに自動的に適用」されるため、短いリストであれば問題ありませんが、長いリストになるとコストが高くなります。トリガーモードを持つ他のツールも同様のトレードオフに直面しています。これは、すべてのWindsurfルールにトリガーモードを選択するで示されている通りです。
チャットがルールを認識したため、エージェントもルールを認識したと想定する。 モードが異なれば、ソースも異なります。唯一信頼できる確認方法は、実際に確認することです。
解決策:AGENTS.mdを共有ソースにし、各モードが読み込むものをそれぞれに提供する
目標は、チャット専用の微調整を本当に必要な場所に残しつつ、すべてのモードが従うチーム共通の規約を1つにまとめることです。
ステップ 1:現在プロジェクトで各モードが何を読み込んでいるかをマッピングする
プロジェクトを開き、次の3つの項目をリストアップします。
ルールフォルダー:.aiassistant/rules内のすべてのファイルとそのタイプ。どれがAlwaysで、どれがファイルパターンに依存し、どれが手動またはモデル判断で、どれがOffになっているかをメモします。
ルートのAGENTS.md:存在するかどうか、および何をカバーしているか。JetBrainsのエージェント指示ページでは、一般的なファイルにはプロジェクトのコンテキスト、開発ルール、リポジトリの規約、一般的なタスク、制限事項、および完了の定義(Definition of Done)が含まれるとされています。
ルートのCLAUDE.md:存在するかどうか、そしてAGENTS.mdと同じ内容が書かれているか、あるいは乖離してしまっているか。
その後、比較します。1つの場所にしか存在しないものは、一部のモードが受け取っていない可能性のある指示です。2つの場所で異なる表現で書かれているものは、将来的に競合を引き起こす原因になります。
ステップ 2:チームの規約をAGENTS.mdに配置し、Claude Agent用にそれらをミラーリングし、チャット専用のガイダンスはルールに残す
ビルドおよびテストコマンド、アーキテクチャの境界、命名規則、触れてはいけないもの、および「完了」の定義など、すべてのモードが従うべき規約をルートのAGENTS.mdに移動します。これは、JetBrainsが「ツールや環境間でガイダンスを共有する」ために推奨しているファイルであり、リポジトリとともに移動するため、チームメンバーや他のエージェントもこれを利用できます。
チーム内にClaude Agentを使用している人がいる場合は、CLAUDE.mdにも同じ規約を適用します。一方のファイルを信頼できる唯一の情報源(Source of Truth)として選択し、もう一方のファイルの更新を同じ変更の一部として行います。各ファイルの先頭に、どちらが標準(Canonical)であるかを示す短いメモを残しておくと、後で混乱するのを防ぐことができます。
次に、ルールフォルダーを、回答のフォーマット方法、好ましい説明方法、会話の中でのみ意味をなすリマインダーなど、真にチャット固有のものだけに整理します。残った各ルールについて、意図的にタイプを選択します。すべてのチャットに適用される少数のルールにはAlwaysを使用します。*.ktにスコープされたルールなど、言語やフォルダー固有のガイダンスにはファイルパターンを使用します。より広範なルールにはモデル判断を使用し、それらが適用されるタイミングを説明する明確な指示を記述します。
ルールが現在AGENTS.mdにあるものと重複している場合は、ルールフォルダーから重複を削除するか、ポインター(参照)に縮小します。同じ規約のコピーが2つあると、最終的に不一致が生じることになります。
ステップ 3:1つのモードだけでなく、各モードで検証する
チャットモードには組み込みの確認機能があります。JetBrainsは次のように説明しています。「ルールが適用されたかどうかを確認するには、AI Assistantの応答の最初にある添付ファイルのリストを展開します。」特定のルールをトリガーするはずの質問を投げかけ、確認してください。
エージェントについては、直接尋ねてみましょう。Junieで短いタスクを開始し、開始する前に従っているプロジェクトの規約をリストアップするように依頼します。Claude Agentでも同じことを行います。どちらかが規約を見落としている場合、そのエージェントが読み込んでいるファイルにその規約が欠けています。
最後に、Chat、Junie、Claude Agentで同じ小さなリクエストを実行し、比較します。チャットモードは「応答と提案を提供しますが、プロジェクトに変更を自動的に適用することはない」のに対し、エージェントは「プロジェクト内で複数ステップのアクションを実行し、複数のファイルを変更し、実行中に進捗を報告できる」ため、回答のスタイルは異なります。しかし、従う規約は一致しているはずです。
その際、.aiignoreも確認してください。JetBrainsは「Junieは既存の.aiignoreファイルを尊重するため、プロジェクトで設定されている場合、明示的に許可しない限り、そこにリストされているファイルやディレクトリを処理しません」と述べています。除外すべきものが除外されており、エージェントが必要とするものが除外されていないことを確認してください。
MemoryLakeでの設定方法
3つのファイルを整合させることで、1つのリポジトリに属する規約はカバーできます。しかし、複数のプロジェクトにまたがる決定、規約の背景にある理由、チームが苦労して学んだ教訓、JetBrains以外のツールでも必要となる同様の背景など、それよりも大きなコンテキストが存在します。MemoryLakeは、チームが使用するすべてのアシスタントがそこから開始できるように、そのレイヤーを保持する場所です。
エントリーは、ご自身の言葉で直接記述します。.aiassistant/rulesフォルダー、指示ファイル、またはベンダーのストアから何かが読み取られたり、そこに書き込まれたり、削除されたりすることはありません。
ステップ 1:APIキーを作成する
サインインし、ダッシュボードからキーを生成します。このキーにより、エージェントが実行されているIDEやモードに関係なく、記述したエントリーを読み取ることができるようになります。

ステップ 2:最初のメモリをアップロードする
ステップ1で明らかになった、単一のリポジトリファイルに保持すべきではないもの(プロジェクト横断的な決定や規約の背後にある理由など)から始めましょう。1つのエントリーにつき1つの決定と、その理由を添付します。

ステップ 3:AIとエージェントを接続する
チームが使用しているアシスタントやコーディングエージェントを接続します。これにより、AGENTS.mdやルールフォルダーを読み込まないツールも含め、同じ背景情報がAGENTS.mdと並んで利用可能になります。

実務における変化
最初の違いは、モードを切り替えてもルールが変わらなくなることです。規約がAGENTS.mdとCLAUDE.mdに配置され、ルールフォルダーにはチャット固有のガイダンスのみが保持されるようになると、ChatからJunie、そしてClaude Agentへと移行しても、同じ基準が適用され続けます。
2つ目は、リポジトリが信頼できる唯一の情報源になることです。指示ファイルはコードとともに移動するため、新しいチームメンバー、別のIDE、または別のエージェントも同じ規約を引き継ぐことができます。これは、CLAUDE.mdが存在しない場合にClaude CodeがAGENTS.mdを読み込む背景にあるのと同じ原則です。共有ファイルは、ツール固有の設定よりも優れています。
3つ目は、「エージェントがルールを無視した」原因を診断できるようになることです。どのモードがどのファイルを読み込むかのマップがあれば、指示が欠けていたのか、古かったのか、あるいは単にロードされていなかったのかを判断できます。この問題のより広範なバージョンについては、なぜAIエージェントは作成した指示ファイルを無視するのかで説明しています。
4つ目は、目に見えない競合が減ることです。2つのファイルに規約のコピーが2つあると、内容が乖離していきます。1つの標準ファイルを作成し、もう一方をそれにミラーリングさせることで、不一致を可視化できます。
JetBrains AI Assistant指示のベストプラクティス
プロジェクトルールはチャットの設定として扱う。 JetBrainsは、これらが「AI Assistantのチャットモードにのみ適用される」と述べています。
チームの規約はルートのAGENTS.mdに保持する。 Junieはこれを読み込み、リポジトリとともに移動します。
誰かがClaude Agentを使用している場合は、CLAUDE.mdに規約をミラーリングする。 Claude AgentはプロジェクトのルートからCLAUDE.mdを読み込みます。
1つのファイルを標準(Canonical)として指定する。 同じ変更の中でミラーファイルを更新します。
ルールのタイプを意図的に選択する。 Alwaysルールは最小限に抑え、残りはファイルパターンとモデル判断を使用します。
チャットで添付ファイルリストを確認する。 応答にどのルールが適用されたかが表示されます。
エージェントに規約を述べるよう求める。 これは、エージェントが実際に何を読み込んだかを確認する最も簡単な方法です。他のツールでも同様の確認方法が提供されています。たとえば、どのTabnineガイドラインが有効であるかを識別する方法があり、同様の規律によってCursorがプロジェクトルールを忘れるのを防ぐことができます。
結論
JetBrains AI Assistantは、各モードがどこから指示を取得するかを明確にしています。チャットモードは.aiassistant/rulesからプロジェクトルールを適用します。JunieはルートのAGENTS.mdを読み込みます。Claude AgentはルートのCLAUDE.mdを読み込みます。ドキュメントには、役割分担の方法さえ記載されています。指示ファイルは「ツールや環境間でガイダンスを共有するため」であり、プロジェクトルールは「AI Assistant内の動作をカスタマイズするため」です。
リスクは、1つのドロップダウンの裏でこれら3つのソースが乖離してしまうことです。各モードが何を読み込むかをマッピングし、チームの規約をAGENTS.mdに配置してClaude Agent用にミラーリングし、チャット固有のガイダンスは意図的なタイプを設定してルールに残し、すべてのモードで検証を行ってください。
1つのリポジトリよりも大きなコンテキストは、すべてのツールがアクセスできるレイヤーに保持しましょう。そうすれば、チャットとエージェントを切り替えることが、異なるルールセットを切り替えることを意味しなくなります。