convex-create-componen…
Create reusable Convex components with clear boundaries and a small app-facing API.
Diagnose and fix performance problems in Convex applications, one problem class at a time.
$ npx -y skills add get-convex/convex-backend --skill convex-performance-audit --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/convex-performance-auditContext preview
The summary Claude sees to decide when to auto-load this skill.
Diagnose and fix performance problems in Convex applications, one problem class at a time.
name: convex-performance-audit description: Audits and optimizes Convex application performance across hot-path reads, write contention, subscription cost, and function limits. Use this skill when a Convex feature is slow or expensive, npx convex insights shows high bytes or documents read, OCC conflict errors or mutation retries appear, subscriptions or UI updates are costly, functions hit execution or transaction limits, or the user mentions performance, latency, read amplification, or invalidation problems in a Convex app.
Diagnose and fix performance problems in Convex applications, one problem class at a time.
OCC conflicts
do
problem
signals are weak
migration-heavy rollouts unless there is a measured signal, a clearly unbounded path, or a known hot read/write path
structural work just because a pattern is not ideal at large scale
Start with the strongest signal available:
1. If deployment Health insights are already available from the user or the current context, treat them as a first-class source of performance signals. 2. If CLI insights are available, run `npx convex insights --details`. Use `--prod`, `--preview-name`, or `--deployment-name` when needed.
`npx -y convex@latest insights --details` before giving up. 3. If the repo already uses `convex-doctor`, you may treat its findings as hints. Do not require it, and do not treat it as the source of truth. 4. If runtime signals are unavailable, audit from code anyway, but keep the guardrails above in mind. Lack of insights is not proof of health, but it is also not proof that a large refactor is warranted.
After gathering signals, identify the problem class and read the matching reference file.
| Signal | Reference | | -------------------------------------------------------------- | ----------------------------------------- | | High bytes or documents read, JS filtering, unnecessary joins | `references/hot-path-rules.md` | | OCC conflict errors, write contention, mutation retries | `references/occ-conflicts.md` | | High subscription count, slow UI updates, excessive re-renders | `references/subscription-cost.md` | | Function timeouts, transaction size errors, large payloads | `references/function-budget.md` | | General "it's slow" with no specific signal | Start with `references/hot-path-rules.md` |
Multiple problem classes can overlap. Read the most relevant reference first, then check the others if symptoms remain.
If the likely fix is invasive, cross-cutting, or migration-heavy, stop and present options before editing.
Examples:
rollout
When correctness depends on handling old and new states during a rollout, consult `skills/convex-migration-helper/SKILL.md` for the migration workflow.
Pick one concrete user flow from the actual project. Look at the codebase, client pages, and API surface to find the flow that matches the symptom.
Write down:
For each function in the path:
1. Trace every `ctx.db.get()` and `ctx.db.query()` 2. Trace every `ctx.db.patch()`, `ctx.db.replace()`, and `ctx.db.insert()` 3. Note foreign-key lookups, JS-side filtering, and full-document reads 4. Identify all sibling functions touching the same tables 5. Identify reactive stats, aggregates, or widgets rendered on the same page
In Convex, every extra read increases transaction work, and every write can invalidate reactive subscribers. Treat read amplification and invalidation amplification as first-class problems.
Read the reference file matching your problem class. Each reference includes specific patterns, code examples, and a recommended fix order.
Do not stop at the single function named by an insight. Trace sibling readers and writers touching the same tables.
When one function touching a table has a performance bug, audit sibling functions for the same pattern.
After finding one problem, inspect both sibling readers and sibling writers for the same table family, including companion digest or summary tables.
Examples:
list queries for that table
Repo: get-convex/convex-backend
Create reusable Convex components with clear boundaries and a small app-facing API.
Safely migrate Convex schemas and data when making breaking changes.
Implement secure authentication in Convex with user management and access control.