subscription
View and change the user's subscription plan or credit balance in a market.
Skill by omnimatch
Chalk Labs
Need help deploying subscription?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/omnimatch-subscription
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/subscription
What's inside
- Skill name
subscription- Description
- View and change the user's subscription plan or credit balance in a market. Use the Omnimatch MCP codemode tool to list plans, switch plans via Stripe Billing Portal, check the owner's credit balance, list one-time credit packs, and start a Stripe checkout to top up credits. Call codemode with code that invokes codemode.list_plans({ marketId }), codemode.change_plan({ marketId, targetPlanId }), codemode.get_my_credit_balance({ marketId }), codemode.list_credit_packs({ marketId }), and codemode.topup_credits({ marketId, priceId }). Use when the user asks about their plan, pricing, upgrading, downgrading, cancelling, their credit balance, or buying more credits. When talking to the user, always use plan name and pack name with plain pricing—never show Stripe price ids.
- License
- MIT
- Instructions
- 78 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Subscription
Use this skill when the user asks about their **subscription plan**, **pricing**, **features**, **upgrading**, **downgrading**, **cancelling**, their **credit balance**, or **buying more credits**. The Omnimatch MCP server exposes a single **codemode** tool ([Cloudflare Codemode](https://developers.cloudflare.com/agents/api-reference/codemode/)). Call it with a `code` parameter (async arrow function body) that runs the appropriate `codemode.<tool>(args)` calls.
Both plan changes and credit top-ups go through Stripe in the user's browser — `change_plan` returns a **Billing Portal** URL, and `topup_credits` returns a one-time **Checkout Session** URL. Stripe is the confirmation surface for both; do not add our own confirmation prompt.
## When to use
- User asks **what plans are there?** / **show me my plan options** → `codemode.list_plans({ marketId })`.
- User asks **what plan am I on?** → `codemode.list_plans({ marketId })` and look for `isCurrentPlan: true`.
- User asks **how much does X cost?** / **what features do I get with the Pro plan?** → `codemode.list_plans({ marketId })` and read the `price`, `features`, `limits` for that plan.
- User asks **upgrade to Pro** / **downgrade to free** / **cancel my subscription** → `codemode.list_plans({ marketId })` to find the targetPlanId, then `codemode.change_plan({ marketId, targetPlanId })` to get the Stripe portal link, and hand the URL to the user.
- User asks **how many credits do I have?** / **what's my balance?** → `codemode.get_my_credit_balance({ marketId })`. For markets that don't charge credits, the tool returns `creditsEnabled: false`—say so briefly.
- User asks **what credit packs can I buy?** / **how do I top up?** → `codemode.list_credit_packs({ marketId })`. Present packs by name and credit amount.
- User asks **buy {pack name}** / **top me up** → `codemode.topup_credits({ marketId, priceId })` and hand the user the `checkoutUrl`.
## Workflow
1. Pick the marketId. If you don't have one, call `codemode.list_my_markets()` and ask the user (via AskUserQuestion / chat) which market.
2. `codemode.list_plans({ marketId })` returns:
```
{
plans: [
{
planId: "free" | "price_xxxx",
name: "Free" | "Pro" | ...,
description: "...",
isFree: true | false,
isCurrentPlan: true | false,
price: { amount, currency } | null,
freeTrial: { days } | null,
features: ["..."],
ctaText, badge, footnote,
limits: { ... }
}
],
message: "..."
}
```
Present plans **by name** (e.g. "Free", "Pro", "Enterprise"). Convert `price.amount` from the smallest unit to a normal currency string (e.g. `1999` `usd` → `$19.99`). Mention the current plan with a note like "(your current plan)".
3. To change plans, find the `planId` for the chosen plan and call:
```
codemode.change_plan({ marketId, targetPlanId })
```
Returns `{ billingPortalUrl, currentPlanId, targetPlanId, message }`.
4. Hand the `billingPortalUrl` to the user. Tell them to open it in a browser and confirm there. Stripe handles upgrades, downgrades, and cancellation in one portal UI.
## Credit balance and top-ups
Some markets charge credits per match-view, manual search, or re-evaluation; a plan grants a monthly subscription allotment, and owners can buy one-time top-up packs that don't expire.
1. **Check balance** — `codemode.get_my_credit_balance({ marketId })`:
```
{ creditsEnabled: false, message }
// or
{ creditsEnabled: true, subscriptionBalance, topupBalance, nextFreeGrantAt }
```
`subscriptionBalance` resets monthly from the plan; `topupBalance` is purchased credits that never expire. Subscription credits are spent before top-ups. If `creditsEnabled: false`, tell the user briefly that this market doesn't charge credits and stop.
2. **List packs** — `codemode.list_credit_packs({ marketId })`:
```
{
creditsEnabled: true,
packs: [{ priceId, name, creditsAmount, price: { amount, currency } | null }]
}
```
Convert `price.amount` from the smallest unit to a normal currency string. Always present packs by **name and creditsAmount**, never the priceId.
3. **Buy a pack** — `codemode.topup_credits({ marketId, priceId })` returns `{ checkoutUrl, packName, creditsAmount, message }`. Hand `checkoutUrl` to the user; once they pay, Stripe redirects back and the app credits their `topupBalance` automatically. Stripe is the confirmation surface — don't add our own confirmation prompt.
## Important
- **Never expose Stripe price ids in user-facing copy.** Use plan names ("Pro", "Free") and pack names instead.
- The `planId` is what you pass to `change_plan` — for free, it's the literal string `"free"`; for paid, it's the Stripe price id from `list_plans`. The `priceId` you pass to `topup_credits` is the Stripe price id from `list_credit_packs`. The user only sees plan/pack names.
- Live prices come from Stripe; small differences may exist if Stripe is unreachable. If `price` is null for a paid plan or pack, say so and recommend retrying or checking the billing portal.
- Don't try to "upgrade silently" — always present the plan or pack and let the user open the Stripe surface.From omnimatch/omnimatch-mcp, MIT.
More from omnimatch/omnimatch-mcp
- 0.474score
account-info
omnimatch
Read-only account information.
SkillCFreshness: CClaude Code +9 - 0.474score
level-up
omnimatch
Level up a profile by finding the entity to improve, reviewing its inboxes, and either gathering more info (if no decent matches), clarifying uncertainties…
SkillCFreshness: CClaude Code +9 - 0.470score
manage-account
omnimatch
Manage the user's Omnimatch account.
SkillCFreshness: CClaude Code +9 - 0.251score
account-briefing
omnimatch
No description from the publisher yet.
SkillCFreshness: CClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Apr 27, 2026 (6 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/omnimatch/omnimatch-mcp
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from omnimatch
- 0.474score
account-info
omnimatch
Read-only account information.
SkillCFreshness: CClaude Code +9 - 0.474score
level-up
omnimatch
Level up a profile by finding the entity to improve, reviewing its inboxes, and either gathering more info (if no decent matches), clarifying uncertainties…
SkillCFreshness: CClaude Code +9 - 0.470score
manage-account
omnimatch
Manage the user's Omnimatch account.
SkillCFreshness: CClaude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get subscription running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
subscription skill. Agent Mart. https://agentmart.dev/skills/omnimatch-subscription (last updated 2026-10-24)