
Templates
Add pre-built Railway marketplace services (CMS, automation, storage, monitoring) to a project without hand-rolling Docker from scratch.
Overview
templates is an agent skill most often used in Build (also Validate prototype, Operate monitoring) that searches and deploys Railway marketplace services via the railway CLI.
Install
npx skills add https://github.com/railwayapp/railway-skills --skill templatesWhat is this skill?
- Search and deploy from Railway’s template marketplace via railway CLI and GraphQL helpers.
- Documents common template codes: postgres, redis, mysql, mongodb, ghost, strapi, minio, n8n, uptime-kuma.
- Steers database adds toward the database skill when user asks only for Postgres/Redis/MySQL/MongoDB.
- Requires railway status --json for project and environment IDs before deploy steps.
- allowed-tools scoped to Bash(railway:*) for agent execution.
- Table lists 9 common template codes across databases, CMS, storage, automation, and monitoring.
- Prerequisites call for railway status --json for project and environment node IDs.
Adoption & trust: 729 installs on skills.sh; 274 GitHub stars; 2/3 security scanners passed (skills.sh audits).
What problem does it solve?
You know you need Ghost, n8n, or Minio on Railway but do not want to manually configure images, env vars, and service linking from zero.
Who is it for?
Indie SaaS builders already on Railway who want one-command adds for CMS, automation, storage, or monitoring templates.
Skip if: Pure managed-database-only adds when the database skill is the intended path, or teams not using Railway as their host.
When should I use this skill?
User wants to add a service from a template, find templates for a use case (CMS, storage, monitoring), deploy Ghost/Strapi/n8n/Minio/Uptime Kuma, or ask what templates are available—prefer database skill for DB-only adds
What do I get? / Deliverables
Your agent resolves template codes or search results and deploys the chosen marketplace service into the correct Railway project and environment.
- Deployed template service in target Railway environment
- Resolved template code or search selection
- Workspace/project context used for API calls
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Template deploy is canonically Build/integrations because it wires third-party services into your Railway project as you assemble the product. Integrations captures marketplace deploy flows—Ghost, Strapi, n8n, Minio, Uptime Kuma—distinct from the dedicated database skill for Postgres/Redis/MySQL/MongoDB.
Where it fits
Spin up Strapi from a template to test CMS-driven landing content before committing to custom admin UI.
Add Minio and n8n services beside your API so background jobs and object storage match production shape.
Deploy Uptime Kuma from template codes to watch indie SaaS endpoints without leaving Railway.
How it compares
Railway skill package for marketplace deploy—not a generic Dockerfile generator or local docker-compose scaffold.
Common Questions / FAQ
Who is templates for?
Solo builders and small teams deploying on Railway who want agent-guided template search and service adds from the official marketplace.
When should I use templates?
In Build/integrations when adding Ghost, Strapi, n8n, Minio, or Uptime Kuma; in Validate/prototype for a fast CMS or automation spike; in Operate when standing up uptime-kuma monitoring.
Is templates safe to install?
Check the Security Audits panel on this page; the skill runs railway CLI commands against your linked account—confirm project and environment IDs before deploy.
SKILL.md
READMESKILL.md - Templates
# Templates Search and deploy services from Railway's template marketplace. ## When to Use - User asks to "add Postgres", "add Redis", "add a database" - User asks to "add Ghost", "add Strapi", "add n8n", or any other service - User wants to find templates for a use case (e.g., "CMS", "storage", "monitoring") - User asks "what templates are available?" - User wants to deploy a pre-configured service ## Common Template Codes | Category | Template | Code | |----------|----------|------| | **Databases** | PostgreSQL | `postgres` | | | Redis | `redis` | | | MySQL | `mysql` | | | MongoDB | `mongodb` | | **CMS** | Ghost | `ghost` | | | Strapi | `strapi` | | **Storage** | Minio | `minio` | | **Automation** | n8n | `n8n` | | **Monitoring** | Uptime Kuma | `uptime-kuma` | For other templates, use the search query below. ## Prerequisites Get project context: ```bash railway status --json ``` Extract: - `id` - project ID - `environments.edges[0].node.id` - environment ID Get workspace ID: ```bash bash <<'SCRIPT' scripts/railway-api.sh \ 'query getWorkspace($projectId: String!) { project(id: $projectId) { workspaceId } }' \ '{"projectId": "PROJECT_ID"}' SCRIPT ``` ## Search Templates List available templates with optional filters: ```bash 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 ``` ### Arguments | Argument | Type | Description | |----------|------|-------------| | `first` | Int | Number of results (max ~100) | | `verified` | Boolean | Only verified templates | | `recommended` | Boolean | Only recommended templates | ### Rate Limit 10 requests per minute. Don't spam searches. ## Get Template Details Fetch a specific template by code: ```bash bash <<'SCRIPT' scripts/railway-api.sh \ 'query template($code: String!) { template(code: $code) { id name description serializedConfig } }' \ '{"code": "postgres"}' SCRIPT ``` Returns: - `id` - template ID (needed for deployment) - `serializedConfig` - service configuration (needed for deployment) ## Deploy Template ### Step 1: Fetch Template ```bash bash <<'SCRIPT' scripts/railway-api.sh \ 'query template($code: String!) { template(code: $code) { id serializedConfig } }' \ '{"code": "postgres"}' SCRIPT ``` ### Step 2: Deploy to Project ```bash 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 ``` **Important:** `serializedConfig` is the exact JSON object from the template query, not a string. ## Connecting Services After deploying a template, connect other services using reference variables. For complete variable syntax and wiring patterns, see [variables.md](references/variables.md). ### Pattern ``` ${{ServiceName.VARIABLE_NAME}} ``` ### Common Database Variables | Service | Connection Variable | |---------|---------------------| | PostgreSQL (Postgres) | `${{Postgres.DATABASE_URL}}` | | Redis | `${{Redis.REDIS_URL}}` | | MySQL | `${{MySQL.MYSQL_URL}}` | | MongoDB | `${{MongoDB.MONGO_URL}}` | ### Backend vs Fron