用途
该技能用于在 Railway 平台上创建新的项目(Project)、服务(Service)和数据库(Database),并完成相应配置。当用户表达「setup」「deploy to railway」「initialize」「create project」「create service」,或希望从 GitHub 仓库部署时,应使用此技能。
主要能力
- 检查 Railway CLI 是否安装及是否已认证。
- 判断当前目录、父目录是否已关联 Railway 项目,决定新增服务还是初始化/关联项目。
- 初始化新项目(
railway init)或关联已有项目(railway link)。 - 在已关联项目中创建服务(
railway add --service <name>)。 - 根据项目类型(静态站点、Node.js SSR、Python、Go 等)进行配置,引用 railpack.md 与 monorepo.md。
- 处理隔离式 monorepo(设置根目录)与共享式 monorepo(使用自定义 build/start 命令,不设根目录)。
- 通过 database 技能添加 Postgres、Redis、MySQL、MongoDB 等数据库并连接服务。
- 提供脚手架提示,以及在无代码时建议最小化模板。
- 包含错误处理与多组操作示例。
使用方式
前提条件:检查 CLI 是否安装(command -v railway),未安装则使用 npm install -g @railway/cli 或 brew install railway;检查认证(railway whoami --json),未认证则运行 railway login。
决策流程:先运行 railway status --json。若已关联,默认「deploy to railway」表示向已关联项目添加服务,不要创建新项目,除非用户明确说「new project」「create a project」「init a project」等。若未关联,检查父目录(cd .. && railway status --json);父目录已关联时,创建服务(railway add --service <name>),通过 environment 技能设置 rootDirectory 为子目录路径,再从根目录部署(railway up)。若父目录也未关联,则按 init 或 link 流程处理。
Init 与 Link 决策:用户明确说「new project」则用 railway init;用户指定已有项目名则用 railway link;目录名与已有项目匹配则询问;无匹配项目则 railway init;不明确时询问用户。创建新项目使用 railway init -n <name>,存在多个工作区时需 --workspace。关联已有项目使用 railway link -p <project>。
创建服务:项目关联后执行 railway add --service <name>。对于 GitHub 仓库来源,先创建空服务,再用 environment 技能通过 staged changes API 配置 source.repo 和 source.branch,不要使用 railway add --repo。
按项目类型配置:静态站点由 Railpack 自动检测常见输出目录(dist、build),非标准输出目录需设置 RAILPACK_STATIC_FILE_ROOT,且不要使用 railway variables CLI;Node.js SSR 检查 package.json 中的 start 脚本;Python 检查 requirements.txt 或 pyproject.toml;Go 检查 go.mod。
Monorepo 配置:隔离式 monorepo 设置 Root Directory 为应用子目录(如 /frontend);共享式 monorepo 不设根目录,改用自定义构建/启动命令(如 pnpm --filter、npm --workspace、yarn workspace、turbo run --filter),并设置 watch paths。
数据库:添加 Postgres、Redis、MySQL、MongoDB 等使用 database 技能,负责创建数据库服务、连接变量引用和服务接线。
可组合性:服务创建后用 deploy 技能推送代码;高级配置用 environment 技能;域名用 domain 技能;状态检查用 status 技能;服务操作(重命名、删除、状态)用 service 技能。
适用场景
- 用户希望初始化新的 Railway 项目或从 GitHub 部署。
- 创建静态站点、Vite React、Astro、Next.js、Nuxt、Express、FastAPI、Django、Flask、Go 等服务。
- 处理隔离式或共享式 monorepo 中的服务创建与配置。
- 在已关联项目的子目录中创建并部署服务。
- 添加并连接数据库。
限制
- 未安装 CLI 或未认证时需先完成安装与登录。
- 多工作区时
railway init需要--workspace标志。 - GitHub 仓库来源不使用
railway add --repo,因该方式依赖 GitHub app 集成且常常失败。 - 不明确时应询问用户,避免错误创建项目或服务。
错误处理(要点)
CLI 未安装、未认证、无工作区、项目名已存在、服务名已存在等情况均提供对应提示与解决方式。