Agent skill

Generate Agent Card

by agentic-community in agentic-community/mcp-gateway-registry

Generate an A2A agent card JSON by analyzing agent source code in a folder or GitHub URL.

Apache-2.0Auto-check passedAgent Workflows

Install Generate Agent Card

skills CLI
$ npx skills add agentic-community/mcp-gateway-registry --skill generate-agent-card -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install agentic-community/mcp-gateway-registry generate-agent-card --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/agentic-community/mcp-gateway-registry.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/generate-agent-card .claude/skills/generate-agent-card && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
generate-agent-card
GitHub stars
967
Token cost
~2.8k tokens
SKILL.md length
674 words
Files
1
Skills in repo
17
Repo updated
First seen
Licence
Apache-2.0

At a glance

Generate an A2A agent card JSON by analyzing agent source code in a folder or GitHub URL.

  • Works in 8 steps: Carefully study the source code → Generate the agent card JSON → Populate skills correctly → …
  • Tasks that involve MCP servers
  • SKILL.md covers Steps and Reference template
  • Calls python3; reaches bedrock-agentcore.us-east-1.amazonaws.com

What it does

Generate Agent Card is an agent skill from agentic-community/mcp-gateway-registry. Generate an A2A agent card JSON by analyzing agent source code in a folder or GitHub URL. Studies the code to detect agent name, skills, tools, auth, protocol, and generates a spec-compliant agent card.

Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Agent Workflows, covering MCP servers. It works with GitHub and Model Context Protocol. The repository describes itself as: Enterprise-ready MCP Gateway & Registry that centralizes AI development tools with secure OAuth authentication, dynamic tool discovery, and unified access for both autonomous AI… The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve MCP servers

Example prompts

  • “/generate-agent-card”

Requirements

  • Python 3
  • Docker

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Carefully study the source code
  2. Generate the agent card JSON
  3. Populate skills correctly
  4. Set the endpoint URL
  5. Detect protocol binding
  6. Save the output
  7. Validate the generated JSON
  8. Report results

What it can do on your machine

Read from SKILL.md and the folder at commit ec3a197. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • bedrock-agentcore.us-east-1.amazonaws.com

    Also links to:

    • a2a-protocol.org

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Generate Agent Card loads about 2.8k tokens when it runs. Until then it costs about 56 tokens; SKILL.md has 674 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~56
When it runs · the whole SKILL.md, loaded when a task matches
~2.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from agentic-community/mcp-gateway-registry at commit ec3a197, republished under its Apache-2.0 licence (© agentic-community). 674 words, ~2,774 tokens.

