Dodo Payments Skills

August 8, 2026 · View on GitHub

Official AI agent skills from Dodo Payments for integrating payments, subscriptions, billing, and more into your applications.

Installation

Skills CLI (Any Agent)

Install skills using the skills CLI:

npx skills add dodopayments/skills

Or install individual skills:

npx skills add dodopayments/skills/dodo-payments/dodo-best-practices
npx skills add dodopayments/skills/dodo-payments/webhook-integration
npx skills add dodopayments/skills/dodo-payments/subscription-integration

Claude Code

Add the marketplace:

/plugin marketplace add dodopayments/skills

Install a plugin:

/plugin install dodo-best-practices
/plugin install webhook-integration
/plugin install subscription-integration

OpenCode

Skills are automatically available when configured in your OpenCode settings.

Available Skills

Getting started

SkillDescription
dodo-best-practicesOrientation guide: SDKs, environments, auth, core concepts, and the canonical integration path
framework-adaptersOfficial adapter packages for Next.js, Express, Hono, Astro, Remix, SvelteKit, Nuxt, Fastify, TanStack, Bun, and Convex
testing-and-go-liveTest mode, test payment methods, webhook testing, and the production launch checklist

Accepting payments

SkillDescription
checkout-integrationCreating checkout sessions, payment links, and overlay checkout
subscription-integrationSubscription lifecycle, trials, plan changes, proration, and on-demand charging
mobile-checkoutIn-app checkout for React Native, Flutter, iOS, and Android
webhook-integrationReceiving and verifying webhooks with the Standard Webhooks specification

Billing models

SkillDescription
credit-based-billingCredit entitlements, balances, ledger, rollover, overage, and meter-based deduction
usage-based-billingMetered billing with meters, event ingestion, and per-unit pricing
license-keysLicense key activation, validation, and instance management

Catalog and pricing

SkillDescription
product-catalog-managementProducts, pricing, add-ons, collections, images, and digital product delivery
discounts-and-promotionsDiscount codes, eligibility rules, stacking, and subscription-cycle limits
localized-pricingLocalized pricing, adaptive currency, and purchasing power parity

Customers and operations

SkillDescription
customer-managementCustomers, the self-service portal, payment methods, and wallets
refunds-and-disputesIssuing refunds, handling disputes and chargebacks, reconciling access

UI and integrations

SkillDescription
billing-sdkBillingSDK React components for pricing tables and billing UI
better-auth-integrationThe @dodopayments/better-auth plugin for customer sync, checkout, and portal

What are Skills?

Skills are reusable capabilities for AI agents. They provide procedural knowledge that helps agents accomplish specific tasks more effectively. Think of them as plugins that enhance what your AI agent can do when working with Dodo Payments.

Contributing

Skills are pasted verbatim into an agent's context and reproduced as-is, so a wrong field name propagates exactly as reliably as correct code — and usually fails silently rather than loudly. Four checks run in CI and should be run locally before opening a PR:

npm install
npm run check      # validate + typecheck (TypeScript, Go, Python)

npm run validate enforces structural rules: real API hostnames, correct dodo_test_/dodo_live_ key formats, no hand-rolled webhook HMAC, no deprecated SDK calls, no type suppression, and agreement between each skill's directory name, its frontmatter, marketplace.json, and the README table.

npm run typecheck extracts every TypeScript block from every SKILL.md and compiles it against the real dodopayments types — plus the @dodopayments/* framework adapters, so adapter examples are checked rather than degrading to any. This is what catches wrong field and parameter names.

npm run typecheck:go and npm run typecheck:python do the same for Go and Python examples, using go build against dodopayments-go and pyright against the real Python SDK. The Python check creates a virtualenv on first run and reuses it afterwards.

Blocks that are deliberate counter-examples are skipped, but only when explicitly labelled — a bolded **Wrong:**-style marker, or an <!-- typecheck: skip --> comment. Inferring "this is meant to be broken" from surrounding prose silently removed coverage from correct blocks, so opting out is now deliberate and greppable.

When you add or change an example, prefer fixing the field name over casting to any — the point of the check is that the published example actually compiles.

Resources

License

MIT