julianromli/ai-skills/convex-best-practices
Claude Code and agent skill by julianromli/ai-skills
- community
Checking that the SKILL.md file is still in the repository.
Guidelines for building production-ready Convex apps covering function organization, query patterns, validation, TypeScript usage, error handling, and the Zen of Convex design philosophy
Install
npx vskill@latest install julianromli/ai-skills/convex-best-practicesSKILL.md
The same SKILL.md was published earlier as waynesutton/convexskills/convex-best-practices.
Convex Best Practices
Build production-ready Convex applications by following established patterns for function organization, query optimization, validation, TypeScript usage, and error handling.
Code Quality
All patterns in this skill comply with @convex-dev/eslint-plugin. Install it for build-time validation:
The plugin enforces four rules:
| Rule | What it enforces | |
|---|---|---|
no-old-registered-function-syntax | Object syntax with handler | |
require-argument-validators | args: {} on all functions | |
explicit-table-ids | Table name in db operations | |
import-wrong-runtime | No Node imports in Convex runtime |
Docs: https://docs.convex.dev/eslint
Documentation Sources
Before implementing, do not assume; fetch the latest documentation:
- Primary: https://docs.convex.dev/understanding/best-practices/
- Error Handling: https://docs.convex.dev/functions/error-handling
- Write Conflicts: https://docs.convex.dev/error#1
- For broader context: https://docs.convex.dev/llms.txt
Instructions
The Zen of Convex
- Convex manages the hard parts - Let Convex handle caching, real-time sync, and consistency
- Functions are the API - Design your functions as your application's interface
- Schema is truth - Define your data model explicitly in schema.ts
- TypeScript everywhere - Leverage end-to-end type safety
- Queries are reactive - Think in terms of subscriptions, not requests
Function Organization
Organize your Convex functions by domain:
Argument and Return Validation
Always define validators for arguments AND return types:
Query Patterns
Use indexes instead of filters for efficient queries:
Error Handling
Use ConvexError for user-facing errors:
Avoiding Write Conflicts (Optimistic Concurrency Control)
Convex uses OCC. Follow these patterns to minimize conflicts:
TypeScript Best Practices
Internal vs Public Functions
Examples
Complete CRUD Pattern
Best Practices
- Never run
npx convex deployunless explicitly instructed - Never run any git commands unless explicitly instructed
- Always define return validators for functions
- Use indexes for all queries that filter data
- Make mutations idempotent to handle retries gracefully
- Use ConvexError for user-facing error messages
- Organize functions by domain (users.ts, tasks.ts, etc.)
- Use internal functions for sensitive operations
- Leverage TypeScript's Id and Doc types
Common Pitfalls
- Using filter instead of withIndex - Always define indexes and use withIndex
- Missing return validators - Always specify the returns field
- Non-idempotent mutations - Check current state before updating
- Reading before patching unnecessarily - Patch directly when possible
- Not handling null returns - Document IDs might not exist
References
- Convex Documentation: https://docs.convex.dev/
- Convex LLMs.txt: https://docs.convex.dev/llms.txt
- Best Practices: https://docs.convex.dev/understanding/best-practices/
- Error Handling: https://docs.convex.dev/functions/error-handling
- Write Conflicts: https://docs.convex.dev/error#1
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/convex-best-practices/SKILL.md
Popularity
- Repository stars
- 163
- Repository forks
- 23
- 7-day trend score
- 25
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 17 May 2026, 5 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/julianromli/ai-skills/convex-best-practices)