a2a-js-dev
Build A2A (Agent-to-Agent) protocol applications using the @a2a-js/sdk TypeScript/JavaScript SDK.
Skill by delexw
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/delexw-a2a-js-dev
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: backend, writing, productivity, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/a2a-js-dev
What's inside
- Skill name
a2a-js-dev- Description
- Build A2A (Agent-to-Agent) protocol applications using the @a2a-js/sdk TypeScript/JavaScript SDK. Use this skill whenever the user wants to create an A2A agent server, build an A2A client, implement agent-to-agent communication, set up agent discovery, handle A2A tasks/streaming, or write any TypeScript/JavaScript code that imports from @a2a-js/sdk. Also triggers when the user mentions 'A2A protocol', 'agent-to-agent', 'agent card', 'AgentExecutor', or references the a2a-js repository — even if they don't explicitly say 'A2A SDK'. Covers both server and client development, all three transport bindings (JSON-RPC, HTTP+JSON/REST, gRPC), and the full task lifecycle.
- License
- MIT
- Instructions
- 537 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- body: 537 lines (spec recommends under 500)
Files (3)
- SKILL.md
- protocol-spec.md · references/
- sdk-api.md · references/
SKILL.md (first lines)
# A2A JavaScript/TypeScript SDK Development Guide
Build standards-compliant agent-to-agent applications using the `@a2a-js/sdk`. This guide covers server agents, clients, task management, streaming, and all three transport bindings.
## Quick Reference
```bash
# Install the SDK
npm install @a2a-js/sdk
# For Express server integration
npm install express
# For gRPC support (Node.js only)
npm install @grpc/grpc-js @bufbuild/protobuf
```
**Import paths:**
```typescript
import { AgentCard, Message, Task, AGENT_CARD_PATH } from '@a2a-js/sdk';
import { AgentExecutor, DefaultRequestHandler, InMemoryTaskStore } from '@a2a-js/sdk/server';
import { agentCardHandler, jsonRpcHandler, restHandler, UserBuilder } from '@a2a-js/sdk/server/express';
import { ClientFactory } from '@a2a-js/sdk/client';
import { GrpcTransportFactory } from '@a2a-js/sdk/client/grpc';
```
The SDK implements **A2A Protocol Specification v0.3.0**.
---
## Architecture Overview
An A2A application has two sides:
1. **Server (Agent)** — exposes capabilities via an Agent Card, handles incoming messages, manages tasks, and publishes events
2. **Client (Consumer)** — discovers agents, sends messages, tracks tasks, and consumes streaming updates
The protocol supports three transport bindings. Each transport provides the same operations — pick based on your deployment needs:
| Transport | Client | Server | Notes |
|-----------|--------|--------|-------|
| JSON-RPC | Yes | Yes | Default, works everywhere |
| HTTP+JSON/REST | Yes | Yes | RESTful, good for web clients |
| gRPC | Yes | Yes | Node.js only, high performance |
---
## Building an A2A Server
### Step 1: Define the Agent Card
The Agent Card is the identity and capability declaration for your agent. Other agents discover it at `/.well-known/agent-card.json`.
```typescript
import { AgentCard } from '@a2a-js/sdk';
const agentCard: AgentCard = {
name: 'My Agent',
description: 'Describe what your agent does clearly.',
protocolVersion: '0.3.0',
version: '1.0.0',
url: 'http://localhost:4000/a2a/jsonrpc',
skills: [
{
id: 'skill-id',
name: 'Skill Name',
description: 'What this skill does',
tags: ['relevant', 'tags'],
},
],
capabilities: {
pushNotifications: false,
streaming: true,
},
defaultInputModes: ['text'],
defaultOutputModes: ['text'],
additionalInterfaces: [
{ url: 'http://localhost:4000/a2a/jsonrpc', transport: 'JSONRPC' },
{ url: 'http://localhost:4000/a2a/rest', transport: 'HTTP+JSON' },
],
};
```
**Key design decisions for the Agent Card:**
- `skills` — declare what your agent can do so clients can match capabilities
- `capabilities` — advertise streaming and push notification support honestly; clients check these before using those features
- `additionalInterfaces` — list all transport endpoints you support so `ClientFactory` can auto-select
### Step 2: Implement the AgentExecutor
This is where your agent's logic lives. The `execute` method receives a `RequestContext` and an `ExecutionEventBus`.
```typescript
import { AgentExecutor, RequestContext, ExecutionEventBus } from '@a2a-js/sdk/server';
import { Message, Task, TaskStatusUpdateEvent, TaskArtifactUpdateEvent } from '@a2a-js/sdk';
import { v4 as uuidv4 } from 'uuid';
class MyAgentExecutor implements AgentExecutor {
async execute(
requestContext: RequestContext,
eventBus: ExecutionEventBus
): Promise<void> {
const { taskId, contextId, userMessage, task } = requestContext;
// Access the user's message text
const userText = userMessage.parts
.filter((p) => p.kind === 'text')
.map((p) => p.text)
.join('\n');
// If this is a new task (no existing task), initialize it
if (!task) {
const newTask: Task = {
kind: 'task',
id: taskId,
contextId,
status: { state: 'working', timestamp: new Date().toISOString() },
history: [userMessage],
};From delexw/claude-code-misc, MIT.
More from delexw/claude-code-misc
- 0.448score
adr-author
delexw
Guide writing clear, enforceable Architectural Decision Records (ADRs) that work with AI-powered review systems and human teams alike.
SkillDFreshness: D★ 2Claude Code +9 - 0.448score
animejs
delexw
Write correct anime.js v4 animations with the right imports, API patterns, easing, timelines, and advanced features.
SkillDFreshness: D★ 2Claude Code +9 - 0.448score
inktui
delexw
Build beautiful CLI apps with Ink (React for terminals), ink-ui components, and create-ink-app scaffolding.
SkillDFreshness: D★ 2Claude Code +9 - 0.448score
ladybugdb
delexw
Expert guide for LadybugDB — an embedded, in-process property graph database using openCypher.
SkillDFreshness: D★ 2Claude Code +9 - 0.448score
telegram-bot
delexw
Interact with Telegram — read messages from your channel and send messages back.
SkillDFreshness: D★ 2Claude Code +9 - 0.448score
tauri-v2
delexw
Use this skill whenever "tauri" appears in the user's message, or they reference tauri.conf.json, src-tauri, or @tauri-apps packages.
SkillDFreshness: D★ 2Claude Code +9 - 0.443score
oxfmt
delexw
Run and configure oxfmt — the high-performance JavaScript/TypeScript formatter built on the Oxc compiler stack, ~30x faster than Prettier.
SkillDFreshness: D★ 2Claude Code +9 - 0.443score
oxlint
delexw
Run and configure oxlint — the high-performance JavaScript/TypeScript linter built on the Oxc compiler stack.
SkillDFreshness: D★ 2Claude Code +9
Signals
- Stars
- 2
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Mar 28, 2026 (7 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/delexw/claude-code-misc
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from delexw
- 0.448score
adr-author
delexw
Guide writing clear, enforceable Architectural Decision Records (ADRs) that work with AI-powered review systems and human teams alike.
SkillDFreshness: D★ 2Claude Code +9 - 0.448score
animejs
delexw
Write correct anime.js v4 animations with the right imports, API patterns, easing, timelines, and advanced features.
SkillDFreshness: D★ 2Claude Code +9 - 0.448score
inktui
delexw
Build beautiful CLI apps with Ink (React for terminals), ink-ui components, and create-ink-app scaffolding.
SkillDFreshness: D★ 2Claude Code +9 - 0.448score
ladybugdb
delexw
Expert guide for LadybugDB — an embedded, in-process property graph database using openCypher.
SkillDFreshness: D★ 2Claude Code +9 - 0.448score
telegram-bot
delexw
Interact with Telegram — read messages from your channel and send messages back.
SkillDFreshness: D★ 2Claude Code +9 - 0.448score
tauri-v2
delexw
Use this skill whenever "tauri" appears in the user's message, or they reference tauri.conf.json, src-tauri, or @tauri-apps packages.
SkillDFreshness: D★ 2Claude Code +9
Cite this page
a2a-js-dev skill. Agent Mart. https://agentmart.dev/skills/delexw-a2a-js-dev (last updated 2026-10-24)