SKILL.md
<overview> Cover deployment lifecycle, environments, and safe rollout strategies for Convex backends and full-stack apps. </overview>
<context name="Deployment Concepts">
- Model: one prod deployment per project, one dev deployment per team member, preview deployments per branch.
- Preview deployments are beta and auto-cleaned; data seeding requires
--preview-run. - Local deployments:
npx convex dev --local --once, no public URL, Node actions require Node 18. - Agent Mode: Use
CONVEXAGENTMODE=anonymousfor AI coding agents to limit permissions during development. - Env vars are per-deployment; system vars
CONVEXCLOUDURLandCONVEXSITEURL. - Safe change rules: schema MUST match data; use optional/backfill/union migrations; keep functions backwards compatible; scheduled args MUST remain valid.
- Project config:
convex.jsonCAN change functions path, node runtime; static codegen is beta. - Pausing deployments returns errors for new calls, queues scheduled jobs, skips crons; You SHOULD test on dev first.
</context>
<rules>
Deployment Operations
- Core commands:
npx convex dev,npx convex deploy,npx convex codegen,npx convex run(use--prodfor prod). - Agent Mode: You SHOULD use
CONVEXAGENTMODE=anonymous npx convex dev --oncewhen iterating as an AI agent to safely generate codegen artifacts. - Deploy target resolution:
CONVEXDEPLOYKEYoverrides, else uses production ofCONVEX_DEPLOYMENTproject. - Build step:
npx convex deploy --cmd "npm run build"and--cmd-url-env-var-nameif needed. - Deploy keys: production, preview, dev, admin (You MUST NOT commit/log).
- Hosting flows:
- Vercel/Netlify build command SHOULD use npx convex deploy --cmd 'npm run build'. - You MUST set CONVEXDEPLOYKEY per environment (Preview vs Production). - Preview seeding via --preview-run 'functionName'. - Custom hosting: deploy backend, host frontend elsewhere; custom domains require overriding CONVEXCLOUDURL and redeploying; optional CONVEXSITEURL.
Required Outputs
- You MUST use exact CLI commands and flags from docs.
- You MUST state target deployment resolution (deploy key vs CONVEX_DEPLOYMENT).
- You MUST call out deploy-side effects: schema validation, index backfill, codegen, bundling.
- You SHOULD always mention
.convex.sitevs.convex.cloudURL usage where relevant.
Deployment Model
- Each project has one production deployment and one cloud dev deployment per team member.
- Preview deployments are per-branch and are auto-cleaned after a time window.
- Local deployments are dev-only and run as subprocesses of
npx convex dev.
CLI Workflow
Dev
npx convex dev:
- Watches files, pushes changes to dev deployment. - Regenerates convex/_generated/*. - You SHOULD use --tail-logs to control log output.
- Local dev:
- npx convex dev --local --once for local backend. - Note: No public URL; HTTP requests need a proxy (e.g., ngrok). - Node actions require Node 18 locally.
Deploy
npx convex deploy:
- Typechecks functions. - Regenerates codegen. - Bundles and pushes functions, schema, and indexes.
- Deploy target resolution:
- If CONVEXDEPLOYKEY is set, deploys to that key's target. - Else uses the production deployment of CONVEX_DEPLOYMENT's project.
- Optional build command:
- npx convex deploy --cmd "npm run build" - Use --cmd-url-env-var-name to customize env var name.
Deploy Keys
- Production deploy key: targets project production deployment (typical CI).
- Preview deploy key: creates preview deployment per branch.
- Dev deploy key: scoped to a single dev deployment.
- Admin key: full control; used for anonymous local deployments.
- Security: You MUST NOT paste deploy keys into code or commit history.
Preview Deployments
- Beta feature, lifecycle auto-cleans (5 days default).
- Preview deployment name is tied to branch; redeploy replaces previous preview.
- Data seeding requires running a function during deploy (
--preview-run).
Environment Variables
- You MUST set per-deployment via dashboard or
npx convex env. - Same key MAY require values in both dev and prod.
- System vars:
- CONVEXCLOUDURL for client RPCs. - CONVEXSITEURL for HTTP actions.
- You MUST NOT branch exports on
process.envat runtime; functions set at deploy time.
Safe Rollout Rules
- Schema MUST match existing data; deploy blocks on validation failures.
- Safe schema changes:
- Add tables. - Add optional fields, backfill, then make required. - Widen via v.union, backfill, then narrow.
- Functions MUST remain backward compatible while old clients are running.
- Scheduled functions MUST accept previously scheduled args.
Index Backfill
- New indexes backfill during deploy; CAN slow production push.
- You SHOULD use staged indexes (including search/vector) for large tables.
- Removing indexes deletes them on deploy; You MUST ensure no code paths depend on them.
URLs
- HTTP actions:
https://<deployment>.convex.site. - Client URLs:
https://<deployment>.convex.cloud(viaCONVEXCLOUDURL). - You SHOULD warn about mixing
.convex.siteand.convex.cloud.
Response Checklist
- State environment (dev/prod/preview/local).
- Provide exact commands and required env vars.
- List safety considerations (schema, functions, scheduled).
- Mention logs location (CLI or dashboard) when troubleshooting.
</rules>