dotclaude

Command in deployment

cutover

Drive a live domain migration step by step, with the owner doing DNS and the agent verifying each stage. Use when moving a production domain to a new host.

Arguments
<domain> --to <new-host-address> [--coolify-app <name>] [--dns <provider>] [--ssh <alias>]
Model
inherit
Allowed tools
Read, Write, Edit, Bash, Glob, Grep

Install

As a plugin

Bundled in the deploy plugin. Add the marketplace once, then install the bundle; it updates with the marketplace.

/plugin marketplace add KhaledSaeed18/dotclaude
/plugin install deploy@dotclaude

As a single item

Run from the project root; the command lands under .claude/. Copy it to ~/.claude/ to make it global.

npx shadcn@latest add KhaledSaeed18/dotclaude/cutover

Files installed

  • .claude/commands/cutover.md

What it does

Context

Request: $ARGUMENTS

Current DNS and deployment doc:

!D=$(echo "$ARGUMENTS" | awk '{print $1}'); [ -n "$D" ] && dig +noall +answer "$D" 2>/dev/null; dig +short NS "$(echo "$D" | awk -F. '{print $(NF-1)"."$NF}')" 2>/dev/null | head -2; ls docs/engineering/DEPLOYMENT.md 2>/dev/null

Task

Run the live-domain-cutover skill as a guided session. You verify; the owner edits DNS and hosting consoles from exact steps you give. Never advance a stage on an assumption: each stage ends with a verification whose output you show.

Stage 1: Record

Write the current record (type, value, TTL) and the authoritative servers into the deployment doc as the rollback value. Give the owner the TTL change (1 min on the existing record) and wait for "done"; confirm with dig @<ns>.

Stage 2: Rehearse

Give the owner the rehearsal record (<name>-next A to the new host, TTL 1 min). Deploy the app on that name only, then run the deploy-verification skill there in full, including a rolling-update probe and the header comparison with the old host. Fix and redeploy until every check passes. Report the checklist.

Stage 3: Switch

Agree a time. Give the owner the two edits (delete the old record, add the A record, TTL 1 min) and wait. Then: poll the authoritative server and two public resolvers; set the real domain as the only domain in Coolify and redeploy; watch the certificate until it verifies; switch the pipeline's probe variable; run deploy-verification on the real domain; ask the owner to reload their signed-in tab and confirm the session survived.

Stage 4: Soak and remove

Record the cutover time and results in the deployment doc. Ask the owner how long to soak. When they declare it over, give the removal steps (DNS cleanup and TTL back to Automatic, old host domain, Git connection and project, GitHub app access and environments, hook secrets in other repositories), verify each with dig, gh api and gh secret list, and finish the docs: migration section removed, follow-ups for other repositories listed.

End with a timeline of timestamps and a one-line status per stage. If anything failed at Stage 3, lead with the rollback instruction (restore the recorded value) before any analysis.

This is the command as installed, rendered from its source on GitHub. Read it as Markdown.

  • deploy-setupAdd container packaging and a GHCR to Coolify pipeline to the current repository, then list the owner actions left. Use when a project needs to go from...
  • deploy-verifyRun the server-side verification of a deployment and report pass or fail per check. Use when a deploy finished, after a cutover, or before closing a...
  • coolify-image-appCreate and configure a Coolify application that runs a prebuilt image from a registry. Use when adding an app to Coolify, fixing its health check...
  • coolify-vps-baselinePrepare a Linux VPS to run production containers under Coolify. Use when setting up a new server, auditing an existing one, or connecting a registry...
  • deploy-verificationProve a deployment from the server side. Use when a deploy finished and needs sign-off, when a rolling update may have dropped requests, or when a proxy...
  • express-prisma-coolify-imagePackage an Express and Prisma API as a runtime-only image that migrates its Postgres database at start. Use when containerising a Node API with a...