MCP HubMCP Hub
Volver a habilidades

design-a2a-agent-card

pjt222
Actualizado 2 days ago
2 vistas
17
2
17
Ver en GitHub
Metadesign

Acerca de

Esta habilidad genera un manifiesto de Tarjeta de Agente A2A compatible con los estándares (`agent.json`) para que tu agente sea descubrible e interoperable dentro de sistemas multiagente. Define las capacidades, habilidades, autenticación y tipos de contenido soportados del agente como un contrato público. Úsala al construir, migrar o integrar un agente que deba funcionar con otros agentes y registros compatibles con A2A.

Instalación rápida

Claude Code

Recomendado
Principal
npx skills add pjt222/agent-almanac -a claude-code
Comando PluginAlternativo
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternativo
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/design-a2a-agent-card

Copia y pega este comando en Claude Code para instalar esta habilidad

Documentación

Design A2A Agent Card

Standards-compliant A2A Agent Card → advertises identity, skills, auth, caps for discovery.

Use When

  • Discoverable by other A2A agents
  • Expose caps → multi-agent orchestration
  • Migrate agent → A2A protocol
  • Public contract before impl
  • Integrate → registries

In

  • Required: Agent name + desc
  • Required: Skills list (name, desc, I/O schemas)
  • Required: Base URL host
  • Optional: Auth (none, oauth2, oidc, api-key)
  • Optional: Content types beyond text/plain
  • Optional: Cap flags (streaming, push, state history)
  • Optional: Provider org + URL

Do

Step 1: Identity + desc

1.1. 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. Desc answers:

  • Domains?
  • Tasks?
  • Limitations?

1.3. Canonical URL → /.well-known/agent.json.

→ Complete identity: name, desc, URL, provider, ver.

If err: Multi-domain → one agent w/ many skills vs many focused agents. A2A favors focused w/ clear bounds.

Step 2: Skills + I/O schemas

2.1. Define each:

{
  "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:

  • id: Unique (kebab-case)
  • name: Display
  • description: 1-2 sentences
  • tags: Searchable
  • examples: NL task examples
  • inputModes: MIME accepts
  • outputModes: MIME produces

2.3. Bounds clear + non-overlap. Each task → one skill.

→ Skills array w/ id, name, desc, tags, examples, I/O.

If err: Skills overlap → merge broader w/ more examples. Too broad → split focused.

Step 3: Auth

3.1. Scheme by deploy:

No auth (local/trusted):

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

OAuth 2.0 (rec 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 (shared-secret):

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

3.2. Min viable:

  • Local dev → none
  • Internal svc → apiKey
  • Public → oauth2 / oidc

3.3. Doc token/key provisioning → provider section or external docs.

→ Auth block matches deploy sec reqs.

If err: No OAuth infra → start apiKey + plan migration. NEVER public w/ none.

Step 4: Caps

4.1. Protocol features:

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

4.2. Flags by impl:

  • streaming: true if SSE via tasks/sendSubscribe. Real-time progress.
  • pushNotifications: true if webhook callbacks on state. Requires store + call webhooks.
  • stateTransitionHistory: true if full history (submitted, working, completed). Audit.

4.3. Only true if fully supported. Advertising unsupported → breaks interop.

→ Caps obj w/ flags matching impl.

If err: Unsure → false. Add in future. Removing = breaking change.

Step 5: Validate + publish

5.1. Assemble:

{
  "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 JSON, no syntax errs
  • Required fields (name, desc, url, skills)
  • Each skill: id, name, desc, ≥1 I/O mode
  • URL reachable, card at /.well-known/agent.json

5.3. Publish:

  • Serve → https://<agent-url>/.well-known/agent.json
  • Content-Type: application/json
  • CORS if cross-origin
  • Register → agent directories

5.4. Test discovery:

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

→ Valid JSON served at well-known URL, parseable by A2A client.

If err: JSON fail → lint. URL unreachable → DNS, SSL, web server. CORS → Access-Control-Allow-Origin.

Check

  • Valid JSON, no syntax errs
  • Required: name, desc, url, skills
  • Each skill: id, name, desc, inputModes, outputModes
  • Auth matches deploy sec
  • Caps reflect impl
  • Served at /.well-known/agent.json + Content-Type
  • A2A clients fetch + parse OK
  • Examples realistic + trigger correct skill

Traps

  • Overpromising caps: streaming: true / pushNotifications: true w/o impl → client fails. Conservative.
  • Vague skill desc: "does data stuff" → no match. Specific I/O + domains.
  • Missing CORS: Browser A2A clients can't fetch w/o CORS.
  • Skill overlap: 2 skills same task → clients can't pick. Clear bounds.
  • Forget default modes: Missing defaultInputModes/defaultOutputModes → clients no MIME.
  • Ver stagnation: Update ver when skills/caps change. Clients cache.
  • Publish before impl: Card = contract. Publishing un-impl'd → runtime fails.

  • implement-a2a-server — server behind card
  • test-a2a-interop — validate conformance + interop
  • build-custom-mcp-server — MCP alt/complement
  • configure-mcp-server — MCP patterns applicable

Repositorio GitHub

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

Habilidades relacionadas

content-collections

Meta

Esta habilidad proporciona una configuración probada en producción para Content Collections, una herramienta centrada en TypeScript que transforma archivos Markdown/MDX en colecciones de datos con tipado seguro mediante validación Zod. Úsala al construir blogs, sitios de documentación o aplicaciones Vite + React con mucho contenido para garantizar seguridad de tipos y validación automática de contenido. Abarca todo, desde la configuración del plugin de Vite y compilación MDX hasta la optimización de despliegue y validación de esquemas.

Ver habilidad

polymarket

Meta

Esta habilidad permite a los desarrolladores crear aplicaciones con la plataforma de mercados de predicción Polymarket, incluyendo la integración de API para operaciones y datos de mercado. También proporciona transmisión de datos en tiempo real a través de WebSocket para monitorear operaciones en vivo y actividad del mercado. Úsela para implementar estrategias de trading o crear herramientas que procesen actualizaciones de mercado en tiempo real.

Ver habilidad

creating-opencode-plugins

Meta

Esta habilidad ayuda a los desarrolladores a crear complementos de OpenCode que se conectan a más de 25 tipos de eventos, como comandos, archivos y operaciones LSP. Proporciona la estructura del complemento, las especificaciones de la API de eventos y los patrones de implementación para módulos en JavaScript/TypeScript. Úsala cuando necesites interceptar, monitorear o extender el ciclo de vida del asistente de IA de OpenCode con lógica personalizada basada en eventos.

Ver habilidad

sglang

Meta

SGLang es un framework de alto rendimiento para el servicio de LLM que se especializa en generación rápida y estructurada para JSON, expresiones regulares y flujos de trabajo de agentes utilizando su caché de prefijos RadixAttention. Ofrece una inferencia significativamente más rápida, especialmente para tareas con prefijos repetidos, lo que lo hace ideal para salidas complejas y estructuradas, y conversaciones multiturno. Elige SGLang sobre alternativas como vLLM cuando necesites decodificación restringida o estés construyendo aplicaciones con uso extensivo de prefijos compartidos.

Ver habilidad