Skip to main content
skill CX Codex

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.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add convex/agent-skills --skill convex-domains -a claude-code
Open on GitHub

What 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-code

2Manually: put the files in place

~/.claude/skills/convex-domains/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/convex-domains/

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

Similar skills

Everything for DevOps and infrastructure →

From the same set32

convex-seed Populates Convex database tables with sample rows or imports external datasets. Useful when preparing dev environments without manual data entry. CX Codex +1 35,800installs convex-verify convex-verify tests a Convex feature with seeded data, multiple mocked identities, and negative authorization checks. Use it for a specific feature you have built or changed. CX Codex +1 35,800installs convex-monitor This skill blocks on the next event in a Convex app — a dev error, a prod error or a feature request — and hands it to the agent. CX Codex +1 35,800installs convex-billing Adds Stripe payments and subscriptions to a Convex app using @convex-dev/stripe with checkout sessions, webhooks, and subscription gating. CX Codex +1 35,800installs convex-launch-readiness Runs four Convex audits into one readiness report with a score and an ordered fix plan. Useful when the backend is about to ship and you need to know what to fix first. CX Codex +1 35,900installs convex-explain-app Maps an existing Convex backend using schema and exported functions. It helps you understand data models, public APIs, and auth before making changes. CX Codex +1 35,900installs convex-backup Sets up Convex snapshot exports and runs a restore drill into a throwaway preview, so you find out whether recovery actually works. CX Codex +1 35,900installs convex-migrate-rehearse Runs a schema change and backfill on a snapshot-seeded preview deployment, then promotes the proven migration to prod. CX Codex +1 35,900installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor