design-a2a-agent-card
について
このスキルは、開発者がエージェントの能力、スキル、認証要件、およびサポートされるコンテンツタイプを定義するA2Aエージェントカード(agent.jsonマニフェスト)を作成するのに役立ちます。他のA2A準拠エージェントから発見可能である必要があるエージェントや、マルチエージェントオーケストレーションを構築する際に使用してください。実装前の公開契約の定義や、エージェントレジストリとの統合に不可欠です。
クイックインストール
Claude Code
推奨npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/design-a2a-agent-cardこのコマンドをClaude Codeにコピー&ペーストしてスキルをインストールします
ドキュメント
A2A-Agentenkarte entwerfen
Eine standardkonforme A2A-Agentenkarte erstellen, die Identitaet, Skills, Authentifizierungsanforderungen und Faehigkeiten eines Agenten fuer die Erkennung durch andere Agenten bewirbt.
Wann verwenden
- Einen Agenten erstellen, der von anderen A2A-konformen Agenten auffindbar sein muss
- Agentenfaehigkeiten fuer Multi-Agenten-Orchestrierung bereitstellen
- Einen bestehenden Agenten zum A2A (Agent-to-Agent)-Protokoll migrieren
- Den oeffentlichen Vertrag fuer einen Agenten vor der Implementierung definieren
- Mit Agentenregistern oder -verzeichnissen integrieren, die Agentenkarten konsumieren
Eingaben
- Erforderlich: Agentenname und -beschreibung
- Erforderlich: Liste der Skills, die der Agent ausfuehren kann (Name, Beschreibung, Ein-/Ausgabeschemata)
- Erforderlich: Basis-URL, unter der der Agent gehostet wird
- Optional: Authentifizierungsmethode (
none,oauth2,oidc,api-key) - Optional: Unterstuetzte Inhaltstypen ueber
text/plainhinaus (z.B.image/png,application/json) - Optional: Faehigkeits-Flags (Streaming, Push-Benachrichtigungen, Zustandsuebergangsverlauf)
- Optional: Anbieterorganisationsname und URL
Vorgehensweise
Schritt 1: Agentenidentitaet und -beschreibung definieren
1.1. Die Agentenidentitaetsfelder festlegen:
{
"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. Eine klare, handlungsorientierte Beschreibung verfassen, die beantwortet:
- Welche Domaenen deckt dieser Agent ab?
- Welche Arten von Aufgaben kann er bearbeiten?
- Was sind seine Einschraenkungen?
1.3. Die kanonische URL festlegen, unter der die Agentenkarte unter /.well-known/agent.json bereitgestellt wird.
Erwartet: Ein vollstaendiger Identitaetsblock mit Name, Beschreibung, URL, Anbieter und Version.
Bei Fehler: Wenn der Agent mehrere Domaenen bedient, abwaegen, ob es ein Agent mit vielen Skills oder mehrere Agenten mit fokussiertem Umfang sein sollte. A2A bevorzugt fokussierte Agenten mit klaren Grenzen.
Schritt 2: Skills mit Ein-/Ausgabeschemata auflisten
2.1. Jeden Skill definieren, den der Agent ausfuehren kann:
{
"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. Fuer jeden Skill bereitstellen:
- id: Eindeutiger Bezeichner (Kebab-Case)
- name: Menschenlesbarer Anzeigename
- description: Was der Skill tut, in ein bis zwei Saetzen
- tags: Durchsuchbare Schluesselwoerter fuer die Erkennung
- examples: Natuerlichsprachliche Aufgabenbeispiele, die diesen Skill ausloesen
- inputModes: MIME-Typen, die der Skill akzeptiert
- outputModes: MIME-Typen, die der Skill produzieren kann
2.3. Sicherstellen, dass Skill-Grenzen klar und nicht ueberlappend sind. Jede Aufgabe sollte genau einem Skill zugeordnet werden.
Erwartet: Ein Skills-Array, in dem jeder Eintrag id, name, description, tags, examples und I/O-Modi hat.
Bei Fehler: Wenn Skills sich erheblich ueberschneiden, zu einem einzigen breiteren Skill mit mehr Beispielen zusammenfuehren. Wenn ein Skill zu breit ist, in fokussierte Unter-Skills aufteilen.
Schritt 3: Authentifizierung konfigurieren
3.1. Das Authentifizierungsschema basierend auf dem Bereitstellungskontext definieren:
Keine Authentifizierung (lokal/vertrauenswuerdiges Netzwerk):
{
"authentication": {
"schemes": []
}
}
OAuth 2.0 (empfohlen fuer Produktion):
{
"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 Key (einfaches Shared-Secret):
{
"authentication": {
"schemes": ["apiKey"],
"credentials": {
"apiKey": {
"headerName": "X-API-Key"
}
}
}
}
3.2. Die minimal notwendige Authentifizierung fuer die Bereitstellungsumgebung waehlen:
- Lokale Entwicklung:
none - Interne Dienste:
apiKey - Oeffentlich zugaengliche Agenten:
oauth2oderoidc
3.3. Den Token-/Schluessel-Bereitstellungsprozess im Provider-Abschnitt der Agentenkarte oder in externer Dokumentation dokumentieren.
Erwartet: Ein Authentifizierungsblock, der den Sicherheitsanforderungen der Bereitstellung entspricht.
Bei Fehler: Wenn keine OAuth-2.0-Infrastruktur verfuegbar ist, mit API-Key-Authentifizierung beginnen und Migration planen. Niemals einen oeffentlichen Agenten mit none-Authentifizierung bereitstellen.
Schritt 4: Faehigkeiten angeben
4.1. Deklarieren, welche Protokollfunktionen der Agent unterstuetzt:
{
"capabilities": {
"streaming": true,
"pushNotifications": false,
"stateTransitionHistory": true
}
}
4.2. Jedes Faehigkeits-Flag basierend auf der Implementierungsbereitschaft setzen:
- streaming:
truewenn der Agent SSE-Streaming uebertasks/sendSubscribeunterstuetzt. Ermoeglicht Echtzeit-Fortschrittsaktualisierungen fuer langlebige Aufgaben. - pushNotifications:
truewenn der Agent Webhook-Rueckrufe senden kann, wenn sich der Aufgabenstatus aendert. Erfordert, dass der Agent Webhook-URLs speichert und zurueckruft. - stateTransitionHistory:
truewenn der Agent einen vollstaendigen Verlauf der Aufgabenzustandsuebergaenge fuehrt (submitted, working, completed, etc.). Nuetzlich fuer Audit-Trails.
4.3. Faehigkeiten nur auf true setzen, wenn die Implementierung sie vollstaendig unterstuetzt. Nicht unterstuetzte Faehigkeiten zu bewerben bricht die Interoperabilitaet.
Erwartet: Ein Capabilities-Objekt mit booleschen Flags, die der tatsaechlichen Implementierung entsprechen.
Bei Fehler: Wenn unsicher, ob eine Faehigkeit implementiert wird, auf false setzen. Faehigkeiten koennen in zukuenftigen Versionen hinzugefuegt werden. Eine Faehigkeit zu entfernen ist eine brechende Aenderung.
Schritt 5: Agentenkarte validieren und veroeffentlichen
5.1. Die vollstaendige Agentenkarte zusammenstellen:
{
"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. Die Agentenkarte validieren:
- Als JSON parsen und auf Syntaxfehler pruefen
- Verifizieren, dass alle erforderlichen Felder vorhanden sind (name, description, url, skills)
- Verifizieren, dass jeder Skill id, name, description und mindestens einen Ein-/Ausgabemodus hat
- Verifizieren, dass die URL erreichbar ist und die Karte unter
/.well-known/agent.jsonbereitstellt
5.3. Die Agentenkarte veroeffentlichen:
- Unter
https://<agent-url>/.well-known/agent.jsonbereitstellen Content-Type: application/jsonsetzen- CORS-Header aktivieren, wenn Cross-Origin-Erkennung benoetigt wird
- Bei relevanten Agentenverzeichnissen oder -registern registrieren
5.4. Erkennung durch Abrufen der Karte testen:
curl -s https://agent.example.com/.well-known/agent.json | python3 -m json.tool
Erwartet: Eine gueltige JSON-Agentenkarte, bereitgestellt unter der Well-Known-URL, parsebar von jedem A2A-Client.
Bei Fehler: Wenn die JSON-Validierung fehlschlaegt, einen JSON-Linter zur Identifizierung von Syntaxfehlern verwenden. Wenn die URL nicht erreichbar ist, DNS, SSL-Zertifikate und Webserver-Konfiguration pruefen. Wenn CORS benoetigt wird, Access-Control-Allow-Origin-Header hinzufuegen.
Validierung
- Agentenkarte ist gueltiges JSON ohne Syntaxfehler
- Alle erforderlichen Felder sind vorhanden: name, description, url, skills
- Jeder Skill hat id, name, description, inputModes und outputModes
- Authentifizierungsschema entspricht den Sicherheitsanforderungen der Bereitstellung
- Faehigkeits-Flags spiegeln den Implementierungsstatus genau wider
- Agentenkarte wird unter
/.well-known/agent.jsonmit korrektem Content-Type bereitgestellt - A2A-Clients koennen die Karte erfolgreich abrufen und parsen
- Beispiele in Skills sind realistisch und loesen den korrekten Skill aus
Haeufige Stolperfallen
- Faehigkeiten ueberversprechen:
streaming: trueoderpushNotifications: trueohne Implementierung zu setzen verursacht Client-Fehler bei Nutzung dieser Funktionen. Konservativ sein. - Vage Skill-Beschreibungen: Beschreibungen wie "macht Datensachen" verhindern genaues Skill-Matching. Spezifisch ueber Eingaben, Ausgaben und Domaenen sein.
- Fehlende CORS-Header: Browserbasierte A2A-Clients koennen die Agentenkarte ohne korrekte CORS-Konfiguration nicht abrufen.
- Skill-Ueberschneidung: Wenn zwei Skills dieselbe Aufgabe bearbeiten koennten, koennen Client-Agenten nicht bestimmen, welchen sie aufrufen sollen. Klare Grenzen sicherstellen.
- Standard-Modi vergessen: Wenn
defaultInputModesunddefaultOutputModesfehlen, wissen Clients moeglicherweise nicht, welche Inhaltstypen sie senden sollen. - Versionsstagnation: Die Agentenkarten-Version aktualisieren, wenn sich Skills oder Faehigkeiten aendern. Clients koennten alte Versionen zwischenspeichern.
- Vor der Implementierung veroeffentlichen: Die Agentenkarte ist ein Vertrag. Skills zu veroeffentlichen, die noch nicht implementiert sind, fuehrt zu Laufzeitfehlern.
Verwandte Skills
implement-a2a-server— Den Server hinter der Agentenkarte implementierentest-a2a-interop— Agentenkarten-Konformitaet und Interoperabilitaet validierenbuild-custom-mcp-server— MCP-Server als Alternative/Ergaenzung zu A2Aconfigure-mcp-server— MCP-Konfigurationsmuster, anwendbar auf A2A-Setup
GitHub リポジトリ
関連スキル
content-collections
メタこのスキルは、Content Collections(Markdown/MDXファイルを型安全なデータコレクションに変換するTypeScriptファーストのツール)の本番環境でテストされた設定を提供します。Zodバリデーションによる型安全性を実現し、ブログ、ドキュメントサイト、コンテンツ重視のVite + Reactアプリケーション構築時にご利用ください。Viteプラグインの設定、MDXコンパイルから、デプロイ最適化、スキーマバリデーションまで、すべてを網羅しています。
polymarket
メタこのスキルは、開発者がPolymarket予測市場プラットフォームを活用したアプリケーション構築を可能にします。API統合による取引や市場データの取得に加え、WebSocketを介したリアルタイムデータストリーミングにより、ライブ取引や市場活動を監視できます。取引戦略の実装や、ライブ市場更新を処理するツールの作成にご利用ください。
creating-opencode-plugins
メタこのスキルは、開発者がコマンド、ファイル、LSP操作など25種類以上のイベントタイプにフックするOpenCodeプラグインを作成することを支援します。JavaScript/TypeScriptモジュール向けに、プラグイン構造、イベントAPI仕様、および実装パターンを提供します。カスタムイベント駆動ロジックでOpenCode AIアシスタントのライフサイクルをインターセプト、監視、または拡張する必要がある場合にご利用ください。
sglang
メタSGLangは、高性能なLLMサービングフレームワークであり、RadixAttentionプレフィックスキャッシュを活用したJSON、正規表現、エージェントワークフロー向けの高速で構造化された生成を特長とします。特にプレフィックスが繰り返されるタスクにおいて、大幅に高速な推論を実現し、複雑な構造化出力やマルチターン対話に最適です。制約付きデコードが必要な場合や、広範なプレフィックス共有を伴うアプリケーションを構築する場合は、vLLMなどの代替案ではなくSGLangを選択してください。
