convex-queries

This skill should be used when implementing Convex query functions. It provides comprehensive guidelines for defining, registering, calling, and optimizing queries, including pagination, full text search, and indexing patterns.

Skill file

Preview skill file
---
name: convex-queries
description: This skill should be used when implementing Convex query functions. It provides comprehensive guidelines for defining, registering, calling, and optimizing queries, including pagination, full text search, and indexing patterns.
---

# Convex Queries Skill

This skill provides specialized guidance for implementing Convex query functions, including best practices for function definition, registration, calling patterns, pagination, indexing, and full text search.

## When to Use This Skill

Use this skill when:
- Defining new query functions to fetch data from the Convex database
- Implementing pagination for large result sets
- Setting up indexes for efficient querying
- Using full text search functionality
- Calling queries from other Convex functions
- Optimizing query performance

## Skill Resources

This skill includes comprehensive reference documentation in `references/query-guidelines.md` that covers:

### Core Query Development
- Function definition syntax using the new function syntax
- Query registration (`query` and `internalQuery`)
- Argument validators and their usage
- Function calling patterns (`ctx.runQuery`)
- Function references (`api` and `internal` objects)
- File-based routing for query paths

### Query Optimization
- Query guidelines (avoiding `filter`, using indexes with `withIndex`)
- Ordering results with `.order('asc')` and `.order('desc')`
- Using `.unique()` for single document retrieval
- Async iteration with `for await` syntax
- Query limits and performance considerations

### Advanced Query Features
- **Pagination**: Implementing paginated queries with `paginationOptsValidator`
  - Understanding `paginationOpts` (numItems and cursor)
  - Reading paginated results (page, isDone, continueCursor)
- **Full Text Search**: Setting up and querying search indexes
- **Indexing**: Creating and using indexes for efficient lookups
  - Built-in indexes (by_id, by_creation_time)
  - Custom index naming and field ordering
  - Nested queries with multiple indexes

### Database Queries
- Reading from the Convex database with `ctx.db.query()`
- Index usage with `.withIndex()`
- Result collection with `.collect()` and `.take(n)`

## How to Use This Skill

1. **Read the reference documentation** at `references/query-guidelines.md` to understand the complete query patterns
2. **Follow the syntax examples** for defining query functions with proper validators
3. **Use indexes** for efficient filtering instead of the `filter` method
4. **Implement pagination** when dealing with large datasets
5. **Leverage full text search** for text-based filtering needs
6. **Optimize ordering** by understanding how Convex orders results

## Key Query Guidelines

- ALWAYS include argument validators for all query functions
- Do NOT use `filter` in queries; use `withIndex` instead
- Use `ctx.runQuery` to call queries from mutations or actions
- Specify return type annotations when calling queries in the same file (TypeScript circularity workaround)
- Queries execute for at most 1 second and can read up to 16384 documents
- Return `null` implicitly if your query doesn't have an explicit return value

## Example: Basic Query with Index

```ts
import { query } from "./_generated/server";
import { v } from "convex/values";

export const getMessagesByChannel = query({
  args: {
    channelId: v.id("channels"),
  },
  handler: async (ctx, args) => {
    return await ctx.db
      .query("messages")
      .withIndex("by_channel", (q) => q.eq("channelId", args.channelId))
      .order("desc")
      .take(20);
  },
});
```

For more detailed information and additional patterns, refer to the complete reference documentation.

Source

Creator's repository · sstobo/convex-skills

View on GitHub

Security

Verified — safe to install
Passed all 3 independent security checks
Checked by 3 independent security firms
Does it try to trick the AI?NoSAFE · Gen Agent Trust Hub
Does it sneak in hidden code?NoNo alerts · Socket
Does it have known bugs?NoLow risk · Snyk