Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Railway Automation

CSecurity

Railway CI/CD integration and automation. Use when setting up GitHub Actions, GitLab CI, automated deployments, migration scripts, or programmatic Railway workflows.

207 stars
0 votes
0 copies
0 views
Added 9/4/2026
devopsjavascriptgojavashellbashsqldockerkubernetesawsazure

Works with

cliapi

Security Analysis

C71/100
criticalExfiltrates credentials via HTTP — exact pattern from Snyk ToxicSkills study
criticalSends environment variables or credentials to an external URL
mediumInstalls packages at runtime which could introduce malicious dependencies

Scanned 9/4/2026

Install to Claude Code

$npx -y skills add NeverSight/skills_feed --skill railway-automation --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Railway Automation?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Railway Automation
[![Security: C — Skills Directory](https://www.skillsdirectory.com/api/skills/neversight-railway-automation/badge)](https://www.skillsdirectory.com/skills/neversight-railway-automation)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
---
name: railway-automation
description: Railway CI/CD integration and automation. Use when setting up GitHub Actions, GitLab CI, automated deployments, migration scripts, or programmatic Railway workflows.
---

# Railway CI/CD Automation

Automate Railway deployments with CI/CD pipelines, migration scripts, and event-driven workflows.

## Quick Start

**GitHub Actions (5 minutes)**
```yaml
# .github/workflows/railway.yml
- uses: railway/deploy@v1
  with:
    railway_token: ${{ secrets.RAILWAY_TOKEN }}
    service: api
```

**GitLab CI (5 minutes)**
```yaml
# .gitlab-ci.yml
deploy:
  script:
    - railway up --service api
  only: [main]
```

**Migration (10 minutes)**
```bash
./scripts/migrate.sh --from heroku --project myapp
```

## Workflow Overview

### 1. GitHub Actions Integration

**Setup Process**
1. Generate Railway token (`railway login && railway token`)
2. Add token to GitHub secrets (`RAILWAY_TOKEN`)
3. Create workflow file (`.github/workflows/railway.yml`)
4. Configure deployment triggers
5. Test with PR or push

**Use Cases**
- Deploy on push to main/staging
- PR preview environments
- Multi-environment promotion
- Scheduled deployments
- Manual approval gates

**Template**: See `templates/github-workflow.yml`

**Reference**: `references/github-actions.md` for complete guide with 5+ workflow examples

---

### 2. GitLab CI Integration

**Setup Process**
1. Generate Railway token
2. Add to GitLab CI/CD variables (`RAILWAY_TOKEN`)
3. Create `.gitlab-ci.yml`
4. Define stages (test → staging → production)
5. Configure manual gates

**Use Cases**
- Multi-stage pipelines
- Environment-specific deployments
- Review apps for merge requests
- Parallel service deployments
- Artifact-based deployments

**Template**: See `templates/gitlab-ci.yml`

**Reference**: `references/gitlab-ci.md` for complete guide with pipeline examples

---

### 3. Custom CI/CD Integration

**Generic Pattern (Any Platform)**
```bash
# Install Railway CLI
npm i -g @railway/cli

# Login with token
export RAILWAY_TOKEN=$YOUR_TOKEN

# Link project
railway link $PROJECT_ID

# Deploy
railway up --service $SERVICE_NAME --environment $ENVIRONMENT
```

**Environment Variables**
- `RAILWAY_TOKEN`: Authentication token
- `RAILWAY_PROJECT_ID`: Project identifier (optional if linked)
- `RAILWAY_SERVICE`: Service name (optional)
- `RAILWAY_ENVIRONMENT`: Environment name (optional)

**Health Check Pattern**
```bash
# Deploy and wait for health
railway up --service api
sleep 30

# Verify deployment
DEPLOY_URL=$(railway status --json | jq -r '.url')
curl -f $DEPLOY_URL/health || exit 1
```

**Supported Platforms**
- CircleCI
- Travis CI
- Jenkins
- Bitbucket Pipelines
- Azure DevOps
- Any platform with shell access

---

### 4. Migration Automation

**Interactive Migration Script**
```bash
# From Heroku
./scripts/migrate.sh --from heroku --project myapp

# From Vercel
./scripts/migrate.sh --from vercel --project myapp --env production

# Dry run (preview changes)
./scripts/migrate.sh --from render --project myapp --dry-run
```

**Script Features**
- Platform detection
- Environment variable export/import
- Railway project creation
- Service configuration
- Database migration
- DNS cutover planning
- Verification checks

**Supported Migrations**
- Heroku → Railway
- Vercel → Railway
- Render → Railway
- Docker Compose → Railway
- Kubernetes → Railway

**Reference**: `references/migration-patterns.md` for detailed guides per platform

---

### 5. Scheduled Tasks

**Cron-Based Deployments**
```yaml
# GitHub Actions - Deploy every night at 2 AM
on:
  schedule:
    - cron: '0 2 * * *'

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: railway/deploy@v1
        with:
          railway_token: ${{ secrets.RAILWAY_TOKEN }}
```

**Database Backups**
```yaml
# Scheduled backup workflow
on:
  schedule:
    - cron: '0 0 * * *'  # Daily at midnight

jobs:
  backup:
    steps:
      - name: Backup database
        run: |
          railway run pg_dump > backup.sql
          aws s3 cp backup.sql s3://backups/$(date +%Y%m%d).sql
```

**Health Check Monitoring**
```yaml
# Hourly health checks
on:
  schedule:
    - cron: '0 * * * *'

jobs:
  health:
    steps:
      - name: Check service health
        run: |
          curl -f ${{ secrets.SERVICE_URL }}/health || \
          curl -X POST ${{ secrets.SLACK_WEBHOOK }} \
            -d '{"text":"Service down!"}'
```

---

### 6. Webhook Integration

**GitHub Webhook → Railway Deploy**
```javascript
// Webhook handler
app.post('/webhook/github', async (req, res) => {
  const { ref, repository } = req.body;

  if (ref === 'refs/heads/main') {
    const { exec } = require('child_process');
    exec('railway up --service api', (error, stdout) => {
      console.log(stdout);
    });
  }

  res.json({ status: 'ok' });
});
```

**Railway Webhook Events**
Railway supports webhooks for:
- Deployment started
- Deployment completed
- Deployment failed
- Service crashed
- Build logs

**Configure Webhooks**
```bash
# Via Railway CLI
railway webhooks add \
  --url https://yourapp.com/webhook \
  --events deployment.success,deployment.failure

# Via API
curl -X POST https://backboard.railway.app/graphql \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
    "query": "mutation { webhookCreate(input: {...}) }"
  }'
```

**Notification Integration**
```bash
# Slack notification on deploy
railway webhooks add \
  --url $SLACK_WEBHOOK_URL \
  --events deployment.success \
  --transform '{
    "text": "Deployed {{service}} to {{environment}}"
  }'
```

---

## Common Patterns

### Multi-Environment Deployment
```yaml
# Deploy to staging first, then production
jobs:
  staging:
    environment: staging
    steps:
      - uses: railway/deploy@v1
        with:
          railway_token: ${{ secrets.RAILWAY_TOKEN }}
          environment: staging

  production:
    needs: staging
    environment: production
    steps:
      - uses: railway/deploy@v1
        with:
          railway_token: ${{ secrets.RAILWAY_TOKEN }}
          environment: production
```

### PR Preview Environments
```yaml
# Create preview for each PR
on:
  pull_request:
    types: [opened, synchronize]

jobs:
  preview:
    steps:
      - uses: railway/deploy@v1
        with:
          railway_token: ${{ secrets.RAILWAY_TOKEN }}
          service: api-pr-${{ github.event.pull_request.number }}
```

### Rollback on Failure
```yaml
# Automatic rollback if health check fails
jobs:
  deploy:
    steps:
      - name: Deploy
        id: deploy
        run: railway up --service api

      - name: Health check
        run: curl -f $SERVICE_URL/health

      - name: Rollback on failure
        if: failure()
        run: railway rollback --service api
```

### Matrix Deployments
```yaml
# Deploy multiple services in parallel
strategy:
  matrix:
    service: [api, worker, cron]

steps:
  - uses: railway/deploy@v1
    with:
      railway_token: ${{ secrets.RAILWAY_TOKEN }}
      service: ${{ matrix.service }}
```

---

## Token Management

**Generate Token**
```bash
# CLI method
railway login
railway token

# Copy token to clipboard
railway token | pbcopy  # macOS
railway token | xclip   # Linux
```

**Add to CI Platform**

**GitHub**
```
Settings → Secrets and variables → Actions → New repository secret
Name: RAILWAY_TOKEN
Value: [paste token]
```

**GitLab**
```
Settings → CI/CD → Variables → Add variable
Key: RAILWAY_TOKEN
Value: [paste token]
Protected: Yes
Masked: Yes
```

**CircleCI**
```
Project Settings → Environment Variables → Add Variable
Name: RAILWAY_TOKEN
Value: [paste token]
```

**Token Rotation**
```bash
# Generate new token
NEW_TOKEN=$(railway token)

# Update in CI (platform-specific)
# Then invalidate old token via dashboard
```

---

## Environment-Specific Configuration

**Detect Environment in Code**
```javascript
const env = process.env.RAILWAY_ENVIRONMENT || 'development';

const config = {
  development: { db: 'localhost:5432' },
  staging: { db: process.env.DATABASE_URL },
  production: { db: process.env.DATABASE_URL }
};

export default config[env];
```

**Conditional Deployment**
```yaml
# Only deploy staging on feature branches
jobs:
  deploy-staging:
    if: github.ref != 'refs/heads/main'
    steps:
      - uses: railway/deploy@v1
        with:
          environment: staging

  deploy-production:
    if: github.ref == 'refs/heads/main'
    steps:
      - uses: railway/deploy@v1
        with:
          environment: production
```

**Environment Variable Management**
```bash
# Export from staging
railway env --environment staging > .env.staging

# Import to production (selective)
cat .env.staging | grep -v SECRET | railway env --environment production
```

---

## Best Practices

### Security
- Use masked/protected CI variables
- Rotate tokens quarterly
- Use service tokens (not personal) for production
- Never commit tokens to git
- Limit token scope to specific projects

### Performance
- Cache dependencies in CI
- Use Railway's built-in caching
- Deploy only changed services
- Run tests before deploy
- Use health checks before traffic

### Reliability
- Always include rollback mechanism
- Monitor deployment notifications
- Set deployment timeouts
- Use staging before production
- Test migrations in preview environments

### Monitoring
- Log all deployments
- Track deployment duration
- Alert on failures
- Monitor health checks
- Track rollback frequency

---

## Troubleshooting

**Deployment Fails in CI**
```bash
# Check token validity
railway whoami

# Verify project link
railway status

# Check service exists
railway list

# View deployment logs
railway logs --service api
```

**Token Authentication Errors**
```bash
# Regenerate token
railway logout
railway login
railway token

# Update in CI secrets
# Test locally first
RAILWAY_TOKEN=$NEW_TOKEN railway status
```

**Environment Not Found**
```bash
# List available environments
railway environment list

# Verify environment name matches
railway status --environment production
```

**Service Not Deploying**
```bash
# Check service name
railway list

# Verify service configuration
railway status --service api

# Check for build errors
railway logs --service api --deployment latest
```

---

## Related Skills

- **railway-auth**: Token management and authentication setup
- **railway-api**: Programmatic Railway API automation
- **railway-deployment**: Deployment patterns and strategies
- **railway-database**: Database automation and backups
- **railway-monitoring**: Health checks and alerting

---

## References

- **references/github-actions.md**: Complete GitHub Actions guide with 5+ workflow examples
- **references/gitlab-ci.md**: Complete GitLab CI guide with pipeline examples
- **references/migration-patterns.md**: Platform migration guides (Heroku, Vercel, Render, etc.)

## Templates

- **templates/github-workflow.yml**: Production-ready GitHub Actions template
- **templates/gitlab-ci.yml**: Production-ready GitLab CI template

## Scripts

- **scripts/migrate.sh**: Interactive migration script supporting multiple platforms

Attribution

NeverSightNeverSight
View sourceMore from NeverSight →
SSkills DirectorySkills Directory

Know which skills are safe — weekly.

Best new skills + every skill we flagged as malicious. From the team that scanned 103,619.

Join free

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Know which skills are safe — weekly.

Best new skills + every skill we flagged as malicious. From the team that scanned 103,619.

Join free

Related Skills

Terraform Module Library

Build reusable Terraform modules for AWS, Azure, and GCP infrastructure following infrastructure-as-code best practices. Use when creating infrastructure modules, standardizing cloud provisioning, or implementing reusable IaC components.

397921 votes

sematext-otel

Wire a service's OpenTelemetry output to Sematext Cloud. Walks through region, App-type, instrumentation flow (managed OTLP endpoint vs Sematext Agent), and signal selection (traces/metrics/logs), then produces the exact env-var block and points at a runnable reference example in this repo. Invoke when instrumenting a new app for Sematext.

01 votes

Deployment Patterns

Deployment workflows, CI/CD pipeline patterns, Docker containerization, health checks, rollback strategies, and production readiness checklists for web applications. Use when setting up deployment infrastructure or planning releases.

2459130 votes

Babysit

Watch a pull request or review cycle until it is ready to merge. Use when asked to babysit, monitor, or keep checking PR comments, reviews, and CI until all actionable issues are resolved.

942310 votes

V7 Roster

Interact with the Paperclip control plane API for task coordination and governance. Use when checking assignments, updating issue status, posting comments, delegating work, managing routines, or calling Paperclip API endpoints.

805540 votes
View all in devops →