# Convex Migrate

Migrate schema + backfill data on a deployed Convex app using @convex-dev/migrations.

- Repository: https://github.com/openclaw/clawhub (9543 stars)
- Category: Engineering
- License: MIT
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add openclaw/clawhub --skill convex-migrate -g -a claude-code -y`
Codex: `npx skills add openclaw/clawhub --skill convex-migrate -g -a codex -y`
Cursor: `npx skills add openclaw/clawhub --skill convex-migrate -g -a cursor -y`
Gemini CLI: `npx skills add openclaw/clawhub --skill convex-migrate -g -a gemini-cli -y`

## Description

Migrate schema + backfill data on a deployed Convex app using @convex-dev/migrations.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

<!-- GENERATED from convex-agents content/capabilities/migrate.json, do not edit by hand. -->

# Migrate the schema / data on a live app

Change a deployed schema without breaking existing data: stage the schema change, install @convex-dev/migrations, write a backfill that makes old rows valid, run it, and verify before tightening the validator.

## Workflow

1. Make the new field optional first (so deploy doesn't reject existing rows).
2. Install @convex-dev/migrations; write a migration that backfills/transforms existing rows.
3. Run the migration; verify all rows are valid.
4. Tighten the validator (make the field required) once the backfill is complete.

## Rules

- Never tighten a validator before the backfill completes, it rejects existing rows and breaks the live app.
- Add new fields as optional first, migrate, then require.
- Verify row counts before and after.