Download SKILL.mdSave it as .claude/skills/generate-agent-card/SKILL.md (or your agent's skills folder).
name
generate-agent-card
description
Generate an A2A agent card JSON by analyzing agent source code in a folder or GitHub URL. Studies the code to detect agent name, skills, tools, auth, protocol, and generates a spec-compliant agent card.
argument-hint
[folder-path-or-github-url]
disable-model-invocation
true

Generate A2A Agent Card

Generate an A2A (Agent-to-Agent) protocol agent card JSON file by analyzing the source code at $ARGUMENTS.

Steps

1. Carefully study the source code

Do NOT just skim the top-level files. Agents can be complex, multi-file projects. You MUST thoroughly explore the entire folder structure before generating the card.

If $ARGUMENTS is a local folder path, use Glob to find ALL Python files, YAML/JSON configs, and README files in the folder and its subfolders. Read every relevant file.

If $ARGUMENTS is a GitHub URL, use WebFetch to read the raw file contents. Follow imports to discover additional files.

Where to look (agents are not always a single file):

  • Entrypoints: main.py, app.py, agent_entrypoint.py, server.py, __main__.py
  • Tool definitions: tools may be in separate files like tools/, skills/, functions/, or registered via decorators (@tool, @function_tool, @mcp_tool)
  • Multi-agent setups: look for orchestrator/supervisor patterns, multiple agent classes, agent registries, sub-agent folders
  • Prompts and system messages: may be in separate files like prompts/, templates/, system_prompt.txt, or as string constants
  • MCP server connections: look for MCP client configs, mcp_servers, MCPClient, tool imports from MCP servers - these are skills the agent can use
  • Config files: pyproject.toml, requirements.txt, .bedrock_agentcore.yaml, agent_config.yaml, docker-compose.yml
  • Sub-folders: check ALL subdirectories for additional agents, tools, or shared utilities

From the code, detect:

  • Agent name: from constants, CLI args, config files, class names
  • Description: from docstrings, README, module-level comments
  • Skills/tools: from @tool decorators, tool lists, function definitions passed to agent frameworks (Strands, LangChain, CrewAI, AutoGen, etc.), MCP tool connections, imported tool modules
  • Multi-agent skills: if there are multiple agents (orchestrator, sub-agents), each agent's capabilities should be represented as skills
  • MCP-sourced tools: if the agent connects to MCP servers, list those tools as skills too (read the MCP server configs to find tool names and descriptions)
  • Input/output modes: text, images, files, structured data - check what the agent accepts and returns
  • Protocol: HTTP (HTTP+JSON), A2A (JSONRPC), MCP
  • Auth mechanism: IAM/SigV4, Cognito/JWT, API key, OAuth2
  • Streaming support: from framework config, capabilities flags
  • Version: from constants, pyproject.toml, or default to 1.0.0
  • Endpoint URL: from .bedrock_agentcore.yaml or deployment config if available
2. Generate the agent card JSON

Create a JSON file following the official A2A Agent Card specification (https://a2a-protocol.org/latest/specification/).

All mandatory fields MUST be present. Use camelCase for JSON field names.

Required fields
json
{
  "name": "string - Human-readable agent name",
  "description": "string - What the agent does",
  "version": "string - e.g. 1.0.0",
  "supportedInterfaces": [
    {
      "url": "string - Agent endpoint URL",
      "protocolBinding": "string - JSONRPC or HTTP+JSON or GRPC",
      "protocolVersion": "string - e.g. 1.0"
    }
  ],
  "capabilities": {
    "streaming": false,
    "pushNotifications": false
  },
  "defaultInputModes": ["text/plain"],
  "defaultOutputModes": ["text/plain"],
  "skills": [
    {
      "id": "string - unique skill id",
      "name": "string - human-readable name",
      "description": "string - what the skill does",
      "tags": ["string"],
      "examples": ["string - example prompts"]
    }
  ]
}
Show full SKILL.md (299 more words)Show less
Optional fields to include when detected
  • provider: Include if organization info is available. Requires organization (string) and url (string).
  • documentationUrl: Link to docs if found in README or code.
  • iconUrl: Agent icon if found.
  • securitySchemes: Include when auth is detected:
    • Cognito/JWT: {"bearerAuth": {"httpAuthSecurityScheme": {"scheme": "Bearer", "description": "Cognito JWT bearer token"}}}
    • API Key: {"apiKey": {"apiKeySecurityScheme": {"name": "x-api-key", "location": "header"}}}
    • IAM/SigV4: {"sigv4": {"httpAuthSecurityScheme": {"scheme": "AWS4-HMAC-SHA256", "description": "AWS SigV4 request signing"}}}
  • securityRequirements: Reference the schemes defined above, e.g. [{"schemes": {"bearerAuth": []}}]
3. Populate skills correctly
  • Find ALL tools/functions the agent exposes
  • For each tool, create a skill entry with:
    • id: snake_case identifier
    • name: Human-readable name
    • description: From the function docstring or tool description
    • tags: Relevant categories (e.g. ["math", "calculator"], ["search", "web"])
    • examples: 2-3 example prompts showing usage
4. Set the endpoint URL
  • Check for .bedrock_agentcore.yaml in the agent folder and read the ARN/endpoint if available
  • If no config found, use placeholder: https://<AGENT_ENDPOINT_URL>/
5. Detect protocol binding
  • A2A agents (a2a_server, A2AServer, port 9000, protocol="A2A"): use JSONRPC
  • HTTP agents (BedrockAgentCoreApp, REST endpoints): use HTTP+JSON
  • Default to JSONRPC
6. Save the output
  • Name the file {agent_name}_agent_card.json using the detected agent name in snake_case
  • Save it in the agent's folder (same folder as the source code)
  • Pretty-print with 2-space indentation
7. Validate the generated JSON

After writing the file, validate it by running this Python script via Bash:

bash
python3 -c "
import json
import sys

file_path = '<OUTPUT_FILE_PATH>'

# Step 1: JSON format check
try:
    with open(file_path) as f:
        card = json.load(f)
    print('PASS: Valid JSON format')
except json.JSONDecodeError as e:
    print(f'FAIL: Invalid JSON - {e}')
    sys.exit(1)

# Step 2: Required top-level fields
errors = []
TOP_LEVEL_REQUIRED = ['name', 'description', 'version', 'supportedInterfaces', 'capabilities', 'defaultInputModes', 'defaultOutputModes', 'skills']
for field in TOP_LEVEL_REQUIRED:
    if field not in card:
        errors.append(f'Missing required top-level field: {field}')
    elif field in ('name', 'description', 'version') and not isinstance(card[field], str):
        errors.append(f'{field} must be a string')
    elif field in ('defaultInputModes', 'defaultOutputModes', 'skills', 'supportedInterfaces') and not isinstance(card[field], list):
        errors.append(f'{field} must be an array')
    elif field == 'capabilities' and not isinstance(card[field], dict):
        errors.append(f'{field} must be an object')

# Step 3: Validate supportedInterfaces entries
INTERFACE_REQUIRED = ['url', 'protocolBinding', 'protocolVersion']
for i, iface in enumerate(card.get('supportedInterfaces', [])):
    for field in INTERFACE_REQUIRED:
        if field not in iface:
            errors.append(f'supportedInterfaces[{i}] missing required field: {field}')
    binding = iface.get('protocolBinding', '')
    if binding and binding not in ('JSONRPC', 'GRPC', 'HTTP+JSON'):
        errors.append(f'supportedInterfaces[{i}].protocolBinding must be JSONRPC, GRPC, or HTTP+JSON, got: {binding}')
if not card.get('supportedInterfaces'):
    errors.append('supportedInterfaces must have at least one entry')

# Step 4: Validate skills entries
SKILL_REQUIRED = ['id', 'name', 'description', 'tags']
for i, skill in enumerate(card.get('skills', [])):
    for field in SKILL_REQUIRED:
        if field not in skill:
            errors.append(f'skills[{i}] missing required field: {field}')
    if 'tags' in skill and not isinstance(skill['tags'], list):
        errors.append(f'skills[{i}].tags must be an array')

# Step 5: Validate defaultInputModes/defaultOutputModes are non-empty
if not card.get('defaultInputModes'):
    errors.append('defaultInputModes must have at least one entry')
if not card.get('defaultOutputModes'):
    errors.append('defaultOutputModes must have at least one entry')

# Step 6: Validate provider if present
if 'provider' in card and card['provider'] is not None:
    for field in ('organization', 'url'):
        if field not in card['provider']:
            errors.append(f'provider missing required field: {field}')

# Step 7: Report results
if errors:
    print(f'FAIL: {len(errors)} validation error(s):')
    for e in errors:
        print(f'  - {e}')
    sys.exit(1)
else:
    skill_count = len(card.get('skills', []))
    iface_count = len(card.get('supportedInterfaces', []))
    print(f'PASS: All mandatory fields present ({iface_count} interface(s), {skill_count} skill(s))')
"

Replace <OUTPUT_FILE_PATH> with the actual path of the generated JSON file.

If validation fails, fix the errors in the JSON and re-run validation until all checks pass. Do NOT report success to the user until validation passes.

8. Report results

After validation passes, output results in EXACTLY this format:

Validation passed. Here's a summary of the generated agent card:

Output file: <filename>.json

Detected from code:

- Agent name: <AgentName> (from <how it was detected, e.g. Strands agent with BedrockAgentCoreApp>)
- Skills: <count> - <skill_id> (<brief description>), <skill_id> (<brief description>), ...
- Protocol: <HTTP+JSON or JSONRPC> (<why, e.g. uses BedrockAgentCoreApp on port 8080>)
- Auth: <auth mechanisms detected, e.g. IAM/SigV4 (default) + Cognito JWT (optional)>
- Streaming: <true or false>
- Endpoint URL: <source, e.g. From .bedrock_agentcore.yaml - uses the my_agent deployment ARN (account ..., region ...)> or <Placeholder used - no deployment config found>

If validation fails, show the errors first, fix them, re-validate, and only show the summary above after all checks pass.

Reference template

Use this as a structural reference (from simple-a2a-agent):

json
{
  "name": "SimpleCalculatorAgent",
  "description": "A simple calculator agent that can evaluate mathematical expressions.",
  "version": "1.0.0",
  "supportedInterfaces": [
    {
      "url": "https://bedrock-agentcore.us-east-1.amazonaws.com/runtimes/<encoded-arn>/invocations/",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "capabilities": {
    "streaming": true,
    "pushNotifications": false
  },
  "defaultInputModes": ["text/plain"],
  "defaultOutputModes": ["text/plain"],
  "skills": [
    {
      "id": "calculator",
      "name": "Calculator",
      "description": "Evaluate a mathematical expression and return the result.",
      "tags": ["math", "calculator", "arithmetic"],
      "examples": [
        "What is 42 * 17?",
        "Calculate the square root of 144",
        "What is 15% of 200?"
      ]
    }
  ]
}

© agentic-community, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/generate-agent-card of agentic-community/mcp-gateway-registry.

Open the folder on GitHubat commit ec3a197

Compare with similar skills

Generate Agent Card next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Generate Agent Card compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Generate Agent Card this skillagentic-community/mcp-gateway-registry967—~2.8kAutomated safety check: PassApache-2.0
Researching With Deepwikiaiskillstore/marketplace430—~1.2kAutomated safety check: PassNone
Skill Seekers Builderyusufkaraaslan/Skill_Seekers15k—~760Automated safety check: PassMIT
Read GitHubAgentTeam-TaichuAI/ScienceClaw6712 repos~638Automated safety check: PassNone
MCP Apps Builderawslabs/cli-agent-orchestrator1.4k—~1.7kAutomated safety check: PassApache-2.0
Releasejgravelle/jcodemunch-mcp2.7k—~6.5kAutomated safety check: PassCustom licence

Similar skills

  • Researching With Deepwiki

    aiskillstore/marketplace

    Research GitHub, GitLab, and Bitbucket repositories using DeepWiki MCP server.

    430 GitHub stars~1.2k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Skill Seekers Builder

    yusufkaraaslan/Skill_Seekers

    Detects the type of a knowledge source and uses the Skill Seekers MCP tools to turn docs, repos, PDFs or videos into packaged AI skills.

    15k GitHub stars~760 tokensUpdated 8 days ago
    Agent WorkflowsAuto-check passed
  • Read GitHub

    AgentTeam-TaichuAI/ScienceClaw

    Read and search GitHub repository documentation via gitmcp.io MCP service.

    671 GitHub starsUsed in 2 repos~638 tokens
    Research & ScienceAuto-check passed
  • MCP Apps Builder

    awslabs/cli-agent-orchestrator

    Official

    Load the official MCP Apps builder skills (create-mcp-app, migrate-oai-app, add-app-to-server, convert-web-app) from github.com/modelcontextprotocol/ext-apps.

    1.4k GitHub stars~1.7k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Release

    jgravelle/jcodemunch-mcp

    Publishing a jMunch release (jcodemunch-mcp, jdocmunch-mcp, jdatamunch-mcp, jragmunch-cli), reviewing/merging/closing PRs, and responding to the community.

    2.7k GitHub stars~6.5k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Open PR

    ArcadeAI/arcade-mcp

    Prepare arcade-mcp changes for review by verifying intended behavior, filling the repository PR template, and creating or updating the PR.

    1k GitHub stars~2.9k tokensUpdated today
    Agent WorkflowsAuto-check passed

More from agentic-community/mcp-gateway-registry

All 17 skills in this repo
  • Explainer

    agentic-community/mcp-gateway-registry

    Explain a GitHub issue or pull request at 100, 200, and 300 level.

    967 GitHub stars~3.8k tokensUpdated 2 days ago
    Auto-check passed
  • Debug

    agentic-community/mcp-gateway-registry

    Debug issues in the MCP Gateway Registry using first-principles thinking.

    967 GitHub stars~1.8k tokensUpdated 2 days ago
    Auto-check: notes
  • Infra Sync

    agentic-community/mcp-gateway-registry

    Keep Terraform and CDK infrastructure in sync. An agent skill from agentic-community/mcp-gateway-registry.

    967 GitHub stars~2.7k tokensUpdated 2 days ago
    Auto-check passed
  • Search Benchmark

    agentic-community/mcp-gateway-registry

    Generate a search quality benchmark for the AI Registry. An agent skill from agentic-community/mcp-gateway-registry.

    967 GitHub stars~1.9k tokensUpdated 2 days ago
    Auto-check passed
  • Writing

    agentic-community/mcp-gateway-registry

    Write prose people will actually read. An agent skill from agentic-community/mcp-gateway-registry.

    967 GitHub stars~3.5k tokensUpdated 2 days ago
    Auto-check passed
  • Agentcore Register

    agentic-community/mcp-gateway-registry

    Given an MCP server URL, probe the server via curl to discover its metadata and tools, then generate a markdown file with copy-pasteable content for each field in the Amazon Bedrock AgentCore…

    967 GitHub stars~1.7k tokensUpdated 2 days ago
    Auto-check passed

Questions about Generate Agent Card

What does Generate Agent Card do?

Generate an A2A agent card JSON by analyzing agent source code in a folder or GitHub URL. Generate Agent Card is an agent skill from agentic-community/mcp-gateway-registry. Generate an A2A agent card JSON by analyzing agent source code in a folder or GitHub URL.

When should I use Generate Agent Card?

Generate Agent Card fits situations like: tasks that involve MCP servers.

How do I install Generate Agent Card in Claude Code?

Run `npx skills add agentic-community/mcp-gateway-registry --skill generate-agent-card -a claude-code`. Or copy the skill folder (.claude/skills/generate-agent-card in agentic-community/mcp-gateway-registry) into .claude/skills/generate-agent-card in your project. Claude Code loads it when a task matches its description.

How do I install Generate Agent Card in Codex?

Run `npx skills add agentic-community/mcp-gateway-registry --skill generate-agent-card -a codex`. Or copy the skill folder (.claude/skills/generate-agent-card in agentic-community/mcp-gateway-registry) into .agents/skills/generate-agent-card in your project. Codex loads it when a task matches its description.

Can I use Generate Agent Card in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add agentic-community/mcp-gateway-registry --skill generate-agent-card -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/generate-agent-card, .gemini/skills/generate-agent-card, .github/skills/generate-agent-card and .opencode/skills/generate-agent-card in your project.

What does Generate Agent Card need to run?

Going by SKILL.md and its folder, Generate Agent Card needs the command-line tools its instructions call (python3). Our summary lists: Python 3; Docker.

Does Generate Agent Card access the network?

SKILL.md names 2 domains. In commands or code: bedrock-agentcore.us-east-1.amazonaws.com; the agent is likely to contact it when it follows the instructions. As links in the text: a2a-protocol.org. This is read from the text; nothing was executed.

Is Generate Agent Card safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Generate Agent Card use?

Generate Agent Card is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Generate Agent Card use?

About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Generate Agent Card?

Skills that share tags, products or a category with Generate Agent Card: Researching With Deepwiki (aiskillstore/marketplace, 430 stars), Skill Seekers Builder (yusufkaraaslan/Skill_Seekers, 15k stars), Read GitHub (AgentTeam-TaichuAI/ScienceClaw, 671 stars) and MCP Apps Builder (awslabs/cli-agent-orchestrator, 1.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Generate Agent Card?

agentic-community (a GitHub organization) maintains it in agentic-community/mcp-gateway-registry, which has 967 GitHub stars. The repository holds 17 skills in this directory. The repository was last updated on October 6, 2026.

Source: agentic-community/mcp-gateway-registry on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.