返回技能列表

design-a2a-agent-card

pjt222
更新于 Yesterday
3 次查看
17
2
17
在 GitHub 上查看
design

关于

This skill generates an A2A Agent Card manifest (agent.json) that defines an agent's capabilities, authentication, and supported content types for interoperability. Use it when building or migrating agents that need to be discoverable by other A2A-compliant agents or integrated with agent registries. It helps establish the public contract for multi-agent orchestration.

快速安装

Claude Code

推荐
主要方式
npx skills add pjt222/agent-almanac -a claude-code
插件命令备选方式
/plugin add https://github.com/pjt222/agent-almanac
Git 克隆备选方式
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/design-a2a-agent-card

在 Claude Code 中复制并粘贴此命令以安装该技能

技能文档

Design A2A Agent Card

Make A2A Agent Card. Advertises agent identity, skills, auth, capabilities. Other agents find it.

When Use

  • Build agent others must discover via A2A
  • Expose agent capabilities for multi-agent orchestration
  • Migrate existing agent to A2A (Agent-to-Agent) protocol
  • Define public contract before implementation
  • Integrate with agent registries that read Agent Cards

Inputs

  • Required: Agent name + description
  • Required: Skill list (name, description, input/output schemas)
  • Required: Base URL where agent hosted
  • Optional: Auth method (none, oauth2, oidc, api-key)
  • Optional: Content types beyond text/plain (e.g., image/png, application/json)
  • Optional: Capability flags (streaming, push notifications, state history)
  • Optional: Provider org name + URL

Steps

Step 1: Set Agent Identity + Description

1.1. Pick identity fields:

