Database Schema Sync
/install database-schema-sync
Database Schema Management
USE SCHEMA SYNC SCRIPT, NOT ALEMBIC MIGRATIONS
PREFERRED APPROACH: Smart schema sync script that detects and applies only missing changes.
STRICT RULES
- ✅ ALWAYS USE:
scripts/sync-production-schema.pyfor production deployments - ✅ IDEMPOTENT: Can run multiple times safely without errors
- ✅ TRANSPARENT: Shows exactly what will change before applying
- ❌ AVOID: Running Alembic migrations directly in production
- ❌ AVOID: Manual SQL scripts that aren't version controlled
- ⚠️ KEEP: Alembic migration files for documentation purposes only
Why Schema Sync Script?
✅ Advantages:
- Simpler: One script vs managing many migration files
- Safer: Checks what exists before applying changes
- Idempotent: Run multiple times without errors
- Transparent: Shows diff before applying
- Flexible: Works with any database state (dev, staging, prod)
- No tracking: No need to manage "which migrations have run"
❌ Alembic Migration Problems:
- Fails if run twice (not idempotent)
- Requires tracking which migrations applied
- All-or-nothing (can't skip one migration)
- Complex rollback scenarios
- Team coordination overhead
Workflow
1. DRY RUN FIRST (Always!)
# Show what would change WITHOUT applying
python scripts/sync-production-schema.py --dry-run
2. REVIEW OUTPUT
# Output shows:
# ✓ Tables/columns that already exist (skipped)
# ℹ New tables/columns that would be created
# ⚠ Any potential issues
3. APPLY TO PRODUCTION
# Apply changes to production database
export DATABASE_URL="postgresql://..."
python scripts/sync-production-schema.py --apply
4. VERIFY
# Connect and verify schema
psql "$DATABASE_URL" -c "\dt" # List tables
psql "$DATABASE_URL" -c "\d table_name" # Describe table
Required Locations
- Schema Sync Script:
/Users/tobymorning/Desktop/core/scripts/sync-production-schema.py - Documentation:
/Users/tobymorning/Desktop/core/docs/deployment/SCHEMA_SYNC_GUIDE.md - Alembic Migrations (for documentation):
/Users/tobymorning/Desktop/core/src/backend/alembic/versions/
When to Update Schema
Adding New Tables
- Define models in
src/backend/app/models/ - Add table creation logic to
scripts/sync-production-schema.py - Update
docs/deployment/SCHEMA_SYNC_GUIDE.mdwith new table info - Test with
--dry-runfirst - Apply to dev, staging, then production
Adding New Columns
- Update model in
src/backend/app/models/ - Add column check and ADD COLUMN logic to sync script
- Use IF NOT EXISTS patterns for safety
- Test with
--dry-runfirst - Apply to environments
Safety Checks Built-In
- ✅ Checks table exists before creating
- ✅ Checks column exists before adding
- ✅ Transaction safety (rollback on error)
- ✅ Dry-run mode to preview changes
- ✅ Color-coded output for easy reading
- ✅ Summary of all changes applied
Integration with CI/CD
Railway Deployment:
# In Procfile or deploy script
release: python scripts/sync-production-schema.py --apply
GitHub Actions:
- name: Sync Production Schema
env:
DATABASE_URL: ${{ secrets.DATABASE_URL }}
run: python scripts/sync-production-schema.py --apply
ENFORCEMENT
- ❌ NEVER run
alembic upgrade headin production - ❌ NEVER manually execute SQL in production without sync script
- ❌ NEVER skip dry-run step for production changes
- ✅ ALWAYS use
scripts/sync-production-schema.pyfor schema changes - ✅ ALWAYS run
--dry-runbefore--apply - ✅ ALWAYS verify changes in dev/staging before production
- ✅ ALWAYS update documentation when adding new tables/columns
VIOLATION CONSEQUENCES
- Database schema drift between environments
- Failed deployments from migration conflicts
- Data loss from incorrect migrations
- Production downtime from schema errors
- Team confusion about database state
THIS IS A REQUIRED STANDARD. USE SCHEMA SYNC SCRIPT FOR ALL DATABASE CHANGES.
Reference Files
See references/sync-vs-alembic.md for detailed comparison of sync script vs Alembic migrations.
See references/workflow-examples.md for code examples of adding tables, columns, indexes, and handling complex migrations.
Run scripts/verify-sync-script.sh to validate that sync script exists and is properly configured.
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install database-schema-sync - 安装完成后,直接呼叫该 Skill 的名称或使用
/database-schema-sync触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Database Schema Sync 是什么?
Database schema management using idempotent sync script instead of Alembic migrations. Use when (1) Adding new database tables, (2) Adding new columns to exi... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 103 次。
如何安装 Database Schema Sync?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install database-schema-sync」即可一键安装,无需额外配置。
Database Schema Sync 是免费的吗?
是的,Database Schema Sync 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Database Schema Sync 支持哪些平台?
Database Schema Sync 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Database Schema Sync?
由 Toby Morning(@urbantech)开发并维护,当前版本 v1.0.0。