Agent skill

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.

Stars 23
Forks 4

Install this agent skill to your Project

npx add-skill https://github.com/Sstobo/convex-skills/tree/main/convex-queries

SKILL.md

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.

Expand your agent's capabilities with these related and highly-rated skills.

Sstobo/convex-skills

Convex Agents Streaming

Streams agent responses in real-time to clients without blocking. Use this for responsive UIs, long-running generations, and asynchronous streaming to multiple clients.

23 4
Explore
Sstobo/convex-skills

Convex Agents Files

Handles file uploads, image attachments, and media processing in agent conversations. Use this when agents analyze images, process documents, or generate files.

23 4
Explore
Sstobo/convex-skills

convex-actions-general

This skill should be used when working with Convex actions, HTTP endpoints, validators, schemas, environment variables, scheduling, file storage, and TypeScript patterns. It provides comprehensive guidelines for function definitions, API design, database limits, and advanced Convex features.

23 4
Explore
Sstobo/convex-skills

betterauth-tanstack-convex

Step-by-step guide for setting up Better Auth authentication with Convex and TanStack Start. This skill should be used when configuring authentication in a Convex + TanStack Start project, troubleshooting auth issues, or implementing sign up/sign in/sign out flows. Covers installation, environment variables, SSR authentication, route handlers, and the expectAuth pattern.

23 4
Explore
Sstobo/convex-skills

Convex Agents Tools

Enables agents to call external functions, APIs, and database operations through tool definitions. Use this when agents need to fetch data, perform actions, or integrate with external services while maintaining clean separation.

23 4
Explore
Sstobo/convex-skills

Convex Agents Debugging

Troubleshoots agent behavior, logs LLM interactions, and inspects database state. Use this when responses are unexpected, to understand context the LLM receives, or to diagnose data issues.

23 4
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results