本文へ移動
Signalcraft
English

← Signalcraft一覧へ戻る

AGENTS.md・Skills・MCPの役割を分ける

AGENTS.md・Skills・MCPの役割を分ける

AIエージェントの設定を増やしていくと、「このルールは毎回必要か」「この手順はSkillにすべきか」「外部サービスへの接続はどこで宣言するか」が分かりにくくなります。全部をAGENTS.mdへ書けば、今度は毎回読み込むコンテキストが大きくなります。

そこで、公式資料とOpenCodeの設定を並べて、情報の置き場所を責務で分けた。結論は、プロジェクトの常時ルールをAGENTS.md、条件付きの手順をSkill、外部システムへの入口をMCPに置く構成です。個人設定はチームの契約へ混ぜません。

まず4つの責務を表にする

置き場所 いつ効くか 置くもの 置かないもの
AGENTS.md そのプロジェクトで常に 構成、コマンド、禁止事項、完了条件 長い専門手順、秘密情報
Skill 条件に合う依頼のとき 入力、手順、検証、テンプレート 全作業に共通する短い規約
MCP 外部データや操作が必要なとき GitHub、DB、ブラウザー、社内APIへの接続 コーディング規約
個人設定 自分の環境だけ 口調、表示、既定値 チーム必須のルール

Codexの資料は、AGENTS.mdSkillsMCPを別々の拡張点として説明しています。OpenCodeもRulesSkillsMCP serversを用意しています。ツールごとに探索するファイルと設定形式が異なります。

この表が便利なのは、ファイル名ではなく「いつ必要か」で判断できるからです。

AGENTS.mdは短いプロジェクト契約にする

エージェントが毎回知らないと危険な情報だけを置きます。

  • ディレクトリごとの責務
  • Node.jsやパッケージマネージャーのバージョン
  • lint、test、buildのコマンド
  • 生成物と直接編集してはいけないファイル
  • 破壊的操作や外部公開の承認境界
  • 変更後の検証条件

詳細な背景や長い手順は別ドキュメントへ移し、AGENTS.mdからリンクします。入口が短ければ、重要な制約が長い説明に埋もれにくいです。

リポジトリ内のAGENTS.mdはチームで再現する方針なのでGit管理しやすいです。一方、ホームディレクトリの設定は個人の既定値であり、チームの必須ルールを代わりに置く場所ではありません。

Skillは発動条件付きの手順にする

Skillには、全タスクでは不要だが、同じ種類の作業で繰り返す知識をまとめます。本文だけでなく、テンプレート、検証スクリプト、参考資料も含められます。

最低限、次の順序が分かるように書きます。

  1. いつ使い、いつ使わないか
  2. 何を入力し、何を成果物にするか
  3. どの順番で作業するか
  4. 途中で止める条件と失敗時の戻り方
  5. 完了前に何を検証するか

たとえば「PDFを作成してリンク切れを検査する」はSkill向きです。「このリポジトリではpnpmを使う」は、毎回必要な短い契約なのでAGENTS.md向きになります。

MCPは権限を持つ外部接続である

MCPは、エージェントが外部のデータや操作へ到達する入口です。GitHubのIssueを読む、DBを検索する、ブラウザーを操作する、といった能力を扱います。ローカルの手順書とは性質が違います。

ここで確認したいのは、接続できるかだけではありません。

  • 読み取りと書き込みを分けているか
  • 削除、公開、送信、課金に承認を要求するか
  • 認証情報を設定ファイルやSkill本文へ書いていないか
  • 失敗時に秘密や個人情報をログへ出さないか

「MCPで操作できる」と「エージェントが自由に操作してよい」は別の判断です。最小権限と明示的な承認境界を先に決めます。

@fileを共通仕様だと思わない

@fileのような記法は、特定のハーネスがファイルをコンテキストへ追加するためのUIであることが多いです。AGENTS.md、Skill、MCPの共通規格として永続的な依存関係にしない方がよいです。

長期的に参照する情報は実ファイルとして保存し、各ツールの公式形式から相対パスで案内します。会話中だけ解決する添付記法へ、チームの運用を預けません。

共通化するものと分けるもの

複数のハーネスで共有しやすいのは、命名規約、コーディング規約、代表的な検証コマンド、公開可能な文章テンプレートです。

反対に、次はツールごとに分ける方が安全です。

  • 認証情報とMCPの実行コマンド
  • 製品固有の権限やサンドボックス設定
  • キャッシュとセッション履歴
  • Skillのインストール先と読み込み順

共通の原本から各ツール用の薄い設定を生成するなら、変換規則と生成先をスクリプトへ書き、差分をレビューできるようにします。暗黙のシンボリックリンクだけで全てを共有すると、片方の更新が別のハーネスへ予期せず伝わります。

判断の順番を固定する

新しい情報をどこへ置くか迷ったら、次の順で確認します。

  1. 全作業で必要か。必要ならAGENTS.md
  2. 特定の作業で繰り返すか。該当するならSkill
  3. 外部データや操作が必要か。該当するならMCP
  4. 自分だけの好みか。個人設定

1つのルールを複数箇所へコピーせず、原本を1つ決めてリンクします。この分離で、コンテキストの膨張、設定の矛盾、過剰な外部権限を同時に抑えられます。