Claude-code-templates railway-projects
List, switch, and configure Railway projects. Use when user wants to list all projects, switch projects, rename a project, enable/disable PR deploys, make a project public/private, or modify project settings.
install
source · Clone the upstream repo
git clone https://github.com/davila7/claude-code-templates
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/davila7/claude-code-templates "$T" && mkdir -p ~/.claude/skills && cp -r "$T/cli-tool/components/skills/railway/projects" ~/.claude/skills/davila7-claude-code-templates-railway-projects && rm -rf "$T"
manifest:
cli-tool/components/skills/railway/projects/SKILL.mdsource content
Railway Project Management
List, switch, and configure Railway projects.
When to Use
- User asks "show me all my projects" or "what projects do I have"
- User asks about projects across workspaces
- User asks "what workspaces do I have"
- User wants to switch to a different project
- User asks to rename a project
- User wants to enable/disable PR deploys
- User wants to make a project public or private
- User asks about project settings
List Projects
The
railway list --json output can be very large. Run in a subagent and return only essential fields:
- Project:
,idname - Workspace:
,idname - Services:
(optional, if user needs service context)name
railway list --json
Extract and return a simplified summary, not the full JSON.
List Workspaces
railway whoami --json
Returns user info including all workspaces the user belongs to.
Switch Project
Link a different project to the current directory:
railway link -p <project-id-or-name>
Or interactively:
railway link
After switching, use railway-status skill to see project details.
Update Project
Modify project settings via GraphQL API.
Get Project ID
railway status --json
Extract
project.id from the response.
Update Mutation
bash <<'SCRIPT' ${CLAUDE_PLUGIN_ROOT}/skills/lib/railway-api.sh \ 'mutation updateProject($id: String!, $input: ProjectUpdateInput!) { projectUpdate(id: $id, input: $input) { name prDeploys isPublic botPrEnvironments } }' \ '{"id": "PROJECT_ID", "input": {"name": "new-name"}}' SCRIPT
ProjectUpdateInput Fields
| Field | Type | Description |
|---|---|---|
| String | Project name |
| String | Project description |
| Boolean | Make project public/private |
| Boolean | Enable/disable PR deploys |
| Boolean | Enable Dependabot/Renovate PR environments |
Examples
Rename project:
${CLAUDE_PLUGIN_ROOT}/skills/lib/railway-api.sh '<mutation>' '{"id": "uuid", "input": {"name": "new-name"}}'
Enable PR deploys:
${CLAUDE_PLUGIN_ROOT}/skills/lib/railway-api.sh '<mutation>' '{"id": "uuid", "input": {"prDeploys": true}}'
Make project public:
${CLAUDE_PLUGIN_ROOT}/skills/lib/railway-api.sh '<mutation>' '{"id": "uuid", "input": {"isPublic": true}}'
Multiple fields:
${CLAUDE_PLUGIN_ROOT}/skills/lib/railway-api.sh '<mutation>' '{"id": "uuid", "input": {"name": "new-name", "prDeploys": true}}'
Composability
- View project details: Use railway-status skill
- Create new project: Use railway-new skill
- Manage environments: Use railway-environment skill
Error Handling
Not Authenticated
Not authenticated. Run `railway login` first.
No Projects
No projects found. Create one with `railway init`.
Permission Denied
You don't have permission to modify this project. Check your Railway role.
Project Not Found
Project "foo" not found. Run `railway list` to see available projects.