Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/polarcoding85/convex-agent-skillz/convex-skillnpx skills add PolarCoding85/convex-agent-skillz --skill convex-skillgit clone --depth 1 https://github.com/PolarCoding85/convex-agent-skillzWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/polarcoding85/convex-agent-skillz/convex-skill)<a href="https://agentmods.dev/skills/polarcoding85/convex-agent-skillz/convex-skill"><img src="https://agentmods.dev/badge/skills/polarcoding85/convex-agent-skillz/convex-skill.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00203 | $0.02093 |
| Opus 5 | $0.00102 | $0.01046 |
| Sonnet 5 | $0.00041 | $0.00419 |
| Haiku 4.5 | $0.00020 | $0.00209 |
Grade A, and why
convex scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 6d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 233 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Convex Backend Development
Core Architecture
Convex is a reactive database where queries are TypeScript functions. The sync engine (queries + mutations + database) is the heart of Convex — center your app around it.
Function Types
| Type | DB Access | Deterministic | Cached/Reactive | Use For |
|---|---|---|---|---|
query |
Read only | Yes | Yes | All reads, subscriptions |
mutation |
Read/Write | Yes | No | All writes (transactions) |
action |
Via ctx.run* | No | No | External APIs, LLMs, email |
httpAction |
Via ctx.run* | No | No | Webhooks, custom HTTP |
Key rule: Queries and mutations cannot make network requests. Actions cannot directly access the database.
Project Structure (Best Practice)
convex/
├── _generated/ # Auto-generated types (commit this)
├── schema.ts # Database schema
├── model/ # Helper functions (most logic lives here)
│ ├── users.ts
│ └── messages.ts
├── users.ts # Thin wrappers exposing public API
├── messages.ts
├── crons.ts # Cron job definitions
└── http.ts # HTTP action routes
Essential Patterns
1. Function Structure
// convex/messages.ts
import { query, mutation, internalMutation } from './_generated/server';
import { internal } from './_generated/api';
import { v } from 'convex/values';
// PUBLIC query with validators (always validate public functions)
export const list = query({
args: { channelId: v.id('channels') },
handler: async (ctx, { channelId }) => {
return await ctx.db
.query('messages')
.withIndex('by_channel', (q) => q.eq('channelId', channelId))
.order('desc')
.take(50);
}
});
// PUBLIC mutation with validators and auth check
export const send = mutation({
args: { channelId: v.id('channels'), body: v.string() },
handler: async (ctx, { channelId, body }) => {
const user = await ctx.auth.getUserIdentity();
if (!user) throw new Error('Unauthorized');
await ctx.db.insert('messages', {
channelId,
body,
authorId: user.subject
});
}
});
// INTERNAL mutation (for scheduling, crons, actions)
export const deleteOld = internalMutation({
args: { before: v.number() },
handler: async (ctx, { before }) => {
const old = await ctx.db
.query('messages')
.withIndex('by_createdAt', (q) => q.lt('_creationTime', before))
.take(100);
for (const msg of old) {
await ctx.db.delete(msg._id);
}
}
});
What ships with it
12 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- references/ADVANCED.md 8.0 KB
- references/AUTH.md 5.1 KB
- references/DATABASE.md 23 KB
- references/ERROR_HANDLING.md 10 KB
- references/FILE_STORAGE.md 15 KB
- references/FUNCTIONS.md 12 KB
- references/HTTP_ACTIONS.md 13 KB
- references/NEXTJS.md 9.2 KB
- references/RUNTIMES.md 9.3 KB
- references/SCHEDULING.md 14 KB
- references/SEARCH.md 13 KB
- references/VALIDATION.md 8.6 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 6d ago First seen · 233 lines · 203 tokens per session scan A c6f595f70433
convex is a skill published in the GitHub repository PolarCoding85/convex-agent-skillz (17 stars, last pushed 6mo ago), licensed MIT. It adds 203 tokens to every session and 2,093 once invoked, about $0.0010 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
laravel-eloquent
Use when working with database models — Eloquent ORM, PHP attributes, relationships, queries, observers, or factories in Laravel 13.
laravel-migrations
Use when designing a database schema or managing Laravel 13 migrations — Schema Builder, columns, indexes, foreign keys, or seeders.
astro-db
Use when doing database operations in an Astro project via Astro DB (defineDb, defineTable, db/config.ts, Turso).
laravel-vector-search
Use when implementing semantic/vector search in Laravel 13 with PostgreSQL + pgvector.
laravel-scout
Implement full-text search with Laravel Scout. Use when adding search to Eloquent models with Meilisearch, Algolia, or database driver.
sc-supabase
(STUB / NOT IMPLEMENTED YET) Supabase backend as an alternative to self-hosted Convex. Create project, apply migrations from supabase/migrations, deploy Edge Functions, generate types. For projects where Postgres + Row-Level-Security is a better fit than Convex's reactive query model.