revenuecat-cli — Claude Code skill: RevenueCat from the terminal
A skill that teaches your agent to drive RevenueCat with the official rc CLI: projects, products, paywalls, image and font uploads. Useful when MCP lacks the operation.
npx skills add RevenueCat/ai-toolkit --skill revenuecat-cli -a claude-codeWhat revenuecat-cli does
The skill documents running RevenueCat from a shell through the official rc command line interface. It covers most of what the RevenueCat MCP server does: projects, apps, products, entitlements, offerings, paywalls, charts, store state. The CLI adds paywall generate and edit, plus uploads of paywall images to the Media Gallery (rc media-assets upload) and custom fonts (rc fonts upload). MCP has no upload tools for those.
Before the first command the skill has you check the install (rc --version) and the login (rc auth status --json). The CLI keeps its own credential, separate from the MCP server, so the user runs rc auth login themselves — it opens a browser for OAuth. In CI you set RC_API_KEY or pass --api-key instead. Installing via brew or npm install -g changes the user's machine, so ask first; npx @revenuecat/cli needs no install.
The CLI authenticates with a RevenueCat secret key (sk_...), which is correct for a server-side tool. Public SDK keys (appl_/goog_/amzn_) belong in client app code, and a secret key never goes into an app or into a chat message. Don't guess flags — ask the binary. rc commands --schemas --json returns every command's flags, args and examples in one call. Images run up to 2 MiB, fonts up to 5 MiB, and the file has to exist on disk first.
What it helps with
- upload a paywall image to the Media Gallery without the dashboard
- push a custom paywall font from the terminal
- check product and entitlement state in CI
- generate or edit a paywall with
rc paywalls - find the exact flags for a command without reading docs
Example prompts for the agent
- Check whether
rcis installed and print the version - Upload
paywall-hero.pngto the Media Gallery withrc media-assets upload - List the project's products as JSON
How to install revenuecat-cli
1Skills CLI (Vercel)
npx skills add RevenueCat/ai-toolkit --skill revenuecat-cli -a claude-code2Manually: put the files in place
~/.claude/skills/revenuecat-cli/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/revenuecat-cli/
1Skills CLI (Vercel)
npx skills add RevenueCat/ai-toolkit --skill revenuecat-cli -a codex2Manually: put the files in place
.agents/skills/revenuecat-cli/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add RevenueCat/ai-toolkit --skill revenuecat-cli -a cursor2Manually: put the files in place
.cursor/skills/revenuecat-cli/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install RevenueCat/ai-toolkit revenuecat-cli2Manually: put the files in place
.github/skills/revenuecat-cli/SKILL.md1Skills CLI (Vercel)
npx skills add RevenueCat/ai-toolkit --skill revenuecat-cli -a gemini-cli2Platform CLI
gemini skills install https://github.com/RevenueCat/ai-toolkit --path revenuecat/skills/revenuecat-cliManually: put the files in place
.devin/skills/revenuecat-cli/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add RevenueCat/ai-toolkit --skill revenuecat-cli -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about revenuecat-cli
How do I install revenuecat-cli in Claude?
Run npx skills add RevenueCat/ai-toolkit --skill revenuecat-cli -a claude-code. The skill then lives at ~/.claude/skills/revenuecat-cli/SKILL.md.
What does revenuecat-cli do?
It covers RevenueCat work through the official rc CLI: install, authentication, command discovery and output conventions. It also handles paywall image and font uploads, which the MCP server cannot do.
How is the CLI different from the RevenueCat MCP server?
The two overlap on most operations. The CLI can generate and edit paywalls and upload images and fonts; the MCP server has SDK feature-gate and experiment tools the CLI lacks.
Source text
SKILL.md · MIT
---
name: revenuecat-cli
description: Drive RevenueCat from the terminal with the `rc` CLI, an alternative to the RevenueCat MCP server for humans, CI, and agents. Covers install, authentication, command discovery, and output conventions. Use for uploading paywall images to the Media Gallery (`rc media-assets upload`) or custom paywall fonts (`rc fonts upload`) — MCP has no upload tools for these. Referenced by the other RevenueCat skills whenever they offer a CLI path.
---
# revenuecat-cli: driving RevenueCat from the terminal
`rc` is the official RevenueCat command line interface. It covers most of the same project, app, product, entitlement, offering, paywall, chart, and store-state operations as the RevenueCat MCP server (the CLI adds paywall generate/edit and paywall image/font upload; the MCP server has some SDK feature-gate and experiment tools the CLI does not). Use whichever surface is available; this skill is the reference for the CLI path.
## Before the first command
The CLI needs a shell. Without one (for example in a chat app with only the MCP server), use MCP, or tell the user which `rc` command to run or which dashboard page to use.
1. **Check it is installed:** `rc --version`. If that fails, pick one:
- Run without installing: `npx @revenuecat/cli <command>` everywhere `rc` appears below. Needs Node. Best for CI and agent sandboxes.
- Install on macOS/Linux: `brew install RevenueCat/tap/rc`.
- Install with npm: `npm install -g @revenuecat/cli`.
Installing changes the user's machine, so ask before running `brew` or `npm install -g`. `npx` needs no permission beyond running the command.
2. **Check it is logged in:** `rc auth status --json`. The CLI does not share the MCP server's login. If no credential is active, ask the user to run `rc auth login` themselves: it opens a browser for OAuth. In CI, set `RC_API_KEY` or pass `--api-key`.
3. **Check the project:** pass `--project-id <id>`, or have the user set a default with `rc projects use`.
The CLI authenticates with a RevenueCat **secret** key (`sk_...`); that is correct because the CLI is a server-side tool. This is not the same as the **public** SDK keys (`appl_`/`goog_`/`amzn_`) you fetch for client app code. Never put a secret key in an app, and never ask the user to paste one into the chat.
## Discover the surface
The CLI is self-describing. Don't guess a command or flag, ask the binary:
- `rc commands --json` lists the full command tree. Capability IDs appear in colon form (`apps:create`, `products:store:plan`).
- `rc commands --schemas --json` returns every command's flags, args, and examples in one call. This is the most reliable way for an agent to discover per-command detail.
- `rc schema <command> --json` returns detail for a single command, but the command must be **space-separated tokens** (`rc schema apps create`), not the colon form from `rc commands`. `rc schema apps:create` silently returns the root schema, so when in doubt use `rc commands --schemas`.
- `rc --help` and `rc <noun> --help` give human-readable help.
## Output conventions
- `--json` gives stable, machine-readable output. Data goes to stdout, progress and chatter to stderr.
- The envelope is `{ "data": ... }`, but the shape under `data` varies by command: lists are usually `data.items[]`, though some commands use other keys (charts use `data.names[]`). Inspect the schema or the response rather than assuming `data.items`.
- `--no-input` never prompts, it fails instead. Use it in scripts, CI, and agents.
- `--yes` / `-y` skips confirmation prompts on mutating commands.
- `--project-id <id>` selects the project (or set a default with `rc projects use`). Pass it explicitly in scripts.
- Exit codes: `0` success, `1` error, `2` bad usage, `4` auth, `5` not found, `6` rate limited.
## Common operations
Look up exact flags with `rc commands --schemas --json` (or `rc schema <space-separated command>`). The common nouns:
- **Projects and apps**: `rc projects list|create|use`, `rc apps list|create|keys`
- **Catalog**: `rc products ...`, `rc entitlements ...`, `rc offerings ...`, `rc packages ...`
- **Store credentials and state**: `rc setup apple|google`, `rc products store plan|apply|sync`
- **Data**: `rc charts list|show`, `rc customers ...`
- **Paywalls**: `rc paywalls generate|edit|publish` (dashboard design/audit playbook: `revenuecat-paywall-design`)
- **Paywall media and fonts**: `rc media-assets list|upload <file>`, `rc fonts list|upload <file>`. MCP cannot upload these; do not use the dashboard in a browser.
- **Dashboard**: `rc open [section] [id] --print` (resource URLs: `revenuecat-dashboard-links`)
Images: jpg/png/webp/avif/heic/heif, up to 2 MiB. Fonts: ttf/otf, up to 5 MiB. Write or generate the file on disk first, then pass that path. Confirm flags with `rc schema media-assets upload` / `rc schema fonts upload`.
Prefer the specific command. Drop to `rc api <METHOD> <path>` only for endpoints not yet in the CLI surface.
© RevenueCat · MIT · RevenueCat/ai-toolkit