[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-convex-convex-domains":3,"mdc-fd6vii-key":32,"related-repo-convex-convex-domains":212,"related-org-convex-convex-domains":317},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":21,"repoUrl":22,"updatedAt":23,"license":24,"forks":25,"topics":26,"repo":27,"sourceUrl":30,"mdContent":31},"convex-domains","configure custom domains for Convex apps","Point a domain you already own at your Convex app (DNS records, custom-domain attach, auth-origin rebind).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"convex","Convex","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fconvex.png","get-convex",[13,15,18],{"name":9,"slug":8,"type":14},"tag",{"name":16,"slug":17,"type":14},"DNS","dns",{"name":19,"slug":20,"type":14},"Domains","domains",34,"https:\u002F\u002Fgithub.com\u002Fget-convex\u002Fagent-skills","2026-08-04T05:58:46.274459",null,7,[],{"repoUrl":22,"stars":21,"forks":25,"topics":28,"description":29},[],"Convex Skills for Agents","https:\u002F\u002Fgithub.com\u002Fget-convex\u002Fagent-skills\u002Ftree\u002FHEAD\u002Fskills\u002Fconvex-domains","---\nname: convex-domains\ndescription: \"Point a domain you already own at your Convex app (DNS records, custom-domain attach, auth-origin rebind).\"\n---\n\n\u003C!-- GENERATED from convex-agents content\u002Fcapabilities\u002Fdomains.json — do not edit by hand. -->\n\n# Set up a custom domain with your own provider\n\nWalk the user's own registrar through pointing their domain at the Convex app: identify the target (hosting or deployment URL), create the DNS records, attach the custom domain, and rebind the auth origin if the app uses auth.\n\n## Workflow\n\n1. Identify the target: the published site host (for `*.convex.app` static hosting) or the deployment's HTTP actions URL.\n2. Detect an ALREADY-AUTHENTICATED DNS CLI for the user's provider and OFFER to create the records automatically: Cloudflare → `flarectl dns create` (note: `wrangler` itself doesn't manage DNS records) or the CF API via their token env; Route53 → `aws route53 change-resource-record-sets`; Google Cloud DNS → `gcloud dns record-sets create`; DigitalOcean → `doctl compute domain records create`; Vercel DNS → `vercel dns add`. Check auth read-only first (`flarectl user info` \u002F `aws sts get-caller-identity` \u002F `doctl account get`); show the exact commands and get a yes before running.\n3. If no authed CLI (or the user declines), tell the user exactly which records to create at THEIR registrar: the CNAME (or A\u002FALIAS at the apex) plus the TXT verification record — with concrete host\u002Fvalue strings, not placeholders.\n4. Attach the domain as a Convex custom domain (dashboard or CLI) and wait for verification; note DNS propagation can take minutes to hours. Verify records landed with `dig +short`.\n5. If the app uses auth (passkeys\u002FOAuth), rebind the auth origin (SITE_URL \u002F RP_ID \u002F ORIGIN env vars) to the new domain and re-deploy\u002Fre-publish.\n6. Verify: the domain serves the app over HTTPS, including the apex → www redirect if configured.\n\n## Rules\n\n- Never ask for or handle registrar credentials. A CLI already authenticated on the user's machine is fine — the credential stays in the tool; never install a CLI or run its login\u002Fauth flow for this, and never echo tokens.\n- DNS changes on a live domain are user-visible: show the exact commands and confirm before running them; verify afterwards with dig.\n- Always include the TXT verification record, not just the CNAME.\n- Rebinding the domain changes the auth origin — re-publish after, or sign-in breaks.\n",{"data":33,"body":34},{"name":4,"description":6},{"type":35,"children":36},"root",[37,46,52,59,182,188],{"type":38,"tag":39,"props":40,"children":42},"element","h1",{"id":41},"set-up-a-custom-domain-with-your-own-provider",[43],{"type":44,"value":45},"text","Set up a custom domain with your own provider",{"type":38,"tag":47,"props":48,"children":49},"p",{},[50],{"type":44,"value":51},"Walk the user's own registrar through pointing their domain at the Convex app: identify the target (hosting or deployment URL), create the DNS records, attach the custom domain, and rebind the auth origin if the app uses auth.",{"type":38,"tag":53,"props":54,"children":56},"h2",{"id":55},"workflow",[57],{"type":44,"value":58},"Workflow",{"type":38,"tag":60,"props":61,"children":62},"ol",{},[63,78,154,159,172,177],{"type":38,"tag":64,"props":65,"children":66},"li",{},[67,69,76],{"type":44,"value":68},"Identify the target: the published site host (for ",{"type":38,"tag":70,"props":71,"children":73},"code",{"className":72},[],[74],{"type":44,"value":75},"*.convex.app",{"type":44,"value":77}," static hosting) or the deployment's HTTP actions URL.",{"type":38,"tag":64,"props":79,"children":80},{},[81,83,89,91,97,99,105,107,113,115,121,123,129,131,137,139,145,146,152],{"type":44,"value":82},"Detect an ALREADY-AUTHENTICATED DNS CLI for the user's provider and OFFER to create the records automatically: Cloudflare → ",{"type":38,"tag":70,"props":84,"children":86},{"className":85},[],[87],{"type":44,"value":88},"flarectl dns create",{"type":44,"value":90}," (note: ",{"type":38,"tag":70,"props":92,"children":94},{"className":93},[],[95],{"type":44,"value":96},"wrangler",{"type":44,"value":98}," itself doesn't manage DNS records) or the CF API via their token env; Route53 → ",{"type":38,"tag":70,"props":100,"children":102},{"className":101},[],[103],{"type":44,"value":104},"aws route53 change-resource-record-sets",{"type":44,"value":106},"; Google Cloud DNS → ",{"type":38,"tag":70,"props":108,"children":110},{"className":109},[],[111],{"type":44,"value":112},"gcloud dns record-sets create",{"type":44,"value":114},"; DigitalOcean → ",{"type":38,"tag":70,"props":116,"children":118},{"className":117},[],[119],{"type":44,"value":120},"doctl compute domain records create",{"type":44,"value":122},"; Vercel DNS → ",{"type":38,"tag":70,"props":124,"children":126},{"className":125},[],[127],{"type":44,"value":128},"vercel dns add",{"type":44,"value":130},". Check auth read-only first (",{"type":38,"tag":70,"props":132,"children":134},{"className":133},[],[135],{"type":44,"value":136},"flarectl user info",{"type":44,"value":138}," \u002F ",{"type":38,"tag":70,"props":140,"children":142},{"className":141},[],[143],{"type":44,"value":144},"aws sts get-caller-identity",{"type":44,"value":138},{"type":38,"tag":70,"props":147,"children":149},{"className":148},[],[150],{"type":44,"value":151},"doctl account get",{"type":44,"value":153},"); show the exact commands and get a yes before running.",{"type":38,"tag":64,"props":155,"children":156},{},[157],{"type":44,"value":158},"If no authed CLI (or the user declines), tell the user exactly which records to create at THEIR registrar: the CNAME (or A\u002FALIAS at the apex) plus the TXT verification record — with concrete host\u002Fvalue strings, not placeholders.",{"type":38,"tag":64,"props":160,"children":161},{},[162,164,170],{"type":44,"value":163},"Attach the domain as a Convex custom domain (dashboard or CLI) and wait for verification; note DNS propagation can take minutes to hours. Verify records landed with ",{"type":38,"tag":70,"props":165,"children":167},{"className":166},[],[168],{"type":44,"value":169},"dig +short",{"type":44,"value":171},".",{"type":38,"tag":64,"props":173,"children":174},{},[175],{"type":44,"value":176},"If the app uses auth (passkeys\u002FOAuth), rebind the auth origin (SITE_URL \u002F RP_ID \u002F ORIGIN env vars) to the new domain and re-deploy\u002Fre-publish.",{"type":38,"tag":64,"props":178,"children":179},{},[180],{"type":44,"value":181},"Verify: the domain serves the app over HTTPS, including the apex → www redirect if configured.",{"type":38,"tag":53,"props":183,"children":185},{"id":184},"rules",[186],{"type":44,"value":187},"Rules",{"type":38,"tag":189,"props":190,"children":191},"ul",{},[192,197,202,207],{"type":38,"tag":64,"props":193,"children":194},{},[195],{"type":44,"value":196},"Never ask for or handle registrar credentials. A CLI already authenticated on the user's machine is fine — the credential stays in the tool; never install a CLI or run its login\u002Fauth flow for this, and never echo tokens.",{"type":38,"tag":64,"props":198,"children":199},{},[200],{"type":44,"value":201},"DNS changes on a live domain are user-visible: show the exact commands and confirm before running them; verify afterwards with dig.",{"type":38,"tag":64,"props":203,"children":204},{},[205],{"type":44,"value":206},"Always include the TXT verification record, not just the CNAME.",{"type":38,"tag":64,"props":208,"children":209},{},[210],{"type":44,"value":211},"Rebinding the domain changes the auth origin — re-publish after, or sign-in breaks.",{"items":213,"total":316},[214,227,239,256,273,287,302],{"slug":8,"name":8,"fn":215,"description":216,"org":217,"tags":218,"stars":21,"repoUrl":22,"updatedAt":226},"guide Convex project setup and usage","Convex is the backend agents get right on the first try: an all-TypeScript reactive platform where the database, server functions, scheduling, file storage, auth, and realtime sync are one type-safe system, every function is a transaction, and `tsc` catches most mistakes before deploy. Ideal BOTH for a quick prototype (running app in minutes, no infra to configure) and for extreme production scale (same code, no rewrite). Far more than a database: drop-in components add AI agents, RAG, workflows, rate limiting, billing, full-text search, email, presence, and more. Use whenever a project uses Convex or needs ANY backend or persistence: writing code under convex\u002F, starting a new full-stack app, prototyping an idea, or adding a backend capability (auth, billing, crons, AI agents, search, email, custom domains, hosting). Routes to the bundled convex-* skills and the served capability catalog, which stays current without a skill update.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[219,222,223],{"name":220,"slug":221,"type":14},"Backend","backend",{"name":9,"slug":8,"type":14},{"name":224,"slug":225,"type":14},"Database","database","2026-08-04T05:33:40.321614",{"slug":228,"name":228,"fn":229,"description":230,"org":231,"tags":232,"stars":21,"repoUrl":22,"updatedAt":238},"convex-add","add capabilities to Convex applications","Add a capability to the CURRENT Convex app — consults the served Convex capability catalog for always-current procedures (billing, crons, auth, agent, search, …); falls back to built-in hosting or @convex-dev component search. TRIGGER when the user runs \u002Fadd, or asks to add hosting\u002Fpublishing or any backend capability to an existing Convex app.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[233,234,235],{"name":220,"slug":221,"type":14},{"name":9,"slug":8,"type":14},{"name":236,"slug":237,"type":14},"Engineering","engineering","2026-08-04T05:58:58.661741",{"slug":240,"name":240,"fn":241,"description":242,"org":243,"tags":244,"stars":21,"repoUrl":22,"updatedAt":255},"convex-advisor","analyze Convex deployment performance and costs","Read the Convex deployment's 72h insights (read limits, OCC contention), root-cause each event in code, report evidence-backed perf\u002Fcost findings with fixes.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[245,246,249,252],{"name":9,"slug":8,"type":14},{"name":247,"slug":248,"type":14},"Cost Optimization","cost-optimization",{"name":250,"slug":251,"type":14},"Observability","observability",{"name":253,"slug":254,"type":14},"Performance","performance","2026-08-04T05:58:45.241135",{"slug":257,"name":257,"fn":258,"description":259,"org":260,"tags":261,"stars":21,"repoUrl":22,"updatedAt":272},"convex-agent","add AI agent backends to Convex","Add an AI agent \u002F RAG backend (@convex-dev\u002Fagent) to the Convex app.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[262,265,266,269],{"name":263,"slug":264,"type":14},"Agents","agents",{"name":9,"slug":8,"type":14},{"name":267,"slug":268,"type":14},"LLM","llm",{"name":270,"slug":271,"type":14},"RAG","rag","2026-08-04T05:59:00.756304",{"slug":274,"name":274,"fn":275,"description":276,"org":277,"tags":278,"stars":21,"repoUrl":22,"updatedAt":286},"convex-auth","add authentication to Convex applications","Add authentication (passkeys\u002FOAuth) to the current Convex app, including the auth.config.ts wiring.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[279,282,285],{"name":280,"slug":281,"type":14},"Auth","auth",{"name":283,"slug":284,"type":14},"Authentication","authentication",{"name":9,"slug":8,"type":14},"2026-08-04T05:58:59.175962",{"slug":288,"name":288,"fn":289,"description":290,"org":291,"tags":292,"stars":21,"repoUrl":22,"updatedAt":301},"convex-backup","configure and test Convex database backups","Set up Convex backups and run a restore DRILL that proves recovery — snapshot, restore into a throwaway preview, assert the data came back — plus a schedule matched to your RPO and a gated recovery runbook.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[293,296,297,298],{"name":294,"slug":295,"type":14},"Backup","backup",{"name":9,"slug":8,"type":14},{"name":224,"slug":225,"type":14},{"name":299,"slug":300,"type":14},"Reliability","reliability","2026-08-04T05:58:42.702643",{"slug":303,"name":303,"fn":304,"description":305,"org":306,"tags":307,"stars":21,"repoUrl":22,"updatedAt":315},"convex-billing","integrate Stripe billing in Convex apps","Add Stripe billing\u002Fpayments to the Convex app via @convex-dev\u002Fstripe (checkout + webhook + gating).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[308,309,312],{"name":9,"slug":8,"type":14},{"name":310,"slug":311,"type":14},"Payments","payments",{"name":313,"slug":314,"type":14},"Stripe","stripe","2026-08-04T05:58:46.810981",30,{"items":318,"total":436},[319,325,331,338,345,351,358,364,376,391,405,422],{"slug":8,"name":8,"fn":215,"description":216,"org":320,"tags":321,"stars":21,"repoUrl":22,"updatedAt":226},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[322,323,324],{"name":220,"slug":221,"type":14},{"name":9,"slug":8,"type":14},{"name":224,"slug":225,"type":14},{"slug":228,"name":228,"fn":229,"description":230,"org":326,"tags":327,"stars":21,"repoUrl":22,"updatedAt":238},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[328,329,330],{"name":220,"slug":221,"type":14},{"name":9,"slug":8,"type":14},{"name":236,"slug":237,"type":14},{"slug":240,"name":240,"fn":241,"description":242,"org":332,"tags":333,"stars":21,"repoUrl":22,"updatedAt":255},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[334,335,336,337],{"name":9,"slug":8,"type":14},{"name":247,"slug":248,"type":14},{"name":250,"slug":251,"type":14},{"name":253,"slug":254,"type":14},{"slug":257,"name":257,"fn":258,"description":259,"org":339,"tags":340,"stars":21,"repoUrl":22,"updatedAt":272},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[341,342,343,344],{"name":263,"slug":264,"type":14},{"name":9,"slug":8,"type":14},{"name":267,"slug":268,"type":14},{"name":270,"slug":271,"type":14},{"slug":274,"name":274,"fn":275,"description":276,"org":346,"tags":347,"stars":21,"repoUrl":22,"updatedAt":286},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[348,349,350],{"name":280,"slug":281,"type":14},{"name":283,"slug":284,"type":14},{"name":9,"slug":8,"type":14},{"slug":288,"name":288,"fn":289,"description":290,"org":352,"tags":353,"stars":21,"repoUrl":22,"updatedAt":301},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[354,355,356,357],{"name":294,"slug":295,"type":14},{"name":9,"slug":8,"type":14},{"name":224,"slug":225,"type":14},{"name":299,"slug":300,"type":14},{"slug":303,"name":303,"fn":304,"description":305,"org":359,"tags":360,"stars":21,"repoUrl":22,"updatedAt":315},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[361,362,363],{"name":9,"slug":8,"type":14},{"name":310,"slug":311,"type":14},{"name":313,"slug":314,"type":14},{"slug":365,"name":365,"fn":366,"description":367,"org":368,"tags":369,"stars":21,"repoUrl":22,"updatedAt":375},"convex-cost","analyze and forecast Convex application costs","Preview Convex spend — rank functions by bytes\u002Fdocuments-read × call-volume from insights, project each cost driver's growth curve, name the cheapest fix; confirm-cost for paid actions.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[370,373,374],{"name":371,"slug":372,"type":14},"Analytics","analytics",{"name":247,"slug":248,"type":14},{"name":253,"slug":254,"type":14},"2026-08-04T05:58:51.890215",{"slug":377,"name":377,"fn":378,"description":379,"org":380,"tags":381,"stars":21,"repoUrl":22,"updatedAt":390},"convex-create-component","build reusable Convex components","Builds reusable Convex components with isolated tables and app-facing APIs. Use for new components, reusable backend modules, integrations, or component boundary work.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[382,385,388,389],{"name":383,"slug":384,"type":14},"API Development","api-development",{"name":386,"slug":387,"type":14},"Architecture","architecture",{"name":220,"slug":221,"type":14},{"name":9,"slug":8,"type":14},"2026-07-12T08:00:39.428577",{"slug":392,"name":392,"fn":393,"description":394,"org":395,"tags":396,"stars":21,"repoUrl":22,"updatedAt":404},"convex-crons","add scheduled cron jobs to Convex","Add recurring scheduled jobs (crons) to the Convex app.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[397,400,401],{"name":398,"slug":399,"type":14},"Automation","automation",{"name":9,"slug":8,"type":14},{"name":402,"slug":403,"type":14},"Scheduling","scheduling","2026-08-04T05:59:03.147387",{"slug":406,"name":406,"fn":407,"description":408,"org":409,"tags":410,"stars":21,"repoUrl":22,"updatedAt":421},"convex-deploy-guard","manage Convex deployment safety and consent","Classify + announce the target Convex deployment before any deployment-affecting command; fresh explicit consent for prod actions; session read-only mode.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[411,412,415,418],{"name":9,"slug":8,"type":14},{"name":413,"slug":414,"type":14},"Deployment","deployment",{"name":416,"slug":417,"type":14},"Operations","operations",{"name":419,"slug":420,"type":14},"Security","security","2026-08-04T05:58:55.830592",{"slug":423,"name":423,"fn":424,"description":425,"org":426,"tags":427,"stars":21,"repoUrl":22,"updatedAt":435},"convex-design","build reactive backends with Convex","Design and build reactive, type-safe, production-grade backends on Convex. Covers schema, queries\u002Fmutations\u002Factions, indexes, auth, file storage, scheduling, real-time multiplayer, mobile backends, and LLM\u002Fagent workflows on Convex's one-platform stack.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[428,429,430,431,432],{"name":280,"slug":281,"type":14},{"name":220,"slug":221,"type":14},{"name":9,"slug":8,"type":14},{"name":224,"slug":225,"type":14},{"name":433,"slug":434,"type":14},"Realtime","realtime","2026-08-04T05:58:54.310662",50]