Agent skill
deployment-patterns
Deploy projects to Vercel, Railway, or Docker with platform-specific best practices. Use when deploying applications, configuring deployment settings, debugging deployment failures, or setting up CI/CD pipelines. Triggers on "deploy to vercel", "railway deployment", "docker build", "deployment failed", "configure vercel.json".
Install this agent skill to your Project
npx add-skill https://github.com/ScientiaCapital/scientia-superpowers/tree/main/skills/deployment-patterns
SKILL.md
Deployment Patterns for Scientia Stack
Deploy to Vercel, Railway, or Docker following proven patterns from 98+ projects.
Platform Selection
Choose based on project type:
| Project Type | Platform | Reason |
|---|---|---|
| Next.js frontend | Vercel | Native support, edge functions |
| Python backend | Railway | Nixpacks, health checks |
| ML/GPU workloads | RunPod | GPU access, vLLM |
| Local development | Docker | Consistent environment |
Vercel Deployment (19 projects)
Standard vercel.json for Monorepo
{
"framework": "nextjs",
"installCommand": "cd frontend && npm install",
"buildCommand": "cd frontend && npm run build",
"outputDirectory": "frontend/.next"
}
Environment Variables
-
Set in Vercel Dashboard or CLI:
bashvercel env add VITE_SUPABASE_URL production vercel env add VITE_SUPABASE_ANON_KEY production -
For preview deployments, use
previewscope.
SPA Routing
Add to frontend/vercel.json:
{
"rewrites": [
{ "source": "/(.*)", "destination": "/" }
]
}
Deploy Command
# Production
vercel --prod
# Preview
vercel
Railway Deployment (2 projects)
Standard railway.json
{
"$schema": "https://railway.com/railway.schema.json",
"build": {
"builder": "NIXPACKS",
"buildCommand": "poetry install --no-dev"
},
"deploy": {
"startCommand": "poetry run python -m src.vozlux.main",
"healthcheckPath": "/health",
"healthcheckTimeout": 300,
"restartPolicyType": "ON_FAILURE",
"restartPolicyMaxRetries": 3
}
}
Environment Variables
Railway requires manual dashboard configuration for sensitive vars:
- Go to: https://railway.com/project/{project-id}/settings
- Add each variable under "Variables" tab
Common variables for Python backends:
SUPABASE_URL
SUPABASE_SERVICE_KEY
ANTHROPIC_API_KEY
GOOGLE_API_KEY
DEEPSEEK_API_KEY
TWILIO_ACCOUNT_SID
TWILIO_AUTH_TOKEN
Health Check Endpoint
Always implement /health:
@app.get("/health")
async def health():
return {"status": "healthy", "timestamp": datetime.utcnow().isoformat()}
Docker Deployment (5 projects)
Multi-stage Dockerfile
# Build stage
FROM python:3.11-slim as builder
WORKDIR /app
COPY pyproject.toml poetry.lock ./
RUN pip install poetry && poetry export -f requirements.txt > requirements.txt
# Runtime stage
FROM python:3.11-slim
WORKDIR /app
COPY --from=builder /app/requirements.txt .
RUN pip install -r requirements.txt
COPY src/ ./src/
CMD ["python", "-m", "src.main"]
docker-compose.yml for Development
version: '3.8'
services:
app:
build: .
ports:
- "8000:8000"
env_file:
- .env
volumes:
- ./src:/app/src
Pre-Deployment Checklist
Before any deployment:
- All tests passing (
npm testorpytest) - No hardcoded API keys (grep for patterns)
- Environment variables documented in
.env.example - CLAUDE.md updated with deployment status
- Build succeeds locally (
npm run buildorpoetry build)
Debugging Deployment Failures
Vercel Failures
- Check build logs:
vercel logs - Common issues:
- Missing env vars → Check Vercel dashboard
- Build timeout → Increase in project settings
- Module not found → Check package.json dependencies
Railway Failures
- Check logs in dashboard
- Common issues:
- Health check timeout → Increase
healthcheckTimeout - Missing env vars → Must set manually in dashboard
- Poetry lock issues → Delete poetry.lock and regenerate
- Health check timeout → Increase
Docker Failures
- Build locally first:
docker build -t test . - Run with logs:
docker run -it test - Check for missing system dependencies
CI/CD Integration
For GitHub Actions, use:
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: amondnet/vercel-action@v25
with:
vercel-token: ${{ secrets.VERCEL_TOKEN }}
vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}
vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }}
vercel-args: '--prod'
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
cost-optimized-llm
Implement cost-optimized LLM routing with NO OpenAI. Use tiered model selection (DeepSeek, Haiku, Sonnet) to achieve 70-90% cost savings. Triggers on "LLM costs", "model selection", "cost optimization", "which model", "DeepSeek", "Claude pricing", "reduce AI costs".
supabase-mastery
Master Supabase patterns for migrations, RLS policies, pgvector, and authentication. Use when creating database schemas, writing migrations, implementing row-level security, setting up auth, or debugging Supabase issues. Triggers on "supabase migration", "RLS policy", "row level security", "pgvector", "supabase auth", "magic link".
revenue-acceleration
GTM workflows for revenue acceleration across Scientia projects. Use for demo preparation, sales outreach, battle cards, pricing strategy, and revenue tracking. Triggers on "revenue focus", "prepare demo", "sales outreach", "battle card", "GTM strategy", "pricing", "tier-1 projects".
project-context
Maintains project context and progress tracking across Claude sessions. Use at session start to load context, on session end to save progress. Triggers: load project context, save context, end session, what was I working on, switch to project, done for today.
workflow-enforcer-skill
Enforces workflow discipline across ALL projects. Ensures Claude checks for specialized agents before responding, announces skill/agent usage, and creates TodoWrite todos for multi-step tasks. Triggers: automatic on all sessions, use the right agent, follow workflow.
gtm-pricing
B2B go-to-market strategy, pricing models, ICP development, positioning, and competitive intelligence. Use when planning GTM strategy, setting pricing, defining ICP, or evaluating opportunities.
Didn't find tool you were looking for?