design-a2a-agent-card
A2Aエージェント・カード(.well-known/agent.json)マニフェストを設計します。エージェントの機能、スキル、認証要件、対応するコンテンツタイプを記述できます。他のA2A準拠エージェントから検出可能である必要があるエージェントの構築時、マルチエージェントオーケストレーション機能の公開、既存エージェントのA2Aプロトコルへの移行、実装前のエージェント向け公開契約の定義、またはエージェント・カードを使用するエージェント・レジストリとの統合の際に使用します。
description の原文を見る
Design an A2A Agent Card (.well-known/agent.json) manifest describing agent capabilities, skills, authentication requirements, and supported content types. Use when building an agent that must be discoverable by other A2A-compliant agents, exposing capabilities for multi-agent orchestration, migrating an existing agent to the A2A protocol, defining the public contract for an agent before implementation, or integrating with agent registries that consume Agent Cards.
SKILL.md 本文
A2A Agent Card の設計
エージェントのアイデンティティ、スキル、認証要件、および他のエージェントによる発見を可能にする機能を宣言する、標準準拠の A2A Agent Card を作成します。
適用場面
- 他の A2A 準拠エージェントから発見可能にする必要があるエージェントを構築する場合
- マルチエージェント オーケストレーション用にエージェントの機能を公開する場合
- 既存のエージェントを A2A (Agent-to-Agent) プロトコルに移行する場合
- 実装前にエージェントの公開契約を定義する場合
- Agent Card を利用するエージェント レジストリまたはディレクトリと統合する場合
入力
- 必須: エージェントの名前と説明
- 必須: エージェントが実行できるスキルのリスト (名前、説明、入出力スキーマ)
- 必須: エージェントをホストするベース URL
- オプション: 認証方法 (
none、oauth2、oidc、api-key) - オプション:
text/plain以外のサポート対象コンテンツタイプ (例:image/png、application/json) - オプション: 機能フラグ (ストリーミング、プッシュ通知、状態遷移履歴)
- オプション: プロバイダー組織の名前と URL
手順
ステップ 1: エージェントのアイデンティティと説明を定義する
1.1. エージェント アイデンティティ フィールドを選択します:
{
"name": "data-analysis-agent",
"description": "Performs statistical analysis, data visualization, and report generation on tabular datasets.",
"url": "https://agent.example.com",
"provider": {
"organization": "Example Corp",
"url": "https://example.com"
},
"version": "1.0.0"
}
1.2. 以下の内容に答える明確で実行可能な説明を記述します:
- このエージェントはどのドメインをカバーしていますか?
- どのような種類のタスクを処理できますか?
- その制限は何ですか?
1.3. Agent Card を /.well-known/agent.json で提供する標準的な URL を設定します。
予想される結果: 名前、説明、URL、プロバイダー、バージョンを含む完全なアイデンティティ ブロック。
失敗処理: エージェントが複数のドメインにサービスを提供する場合、1 つのエージェントで複数のスキルを持つか、複数のエージェントで焦点を絞ったスコープを持つかを検討します。A2A は明確な境界を持つ焦点を絞ったエージェントを推奨します。
ステップ 2: 入出力スキーマを含むスキルを列挙する
2.1. エージェントが実行できる各スキルを定義します:
{
"skills": [
{
"id": "analyze-dataset",
"name": "Analyze Dataset",
"description": "Run descriptive statistics, correlation analysis, or hypothesis tests on a CSV dataset.",
"tags": ["statistics", "data-analysis", "csv"],
"examples": [
"Analyze the correlation between columns A and B in my dataset",
"Run a t-test comparing group 1 and group 2"
],
"inputModes": ["text/plain", "application/json"],
"outputModes": ["text/plain", "application/json", "image/png"]
},
{
"id": "generate-chart",
"name": "Generate Chart",
"description": "Create bar, line, scatter, or histogram charts from tabular data.",
"tags": ["visualization", "charts"],
"examples": [
"Create a scatter plot of height vs weight",
"Generate a histogram of the age column"
],
"inputModes": ["text/plain", "application/json"],
"outputModes": ["image/png", "image/svg+xml"]
}
]
}
2.2. 各スキルについて、以下を提供します:
- id: 一意の識別子 (ケバブケース)
- name: 人間が読みやすい表示名
- description: スキルが何を実行するかの説明 (1 〜 2 文)
- tags: 発見用の検索可能なキーワード
- examples: このスキルをトリガーする自然言語タスクの例
- inputModes: スキルが受け入れる MIME タイプ
- outputModes: スキルが生成できる MIME タイプ
2.3. スキルの境界が明確で重複していないことを確認します。各タスクは正確に 1 つのスキルにマップする必要があります。
予想される結果: id、name、description、tags、examples、I/O モードを持つ各エントリを含むスキル配列。
失敗処理: スキルが大幅に重複している場合は、より多くの例を含む 1 つのより広いスキルにマージします。スキルが広すぎる場合は、焦点を絞ったサブスキルに分割します。
ステップ 3: 認証を構成する
3.1. デプロイメント コンテキストに基づいて認証スキームを定義します:
認証なし (ローカル/信頼されたネットワーク):
{
"authentication": {
"schemes": []
}
}
OAuth 2.0 (本番環境では推奨):
{
"authentication": {
"schemes": ["oauth2"],
"credentials": {
"oauth2": {
"authorizationUrl": "https://auth.example.com/authorize",
"tokenUrl": "https://auth.example.com/token",
"scopes": {
"agent:invoke": "Invoke agent skills",
"agent:read": "Read task status"
}
}
}
}
}
API キー (シンプルな共有秘密):
{
"authentication": {
"schemes": ["apiKey"],
"credentials": {
"apiKey": {
"headerName": "X-API-Key"
}
}
}
}
3.2. デプロイメント環境に最小限の実行可能な認証を選択します:
- ローカル開発:
none - 内部サービス:
apiKey - 公開されているエージェント:
oauth2またはoidc
3.3. Agent Card のプロバイダー セクションまたは外部ドキュメントでトークン/キーのプロビジョニング プロセスを文書化します。
予想される結果: デプロイメント セキュリティ要件に一致する認証ブロック。
失敗処理: OAuth 2.0 インフラストラクチャが利用できない場合は、API キー認証で開始して移行を計画します。none 認証で公開エージェントをデプロイしないでください。
ステップ 4: 機能を指定する
4.1. エージェントがサポートするプロトコル機能を宣言します:
{
"capabilities": {
"streaming": true,
"pushNotifications": false,
"stateTransitionHistory": true
}
}
4.2. 実装準備状況に基づいて各機能フラグを設定します:
- streaming: エージェントが
tasks/sendSubscribeを介した SSE ストリーミングをサポートしている場合はtrue。長時間実行タスクのリアルタイム進捗更新を有効にします。 - pushNotifications: タスク状態の変更時にエージェントが Webhook コールバックを送信できる場合は
true。エージェントが Webhook URL を保存してコールバックする必要があります。 - stateTransitionHistory: エージェントがタスク状態遷移 (送信済み、実行中、完了など) の完全な履歴を保持している場合は
true。監査証跡に役立ちます。
4.3. 実装が完全にサポートしている場合のみ、機能を true に設定します。サポートされていない機能を宣言すると相互運用性が破損します。
予想される結果: 実装と一致するブール値フラグを含む機能オブジェクト。
失敗処理: 機能が実装されるかどうか不確定な場合は、false に設定します。機能は将来のバージョンで追加できます。機能を削除することは重大な変更です。
ステップ 5: Agent Card の検証と公開
5.1. 完全な Agent Card を組み立てます:
{
"name": "data-analysis-agent",
"description": "Performs statistical analysis and visualization on tabular datasets.",
"url": "https://agent.example.com",
"version": "1.0.0",
"provider": {
"organization": "Example Corp",
"url": "https://example.com"
},
"authentication": {
"schemes": ["oauth2"],
"credentials": { ... }
},
"capabilities": {
"streaming": true,
"pushNotifications": false,
"stateTransitionHistory": true
},
"skills": [ ... ],
"defaultInputModes": ["text/plain"],
"defaultOutputModes": ["text/plain"]
}
5.2. Agent Card を検証します:
- JSON として解析し、構文エラーがないことを確認します
- すべての必須フィールド (name、description、url、skills) が存在することを確認します
- 各スキルに id、name、description、および少なくとも 1 つの入出力モードがあることを確認します
- URL に到達可能で、
/.well-known/agent.jsonで card を提供していることを確認します
5.3. Agent Card を公開します:
https://<agent-url>/.well-known/agent.jsonで提供しますContent-Type: application/jsonを設定します- クロスオリジン発見が必要な場合は CORS ヘッダーを有効にします
- 関連するエージェント ディレクトリまたはレジストリに登録します
5.4. カードをフェッチして発見をテストします:
curl -s https://agent.example.com/.well-known/agent.json | python3 -m json.tool
予想される結果: 既知の URL で提供される有効な JSON Agent Card。すべての A2A クライアントで解析可能です。
失敗処理: JSON 検証に失敗した場合は、JSON リンターを使用して構文エラーを特定します。URL に到達不可の場合は、DNS、SSL 証明書、および Web サーバーの構成を確認します。CORS が必要な場合は、Access-Control-Allow-Origin ヘッダーを追加します。
検証チェックリスト
- Agent Card は構文エラーのない有効な JSON です
- すべての必須フィールドが存在します: name、description、url、skills
- 各スキルに id、name、description、inputModes、outputModes があります
- 認証スキームはデプロイメント セキュリティ要件と一致します
- 機能フラグは実装の状態を正確に反映します
- Agent Card は
/.well-known/agent.jsonで正しい Content-Type を使用して提供されます - A2A クライアントが正常に card をフェッチして解析できます
- スキルの例は現実的で正しいスキルをトリガーします
よくある質問
- 機能の過度な約束: 実装なしで
streaming: trueまたはpushNotifications: trueを設定すると、それらの機能が使用されるときにクライアント障害が発生します。慎重に設定してください。 - 不明確なスキルの説明: 「データ処理を実行」のような説明は正確なスキル マッチングを妨げます。入力、出力、ドメインについて具体的にしてください。
- CORS ヘッダーがない: ブラウザベースの A2A クライアントは、適切な CORS 設定なしに Agent Card をフェッチできません。
- スキルの重複: 2 つのスキルが同じタスクを処理できる場合、クライアント エージェントはどれを呼び出すかを判断できません。明確な境界を確保してください。
- デフォルト モードの忘却:
defaultInputModesとdefaultOutputModesを省略すると、クライアントは何のコンテンツ タイプを送信するかわかりません。 - バージョンの停滞: スキルまたは機能が変わるときは Agent Card バージョンを更新します。クライアントが古いバージョンをキャッシュする可能性があります。
- 実装前の公開: Agent Card は契約です。実装されていないスキルを公開するとランタイム障害につながります。
関連スキル
implement-a2a-server- Agent Card の背後にあるサーバーを実装するtest-a2a-interop- Agent Card 準拠性と相互運用性を検証するbuild-custom-mcp-server- A2A の代替/補完としての MCP サーバーconfigure-mcp-server- A2A セットアップに適用可能な MCP 設定パターン
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- AcidicSoil
- ライセンス
- MIT
- 最終更新
- 2026/5/12
Source: https://github.com/AcidicSoil/lms-llmsTxt / ライセンス: MIT
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。