convex-domains — Claude Code skill: custom domain for Convex
Walks your agent through DNS records at your registrar, attaching the domain to a Convex app, and rebinding the auth origin.
npx skills add convex/agent-skills --skill convex-domains -a claude-codeWhat convex-domains does
Reach for this skill when you already own a domain and your app runs on Convex, and you would rather not wire the two together by hand. The agent first identifies the target: the published site host on *.convex.app or the deployment's HTTP actions URL. Then it looks for an already-authenticated DNS CLI for your provider and offers to create the records itself: flarectl dns create on Cloudflare, aws route53 change-resource-record-sets on Route53, gcloud dns record-sets create, doctl compute domain records create, vercel dns add. Auth checks are read-only, and you see the exact commands before anything runs.
No CLI, or you'd rather not? The skill hands you the exact record strings for your registrar: the CNAME (or A/ALIAS at the apex) plus the TXT verification record, with real host and value strings instead of placeholders. From there the domain gets attached as a Convex custom domain in the dashboard or via CLI, and verification has to pass. DNS propagation runs from minutes to hours, so dig +short is how you confirm the records landed.
One thing to watch: if the app uses auth (passkeys or OAuth), changing the domain means rebinding the auth origin through the SITE_URL, RP_ID and ORIGIN env vars and re-publishing. Skip that and sign-in breaks. Registrar credentials are never requested or handled — only a CLI already authenticated on your machine counts, and the skill will not run a login flow for you.
What it helps with
- create CNAME and TXT records at your registrar without hunting for values
- attach a domain you bought to a Convex app
- fix sign-in after a domain change by rebinding the auth origin
- confirm DNS records actually propagated
- let an authenticated DNS CLI create the records for you
Example prompts for the agent
- Point my domain example.com at my Convex app, show me the Cloudflare commands
- I'm on Route53 — create the records and attach the domain to Convex
- I attached the domain and OAuth sign-in broke, rebind the auth origin and re-publish
How to install convex-domains
1Skills CLI (Vercel)
npx skills add convex/agent-skills --skill convex-domains -a claude-code2Manually: put the files in place
~/.claude/skills/convex-domains/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/convex-domains/
1Skills CLI (Vercel)
npx skills add convex/agent-skills --skill convex-domains -a codex2Manually: put the files in place
.agents/skills/convex-domains/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add convex/agent-skills --skill convex-domains -a cursor2Manually: put the files in place
.cursor/skills/convex-domains/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install convex/agent-skills convex-domains2Manually: put the files in place
.github/skills/convex-domains/SKILL.md1Skills CLI (Vercel)
npx skills add convex/agent-skills --skill convex-domains -a gemini-cli2Platform CLI
gemini skills install https://github.com/convex/agent-skills --path skills/convex-domainsManually: put the files in place
.devin/skills/convex-domains/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add convex/agent-skills --skill convex-domains -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about convex-domains
How do I install convex-domains in Claude?
Run npx skills add convex/agent-skills --skill convex-domains -a claude-code. The skill lands in ~/.claude/skills/convex-domains/SKILL.md.
What does the convex-domains skill do?
It walks the agent through pointing your domain at a Convex app: identifying the target, creating DNS records, attaching the custom domain, and rebinding the auth origin when the app uses auth.
Does the skill need my registrar credentials?
No. It never asks for or handles them. If a DNS CLI for your provider is already authenticated on your machine, the skill can create records through it, but it shows the commands and waits for your go-ahead first.
Source text
SKILL.md · Apache-2.0
--- name: convex-domains description: "Point a domain you already own at your Convex app (DNS records, custom-domain attach, auth-origin rebind)." --- <!-- GENERATED from convex-agents content/capabilities/domains.json — do not edit by hand. --> # Set up a custom domain with your own provider 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. ## Workflow 1. Identify the target: the published site host (for `*.convex.app` static hosting) or the deployment's HTTP actions URL. 2. 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` / `aws sts get-caller-identity` / `doctl account get`); show the exact commands and get a yes before running. 3. If no authed CLI (or the user declines), tell the user exactly which records to create at THEIR registrar: the CNAME (or A/ALIAS at the apex) plus the TXT verification record — with concrete host/value strings, not placeholders. 4. 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`. 5. If the app uses auth (passkeys/OAuth), rebind the auth origin (SITE_URL / RP_ID / ORIGIN env vars) to the new domain and re-deploy/re-publish. 6. Verify: the domain serves the app over HTTPS, including the apex → www redirect if configured. ## Rules - 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/auth flow for this, and never echo tokens. - DNS changes on a live domain are user-visible: show the exact commands and confirm before running them; verify afterwards with dig. - Always include the TXT verification record, not just the CNAME. - Rebinding the domain changes the auth origin — re-publish after, or sign-in breaks.
© convex · Apache-2.0 · convex/agent-skills