mcpField
T
templates

templates

github.com/railwayappクラウド・DevOps338716 回インストール2 週間前に更新
リポジトリ

templates について

Railway のテンプレートマーケットプレイスを検索し、設定済みサービスをプロジェクトにデプロイするスキルです。データベース、CMS、ストレージ、監視サービスなどの追加に使え、デプロイ後の変数による接続方法も扱います。

主な機能

  1. 01名前や用途でテンプレートを検索
  2. 02コードでテンプレート詳細を取得
  3. 03設定済みサービスをプロジェクトにデプロイ
  4. 04参照変数でサービスを接続

活用シーン

  1. 01プロジェクトに PostgreSQL や Redis を追加
  2. 02CMS テンプレートを検索してデプロイ
  3. 03デプロイ後にデータベース接続を設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/railwayapp/railway-skills --skill templates

インストール後、Claude Code で/templatesを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
environment-config.md
monorepo.md
railpack.md
variables.md
scripts/
railway-api.sh

詳細

テンプレート

Railway のテンプレートマーケットプレイスからサービスを検索してデプロイします。

使用する場面

  • 「Postgres を追加して」「Redis を追加して」「データベースを追加して」と依頼された場合
  • 「Ghost を追加して」「Strapi を追加して」「n8n を追加して」など、ほかのサービスの追加を依頼された場合
  • ユースケース(例:「CMS」「ストレージ」「モニタリング」)に合ったテンプレートを探したい場合
  • 「どのようなテンプレートが利用できますか?」と尋ねられた場合
  • 事前設定済みのサービスをデプロイしたい場合

よく使われるテンプレートコード

カテゴリテンプレートコード
データベースPostgreSQLpostgres
Redisredis
MySQLmysql
MongoDBmongodb
CMSGhostghost
Strapistrapi
ストレージMiniominio
自動化n8nn8n
モニタリングUptime Kumauptime-kuma

ほかのテンプレートを探すには、以下の検索クエリを使用します。

前提条件

プロジェクトのコンテキストを取得します:

railway status --json

以下を抽出します:

  • id - プロジェクト ID
  • environments.edges[0].node.id - 環境 ID

ワークスペース ID を取得します:

bash <<'SCRIPT'
scripts/railway-api.sh \
  'query getWorkspace($projectId: String!) {
    project(id: $projectId) { workspaceId }
  }' \
  '{"projectId": "PROJECT_ID"}'
SCRIPT

テンプレートを検索する

任意のフィルターを指定して、利用可能なテンプレートを一覧表示します:

bash <<'SCRIPT'
scripts/railway-api.sh \
  'query templates($first: Int, $verified: Boolean) {
    templates(first: $first, verified: $verified) {
      edges {
        node {
          name
          code
          description
          category
        }
      }
    }
  }' \
  '{"first": 20, "verified": true}'
SCRIPT
引数
引数型説明
firstInt結果の数(最大約 100 件)
verifiedBoolean検証済みのテンプレートのみ
recommendedBooleanおすすめのテンプレートのみ
レート制限

1 分あたり 10 件までです。検索を連続して実行しないでください。

テンプレートの詳細を取得する

コードを指定してテンプレートを取得します:

bash <<'SCRIPT'
scripts/railway-api.sh \
  'query template($code: String!) {
    template(code: $code) {
      id
      name
      description
      serializedConfig
    }
  }' \
  '{"code": "postgres"}'
SCRIPT

以下が返されます:

  • id - テンプレート ID(デプロイに必要)
  • serializedConfig - サービス設定(デプロイに必要)

テンプレートをデプロイする

ステップ 1:テンプレートを取得する
bash <<'SCRIPT'
scripts/railway-api.sh \
  'query template($code: String!) {
    template(code: $code) {
      id
      serializedConfig
    }
  }' \
  '{"code": "postgres"}'
