PluginBench
Skill
Pass
Audit score 90

cmux-backend

manaflow-ai/cmux

Backend TypeScript and Cloud VM development rules for cmux using Effect, Postgres, and provider integrations.

What is cmux-backend?

Guidance for backend TypeScript development in cmux, covering Effect-based route handlers, Cloud VM lifecycle management, Postgres migrations, and provider integrations. Use when editing API routes, services, database code, auth, or Cloud VM infrastructure.

  • Enforces Effect as the default for backend TypeScript in route handlers and services touching providers, databases, auth, rate limits, retries, or telemetry
  • Defines thin Next.js route handler patterns: parse request, run one Effect program, map typed errors to HTTP responses
  • Specifies Cloud VM Postgres setup via Vercel Marketplace AWS Aurora with OIDC/RDS IAM authentication
  • Manages Cloud VM pricing gates through Stack Auth team payment items
  • Provides migration and local dev workflows using bun commands and Docker Postgres
  • Documents secret management for E2B, Freestyle, and R2 provider integrations

How to install cmux-backend

npx skills add null --skill cmux-backend
Prerequisites
  • Familiarity with TypeScript and Next.js route handlers
  • Access to ~/.secrets/cmux.env for provider API keys (E2B_API_KEY, FREESTYLE_API_KEY, R2 credentials)
  • bun package manager and Docker for local Postgres development
  • AWS credentials and Vercel Marketplace setup for production/staging RDS access
Claude Code
Cursor
Windsurf
Cline

How to use cmux-backend

  1. 1.Load provider secrets: source ~/.secrets/cmux.env before running build or test scripts
  2. 2.Use Effect as the default for backend TypeScript in web/app/api/**, web/services/**, and scripts touching providers or databases
  3. 3.Keep Next route handlers thin: parse request, run one Effect program, map errors to HTTP responses
  4. 4.Run migrations with bun db:migrate:aws-rds-iam for production/staging; never run migrations from Vercel build or route startup
  5. 5.Configure runtime environment variables: CMUX_DB_DRIVER=aws-rds-iam, AWS_ROLE_ARN, AWS_REGION, PGHOST, PGPORT, PGUSER, PGDATABASE
  6. 6.Reference effect-boundaries.md for route handler and service patterns; reference cloud-vm-control-plane.md for VM lifecycle and Postgres design

Use cases

Good for
  • Building or modifying API routes that interact with Cloud VM providers or databases
  • Setting up production/staging Postgres migrations with AWS RDS IAM authentication
  • Implementing retry, timeout, and telemetry logic in backend services using Effect
  • Configuring Cloud VM pricing gates and usage event tracking in Postgres
  • Managing local development with Docker Postgres while keeping production on AWS Aurora
Who it's for
  • Backend TypeScript developers working on cmux
  • DevOps engineers managing Cloud VM infrastructure and Postgres migrations
  • Full-stack developers building API routes and services for Cloud VM features
  • Teams implementing auth, rate-limiting, and telemetry in backend systems

cmux-backend FAQ

When should I use Effect vs. plain TypeScript?

Use Effect for backend TypeScript in route handlers, services, and scripts touching providers, databases, auth, rate limits, retries, timeouts, or telemetry. Use plain TypeScript only for trivial data shapes, constants, config files, frontend React code, or small glue where Effect adds unnecessary ceremony.

How do I run database migrations in production?

Run migrations with bun db:migrate:aws-rds-iam for production and staging. Never run Drizzle migrations from Vercel build or route startup; migrations must run separately.

Where do I store provider API keys?

Store E2B_API_KEY, FREESTYLE_API_KEY, and R2 credentials in ~/.secrets/cmux.env. Load them with: set -a; source ~/.secrets/cmux.env; set +a before running build or test scripts.

What is the source of truth for Cloud VM state?

Postgres is the source of truth for VM lifecycle, active VM limits, idempotency, and usage events. Cloud VM backend logic must stay in Vercel route handlers and Effect services backed by Postgres.

How do I set up local development?

Local development uses Docker Postgres derived from CMUX_PORT via bun dev. Production and staging use Vercel Marketplace AWS Aurora PostgreSQL with OIDC/RDS IAM authentication.

Full instructions (SKILL.md)

Source of truth, from manaflow-ai/cmux.


name: cmux-backend description: "Backend TypeScript and Cloud VM development rules for cmux. Use when editing web/app/api, web/services, backend scripts, Cloud VM lifecycle, provider integrations, Postgres, Stack Auth pricing gates, migrations, or provider image build scripts."

cmux Backend

Use this skill for backend TypeScript, Cloud VM, provider, database, auth, rate-limit, retry, timeout, or telemetry work.

Core rules

  • Default backend TypeScript to Effect under web/app/api/**, web/services/**, and backend scripts that touch providers, databases, auth, rate limits, retries, timeouts, or telemetry.
  • Keep Next route handlers thin: parse the request, run one Effect program at the boundary, map typed errors to HTTP responses, and treat unexpected defects separately.
  • Use plain TypeScript only for trivial data shapes, constants, config files, frontend React code, or small glue where Effect would add ceremony without improving failure handling.
  • Cloud VM backend logic must stay in Vercel route handlers and Effect services backed by Postgres.
  • Do not reintroduce Rivet or a raw actor protocol for Cloud VM unless a later architecture doc explicitly changes the control plane.
  • Production and staging Cloud VM Postgres use the Vercel Marketplace AWS Aurora PostgreSQL OIDC/RDS IAM path.
  • Runtime env names are CMUX_DB_DRIVER=aws-rds-iam, AWS_ROLE_ARN, AWS_REGION, PGHOST, PGPORT, PGUSER, and PGDATABASE.
  • Run production/staging migrations with bun db:migrate:aws-rds-iam; never run Drizzle migrations from Vercel build or route startup.
  • Local development keeps using the CMUX_PORT-derived Docker Postgres path from bun dev.
  • Cloud VM create pricing gates should use Stack Auth team payment items when enabled.
  • Postgres remains the source of truth for VM lifecycle, active VM limits, idempotency, and usage events.

Secrets

Cloud VM build, test, and local dev scripts use provider secrets from ~/.secrets/cmux.env.

  • E2B_API_KEY
  • FREESTYLE_API_KEY
  • R2 upload vars used by web/scripts/build-cloud-vm-images.ts when creating Freestyle snapshots

Load them with:

set -a
source ~/.secrets/cmux.env
set +a

~/.secrets/cmuxterm-dev.env is for local Stack/web env and does not contain the provider build keys. bun dev sources ~/.secrets/cmux.env first when present, then ~/.secrets/cmuxterm-dev.env so cmuxterm-specific Stack settings override broader cmux secrets. The web dev loader still accepts the legacy ~/.secret/cmuxterm.env and ~/.secrets/cmuxterm.env paths while machines migrate.

Detailed references

  • Read references/effect-boundaries.md when shaping route handlers, services, typed errors, retries, or dependency injection.
  • Read references/cloud-vm-control-plane.md when touching VM lifecycle, migrations, Postgres, provider idempotency, or pricing gates.