Pro Yeet Workspace
All-in-one skill covering only, user, explicitly, asks. Includes structured workflows, validation checks, and reusable patterns for workflow automation.
Yeet Workspace
A rapid deployment and code shipping skill for quickly deploying applications, services, and infrastructure using streamlined deployment workflows and zero-configuration platforms.
When to Use
Choose Yeet Workspace when:
- Deploying applications quickly to production with minimal configuration
- Setting up zero-config deployment pipelines for web applications
- Shipping features rapidly with preview deployments and instant rollbacks
- Managing multi-environment deployments (dev, staging, production)
Consider alternatives when:
- Complex infrastructure requirements — use Terraform or Pulumi
- Self-hosted deployment needs — use Docker and Kubernetes
- Enterprise compliance requirements — use managed cloud services with audit trails
Quick Start
# Deploy to Vercel (zero config for Next.js) npx vercel # Deploy to Fly.io fly launch fly deploy # Deploy to Railway railway up # Deploy Docker container to Render render deploy
// Deployment automation script import { execSync } from 'child_process'; interface DeployConfig { platform: 'vercel' | 'fly' | 'railway' | 'render'; environment: 'preview' | 'staging' | 'production'; branch: string; } class DeployManager { async deploy(config: DeployConfig) { // Pre-deployment checks await this.runChecks(); // Deploy based on platform const commands: Record<string, string> = { vercel: config.environment === 'production' ? 'npx vercel --prod' : 'npx vercel', fly: 'fly deploy', railway: 'railway up', render: 'render deploy' }; console.log(`Deploying to ${config.platform} (${config.environment})...`); const output = execSync(commands[config.platform], { encoding: 'utf-8', stdio: 'inherit' }); // Post-deployment verification await this.verifyDeployment(config); return { status: 'success', environment: config.environment }; } private async runChecks() { console.log('Running pre-deploy checks...'); execSync('npm run typecheck', { stdio: 'inherit' }); execSync('npm run lint', { stdio: 'inherit' }); execSync('npm test -- --run', { stdio: 'inherit' }); } private async verifyDeployment(config: DeployConfig) { // Health check after deployment const url = this.getDeploymentUrl(config); const maxRetries = 10; for (let i = 0; i < maxRetries; i++) { try { const resp = await fetch(`${url}/api/health`); if (resp.ok) { console.log('Deployment verified successfully'); return; } } catch { /* retry */ } await new Promise(r => setTimeout(r, 3000)); } throw new Error('Deployment health check failed'); } private getDeploymentUrl(config: DeployConfig): string { // Platform-specific URL resolution return `https://${config.environment === 'production' ? 'app' : config.environment}.example.com`; } }
Core Concepts
Deployment Platform Comparison
| Platform | Best For | Pricing Model | Setup Complexity |
|---|---|---|---|
| Vercel | Next.js, React, static sites | Per-request | Zero config |
| Fly.io | Containers, globally distributed | Per-VM | Dockerfile |
| Railway | Full-stack apps, databases | Resource-based | Near-zero |
| Render | Web services, cron, static | Per-service | Dashboard |
| Cloudflare Pages | Static + edge functions | Generous free tier | Minimal |
| Netlify | JAMstack, forms, functions | Per-site | Minimal |
CI/CD Pipeline
# .github/workflows/deploy.yml name: Deploy on: push: branches: [main] pull_request: branches: [main] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 20 cache: npm - run: npm ci - run: npm run typecheck - run: npm run lint - run: npm test deploy-preview: needs: test if: github.event_name == 'pull_request' 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 }} deploy-production: needs: test if: github.ref == 'refs/heads/main' 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'
Configuration
| Option | Description | Default |
|---|---|---|
platform | Deployment platform | Auto-detect |
environment | Target environment | "preview" |
region | Deployment region | Platform default |
auto_deploy | Deploy on git push | true |
preview_branches | Branches that get preview deployments | ["*"] |
production_branch | Branch that triggers production deploy | "main" |
health_check_url | Post-deploy health check endpoint | "/api/health" |
rollback_on_failure | Auto-rollback if health check fails | true |
Best Practices
- Always run tests before deployment as a required CI step — never deploy code that fails tests, linting, or type checking, even to preview environments
- Use preview deployments for every pull request so reviewers can test the actual running application, not just read code; this catches integration issues and UX problems before merging
- Implement health check endpoints that verify database connectivity, essential service availability, and basic functionality so deployment verification can catch broken deploys before they serve users
- Set up instant rollbacks so you can revert to the previous working deployment within seconds if issues are discovered after production deployment
- Use environment variables for all environment-specific configuration and secrets rather than hardcoding values — this ensures the same build artifact works across preview, staging, and production
Common Issues
Build failures in CI but working locally: Missing environment variables, different Node.js versions, or OS-specific dependencies cause CI-only failures. Pin exact Node.js versions in CI, ensure all required environment variables are set in CI secrets, and use lock files to ensure identical dependency versions.
Preview deployment URLs not accessible: Preview deployments sometimes fail silently or have incorrect domain configuration. Verify the deployment platform's output URL, check DNS propagation for custom domains, and ensure preview environments have necessary environment variables like API endpoints configured for the preview URL.
Database migrations failing during deployment: Deploying schema changes alongside application code can fail if migrations run before or after the app restarts. Run migrations as a separate pre-deployment step, ensure they are backward-compatible with the current running version, and test migration rollback procedures.
Reviews
No reviews yet. Be the first to review this template!
Similar Templates
Full-Stack Code Reviewer
Comprehensive code review skill that checks for security vulnerabilities, performance issues, accessibility, and best practices across frontend and backend code.
Test Suite Generator
Generates comprehensive test suites with unit tests, integration tests, and edge cases. Supports Jest, Vitest, Pytest, and Go testing.
Pro Architecture Workspace
Battle-tested skill for architectural, decision, making, framework. Includes structured workflows, validation checks, and reusable patterns for development.