Apply ClawHub-specific Convex conventions and route to the right managed Convex skill. Use for any change under convex/, Convex commands or deployment targeting, query performance, migrations, retention, runtime validation, or skill stat reads and writes in the ClawHub repository.
70
85%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Use the managed Convex guidance for general framework behavior and this skill for ClawHub's repository-specific boundaries.
convex/_generated/ai/guidelines.md before editing Convex code.local, dev, or
prod. Include the exact deployment when known and whether the current
function/schema code has already been pushed there.convex-performance-auditconvex-migration-helper and create-and-cleanup-migrationconvex-retentionDo not edit upstream-managed Convex skills to store ClawHub policy.
convex run:
bunx convex dev --onceclawhub-production-releasebunx convex deploy -y.bunx convex run --env-file .env.local ... returns
401 MissingAccessToken after login, omit --env-file and target the
deployment with --deployment <name> or --prod.bunx convex codegen after Convex
API/schema changes.convex/functions.ts, not
convex/_generated/server, so ClawHub's trigger wrapper runs. Type imports
can still come from convex/_generated/server.Mocked ctx tests cover pure business logic only. When behavior depends on
pagination, indexes, validators, auth identity, internal/public boundaries,
schedulers, actions calling functions, HTTP actions, storage, or OCC, also run
a real Convex path such as:
bunx convex dev --oncebunx convex run ...bun run test:pw:local-authTests that invoke a mutation through ._handler need a mock database with
normalizeId: vi.fn() for trigger-wrapper compatibility.
@convex-dev/migrations; the companion
skills own batching, dry runs, resume/progress, confirmation, validation, and
cleanup.convex/migrations.ts.convex/maintenance.ts..github/workflows/deploy.yml.Use convex-performance-audit for the detailed rules on indexes, bounded reads,
denormalization, digest tables, subscriptions, and function limits. Before
writing or reviewing a performance-sensitive query, check deployment health
when available:
bunx convex insights --details
bunx convex logs --failurePrefer measured runtime signals over speculative restructuring.
Use convex-performance-audit for the complete workflow. Preserve these
ClawHub-specific implementations when touching their paths:
ConvexHttpClient.query() reads
unless the user needs live updates.skillSearchDigest row exists, resolve owner data with
digestToOwnerInfo(digest). Do not re-read the owner document when the
digest already contains the required owner fields.convex-helpers triggers and skip writes when derived fields did not change.delayMs between backfill batches that update reactively subscribed
tables.The skills table still has a compatibility shape for four migrated stats:
| Legacy nested field | Top-level source of truth |
|---|---|
stats.downloads | statsDownloads |
stats.stars | statsStars |
stats.installsCurrent | statsInstallsCurrent |
stats.installsAllTime | statsInstallsAllTime |
readCanonicalStat() from
convex/lib/skillStats.ts. It prefers the top-level field and falls back for
pre-migration documents.applySkillStatDeltas(). It updates both shapes in one
patch.stats.comments and stats.versions.694ff71
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.