Skip to content
Back to skills

Dev Environment Manager

ASecurity

Manage local development environment, database resets, health checks, deployment validation, production data sync, and Vercel environment variables; use when setting up dev environment, resetting databases, running pre-deployment checks, syncing production data to staging/local, or fixing Vercel env vars with trailing newlines

  • 666 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added February 8, 2026
databasesbashsqlawstestingapidatabase

Works with

  • api

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add majiayu000/claude-skill-registry --skill dev-environment-manager --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Dev Environment Manager?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Dev Environment Manager
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-dev-environment-manager/badge)](https://www.skillsdirectory.com/skills/majiayu000-dev-environment-manager)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: "dev-environment-manager"
description: "Manage local development environment, database resets, health checks, deployment validation, production data sync, and Vercel environment variables; use when setting up dev environment, resetting databases, running pre-deployment checks, syncing production data to staging/local, or fixing Vercel env vars with trailing newlines"
version: "3.1.0"
last_updated: "2025-12-23"
aliases:
  - "vercel-env-fix"
  - "fix-env-vars"
  - "env-manager"
---

# Dev Environment Manager

## When to Use This Skill

Use this skill when:
- Setting up or resetting local development environment
- Running health checks on databases
- Validating environment before deployment
- **Syncing production data to local or staging**

## Quick Commands (Recommended)

The easiest way to reset and sync your local database:

```bash
# Reset local DB + sync from STAGING (default)
pnpm supabase:web:reset

# Reset local DB + sync from PRODUCTION
pnpm supabase:web:reset --prod

# Reset local DB only (no data sync)
pnpm supabase:reset:no-sync
```

These commands:
1. Apply all migrations (reset schema)
2. Sync data from staging/production
3. Include auth.users for login testing

**Login locally with any synced user email + password `password`**

## Full Sync Workflow: Production → Staging → Local

For a complete refresh of all environments:

```bash
# Step 1: Sync production data to staging
./.claude/skills/dev-environment-manager/scripts/sync-prod-to-staging.sh --confirm --yes

# Step 2: Reset local and sync from staging
pnpm supabase:web:reset
```

This ensures staging mirrors production, then local mirrors staging.

## Scripts

**Location**: `.claude/skills/dev-environment-manager/scripts/`

| Script | Description |
|--------|-------------|
| `sync-prod-to-staging.sh` | **Copy production data to staging** (READ-only from prod) |
| `sync-prod-to-local.sh` | **Copy production data to local** (READ-only from prod) |
| `sync-remote-to-local.sh` | **Unified sync script** (staging or prod to local) |
| `reset-local-dev.sh` | Complete local database reset with optional production sync |
| `health-check.sh` | Database health verification |
| `pre-deployment-checks.sh` | Pre-deployment validation |
| `fix-production-env-vars.sh` | Fix production environment variables |
| `verify-production-env-vars.sh` | Verify production env vars are set |

## Data Sync Details

### Safety Guarantees

All sync scripts have **multiple safety layers** to prevent accidental production writes:

1. **Read-only production connection** - Scripts only construct READ connections to production
2. **Explicit confirmation required** - Must pass `--confirm` flag AND type confirmation text
3. **Target verification** - Scripts verify the target database before writing
4. **Clear visual warnings** - Red warning banners before any destructive operation

### Sync Production → Staging

```bash
# Preview what will happen (safe, no changes)
./.claude/skills/dev-environment-manager/scripts/sync-prod-to-staging.sh

# Execute the sync (requires confirmation)
./.claude/skills/dev-environment-manager/scripts/sync-prod-to-staging.sh --confirm

# Skip interactive prompt
./.claude/skills/dev-environment-manager/scripts/sync-prod-to-staging.sh --confirm --yes
```

**What it does:**
1. READ all public + auth schema data from production
2. ERASE all data in staging
3. COPY production data to staging
4. Verify row counts match

**Production is NEVER modified.**

### Sync to Local (Staging or Production)

```bash
# Sync from STAGING (default)
pnpm supabase:web:reset

# Sync from PRODUCTION
pnpm supabase:web:reset --prod

# Or use scripts directly:
./.claude/skills/dev-environment-manager/scripts/sync-prod-to-local.sh --confirm --yes
```

**What it does:**
1. Reset local database (apply all migrations)
2. READ all data from staging/production
3. COPY data to local (includes auth.users)
4. Verify row counts match

### Credentials

Scripts automatically load credentials from:
1. `.env.local` (preferred)
2. 1Password (fallback, then cached to .env.local)

Required environment variables:
- `SUPABASE_DB_PASSWORD_PROD` - Production database password
- `SUPABASE_DB_PASSWORD_STAGING` - Staging database password

## Quick Start Examples

### Fresh Local Setup (Most Common)

```bash
# Start local Supabase + reset with staging data
pnpm supabase:web:start
pnpm supabase:web:reset
```

### Refresh All Environments

```bash
# Full sync: prod → staging → local
./.claude/skills/dev-environment-manager/scripts/sync-prod-to-staging.sh --confirm --yes
pnpm supabase:web:reset
```

### Reset Without Sync

```bash
# Fresh migrations, no external data
pnpm supabase:reset:no-sync
```

### Pre-Deployment

```bash
# Run all checks before deploying
./.claude/skills/dev-environment-manager/scripts/pre-deployment-checks.sh
```

## Database References

| Environment | Project Ref | Host | Port |
|-------------|-------------|------|------|
| Production | `csjruhqyqzzqxnfeyiaf` | `aws-1-eu-central-1.pooler.supabase.com` | 5432 |
| Staging | `hxpcknyqswetsqmqmeep` | `aws-1-eu-central-1.pooler.supabase.com` | 5432 |
| Local | N/A | `127.0.0.1` | 54322 |

## Troubleshooting

### "Local Supabase is not running"

```bash
cd apps/web && pnpm supabase start
```

### "Failed to get password from 1Password"

```bash
# Authenticate with 1Password
op signin

# Or set credentials manually in apps/web/.env.local:
SUPABASE_DB_PASSWORD_PROD="your-password"
SUPABASE_DB_PASSWORD_STAGING="your-password"
```

### "Connection timeout"

- Ensure you're using `aws-1-eu-central-1.pooler.supabase.com` (not aws-0)
- Check network/VPN connection
- Verify credentials are correct

### Resetting Remote Database (Staging)

**WARNING**: `supabase db reset` has `--local=true` by default!

```bash
# WRONG - This resets BOTH local AND staging!
supabase db reset --db-url "postgresql://staging..."

# CORRECT - Only reset staging
supabase db reset --db-url "postgresql://staging..." --local=false
```

For staging schema reset, prefer using the sync script which handles this correctly:
```bash
./.claude/skills/dev-environment-manager/scripts/sync-prod-to-staging.sh --confirm --yes
```

## Vercel Environment Variables

### Fix Trailing Newlines

Vercel env vars sometimes get trailing `\n` characters that break API connections.

```bash
# Fix production only (interactive)
./.claude/skills/dev-environment-manager/scripts/fix-production-env-vars.sh

# Fix production only (non-interactive)
./.claude/skills/dev-environment-manager/scripts/fix-production-env-vars.sh --yes

# Fix preview/staging only
./.claude/skills/dev-environment-manager/scripts/fix-production-env-vars.sh --env preview --yes

# Fix ALL environments (preview + production)
./.claude/skills/dev-environment-manager/scripts/fix-production-env-vars.sh --env all --yes
```

**What it does:**
1. Pulls current env vars from Vercel
2. Finds vars with trailing `\n` characters
3. Removes and re-adds them using `echo -n` (no trailing newline)
4. Verifies the fix worked

### Verify Environment Variables

```bash
./.claude/skills/dev-environment-manager/scripts/verify-production-env-vars.sh
```

## Related Skills

- `production-database-query` - Query production/staging databases
- `database-migration-manager` - Create and apply migrations

Attribution

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

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.