ap2-agentic-payments/skills/ap2-dev-patterns/SKILL.md
Apply AP2 cross-cutting development patterns — multi-agent payment architecture, UCP integration, x402 crypto payments, testing with mock providers, and production deployment. Use when architecting agentic payment systems or solving cross-cutting payment concerns.
npx skillsauth add orcaqubits/agentic-commerce-claude-plugins ap2-dev-patternsInstall 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://ap2-protocol.org/specification/ for the latest protocol detailshttps://ap2-protocol.org/topics/ap2-and-ucp/ for UCP integration patternshttps://ap2-protocol.org/topics/ap2-and-x402/ for x402 crypto integrationsite:github.com google-agentic-commerce AP2 samples for reference architecturesThe standard AP2 architecture involves four agents communicating via A2A:
┌──────────────────────────────────────────────────┐
│ User │
│ (trusted device surface) │
└──────────┬───────────────────────────────────────┘
│ intent + signatures
┌──────────▼───────────────────────────────────────┐
│ Shopping Agent (SA) │
│ Orchestrator — coordinates the full flow │
└──┬──────────────┬────────────────────────────────┘
│ │
│ A2A │ A2A
│ │
┌──▼──────┐ ┌───▼──────────┐
│ Merchant │ │ Credentials │
│ Agent │ │ Provider │
│ │ │ │
│ catalog │ │ payment │
│ cart │ │ methods │
│ signing │ │ tokenization │
└────┬─────┘ └──────────────┘
│
│ (Merchant → MPP)
│
┌────▼─────────────┐
│ Merchant Payment │
│ Processor (MPP) │
│ │
│ authorization │
│ settlement │
│ Payment Mandate │
│ challenges │
└────────┬──────────┘
│
┌────▼──────────┐
│ Network/Issuer │
│ (Visa, MC, │
│ banks) │
└────────────────┘
Important: The SA communicates with the Merchant and the CP via A2A. The Merchant communicates with the MPP. The SA does not directly communicate with the MPP.
UCP (Universal Commerce Protocol) operationalizes AP2:
checkout_mandate is distinct from (but related to) AP2's Cart Mandate — checkout_mandate is a UCP-specific concept that wraps the commerce checkout authorization, while AP2's Cart Mandate is the cryptographically signed VDC binding user consent to specific transaction terms/complete_checkout API = AP2's payment authorization stepUse UCP when you need the full commerce checkout flow (catalog, cart, checkout, orders) with AP2's payment security.
AP2 supports emerging digital payment methods via x402:
github.com/google-agentic-commerce/a2a-x402Development testing without real money:
AP2 agents can be built with any framework:
The protocol doesn't mandate a specific framework — only A2A compliance.
Shopping Agents can query multiple merchants:
On the V1.x roadmap:
Fetch the latest specification, roadmap, and sample implementations for current capabilities and patterns 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.