dist/cursor/a2a-multi-agent/skills/a2a-client/SKILL.md
Build an A2A client — the agent-side code that discovers other agents, sends tasks, handles responses, and manages multi-turn conversations. Use when implementing the client side that delegates work to A2A agents.
npx skillsauth add orcaqubits/agentic-commerce-claude-plugins a2a-clientInstall 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 client-side protocol requirementssite:github.com a2aproject a2a-python client or a2aproject a2a-js client for SDK client classessite:github.com a2aproject a2a-samples client for reference client implementationsAn A2A client is the requesting side that:
/.well-known/agent-card.json)input-required states)1. Discover agent → Fetch Agent Card
2. Check capabilities → Verify the agent can handle the task
3. Authenticate → Satisfy the agent's auth requirements
4. Send message → POST JSON-RPC to agent URL
5. Handle response → Process task result or continue conversation
6. Monitor → Poll, stream, or receive push notifications
Before sending requests, the client must discover the target agent:
{base_url}/.well-known/agent-card.jsonTwo modes:
message/send) — Send a message, wait for the complete responsemessage/stream) — Send a message, receive SSE events as the agent processes{
"jsonrpc": "2.0",
"method": "message/send",
"id": "request-id",
"params": {
"message": {
"role": "user",
"parts": [
{ "kind": "text", "text": "Your task description" }
]
},
"configuration": {
"acceptedOutputModes": ["text/plain", "application/json"]
}
}
}
For continuing a task, include taskId in params.
The client must handle different task states:
tasks/get or use streaming)Sequential delegation: Client sends tasks to agents one at a time, using results from one as input to the next.
Parallel delegation: Client sends tasks to multiple agents concurrently, aggregates results.
Conditional routing: Client reads Agent Cards to decide which agent handles each subtask based on skills.
Fallback: Client tries one agent, falls back to another if the first fails or rejects.
completedFetch the SDK documentation for exact client class names, constructor parameters, request builders, and response types 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.