dist/codex/a2a-multi-agent/skills/a2a-jsonrpc-transport/SKILL.md
Implement the A2A JSON-RPC 2.0 transport layer — request/response format, method routing, batch requests, and HTTP details. Use when building custom A2A transport handling or debugging protocol-level issues.
npx skillsauth add orcaqubits/agentic-commerce-claude-plugins a2a-jsonrpc-transportInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Fetch live docs:
https://a2a-protocol.org/latest/specification/ for the transport layer sectionsite:github.com a2aproject A2A JSON-RPC transport for transport protocol detailshttps://www.jsonrpc.org/specification for the JSON-RPC 2.0 base specificationA2A uses JSON-RPC 2.0 as its transport protocol because:
Every A2A request is a JSON-RPC 2.0 request:
{
"jsonrpc": "2.0",
"method": "message/send",
"id": "unique-request-id",
"params": { ... }
}
"2.0"message/send, tasks/get)Success:
{
"jsonrpc": "2.0",
"id": "unique-request-id",
"result": { ... }
}
Error:
{
"jsonrpc": "2.0",
"id": "unique-request-id",
"error": {
"code": -32600,
"message": "Invalid Request",
"data": { ... }
}
}
application/json for regular requestsapplication/json for message/send, text/event-stream for message/stream200 OK — errors are in the JSON-RPC response body, not HTTP status codes| Method | Direction | Purpose |
|--------|-----------|---------|
| message/send | Client → Server | Send message, get synchronous response |
| message/stream | Client → Server | Send message, get SSE stream |
| tasks/get | Client → Server | Retrieve task by ID |
| tasks/cancel | Client → Server | Cancel a task |
| tasks/resubscribe | Client → Server | Re-subscribe to task's SSE stream |
| tasks/pushNotificationConfig/set | Client → Server | Register push notification |
| tasks/pushNotificationConfig/get | Client → Server | Get notification config |
| tasks/pushNotificationConfig/list | Client → Server | List notification configs |
| tasks/pushNotificationConfig/delete | Client → Server | Delete notification config |
| agent/authenticatedExtendedCard | Client → Server | Get extended Agent Card |
The server must route incoming requests by the method field:
method fieldA2A doesn't mandate built-in idempotency, but best practice is:
message/send, sending the same message twice should be handled gracefullyjsonrpc field is exactly "2.0"message/stream)Content-Type: application/json for all non-streaming requests-32601Fetch the specification for any additional transport requirements, header conventions, and method parameter schemas before implementing.
development
Build with Spree's headless Next.js storefront — the official `spree/storefront` repo (Next.js 16 App Router with Server Actions and Turbopack, React 19 Server Components, Tailwind CSS 4, TypeScript 5, `@spree/sdk`, Sentry), server-only auth (httpOnly JWT cookies + publishable key), MeiliSearch faceted catalog, one-page checkout with Apple/Google Pay/Klarna/Affirm/SEPA, multi-region market routing, GA4 + JSON-LD SEO, and Vercel/Docker deployment. Use when forking or customizing the storefront, or evaluating headless adoption.
tools
Build Spree extensions as Rails engines — gem scaffolding, `bin/rails g spree:extension`, mounting routes/migrations/assets, the modern `prepend` decorator pattern (`*_decorator.rb` with `self.prepended(base)`), generators (`spree:model_decorator`, `spree:controller_decorator`), the four customization surfaces in preference order (Events > Webhooks > Dependencies > Decorators), Spree::Dependencies for swapping service objects, gem release/versioning, and the deprecated Deface engine. Use when building a reusable Spree extension or adding non-trivial customization to an app.
development
Build with Spree's event bus and Webhooks 2.0 — `Spree::Events` publication, `Spree::Subscriber` DSL with `subscribes_to` and `on`, wildcard matching, lifecycle events (`{model}.created/.updated/.deleted` via `publishes_lifecycle_events`), the canonical event catalog (order.*, payment.*, shipment.*, product.*), Webhooks 2.0 endpoints, HMAC-SHA256 signing (`X-Spree-Webhook-Signature`), exponential-backoff retries, and Sidekiq job orchestration. Use when wiring event-driven business logic, building webhook consumers, or replacing ActiveSupport callback chains.
tools
Cross-cutting Spree development patterns — the customization preference hierarchy (Events > Webhooks > Dependencies > Decorators), `Spree::Dependencies` service-object swapping, the `_decorator.rb` + `prepend` + `self.prepended` idiom, idempotent subscribers and webhook receivers, multi-store scoping discipline, prefixed IDs, calculator polymorphism (shipping/promotion/tax share the base), service-object composition with `dry-monads` or simple results, why to avoid `class_eval` reopening and Deface, and Spree-on-Rails idioms (Hotwire/Turbo Stimulus, ActiveStorage, Action Cable, Sidekiq). Use when designing the architecture of a Spree extension or solving cross-cutting concerns.