From pricing-models
Use when choosing a pricing model for a SaaS product — metered (pay per use), credits (block when exhausted), balance (prepaid spend), seats (per-user), or boolean (feature flags). Covers decision frameworks, implementation patterns, and when to use each model.
How this skill is triggered — by the user, by Claude, or both
Slash command
/pricing-models:pricing-modelsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
| Question | Metered | Credits | Balance | Seats |
| Question | Metered | Credits | Balance | Seats |
|---|---|---|---|---|
| Is usage predictable? | No | Somewhat | Somewhat | Yes |
| Need hard limits? | No | Yes | Optional | N/A |
| Per-user value? | No | No | No | Yes |
| Multi-feature spend? | No | No | Yes | No |
| Sub-cent pricing? | Yes | No | Yes | No |
| Customer wants cost control? | Low | High | Medium | High |
| Model | Charges When | Blocks on Limit | Best For |
|---|---|---|---|
| Metered | Period end (true-up) | Never | API calls, bandwidth, storage |
| Credits | Upfront (blocks) | Yes, hard stop | Image generation, exports, compute jobs |
| Balance | Real-time deduction | Configurable | AI token usage, multi-feature platforms |
| Seats | Period start (advance) + true-up | N/A | Team tools, per-user licenses |
| Boolean | Included in plan base | N/A | Feature flags, plan differentiation |
import { Commet } from "@commet/node";
const commet = new Commet({ apiKey: process.env.COMMET_API_KEY! });
await commet.usage.track({
customerId: "user_123",
feature: "api_calls",
value: 1,
idempotencyKey: "req_abc123",
});
const { data } = await commet.featureAccess.canUse({
code: "image_generations",
customerId: "user_123",
});
if (!data.allowed) {
// Customer exhausted credits -- prompt to buy a credit pack
const { data: portalData } = await commet.portal.getUrl({ customerId: "user_123" });
return redirect(portalData.portalUrl);
}
await commet.usage.track({
customerId: "user_123",
feature: "image_generations",
value: 1,
});
import { tracked } from "@commet/ai-sdk";
import { anthropic } from "@ai-sdk/anthropic";
import { generateText } from "ai";
const result = await generateText({
model: tracked(anthropic("claude-sonnet-4-20250514"), {
commet,
feature: "ai_generation",
customerId: "user_123",
}),
prompt: "Explain quantum computing",
});
// Tokens tracked, cost calculated, balance deducted automatically.
await commet.seats.add({
customerId: "org_456",
featureCode: "editor",
count: 3,
});
const { data } = await commet.seats.getBalance({
customerId: "org_456",
featureCode: "editor",
});
// data.current = 3
const { data } = await commet.featureAccess.get({
code: "custom_branding",
customerId: "user_123",
});
if (!data.allowed) {
// Feature not included in their plan
}
| Need | Reference |
|---|---|
| Choosing between models | choosing-a-model.md -- Decision framework, real-world examples |
| Metered pricing | metered.md -- Pay-per-use, overage, included amounts |
| Credit-based pricing | credits.md -- Block purchases, hard limits, credit packs |
| Balance / prepaid | balance.md -- Prepaid spend, AI billing, top-ups |
| Seat-based pricing | seats.md -- Per-user, advance + true-up, seat features |
| Combining models | hybrid-models.md -- Base + usage, seats + metered, addons |
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub commet-labs/pricing-models --plugin pricing-models