mit einem Klick
autumn-best-practices
// Skill for integrating Autumn - the billing and entitlements layer over Stripe.
// Skill for integrating Autumn - the billing and entitlements layer over Stripe.
A brief description of what this skill does
Iterativer Plan-Review-Loop mit OpenAI Codex als zweiter Meinung. Use when the user runs /pair-review, asks for cross-model verification of a plan file in ~/.claude/plans/, or — most importantly — before calling ExitPlanMode in plan mode to validate the proposed plan with adversarial review.
Fetch PR review comments, verify each against real code/docs, fix valid issues, commit and push
This skill encodes Emil Kowalski's philosophy on UI polish, component design, animation decisions, and the invisible details that make software feel great.
Canonical Convex backend coding patterns — validators, function registration, queries, mutations, actions, schemas, pagination, cron jobs, file storage, and Better Auth integration. Use when writing or reviewing any Convex backend code.
Workflow for generating form JSON and using the Svelte Form Builder (svelte-form-builder.vercel.app) to scaffold SvelteKit remote function forms with Valibot validation. Use when creating forms via the form builder.
| name | autumn-best-practices |
| description | Skill for integrating Autumn - the billing and entitlements layer over Stripe. |
Always consult docs.useautumn.com for code examples and latest API.
Autumn is a TypeScript-first billing SDK supporting subscriptions, usage-based pricing, credits, trials, and more via Stripe.
AUTUMN_SECRET_KEY - API key (required). Get one at app.useautumn.comnpm install autumn-js # Node.js
pip install autumn-py # Python
| Method | Purpose |
|---|---|
customers.create | Create or get customer (idempotent) |
checkout | Get Stripe URL or payment preview |
attach | Confirm purchase (card on file) |
cancel | Cancel subscription |
check | Verify feature access |
track | Record usage |
products.list | Get products with billing scenarios |
| Option | Notes |
|---|---|
secretKey | Required. From env AUTUMN_SECRET_KEY |
baseURL | Optional. Defaults to https://api.useautumn.com |
Always follow this order for protected actions:
const { data } = await autumn.check({ customer_id, feature_id: 'api_calls' });
if (!data.allowed) return { error: 'Limit reached' };
const result = await doWork();
await autumn.track({ customer_id, feature_id: 'api_calls', value: 1 });
return result;
const { data } = await autumn.checkout({ customer_id, product_id: 'pro' });
if (data.url) return redirect(data.url); // New customer → Stripe
// Returning customer → show confirmation, then:
await autumn.attach({ customer_id, product_id: 'pro' });
Use products.list to get scenarios. Don't build custom logic.
| Scenario | Meaning |
|---|---|
new | Not subscribed |
active | Currently on plan |
scheduled | Scheduled for future |
upgrade | Higher tier available |
downgrade | Lower tier available |
renew | Cancelled, can reactivate |
| Type | Behavior |
|---|---|
boolean | Access granted or denied |
metered | Usage tracked against limit |
credit_system | Pool for multiple features |
| Hook | Purpose |
|---|---|
useCustomer | Get customer, checkout, attach, check |
usePricingTable | Get products with scenarios |
import { AutumnProvider } from 'autumn-js/react';
<AutumnProvider>{children}</AutumnProvider>;
| Framework | Import |
|---|---|
| Next.js | autumn-js/next |
| React Router | autumn-js/react-router |
| Hono | autumn-js/hono |
| Express | autumn-js/express |
| Fastify | autumn-js/fastify |
| Generic | autumn-js/backend |
data.url, not data.checkout_urlattach({ product_id: "free" }) over cancel()customers.create returns existing customer if ID exists