{
  "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. Write clear, actionable description. Answer:

  • What domains agent covers?
  • What tasks handles?
  • What limits?

1.3. Set canonical URL where Agent Card served at /.well-known/agent.json.

Got: Full identity block: name, description, URL, provider, version.

If fail: Agent covers many domains? Decide: one agent, many skills? Or many agents, focused scope? A2A prefers focused agents, clear boundaries.

Step 2: List Skills with I/O Schemas

2.1. Define each skill:

{
  "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. Each skill needs:

  • id: Unique ID (kebab-case)
  • name: Human-readable name
  • description: What skill does, 1-2 sentences
  • tags: Keywords for discovery
  • examples: Natural-language task examples that trigger skill
  • inputModes: MIME types skill takes
  • outputModes: MIME types skill produces

2.3. Skill boundaries must be clear, no overlap. Each task → one skill.

Got: Skills array. Each entry: id, name, description, tags, examples, I/O modes.

If fail: Skills overlap big? Merge into broader skill with more examples. Skill too broad? Split into focused sub-skills.

Step 3: Config Auth

3.1. Pick auth scheme by deploy context:

No auth (local/trusted network):

{
  "authentication": {
    "schemes": []
  }
}

OAuth 2.0 (best for prod):

{
  "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 (simple shared secret):

{
  "authentication": {
    "schemes": ["apiKey"],
    "credentials": {
      "apiKey": {
        "headerName": "X-API-Key"
      }
    }
  }
}

3.2. Pick minimum viable auth for env:

  • Local dev: none
  • Internal service: apiKey
  • Public-facing: oauth2 or oidc

3.3. Document token/key provisioning in provider section or external docs.

Got: Auth block matches deploy security needs.

If fail: No OAuth 2.0 infra? Start with API key, plan migration. Never deploy public agent with none auth.

Step 4: Declare Capabilities

4.1. Declare protocol features agent supports:

{
  "capabilities": {
    "streaming": true,
    "pushNotifications": false,
    "stateTransitionHistory": true
  }
}

4.2. Set each flag by impl readiness:

  • streaming: true if agent supports SSE streaming via tasks/sendSubscribe. Real-time progress for long tasks.
  • pushNotifications: true if agent can send webhook callbacks on state change. Agent stores + calls webhook URLs.
  • stateTransitionHistory: true if agent keeps full state transition history (submitted, working, completed). Good for audit.

4.3. Only set true if impl fully supports. Fake flags break interop.

Got: Capabilities object. Flags match real impl.

If fail: Unsure if capability coming? Set false. Add later. Removing capability = breaking change.

Step 5: Validate + Publish Agent Card

5.1. Assemble full 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. Validate:

  • Parse as JSON, check no syntax err
  • All required fields present (name, description, url, skills)
  • Each skill has id, name, description, min 1 I/O mode
  • URL reachable, serves card at /.well-known/agent.json

5.3. Publish:

  • Serve at https://<agent-url>/.well-known/agent.json
  • Set Content-Type: application/json
  • Enable CORS if cross-origin discovery needed
  • Register with relevant agent registries

5.4. Test by fetching:

curl -s https://agent.example.com/.well-known/agent.json | python3 -m json.tool

Got: Valid JSON Agent Card at well-known URL. Any A2A client can parse.

If fail: JSON invalid? Use linter to find syntax err. URL unreachable? Check DNS, SSL cert, web server config. CORS needed? Add Access-Control-Allow-Origin headers.

Checks

  • Agent Card valid JSON, no syntax err
  • Required fields present: name, description, url, skills
  • Each skill has id, name, description, inputModes, outputModes
  • Auth scheme matches deploy security
  • Capability flags match impl
  • Served at /.well-known/agent.json, right Content-Type
  • A2A clients fetch + parse OK
  • Examples realistic, trigger right skill

Pitfalls

  • Overpromising capabilities: streaming: true or pushNotifications: true without impl = client fails when used. Be conservative.
  • Vague skill description: "does data stuff" blocks accurate matching. Be specific about inputs, outputs, domains.
  • Missing CORS headers: Browser A2A clients can't fetch Agent Card without CORS.
  • Skill overlap: Two skills handle same task → client can't pick. Keep boundaries clear.
  • Forgetting default modes: No defaultInputModes/defaultOutputModes → clients unsure what content types to send.
  • Version stagnation: Bump version when skills/capabilities change. Clients cache old versions.
  • Publish before impl: Agent Card = contract. Publishing unimplemented skills → runtime failure.

See Also

  • implement-a2a-server - impl server behind Agent Card
  • test-a2a-interop - validate Agent Card conformance + interop
  • build-custom-mcp-server - MCP as alt/complement to A2A
  • configure-mcp-server - MCP config patterns for A2A setup

GitHub 仓库

pjt222/agent-almanac
路径: i18n/caveman/skills/design-a2a-agent-card
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

相关推荐技能

content-collections

Content Collections 是一个 TypeScript 优先的构建工具,可将本地 Markdown/MDX 文件转换为类型安全的数据集合。它专为构建博客、文档站和内容密集型 Vite+React 应用而设计,提供基于 Zod 的自动模式验证。该工具涵盖从 Vite 插件配置、MDX 编译到生产环境部署的完整工作流。

查看技能

polymarket

这个Claude Skill为开发者提供完整的Polymarket预测市场开发支持,涵盖API调用、交易执行和市场数据分析。关键特性包括实时WebSocket数据流,可监控实时交易、订单和市场动态。开发者可用它构建预测市场应用、实施交易策略并集成实时市场预测功能。

查看技能

creating-opencode-plugins

该Skill帮助开发者创建OpenCode插件,用于接入命令、文件、LSP等25+种事件。它提供了插件结构、事件API规范和JavaScript/TypeScript实现模式,适合需要拦截操作、扩展功能或自定义事件处理的场景。开发者可通过它快速构建响应式模块来增强OpenCode AI助手的能力。

查看技能

sglang

SGLang是一个专为LLM设计的高性能推理框架,特别适用于需要结构化输出的场景。它通过RadixAttention前缀缓存技术,在处理JSON、正则表达式、工具调用等具有重复前缀的复杂工作流时,能实现极速生成。如果你正在构建智能体或多轮对话系统,并追求远超vLLM的推理性能,SGLang是理想选择。

查看技能