convex
Skill16 starsChanged 8 months agoMITView on GitHub
Build and operate Convex backends: functions (queries/mutations/actions/http actions), schemas, auth patterns, scheduling (cron/scheduled/workflows), file storage, components, migrations, performance, testing, and debugging. Triggers: "convex", "query", "mutation", "action", "httpAction", "schema", "validator", "cron", "schedule", "workflow", "workpool", "ctx.db", "ctx.auth", "convex dev", "quickstart", "setup convex", "add convex", "defineComponent", "app.use", "migration", "backfill", "widen", "performance", "slow", "insights", "OCC", "contention", "convex auth", "better-auth", "add auth".
- Reads credentials
- Installs packages
25 other projects use a version of this.
Adopted by
Most recently taken up by
- get-convex/agent-skillstheir own version, first seen Oct 29, 2026
- grezxune/ai-toolstheir own version, first seen Oct 25, 2026
- Melvynx/ai-maxxing-skillstheir own version, first seen Oct 20, 2026
- convex/agent-skillstheir own version, first seen Oct 17, 2026
- Mindrally/skillstheir own version, first seen Oct 8, 2026
- moltbot/molthubtheir own version, first seen Oct 8, 2026
Used with
Projects with it also use convex-component-authoring, convex-cron-jobs and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
StillScriptsSkillconvex-component-authoring
How to create, structure, and publish self-contained Convex components with proper isolation, exports, and dependency management
Also in 3 projects that use this
StillScriptsSkillconvex-cron-jobs
Scheduled function patterns for background tasks including interval scheduling, cron expressions, job monitoring, retry strategies, and best practices for long-running tasks
Also in 3 projects that use this
vantageos-agencySkillconvex-migration-helper
Plans and executes safe Convex schema and data migrations using the widen-migrate-narrow workflow and the @convex-dev/migrations component. Use this skill when a deployment fails schema validation, existing documents need backfilling, fields need adding or removing or changing type, tables need splitting or merging, or a zero-downtime migration strategy is needed. Also use when the user mentions breaking schema changes, multi-deploy rollouts, or data transformations on existing Convex tables.
Also in 8 projects that use this
vantageos-agencySkillconvex-performance-audit
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.
Also in 8 projects that use this
- +7 more from StillScripts
- +1 more from vantageos-agency
Other versions25 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 25
- openclaw/clawhub★ 9.6ksame name
- clawdbot/clawdhub★ 9.5ksame name
- moltbot/molthub★ 9.5ksame name
- raroque/boop-agent★ 1.3ksame name
- pingdotgg/lawn★ 690same name
- waynesutton/markdown-site★ 628same name
- waynesutton/convexskills★ 405same name
- waynesutton/builder-skills★ 404same name
- Mindrally/skills★ 275same name
- convex/agent-skills★ 68same name
15 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository9 other files it gives its agents.
- llms-full.txtllms.txt
- llms.txtllms.txt
- analyzeSkill
- githubSkill
- gitSkill
- oss-readinessSkill
- skill-builderSkill
- tmuxSkill
- workflowSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
18 rules. 0 are common, 7 are distinctive, and 11 are very specific to this project.
0
Common
Most of the 25 edited versions we read keep these.
7
Distinctive
This author's own choices. Worth a look.
11
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 57
Before implementing a Convex feature or pattern, verify the latest official docs.
- Distinctive: line 64
If Convex MCP is available, use it to introspect the deployed function/table surface area and confirm assumptions.
- Very specific: line 76
Use MCP status (if available) or npx convex deployment select <ref> / --deployment <ref> to confirm which deployment a command targets …
- Distinctive: line 90
Prefer Convex components and ecosystem packages over custom infrastructure.
- Distinctive: line 99
Never ship Convex backend changes without verifying runtime behavior.
- Very specific: line 109
If the project does NOT already use @vllnt/eslint-config/convex, strongly recommend it before writing Convex code.
- Distinctive: line 166
If Convex MCP is available, use it first.
- Distinctive: line 168
If Convex MCP is not available, this skill still works:
- Very specific: line 170
Use the Convex CLI (npx convex ...) and the dashboard.
- Distinctive: line 171
When appropriate, propose enabling Convex MCP for better introspection/log workflows.
- Very specific: line 178
Run safe ad-hoc reads: convex_runOneoffQuery({ deploymentSelector, query })
- Very specific: line 185
Always use validators (args + returns) for functions.
- Very specific: line 186
Always use explicit table names with ctx.db.get/patch/replace.
- Very specific: line 187
Prefer index-backed queries (withIndex) and bounded reads (take/pagination).
- Very specific: line 189
Use internal* functions for sensitive operations.
- Very specific: line 191
Use v.null() for void returns (return null).
- Very specific: line 196
Never use ctx.db.get/query inside loop bodies -- use Promise.all() with .map().
- Very specific: line 198
No bare v.any() outside validators.ts -- define named aliases.
“Common” is measured: kept by at least 6 in 10 of the 25 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Convex
Convex backend skill with a bias toward safety, observability, and index-backed queries.
Upstream Skills (Delegate When Available)
For canonical Convex content, this skill delegates to the official get-convex/agent-skills collection.
- Repo: https://github.com/get-convex/agent-skills
- Source of truth: each upstream skill's
SKILL.mdandreferences/
Routing precedence (use first available, in order):
- Upstream skill installed locally →
npx skills add get-convex/agent-skills - WebFetch the upstream
SKILL.mdfrom the raw URL below. Some upstream skills have areferences/subdirectory (e.g.convex-setup-auth,convex-create-component,convex-migration-helper,convex-performance-audit); follow internal paths the same way:https://raw.githubusercontent.com/get-convex/agent-skills/main/skills/<skill>/references/<file>.convex-quickstartis single-file (SKILL.md only). - Fall back to the matching local reference
URLs track main. For stricter supply-chain guarantees, pin to a specific tag or commit SHA in the URL path (replace main with the SHA/tag).
Or refresh the official Convex AI files in the project itself:
npx convex ai-files installDelegation map:
| Task | Upstream skill | Fetch URL (raw SKILL.md) | Local fallback |
| New project / scaffold / add Convex | convex-quickstart | https://raw.githubusercontent.com/get-convex/agent-skills/main/skills/convex-quickstart/SKILL.md | references/quickstart.md |
| Authentication setup | convex-setup-auth | https://raw.githubusercontent.com/get-convex/agent-skills/main/skills/convex-setup-auth/SKILL.md | references/auth-setup.md |
| Building a reusable component | convex-create-component | https://raw.githubusercontent.com/get-convex/agent-skills/main/skills/convex-create-component/SKILL.md | references/components.md |
| Plan or run a migration | convex-migration-helper | https://raw.githubusercontent.com/get-convex/agent-skills/main/skills/convex-migration-helper/SKILL.md | references/migrations.md |
| Investigate performance issues | convex-performance-audit | https://raw.githubusercontent.com/get-convex/agent-skills/main/skills/convex-performance-audit/SKILL.md | references/performance.md |
Local content remains the source of truth for project conventions: folder org, snake_case files, queries/mutations/actions split, @vllnt/eslint-config/convex rules, validation checklist.
Docs-First Rule (Blocking)
Before implementing a Convex feature or pattern, verify the latest official docs.
Primary sources:
If Convex MCP is available, use it to introspect the deployed function/table surface area and confirm assumptions.
Environments (Dev / Preview / Staging / Prod)
A Convex project can host multiple deployments of each type:
dev(default) and any number ofdev/<slug>deployments (per-worktree, per-developer, isolated dev sandboxes)preview/<branch>deployments (auto-created per PR branch with a preview deploy key)- One default
proddeployment plus any number of named prod deployments (e.g.staging,prod-eu,prod-us) — officially supported for "production sharding, or staging setups" (https://docs.convex.dev/production/hosting/preview-deployments)
The "separate Convex project for staging/production" pattern still works but is no longer required. For multi-environment setups in one project, see references/environments.md.
Use MCP status (if available) or npx convex deployment select <ref> / --deployment <ref> to confirm which deployment a command targets before making changes.
Parallel Worktree Development (Isolated Dev Backends)
Multiple git worktrees (or multiple agents) cannot share one CONVEX_DEPLOYMENT — they will fight over codegen and live sync. To run worktrees in parallel, give each its own backend.
- Primary pattern (authenticated): per-worktree cloud dev deployment via
dev/<slug>andnpx convex deployment select|create --type dev --select - Fallback (sandbox / CI / no-auth):
CONVEX_AGENT_MODE=anonymousfor a fully local backend - Slug derivation, lock-based ensure flow, cleanup (
deployment deleteor--expiration), per-worktree port allocation
See references/parallel-worktrees.md.
Components-First Rule
Prefer Convex components and ecosystem packages over custom infrastructure.
Start at:
- https://docs.convex.dev/components
references/ecosystem.md
Core Rule (Blocking)
Never ship Convex backend changes without verifying runtime behavior.
Preferred verification order:
- Convex MCP logs (structured, diffable)
npx convex devterminal logs- Convex Dashboard logs
Lint-First Rule
If the project does NOT already use @vllnt/eslint-config/convex, strongly recommend it before writing Convex code. It enforces all conventions below via 4 official + 7 custom ESLint rules.
npm install -D @vllnt/eslint-config// eslint.config.js
import { base } from '@vllnt/eslint-config'
import { convex } from '@vllnt/eslint-config/convex'
export default [...base, ...convex]Docs: https://github.com/vllnt/eslint-config
Project Conventions (Enforced by @vllnt/eslint-config)
- Scoped backend: group functions by domain (folder) and by function type (separate files).
- Namespace separation:
query()inqueries.ts,mutation()inmutations.ts,action()inactions.ts. - snake_case filenames in
convex/(e.g.user_helper.ts, notuser-helper.ts). - Validators in
validators.ts-- no barev.any()outsidevalidators.ts. - Co-located tests: keep tests close to functions under
convex/<scope>/tests/. - Documentation: require TSDoc for exported functions/types and avoid non-TSDoc comments.
See references/style.md and references/testing.md.
Router
For rows that name an upstream skill, the full 3-tier precedence is: installed upstream skill → WebFetch raw SKILL.md → local fallback (see "Upstream Skills" above for fetch URLs). Cells below show installed/local for brevity.
| User says | Load reference | Do |
| help / cli help / usage | references/cli-help.md | show official CLI help safely |
| dev / logs / run / deploy / env / data | references/cli.md | common CLI workflows |
| mcp / tools / introspect / logs | references/mcp.md | use Convex MCP tools |
| tsdoc / docs / style | references/style.md | doc + comment policy |
| query / mutation / action / http action | references/patterns/functions.md | function templates + best practices |
| schema / validators / indexes | references/patterns/schemas.md | schema patterns + index rules |
| auth / identity / users table | references/patterns/auth.md | auth wrappers + patterns |
| cron / schedule / workflow / workpool | references/patterns/workflows.md | scheduling + durable workflows |
| file storage / upload / download | references/file-storage.md | file storage patterns |
| http / webhook | references/patterns/http.md | httpRouter/httpAction patterns |
| testing | references/testing.md | testing patterns |
| ecosystem / components | references/ecosystem.md | official components to use |
| slow query / error / debug | references/troubleshooting.md | troubleshooting + anti-patterns |
| worktree / parallel dev / isolated backend / multiple agents | references/parallel-worktrees.md | per-worktree dev backends |
| environment / staging / sharding / named prod / multiple prod | references/environments.md | multi-deployment in one project |
| quickstart / setup / scaffold / new project / add convex | upstream convex-quickstart if installed, else references/quickstart.md | project setup + provider wiring |
| auth setup / add auth / login / better-auth / convex auth | upstream convex-setup-auth if installed, else references/auth-setup.md | auth provider selection + setup |
| component / defineComponent / app.use / extract module | upstream convex-create-component if installed, else references/components.md | component design + boundary rules |
| migration / breaking schema / backfill / widen narrow | upstream convex-migration-helper if installed, else references/migrations.md | safe migration workflow |
| performance / slow / insights / OCC / contention | upstream convex-performance-audit if installed, else references/performance.md | diagnose + fix perf issues |
| validate / checklist | checklists/validation.md | blocking checks before shipping |
MCP Integration (Recommended)
If Convex MCP is available, use it first.
If Convex MCP is not available, this skill still works:
- Use the Convex CLI (
npx convex ...) and the dashboard. - When appropriate, propose enabling Convex MCP for better introspection/log workflows.
- Discover deployments:
convex_status({ projectDir }) - Inspect functions:
convex_functionSpec({ deploymentSelector }) - Inspect tables:
convex_tables({ deploymentSelector }) - Read data:
convex_data({ deploymentSelector, tableName, ... }) - Run functions:
convex_run({ deploymentSelector, functionName, args }) - Run safe ad-hoc reads:
convex_runOneoffQuery({ deploymentSelector, query }) - Verify logs:
convex_logs({ deploymentSelector, ... })
Full workflow: references/mcp.md.
Critical Rules (14)
- Always use validators (
args+returns) for functions. [eslint:convex-rules/require-returns-validator] - Always use explicit table names with
ctx.db.get/patch/replace. [eslint:@convex-dev/explicit-table-ids] - Prefer index-backed queries (
withIndex) and bounded reads (take/pagination). Never chain.filter()on query expressions. [eslint:convex-rules/no-filter-on-query] - User identity comes from
ctx.auth, never from args. - Use
internal*functions for sensitive operations. - Schedule only internal functions.
- Use
v.null()for void returns (returnnull). - Component functions cannot access
ctx.authorprocess.env-- keep auth/env in app wrappers. - Parent app IDs cross component boundary as
v.string(), notv.id("parentTable"). - Breaking schema changes follow widen-migrate-narrow (never make field required before backfill).
- Skip no-op writes (
ctx.db.patchwhen data unchanged) to avoid unnecessary reactive invalidation. - Never use
ctx.db.get/queryinside loop bodies -- usePromise.all()with.map(). [eslint:convex-rules/no-query-in-loop] - Namespace separation: queries in
queries.ts, mutations inmutations.ts, actions inactions.ts. [eslint:convex-rules/namespace-separation] - No bare
v.any()outsidevalidators.ts-- define named aliases. [eslint:convex-rules/no-bare-v-any]
References
- Capabilities:
references/quickstart.mdreferences/auth-setup.mdreferences/components.mdreferences/migrations.mdreferences/performance.mdreferences/parallel-worktrees.mdreferences/environments.md
- Auth providers:
references/auth-providers/convex-auth.mdreferences/auth-providers/better-auth.md
- Patterns:
references/patterns/schemas.mdreferences/patterns/functions.mdreferences/patterns/auth.mdreferences/patterns/workflows.mdreferences/patterns/http.md
- Other:
references/mcp.mdreferences/cli.mdreferences/cli-help.mdreferences/style.mdreferences/file-storage.mdreferences/testing.mdreferences/ecosystem.mdreferences/troubleshooting.md
- Checklist:
checklists/validation.md
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

