Convex best practices: production patterns and the ESLint plugin rules
Validators, indexed reads, idempotent mutations, OCC conflict avoidance, pagination, and the @convex-dev/eslint-plugin setup
- What
- Validators, indexed reads, idempotent mutations, OCC conflict avoidance, pagination, and the @convex-dev/eslint-plugin setup
- Cost
- Free
- Needs
- a Convex project (account and backend set up) to review or build against; Node.js and ESLint for the lint plugin — the skill is patterns the agent applies, not software to install
- Install
- Copy the installer prompt below into your Muse — your agent does the rest.
Curated by Skill Harbor — @waynesutton's Convex production playbook: the patterns that keep a Convex app fast and correct in production. The rules that matter most: validators on every function (args and returns, with returns: v.null() when nothing comes back); indexes, not filters — every table read goes through withIndex; idempotent mutations that return early when the doc is already in the target state; patch without reading first; Promise.all for independent writes; schedule internal.* only; thin wrappers with business logic in plain helpers that take ctx; ConvexError for anything a client should read. Plus a deep dive on optimistic concurrency control (where write conflicts come from — shared docs, wide reads, fast repeat calls — and how idempotent design avoids them), event records instead of counters (or the sharded-counter/aggregate component at scale), dedup windows for heartbeats, pagination over .collect(), no Date.now() in queries, and the @convex-dev/eslint-plugin (install command and config) to catch old patterns at lint time. Includes a worked example (tasks table with by_user_and_status index) and a common-mistakes table. Honest caveats: Convex-specific — only useful if you build on Convex (account + project required for real use); patterns only, the agent still needs a Convex project to apply them. Apache-2.0 licensed. Skill Harbor never reviews the code, review it yourself before use. Discovered via skills.sh.
Version:
Install
Prerequisites: a Convex project (account and backend set up) to review or build against; Node.js and ESLint for the lint plugin — the skill is patterns the agent applies, not software to install Install "Convex best practices: production patterns and the ESLint plugin rules" for me. It gives my agent @waynesutton's Convex production playbook: validators on every function, indexed reads only (withIndex, never .filter), idempotent mutations with early returns, patch-without-read, Promise.all for independent writes, event records instead of counters, pagination over .collect(), no Date.now() in queries, internal.* scheduling, ConvexError for client messages — plus an OCC-conflict deep dive and the @convex-dev/eslint-plugin setup to catch old patterns at lint time. Apache-2.0 licensed. Repository: https://github.com/waynesutton/builder-skills/blob/main/skills/convex-best-practices/SKILL.md 1. Fetch the SKILL.md file (and any helper files) from the repository path into a temporary folder and summarize what it does in one or two sentences. 2. Safety check: review the SKILL.md and scripts for anything suspicious (unexpected network calls, shell commands, credential harvesting). This repo should contain zero secrets in code, credentials only via the secure vault, allowed hosts declared in the SKILL.md. Verify that holds here; STOP on any red flag and tell me. 3. Install it as a skill: copy SKILL.md and its helper files into the agent's skills directory, in a folder named "convex-best-practices". 4. Verify with no network calls: frontmatter valid, files in place. 5. Report what was installed, where, and what I still need to do myself (e.g. point the agent at my Convex project; install @convex-dev/eslint-plugin and run npm run lint). GitHub is optional: if I have a GitHub account or the gh CLI, you may use it; otherwise public access is fine. Never require it unless it's in the prerequisites above. Rules: don't touch anything outside the temp folder and the install target. If anything looks off, stop and ask me.
Questions
How do I install a build?
Every product page includes a copy-paste install prompt. Paste it into your Muse and it sets the build up for you — no manual configuration.
Where does my money go?
Straight to the seller. Skill Harbor never processes payments: checkout happens on the seller’s own page, usually Stripe.
What does the ✓ next to a creator’s name mean?
It means we confirmed the identity of the person behind the listing. It says nothing about the code itself — always check a build before installing it.