Railway Domain Management

SkillAI & models

This is a skill that lets an AI agent manage domains for Railway services. With the railway claude skill installed, the agent can add a domain, generate a Railway domain, list current domains, get a service's URL, or remove a domain on request.

Available today. Use it from your connected AI after setup.

Have access to the Railway services whose domains you want to manage.

Then ask your AI: use the Railway Domain Management skill

What your AI can do with it

  • Add a domain to a Railway service
  • Generate a Railway domain for a service
  • View the domains currently attached to a service
  • Get the URL for a Railway service
  • Remove a domain from a Railway service

Getting started

  1. Have access to the Railway services whose domains you want to manage.
  2. Add the railway-domain skill to your agent's available skills.
  3. Ask the agent to add, view, or remove a domain for a service.

What this skill tells your AI

The instructions your AI receives, as published by davila7/claude-code-templates in cli-tool/components/skills/railway/domain/SKILL.md and read by ahel’s review.

Add, view, or remove domains for Railway services.

When to Use

  • User asks to "add a domain", "generate a domain", "get a URL"
  • User wants to add a custom domain
  • User asks "what's the URL for my service"
  • User wants to remove a domain

Add Railway Domain

Generate a railway-provided domain (max 1 per service):

railway domain --json

For a specific service:

railway domain --json --service backend

Response

Returns the generated domain URL. Service must have a deployment.

Add Custom Domain

railway domain example.com --json

Response

Returns required DNS records:

{
  "domain": "example.com",
  "dnsRecords": [
    { "type": "CNAME", "host": "@", "value": "..." }
  ]
}

Tell user to add these records to their DNS provider.

Read Current Domains

Use railway-environment skill to see configured domains, or query directly:

query domains($envId: String!) {
  environment(id: $envId) {
    config(decryptVariables: false)
  }
}

Domains are in config.services.<serviceId>.networking:

  • serviceDomains - Railway-provided domains
  • customDomains - User-provided domains

Remove Domain

Use railway-environment skill to remove domains:

Remove custom domain

{
  "services": {
    "<serviceId>": {
      "networking": {
        "customDomains": { "<domainId>": null }
      }
    }
  }
}

Remove railway domain

{
  "services": {
    "<serviceId>": {
      "networking": {
        "serviceDomains": { "<domainId>": null }
      }
    }
  }
}

Then use railway-environment skill to apply and commit the change.

CLI Options

FlagDescription
[DOMAIN]Custom domain to add (omit for railway domain)
-p, --port <PORT>Port to connect
-s, --service <NAME>Target service (defaults to linked)
--jsonJSON output

Composability

  • Read domains: Use railway-environment skill
  • Remove domains: Use railway-environment skill
  • Apply removal: Use railway-environment skill
  • Check service: Use railway-service skill

Error Handling

No Service Linked

No service linked. Use --service flag or run `railway service` to select one.

Domain Already Exists

Service already has a railway-provided domain. Maximum 1 per service.

No Deployment

Service has no deployment. Deploy first with `railway up`.

Invalid Domain

Invalid domain format. Use a valid domain like "example.com" or "api.example.com".

Signals

GitHub stars
32k
Forks
4k
Last commit
Sep 2026

Questions

What can this skill do?
It lets an agent add, view, or remove domains for Railway services, generate a Railway domain, and get the URL for a service.
When should the agent use it?
Whenever you want to add a domain, generate a Railway domain, check current domains, get a service's URL, or remove a domain.
Advanced
Item type
skill
Key
railway-domain
Source
github.com/davila7/claude-code-templates