SCRIPT
ステップ 2:プロジェクトにデプロイする
bash <<'SCRIPT'
scripts/railway-api.sh \
  'mutation deployTemplate($input: TemplateDeployV2Input!) {
    templateDeployV2(input: $input) {
      projectId
      workflowId
    }
  }' \
  '{
    "input": {
      "templateId": "TEMPLATE_ID_FROM_STEP_1",
      "serializedConfig": SERIALIZED_CONFIG_FROM_STEP_1,
      "projectId": "PROJECT_ID",
      "environmentId": "ENVIRONMENT_ID",
      "workspaceId": "WORKSPACE_ID"
    }
  }'
SCRIPT

重要: serializedConfig はテンプレートクエリから取得した正確な JSON オブジェクトであり、文字列ではありません。

サービスを接続する

テンプレートをデプロイした後、参照変数を使用してほかのサービスを接続します。

変数の構文と接続パターンの詳細については、variables.md を参照してください。

パターン
${{ServiceName.VARIABLE_NAME}}
よく使われるデータベース変数
サービス接続変数
PostgreSQL (Postgres)${{Postgres.DATABASE_URL}}
Redis${{Redis.REDIS_URL}}
MySQL${{MySQL.MYSQL_URL}}
MongoDB${{MongoDB.MONGO_URL}}
バックエンドとフロントエンド

バックエンドサービスでは、プライベート URL(内部ネットワーク)を使用できます:

${{Postgres.DATABASE_URL}}

フロントエンドアプリケーションはブラウザー上で動作するため、Railway のプライベートネットワークにはアクセスできません。次の方法があります:

  1. パブリック URL 変数(例:${{MongoDB.MONGO_PUBLIC_URL}})を使用する
  2. より適切な方法として、バックエンド API 経由でルーティングする

例:PostgreSQL を追加する

bash <<'SCRIPT'
# 1. Get context
railway status --json
# → project.id = "proj-123", environment.id = "env-456"

# 2. Get workspace ID
scripts/railway-api.sh \
  'query { project(id: "proj-123") { workspaceId } }' '{}'
# → workspaceId = "ws-789"

# 3. Fetch Postgres template
scripts/railway-api.sh \
  'query { template(code: "postgres") { id serializedConfig } }' '{}'
# → id = "template-abc", serializedConfig = {...}

# 4. Deploy
scripts/railway-api.sh \
  'mutation deploy($input: TemplateDeployV2Input!) {
    templateDeployV2(input: $input) { projectId workflowId }
  }' \
  '{"input": {
    "templateId": "template-abc",
    "serializedConfig": {...},
    "projectId": "proj-123",
    "environmentId": "env-456",
    "workspaceId": "ws-789"
  }}'
SCRIPT

例:CMS テンプレートを検索する

bash <<'SCRIPT'
# Search verified templates
scripts/railway-api.sh \
  'query {
    templates(first: 50, verified: true) {
      edges {
        node { name code description category }
      }
    }
  }' '{}'
# Filter results for "CMS" category or search descriptions
SCRIPT

作成されるもの

テンプレートでは、通常、次のものが作成されます:

  • イメージ/ソースが事前設定されたサービス
  • 環境変数(接続文字列、シークレット)
  • 永続データ用のボリューム(データベース)
  • 外部アクセス用の TCP プロキシ(必要な場合)

レスポンス

デプロイが成功すると、次の情報が返されます:

{
  "data": {
    "templateDeployV2": {
      "projectId": "proj-123",
      "workflowId": "deployTemplate/project/proj-123/xxx"
    }
  }
}

エラー処理

エラー原因解決方法
テンプレートが見つからない無効なコードテンプレートを検索するか、スペルを確認してください
レート制限超過検索回数が多すぎる1 分待ってから再試行してください
アクセス拒否ユーザーにアクセス権がないDEVELOPER ロール以上が必要です
プロジェクトが見つからない無効なプロジェクト IDrailway status --json を実行してください

組み合わせて使う

  • サービスを接続する:environment スキルを使用して変数参照を追加します
  • デプロイ済みサービスを表示する:service スキルを使用します
  • ログを確認する:deployment スキルを使用します
  • ドメインを追加する:domain スキルを使用します

コメント