Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Search and deploy services from Railway's template marketplace. Use when user wants to add a service from a template, find templates for a specific use case, or deploy tools like Ghost, Strapi, n8n, Minio, Uptime Kuma, etc. For databases (Postgres, Redis, MySQL, MongoDB), prefer the railway-database skill.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 16% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -42% | 0% |
| case-22 | ✗→✓ | ▲ Improved | 18% | 0% |
| case-12 | ✗→✓ | ▲ Improved | -15% | 0% |
| case-15 | ✗→✓ | ▲ Improved | -7% | 0% |
Search and deploy services from Railway's template marketplace.
| 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.
Get project context:
bashrailway status --json
Extract:
id - project IDenvironments.edges[0].node.id - environment IDGet workspace ID:
bashbash <<'SCRIPT' ${CLAUDE_PLUGIN_ROOT}/skills/lib/railway-api.sh \ 'query getWorkspace($projectId: String!) { project(id: $projectId) { workspaceId } }' \ '{"projectId": "PROJECT_ID"}' SCRIPT
List available templates with optional filters:
bashbash <<'SCRIPT' ${CLAUDE_PLUGIN_ROOT}/skills/lib/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
| Argument | Type | Description | |----------|------|-------------| | first | Int | Number of results (max ~100) | | verified | Boolean | Only verified templates | | recommended | Boolean | Only recommended templates |
10 requests per minute. Don't spam searches.
Fetch a specific template by code:
bashbash <<'SCRIPT' ${CLAUDE_PLUGIN_ROOT}/skills/lib/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)bashbash <<'SCRIPT' ${CLAUDE_PLUGIN_ROOT}/skills/lib/railway-api.sh \ 'query template($code: String!) { template(code: $code) { id serializedConfig } }' \ '{"code": "postgres"}' SCRIPT
bashbash <<'SCRIPT' ${CLAUDE_PLUGIN_ROOT}/skills/lib/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.
Other measured skills in the registry, with their headline benchmark lift.