第8章 §3

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(草稿完成後にレビューへ引き継ぐ)
AGENTS.mdはAIツールに向けた指示文ではなく、人間が定義した複数の役割の登録簿である。Claude系はこの登録簿を読み込み、ツール別の定義ファイル(.claude/agents/*.md)に「翻訳」し、Antigravity系は登録簿そのものをオーケストレーションが直接読み取り解釈する。

ツール別実装マッピング

AGENTS.mdはツール中立な共通仕様である。しかし、実際にサブエージェントを「実装」する方式は、Claude系とAntigravity系で根本的に異なる。

階層Claude Desktop App / Claude CodeAntigravity Desktop / CLI
AGENTS.mdの読み込み メインセッションがAGENTS.mdを読み込み、エージェント一覧を把握する オーケストレーターがAGENTS.mdを読み込み、動的にサブエージェントを生成する
サブエージェント定義 .claude/agents/{name}.mdファイルにYAML frontmatter(namedescriptiontoolsmodel)+システムプロンプト 定義ファイルなし — オーケストレーターが実行時点で役割・ツール範囲を自律的に判断する
権限の実装 .claude/agents/*.mdtoolsフィールドにRead, Grepなど必要最小限のツールのみを列挙 オーケストレーターがAGENTS.mdの権限フィールドを解釈し、ツールアクセスを自ら制限する
handoff handoff_toは参考ヒント。メインセッションがAgentツールを順次呼び出して関係を調整する オーケストレーターがhandoff_toを読み取り、自動で順次パイプラインを構成する
詳細参照 第4章 §1-A Claude中心 第4章 §1-B Antigravity中心
AGENTS.md → ツール別実装の流れ
AGENTS.md (共通仕様) Claude Desktop App / Claude Code .claude/agents/*.md (事前定義) YAML frontmatter + システムプロンプト Antigravity Desktop / CLI 定義ファイルなし(動的生成) オーケストレーターがリアルタイムで解釈

作成ガイド

1. セクションから始める

## Agent: {名前}でエージェント項目を開始する。名前は英語の小文字とし、複数の単語は-で連結する(code-reviewerapi-tester)。この名前はClaude系ではsubagent_typeの値として使用される。

2. 役割を簡潔に

役割は「何をするか」を1〜2文で明確に記述する。他のエージェントとの重複を避け、各エージェントが独立して責任を持つ領域が明確になるようにする。

3. 最小権限で権限を設定する

権限フィールドはファイルアクセスの範囲を制限する。この原則を守らないと、サブエージェントが誤って重要なファイルを上書きしてしまう可能性がある。Claude系では、この権限は.claude/agents/*.mdtoolsフィールド(Read, GrepWriteなど)に変換される。

reviewerはそもそも書き込みができないため、ミスは発生しない。 — 第4章 §2-A 最小権限の原則

4. handoffで前後関係を宣言する

handoff_toは「このエージェントが作業を終えたら結果をどこに引き渡すか」を宣言する。これは命令ではなくヒントである。実際に順次パイプラインを構成するのは、メインセッション(オーケストレーター)の役目である。

## Agent: draft-writer
役割: 与えられたテーマで草稿を作成する。
handoff_to: reviewer(草稿完成後にレビューへ引き継ぐ)

## Agent: reviewer
役割: テキストの誤字脱字と論理をレビューする。
handoff_to: editor(レビュー完了後に最終編集へ引き継ぐ)

## Agent: editor
役割: フィードバックを反映して最終文書を完成させる。
handoff_toが宣言されていないエージェント(上記例の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のステップとして統合できる。

FAQ: bun run agent:verify実行時に「AGENTS.mdの表と実際のagents/*.mdファイル一覧が食い違っている」というエラーが出た場合、AGENTS.mdのエージェント名と.claude/agents/フォルダのファイル名を照合し、不足している項目を追加するか不要なファイルを削除する。→ FAQ