AGENTS.md 詳解
AGENTS.mdの仕様フォーマット、ツール別の実装方式、作成原則、検証手順を整理する。第5章で概念的に紹介したAGENTS.mdを実務の観点から詳しく掘り下げる。
標準仕様: agents.md · 実習例: 第4章 §2-A / 第4章 §2-B
- エージェント項目のフィールド構造と意味
- AGENTS.md(共通仕様)がClaude系とAntigravity系でそれぞれどのように「実装」されるか
- 最小権限の原則とhandoff宣言
- 検証ツール(
agent:verify)とライフサイクルの連携
仕様フォーマット
AGENTS.mdの各エージェント項目は、## Agent: {名前}で始まるMarkdownセクションである。このセクション内に役割・入力・出力・権限・handoffなどのフィールドを自由形式で記述する。標準仕様は厳密なスキーマを強制せず、ツールが共通して認識する慣例(convention)に依存する。
| フィールド | 意味 | 必須かどうか | 第4章実習例 |
|---|---|---|---|
## Agent: {名前} |
エージェント識別子。Claude系ではsubagent_typeの値と一致して初めて呼び出し可能 |
必須 | ## Agent: reviewer |
役割 |
このエージェントが何をするか | 必須 | 「テキストファイルの誤字脱字、論理的な欠陥、改善点をレビューする」 |
入力 |
どのような入力を受け取るか | 推奨 | 「レビュー対象のテキストファイルパス」 |
出力 |
どのような出力を出すか | 推奨 | 「誤字脱字・論理的欠陥・改善点のリスト」 |
権限 |
ファイルアクセスの範囲。最小権限の原則 — 必要なものだけを許可する | 推奨 | 「読み取り専用 — ファイルを直接修正しない」 |
handoff_to |
完了後に結果を引き渡す他のエージェント。オーケストレーターが参照する宣言的ヒント | 任意 | handoff_to: reviewer |
完成例
第4章の実習(G-1、D-1)で作成した2つのエージェントを含むAGENTS.md全体の姿である。
## Agent: reviewer 役割: テキストファイルの誤字脱字、論理的な欠陥、改善点をレビューする。 入力: レビュー対象のテキストファイルパス 出力: 誤字脱字・論理的欠陥・改善点のリスト 権限: 読み取り専用 — ファイルを直接修正しない。 ## Agent: writer 役割: 与えられたテーマで3〜5文程度の短い草稿を作成する。 入力: テーマ、保存先のファイルパス 出力: 草稿テキストファイル 権限: 書き込み許可 — 指定されたファイルにのみ保存する。 handoff_to: reviewer(草稿完成後にレビューへ引き継ぐ)
.claude/agents/*.md)に「翻訳」し、Antigravity系は登録簿そのものをオーケストレーションが直接読み取り解釈する。ツール別実装マッピング
AGENTS.mdはツール中立な共通仕様である。しかし、実際にサブエージェントを「実装」する方式は、Claude系とAntigravity系で根本的に異なる。
| 階層 | Claude Desktop App / Claude Code | Antigravity Desktop / CLI |
|---|---|---|
| AGENTS.mdの読み込み | メインセッションがAGENTS.mdを読み込み、エージェント一覧を把握する |
オーケストレーターがAGENTS.mdを読み込み、動的にサブエージェントを生成する |
| サブエージェント定義 | .claude/agents/{name}.mdファイルにYAML frontmatter(name、description、tools、model)+システムプロンプト |
定義ファイルなし — オーケストレーターが実行時点で役割・ツール範囲を自律的に判断する |
| 権限の実装 | .claude/agents/*.mdのtoolsフィールドにRead, Grepなど必要最小限のツールのみを列挙 |
オーケストレーターがAGENTS.mdの権限フィールドを解釈し、ツールアクセスを自ら制限する |
| handoff | handoff_toは参考ヒント。メインセッションがAgentツールを順次呼び出して関係を調整する |
オーケストレーターがhandoff_toを読み取り、自動で順次パイプラインを構成する |
| 詳細参照 | 第4章 §1-A Claude中心 | 第4章 §1-B Antigravity中心 |
作成ガイド
1. セクションから始める
## Agent: {名前}でエージェント項目を開始する。名前は英語の小文字とし、複数の単語は-で連結する(code-reviewer、api-tester)。この名前はClaude系ではsubagent_typeの値として使用される。
2. 役割を簡潔に
役割は「何をするか」を1〜2文で明確に記述する。他のエージェントとの重複を避け、各エージェントが独立して責任を持つ領域が明確になるようにする。
3. 最小権限で権限を設定する
権限フィールドはファイルアクセスの範囲を制限する。この原則を守らないと、サブエージェントが誤って重要なファイルを上書きしてしまう可能性がある。Claude系では、この権限は.claude/agents/*.mdのtoolsフィールド(Read, Grep、Writeなど)に変換される。
4. handoffで前後関係を宣言する
handoff_toは「このエージェントが作業を終えたら結果をどこに引き渡すか」を宣言する。これは命令ではなくヒントである。実際に順次パイプラインを構成するのは、メインセッション(オーケストレーター)の役目である。
## Agent: draft-writer 役割: 与えられたテーマで草稿を作成する。 handoff_to: reviewer(草稿完成後にレビューへ引き継ぐ) ## Agent: reviewer 役割: テキストの誤字脱字と論理をレビューする。 handoff_to: editor(レビュー完了後に最終編集へ引き継ぐ) ## Agent: editor 役割: フィードバックを反映して最終文書を完成させる。
editor)は、パイプラインの終点である。オーケストレーターはそのエージェントの結果を最終ユーザーに返す。5. 検証
作成が完了したら、bun run agent:verifyで構造を検証する。このスクリプトは、エージェントfrontmatterの完全性、必須セクションの存在、AGENTS.mdロスターとの整合性を確認する。
検証とライフサイクル
AGENTS.mdにエージェントを登録することは、ライフサイクルのCreate段階に該当する(第8章§2参照)。登録されたエージェントは以下の段階を経る。
| ライフサイクル段階 | AGENTS.mdでの動作 | 検証 |
|---|---|---|
| Create | ## Agent: {名前}セクションをAGENTS.mdに追加 |
bun run agent:verify — 構造の完全性 |
| Verify | 登録内容がワークスペースの他のファイル(CONSTITUTION.md、agents/*.md)と整合しているかを確認 | bun run agent:verify — 整合性検証 |
| Operate | 実際のセッションでオーケストレーターがロスターを読み込みエージェントを呼び出す | セッションログでエージェント呼び出しを追跡 |
| Improve | 役割定義、権限、handoff関係を修正 | 修正後に再度agent:verify |
| Deprecate | AGENTS.mdから該当エージェント項目を削除、またはコメントアウト | agent:verify — 参照整合性(他のエージェントのhandoff_toがdeprecatedを指していないか) |
エージェントを新規作成または変更するたびにagent:verifyを実行することを習慣化すれば、「ロスターにはあるが実際の定義ファイルが存在しない」や「handoff_toが指すエージェントが削除されている」といった不整合を早期に発見できる。
この検証フローの自動化は、第8章§1(デプロイとSSOT)で扱うCI/CDパイプラインにvalidate-templates.tsのステップとして統合できる。
bun run agent:verify実行時に「AGENTS.mdの表と実際のagents/*.mdファイル一覧が食い違っている」というエラーが出た場合、AGENTS.mdのエージェント名と.claude/agents/フォルダのファイル名を照合し、不足している項目を追加するか不要なファイルを削除する。→ FAQ