
Description
convex-migrate is an agent skill for changing the schema of a deployed Convex app and backfilling its data without breaking existing rows. It uses the @convex-dev/migrations package and follows an order of steps that keeps the live app working. First, the new field is made optional, so that deploying the change does not reject the rows that already exist. Next, the migrations package is installed and a migration is written to backfill or transform the old rows. The migration is then run, and the skill checks that every row is valid. Only once the backfill has completed does the skill make the field required by tightening the validator. The rules say never to tighten a validator before the backfill is complete, because that would reject the rows that have not been migrated yet. The skill is for changing a schema that is already in production, rather than starting a new one. It is part of the get-convex agent-skills repository and is added to a compatible agent with the skills command. Its audits passed with Gen Agent Trust Hub, Socket and Snyk. It suits teams who need to add or reshape a field on live data and want to avoid downtime or rejected writes.…
Highlights
- Makes new fields optional before the backfill
- Backfills existing rows with @convex-dev/migrations
- Verifies rows before tightening validators
- Avoids rejecting existing data
Ratings & Reviews
No ratings yet
Be the first to rate convex-migrate.
People also visit

convex-migrate-rehearse
Rehearse a live-app schema change + backfill on a snapshot-seeded preview

database-migrations
Safe, reversible database migration patterns: forward-only production changes

jpa-patterns
JPA/Hibernate patterns for entity design, relationships, query optimization

kotlin-exposed-patterns
JetBrains Exposed ORM patterns including DSL queries, DAO pattern, transactions
convex-migrate FAQ
What does convex-migrate do?
It changes the schema of a deployed Convex app and backfills the existing data without breaking the live app.
Why make a field optional first?
So the deploy does not reject the rows that already exist, which are backfilled afterwards.
When is the field made required?
After the backfill has completed and the rows are verified, the skill tightens the validator.
Which package does it use?
@convex-dev/migrations.
How do I install it?
Run: npx skills add https://github.com/get-convex/agent-skills --skill convex-migrate
What security audits has it passed?
Gen Agent Trust Hub, Socket and Snyk all passed.
What are the best convex-migrate alternatives?
Popular alternatives to convex-migrate include convex-expert, convex-migrate-rehearse and clickhouse-io. See all convex-migrate alternatives



