convex-cost — Claude Code skill: what it does, how to install
Analyzes Convex deployment spend, ranks functions driving read costs, and projects growth curves. Points out the cheapest code fix for each bottleneck.
npx skills add convex/agent-skills --skill convex-cost -a claude-codeWhat convex-cost does
The skill connects through the official Convex MCP to gather concrete spend evidence. It pulls bytes-read and documents-read events from insights and checks table row bounds via tables. Total cost is driven by data read per call multiplied by call volume. Live traffic is optional. When an app has no users yet, the tool evaluates raw query shapes to catch unbounded .collect() scans early.
It reports growth curves rather than guessing exact dollar totals, since Convex pricing depends on your specific plan. Unindexed table scans scale linearly with data accumulation, while queries using .take(n) over indexes remain flat. For each bottleneck, it suggests concrete fixes such as .withIndex, pagination, or aggregate components, then hands off the refactor to convex-advisor or convex-expert.
The insights feature requires cloud user authentication on dev or prod deployments and does not support previews. The skill also enforces the confirm-cost rule: before initiating any metered action like domain provisioning or plan changes, the agent must state the exact price and billing frequency to get your explicit approval.
What it helps with
- rank Convex functions by read volume multiplied by call counts
- project database spend curves as table data accumulates
- replace linear full-table scans with indexed lookups
- prevent automated cloud charges without explicit confirmation
Example prompts for the agent
- Analyze our Convex deployment spend and rank the top cost drivers
- Check our query shapes and project how database costs will scale
- Inspect dev insights to find the cheapest fixes for heavy read queries
How to install convex-cost
1Skills CLI (Vercel)
npx skills add convex/agent-skills --skill convex-cost -a claude-code2Manually: put the files in place
~/.claude/skills/convex-cost/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/convex-cost/
1Skills CLI (Vercel)
npx skills add convex/agent-skills --skill convex-cost -a codex2Manually: put the files in place
.agents/skills/convex-cost/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add convex/agent-skills --skill convex-cost -a cursor2Manually: put the files in place
.cursor/skills/convex-cost/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install convex/agent-skills convex-cost2Manually: put the files in place
.github/skills/convex-cost/SKILL.md1Skills CLI (Vercel)
npx skills add convex/agent-skills --skill convex-cost -a gemini-cli2Platform CLI
gemini skills install https://github.com/convex/agent-skills --path skills/convex-costManually: put the files in place
.devin/skills/convex-cost/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add convex/agent-skills --skill convex-cost -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 convex-cost
How to install convex-cost in Claude Code?
Run npx skills add convex/agent-skills --skill convex-cost -a claude-code in your terminal.
What does convex-cost do?
It reads deployment telemetry from Convex, attributes data read to specific functions, and highlights scaling curves. It pairs every identified cost driver with the most cost-effective architectural fix.
Does convex-cost support preview deployments?
No, telemetry reading through insights is limited to cloud dev and prod environments with user authentication. If traffic is missing, it evaluates the code structure of your queries instead.
Source text
SKILL.md · Apache-2.0
---
name: convex-cost
description: "Preview Convex spend — rank functions by bytes/documents-read × call-volume from insights, project each cost driver's growth curve, name the cheapest fix; confirm-cost for paid actions."
---
<!-- GENERATED from convex-agents content/capabilities/convex-cost.json — do not edit by hand. -->
# Preview what this app will cost
Cost surprises come from a handful of functions reading far more data than anyone realized — the same read-heavy patterns convex-advisor flags for perf, seen through the money lens. This capability makes spend legible: it reads the deployment's own bytes/documents-read evidence, attributes it to the functions driving it, projects how it grows with traffic, and names the cheapest fix. It also carries the confirm-cost discipline (Supabase's structural consent for paid actions): before anything metered, state the price and get an explicit yes.
## Workflow
1. GUARD: deploy-guard — a cost read is read-only over dev/prod (insights is cloud+user-auth only; not previews). Announce the deployment.
2. GATHER the spend evidence via the official MCP: `insights` for the bytes-read / documents-read events (the direct cost signal — Convex bills on function calls + bandwidth), `tables` for row counts (a table's size bounds its scan cost), `functionSpec` for the surface. If there's no usage/traffic yet, say so and estimate from the query SHAPES instead (a `.collect()` on a table projected to grow is a future cost even with zero traffic today).
3. ATTRIBUTE: rank functions by bytes/documents read per call × observed (or asked-about) call volume — the product is the cost driver, not either alone. A cheap-per-call function called constantly can outweigh an expensive rare one; show both factors.
4. PROJECT: state how the top drivers scale — a full-table `.collect()` grows LINEARLY with the table (cost compounds as data accumulates); an indexed `.take(n)` stays flat. Give the user the shape of the curve ('this is O(table size) per call — fine at 1k rows, a bill at 1M'), not a false-precision dollar figure.
5. NAME THE CHEAPEST FIX per driver — index + `.withIndex` instead of scan, `.paginate`/`.take` instead of `.collect`, an aggregate component for counts, caching a hot read — and emit it as a cost-class finding on the bus (evidence: the insight event + the projected growth) pointing at convex-expert/convex-advisor for the actual change.
6. CONFIRM-COST for paid actions: if the flow includes anything metered (a domain purchase, cloud provisioning, a plan change), STATE the price and recurrence explicitly and get an explicit yes BEFORE proceeding — never let a paid action happen as a side effect (the cost-confirm gate).
7. REPORT: the current cost drivers ranked, each with its evidence + growth shape + fix, and a plain bottom line ('your spend is dominated by messages:list reading the whole table every call; index it and it drops ~100x'). Honest precision: Convex pricing changes and depends on plan — give relative/shape guidance and cite the pricing page for absolute numbers rather than inventing a dollar total.
## Rules
- Cost = data-read-per-call × call-volume — always show both factors; a cheap function called constantly can cost more than an expensive rare one.
- Read the deployment's own insights/bytes-read evidence for spend; with no traffic yet, price the query SHAPES (a scan on a growing table is a future cost).
- Give the growth CURVE, not false-precision dollars: O(table) scans compound as data accumulates; indexed access stays flat. Cite the pricing page for absolute figures.
- Every cost driver names its cheapest fix and emits a cost-class finding on the bus pointing at the fixer (convex-expert/advisor).
- Confirm-cost for any metered/paid action: state the price + recurrence and get an explicit yes BEFORE it happens — never as a side effect.
- Read-only over dev/prod (deploy-guard); insights is cloud+user-auth only. Cost composes convex-advisor's evidence but frames it as money, not latency.
© convex · Apache-2.0 · convex/agent-skills