# railway-skills: six install paths for one skill, and a repository whose primary language is Python with no Python in it

> The official packaging for using Railway from an AI coding tool, following a published skill format, shipped for five clients plus a hosted connector. Everything in it is manifests and markdown, and the interesting decisions are all about how a single skill reaches five different plugin systems and how long it takes to get there.

**railwayapp/railway-skills** — Agent skills for interacting with Railway

- Repository: https://github.com/railwayapp/railway-skills
- Website: https://railway.com/skills.sh
- Stars: 327 · Forks: 45
- Language: Python
- License: MIT
- Published: 2026-09-17 · Updated: 2026-09-17 · Language: en
- Canonical page: https://hysenlabs.com/projects/railwayapp-railway-skills

## The installer is piped from a bare subdomain and edits your tool configuration

The whole setup is one line:

```bash
curl -fsSL agents.railway.com | sh
```

There is no checksum, no version argument, no dry run and no help flag. The script is whatever that host serves at the moment you run it, and the only way to read it first is to fetch it separately and look.

What it does is more than install. The README says it installs the CLI and the skills, configures the Railway MCP server for detected tools, and then checks authentication. So a single piped script writes into the configuration of whichever coding tools it finds on your machine, and the detection is automatic.

Authentication is handled in two steps. If you are not signed in the script tells you to run a login command, which opens the browser flow. If the CLI is already on your machine and you only want the agent wiring, there is a separate command for that and it skips the install.

The distinction between those two commands is the useful part of the design. A user who already uses the Railway command line does not need to reinstall it, and a user who does not want their tool configuration rewritten can skip the piped script entirely and install the plugin from a marketplace by hand, which every client in the file supports.

## Six channels, and one of them ships nothing from this repository

The README documents a separate installation section per client, and the mechanisms are not variations on a theme.

For ChatGPT and Codex there is an official plugin in a shared plugin directory, which bundles the skill and Railway's hosted MCP server, and connecting a Railway account is prompted for. There is also a second path where you add this repository as a Codex marketplace yourself, through a five-step walkthrough inside the Codex interface.

For Claude there are three. The connector directory offers a connector that uses the hosted MCP server and OAuth and therefore needs no command line tool at all. The Claude Code plugin is a different thing, carrying the skill and hooks and coming from a plugin marketplace. And this repository also publishes its own Claude Code marketplace, which is the same plugin from a different index.

For Cursor there is an official marketplace reachable with a single slash command, and a second path where you paste the repository URL into the plugin settings.

For Grok Build the plugin comes from an official marketplace belonging to another organisation, and installation ends with pressing a single letter in a terminal interface.

That connector is the odd one out. It is an OAuth connection to a hosted server, so there is no file in this repository that produces it. Five of the six channels are packaging work done here; the sixth is a listing on somebody else's site.

## The official marketplace lags the repository by a commit in someone else's repository

One paragraph explains the delivery lag, and it is the single most useful operational detail in the file.

The official marketplace pins each plugin to a specific commit. Changes in this repository only become available through the official marketplace after the Railway entry in that marketplace's own repository is updated to a commit that contains them.

So installing from the official marketplace gives you a frozen copy, and your update is a two-hop process: merge here, then open a change upstream that moves a pin. Nothing in this repository can do the second half.

The README is honest about it, and it also tells you what to do instead. Each client section has a second path for installing the version published here, and those paths bypass the pin entirely because they point at the repository itself.

For Claude Code the repository's own marketplace is two commands:

```text
/plugin marketplace add railwayapp/railway-skills
/plugin install railway@railway-skills
/reload-plugins
```

That third command appears in both Claude Code paths and is easy to miss. Plugins are installed and then do not appear until plugins are reloaded, which is a small friction that costs people an hour the first time.

## Two marketplace manifests, two conventions, and a directory layout that differs per client

The root of the repository has four dot directories and one plugin directory. The dot directories are an agents directory, a Claude plugin directory and a Cursor plugin directory, and there is no Codex plugin directory at the root.

The manifests the README points at are scattered across three conventions.

The Codex plugin manifest lives nested under the plugin directory, in a Codex-specific folder inside the plugin itself. Its marketplace file lives under the agents directory. The Cursor plugin manifest also lives nested inside the plugin directory, in a Cursor-specific folder, but its marketplace file lives at the root under the Cursor plugin directory.

So one client indexes from an agents-prefixed path, another from a top-level path, and both nest their plugin manifest inside the plugin folder rather than beside it. Cursor even has two files in the same root directory that differ only by the leading dot on one of them.

That inconsistency is not a defect in any one manifest. It is the cost of supporting five plugin systems that each invented their own discovery convention, and the repository carries all of them side by side so that one skill can be installed by any of them.

The one place this shows up as a genuine risk is version drift. Five manifests describing the same skill means five places to bump a version, and nothing in the repository enforces that they agree.

## The primary language is Python and the repository contains no Python

The repository is recorded as a Python project. The root listing contains a gitignore, two plugin directory trees, a workflow directory, a licence, a readme, two agent instruction files, and a plugin directory.

There is no Python file, no dependency file, no packaging manifest and no build step. There is no continuous integration file that runs anything.

The two instruction files are worth naming because they are unusual in a repository whose product is an agent skill. One is a general agent file and one is a Claude file, which is the convention that coding tools read to know how to work in the repository. In this case the thing being taught is how to publish the skill.

