
Projects
List Railway workspaces and projects, switch the linked project, and tweak PR deploys and visibility without leaving the agent chat.
Overview
Projects is an agent skill for the Operate phase that lists, switches, and configures Railway projects and workspaces using the Railway CLI.
Install
npx skills add https://github.com/railwayapp/railway-skills --skill projectsWhat is this skill?
- Lists projects via `railway list --json` with guidance to summarize id, name, workspace, and optional service names inst
- Lists workspaces through `railway whoami --json` for cross-workspace project discovery
- Switches context with `railway link -p <project-id-or-name>` or interactive `railway link`
- Documents project setting updates via GraphQL after resolving project id from `railway status --json`
- Covers enabling/disabling PR deploys and public/private project visibility
Adoption & trust: 867 installs on skills.sh; 274 GitHub stars; 2/3 security scanners passed (skills.sh audits).
What problem does it solve?
You have several Railway workspaces and projects and cannot quickly see what exists, which project is linked locally, or how to change PR deploy and visibility settings.
Who is it for?
Solo builders managing multiple Railway apps who want the agent to run list, link, and settings flows with summarized JSON output.
Skip if: First-time Railway onboarding, service deploy debugging, or environments where the Railway CLI is not installed and authenticated.
When should I use this skill?
User wants to list projects or workspaces, switch projects, rename, enable/disable PR deploys, change public/private, or ask about project settings.
What do I get? / Deliverables
You get a readable project and workspace summary, the correct `railway link` target, and paths to update settings via status JSON and GraphQL after the CLI steps run.
- Simplified project and workspace summary
- Updated local project link via railway link
- Pointers to project id from status JSON for setting updates
Recommended Skills
Journey fit
Project and workspace management is ongoing platform housekeeping after you are already on Railway, which maps to running production infrastructure rather than first-time shipping. Listing, linking, renaming, and PR-deploy toggles are infra configuration tasks on the Railway control plane, not application code changes.
How it compares
Use for Railway project and workspace control-plane tasks instead of generic shell scripting without the Railway skill guardrails.
Common Questions / FAQ
Who is projects for?
Indie developers and small teams already on Railway who need to browse workspaces, switch linked projects, or adjust project-level deploy and visibility settings from an AI coding agent.
When should I use projects?
Use it when you ask what projects you have, want to switch directories to another Railway project, rename a project, enable or disable PR deploys, or change public versus private settings; it is most relevant in Operate when juggling live infra across workspaces.
Is projects safe to install?
It is scoped to Bash(railway:*) so the agent should only invoke Railway CLI commands; review the Security Audits panel on this page and confirm your Railway token scope before linking production projects.
SKILL.md
READMESKILL.md - Projects
# 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: `id`, `name` - Workspace: `id`, `name` - Services: `name` (optional, if user needs service context) ```bash railway list --json ``` Extract and return a simplified summary, not the full JSON. ## List Workspaces ```bash railway whoami --json ``` Returns user info including all workspaces the user belongs to. ## Switch Project Link a different project to the current directory: ```bash railway link -p <project-id-or-name> ``` Or interactively: ```bash railway link ``` After switching, use `status` skill to see project details. ## Update Project Modify project settings via GraphQL API. ### Get Project ID ```bash railway status --json ``` Extract `project.id` from the response. ### Update Mutation ```bash bash <<'SCRIPT' scripts/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 | |-------|------|-------------| | `name` | String | Project name | | `description` | String | Project description | | `isPublic` | Boolean | Make project public/private | | `prDeploys` | Boolean | Enable/disable PR deploys | | `botPrEnvironments` | Boolean | Enable Dependabot/Renovate PR environments | ### Examples **Rename project:** ```bash scripts/railway-api.sh '<mutation>' '{"id": "uuid", "input": {"name": "new-name"}}' ``` **Enable PR deploys:** ```bash scripts/railway-api.sh '<mutation>' '{"id": "uuid", "input": {"prDeploys": true}}' ``` **Make project public:** ```bash scripts/railway-api.sh '<mutation>' '{"id": "uuid", "input": {"isPublic": true}}' ``` **Multiple fields:** ```bash scripts/railway-api.sh '<mutation>' '{"id": "uuid", "input": {"name": "new-name", "prDeploys": true}}' ``` ## Composability - **View project details**: Use `status` skill - **Create new project**: Use `new` skill - **Manage environments**: Use `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. ``` # Environment Config Reference The `EnvironmentConfig` object is used to configure services, volumes, and shared variables in Railway. ## Structure ```json { "services": { "<serviceId>": { "source": { ... }, "build": { ... }, "deploy": { ... }, "variables": { ... }, "networking": { ... } } }, "sharedVariables": { ... }, "volumes": { ... }, "buckets": { ... } } ``` Only include fields being changed. The patch is merged with existing config. Apply changes via CLI: `echo '<json>' | railway environment edit --json` ## Service Config ### Source | Field | Type | Description | |-------|------|-------------| | `image` | string | Docker image (e.g., `nginx:latest`) | | `repo` | string | Git repos