So the language classification is almost certainly coming from a file inside one of the plugin directories rather than from anything at the root. That is fine, and it means the repository cannot be installed, built, or run. It can only be read and then consumed by a client that already knows the format.

The homepage recorded for the repository is a product page rather than a documentation site, and the README does not link it. The skill's own documentation is therefore the thing you get after installing, not before.

## One skill, and the README documents none of what it does

The skill surface section is four sentences long and names exactly one installable skill, a Markdown file inside the plugin directory.

The description of what it does is that it is route-first: intent routing is defined in the skill file, and execution details are split into action-oriented references. So the skill is a router over a set of reference documents, and both halves are behind the plugin install.

There is no tool list, no example, no parameter table, and no statement of what the hosted MCP server exposes. Nothing in this repository tells you which Railway actions the skill can perform, what the routing keys are, or how many reference files there are.

That is a defensible choice for a vendor publishing its own integration, since the audience already knows what Railway is and the point is distribution rather than discovery. It does mean that evaluating the skill requires installing it, and that reading how it works requires finding a file the README links only as a path.

The skills format is external and named in the opening line, so the structural conventions are documented elsewhere. What lives here is the instance of those conventions for one vendor and one platform.

## Codex is the only client with no command, and two clients behave differently

Five of the six channels have a command. The Codex path is the exception.

Installing from this repository into Codex is five interface steps: open Codex, select plugins in the sidebar, open the more dropdown, click add more, and enter the repository as the marketplace source. There is no command to paste, which means it cannot be scripted and it cannot be added to an onboarding document as a line.

The other paths are all one or two lines. The Claude Code marketplace needs two commands plus a reload. The Cursor official marketplace needs one. Grok Build needs a modal and a single key press. The ChatGPT plugin is a directory listing you click into.

Two clients also get different behaviour from the same skill. The Claude Code plugin is described as carrying the skill and hooks, where the ChatGPT, Codex and Cursor plugins are described as carrying the skill and the hosted MCP server. Hooks are a Claude Code mechanism for running something around a tool call, so a user who relies on hook behaviour gets it in one client and not in the others.

There is a second small asymmetry. The shared-directory plugin for ChatGPT is only usable after you start a new chat or task, so an install mid-conversation leaves the plugin invisible until you do.

## Two authentication models for the same capability, chosen per client

Railway access arrives in two shapes across the six channels, and the split is by client rather than by preference.

One shape is the command line. You install the CLI, authenticate with a browser login, and the skill plus the MCP server run against your local session. This is what the piped installer sets up, and what the plugin marketplaces that carry the skill depend on.

The other shape is the hosted connector. It uses Railway's hosted MCP server with OAuth and needs no command line tool at all, which is why it is offered in the Claude connector directory.

Neither is described as preferable. In practice the OAuth route is the only one that works in a browser-only or hosted environment, which is exactly the case the MCP server section names, and the CLI route is the one that works when you want the same credentials as your terminal.

The consequence for anyone documenting this internally is that there is no single answer to how a given teammate should install Railway access. Someone in a hosted coding environment needs the connector; someone at a terminal needs the CLI; someone who wants the current version rather than the pinned one needs a repository marketplace.

The last commit landed today, and the repository has no releases, so the branch is the only version.

## Conclusion

railway-skills is worth reading if you are building a skill that has to reach more than one agent client, because the six packaging layouts it carries show exactly how much of that work is manifest scaffolding rather than skill content. Two things to know before you rely on it. Installing from the official marketplaces gives you a version pinned to a commit, so your fix arrives one merge later through a change in someone else's repository, and the one-line installer is piped from a bare subdomain with no checksum and no way to inspect it first. If you want the current state, install from this repository's own marketplace rather than the official one.

## FAQ

### How do I connect Claude Code to railway?

Two ways. From the official Anthropic marketplace, install the Railway plugin and reload plugins, or add this repository as a marketplace and install from it. There is also a separate Claude connector in the connector directory that uses Railway's hosted MCP server with OAuth and does not need the Railway CLI at all.

### What does `curl -fsSL agents.railway.com | sh` actually do?

It installs the Railway CLI and the skills, configures the Railway MCP server for whichever coding tools it detects, and then checks authentication, prompting you to run `railway login` if you are not signed in. If you already have the CLI, `railway setup agent` configures the agent support without reinstalling.

### How do I get the latest version of the Railway skill rather than the pinned one?

Install from this repository's own marketplace rather than the official one. The official marketplaces pin each plugin to a specific commit, and a change here only reaches them after the entry in the upstream marketplace repository is updated. The repository path is documented separately for Codex, Claude Code, Cursor and Grok Build.

### Which clients does railway-skills support?

ChatGPT, OpenAI Codex, Claude Code, Grok Build and Cursor, each with its own plugin manifest in this repository, plus a separate Claude connector that is hosted rather than packaged here. The Claude Code plugin additionally carries hooks, which the other plugin packages do not.

### What does the use-railway skill actually do?

The README says it is route-first, with intent routing defined in the skill file and execution details split into action-oriented reference documents. It does not list the tools, the routing keys, the reference files or the API surface. Those become visible only after installing the plugin.

## Sources

- [Issues](https://github.com/railwayapp/railway-skills/issues)
- [License: MIT](https://github.com/railwayapp/railway-skills/blob/main/LICENSE)
- [Project website](https://railway.com/skills.sh)
- [railwayapp/railway-skills on GitHub](https://github.com/railwayapp/railway-skills)
- [README](https://github.com/railwayapp/railway-skills/blob/main/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/railwayapp-railway-skills
