К основному содержанию
скилл CX Codex

convex-migrate-rehearse — скилл для Claude Code: репетиция миграции

Прогоняет изменение схемы и бэкфилл на превью-деплое с продовым снапшотом, а потом переносит проверенную миграцию в прод.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add convex/agent-skills --skill convex-migrate-rehearse -a claude-code
Открыть на GitHub

Что делает convex-migrate-rehearse

Скилл ведёт миграцию Convex по шагам: снять снапшот продовых данных, поднять превью-деплой на старой схеме, залить туда снапшот, а затем менять схему и гонять бэкфилл уже на копии. Смысл в том, что push схемы в Convex проверяет каждый существующий документ и падает, если хоть одна строка не подходит. Пусть падает на копии, а не на проде.

Порядок жёсткий: сначала сделать новое поле необязательным и задеплоить, потом бэкфилл через @convex-dev/migrations, потом ужесточить валидатор. Пропустишь «optional first» — первый же push отклонит существующие строки. Превью создаётся из кода до правки schema.ts, иначе импорт снапшота не пройдёт.

Для превью нужен Preview Deploy Key из дашборда, экспортированный как CONVEX_DEPLOY_KEY: обычная сессия npx convex login превью не создаёт, и это платная функция. Без ключа скилл советует репетировать на личном dev-деплое со снапшотом. Снапшот содержит реальные данные, поэтому его удаляют локально и не коммитят. Промоут в прод требует свежего явного подтверждения, а снапшот остаётся артефактом отката — при восстановлении данные, записанные после снапшота, теряются.

Какие задачи решает

  • проверить изменение схемы на копии продовых данных, а не на проде
  • поймать строки, которые не проходят новый валидатор, до деплоя
  • прогнать батчевый бэкфилл с возможностью продолжить после сбоя
  • перенести в прод уже проверенную последовательность миграции
  • оставить снапшот как точку отката на время промоута

Примеры запросов агенту

  • Отрепетируй миграцию схемы Convex на превью со снапшотом прода
  • Сделай поле необязательным, прогони бэкфилл на превью и ужесточь валидатор
  • Перенеси проверенную миграцию в прод, снапшот оставь для отката

Как установить convex-migrate-rehearse

1Через Skills CLI (Vercel)

npx skills add convex/agent-skills --skill convex-migrate-rehearse -a claude-code

2Вручную: положить файлы

~/.claude/skills/convex-migrate-rehearse/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/convex-migrate-rehearse/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о convex-migrate-rehearse

Как установить convex-migrate-rehearse в Claude?

Выполните npx skills add convex/agent-skills --skill convex-migrate-rehearse -a claude-code. Скилл появится в ~/.claude/skills/convex-migrate-rehearse/SKILL.md.

Что делает convex-migrate-rehearse?

Снимает снапшот продовых данных, поднимает превью-деплой на старой схеме, заливает туда снапшот и прогоняет изменение схемы с бэкфиллом на копии. В прод миграция уходит только после успешной репетиции.

Что нужно для работы скилла?

Preview Deploy Key из дашборда, экспортированный как CONVEX_DEPLOY_KEY. Обычная сессия npx convex login превью не создаёт, и это платная функция. Без ключа скилл предлагает репетировать на личном dev-деплое.

Исходный текст

SKILL.md · Apache-2.0
---
name: convex-migrate-rehearse
description: "Rehearse a live-app schema change + backfill on a snapshot-seeded preview deployment, verify, then promote the proven change to prod with the snapshot as rollback."
---

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

# Rehearse a schema change on a preview before prod

A schema push on Convex validates every existing document against the new schema and FAILS the push if any row doesn't conform — a real data-conformance gate. The safe way to use that gate is to let it fail on a rehearsal copy, not on prod. This capability turns a preview deployment into that copy: seed it with a prod snapshot, push the new schema + run the backfill there, watch the gate, and only promote once it's green. It composes deploy-guard (target classification), migrate (the optional-then-tighten pattern), and @convex-dev/migrations (the batched, resumable backfill).

## Workflow

0. PRECONDITION: preview deployments need a Preview Deploy Key (dashboard → Project Settings → Deploy Keys → Preview) exported as `CONVEX_DEPLOY_KEY` before any `--preview-create`/`--preview-name` deploy — a plain `npx convex login` session cannot create previews, and this is a paid-tier feature. If no preview key is available, fall back to rehearsing on the personal dev deployment seeded with the snapshot, and say so.
1. GUARD: deploy-guard — classify + announce the SOURCE (prod, being read) and the eventual TARGET (prod, being changed); get the fresh explicit yes for the prod promote up front and confirm the plan.
2. SNAPSHOT the source data read-only: `npx convex export --path snapshot.zip` (from the deployment holding the real data; add `--include-file-storage` only if the migration touches files). This is a read; it changes nothing.
3. CREATE the preview FROM THE PRE-CHANGE CODE — do this BEFORE editing schema.ts, so the preview starts on the schema the snapshot data already conforms to: `npx convex deploy --preview-create migrate-<slug>` (needs the preview key; auto-expires ~5 days). Seed it: `npx convex import snapshot.zip --deployment migrate-<slug>` (import targets a deployment by NAME with `--deployment`; there is no `--preview-name` flag on import). The import succeeds because the data still matches the old schema.
4. REHEARSE on the preview, in the migrate order — each push is `npx convex deploy --preview-name migrate-<slug>` (re-deploys to the SAME preview, keeping its data; NOT `convex dev`, which targets personal dev): (a) make the new/changed field OPTIONAL and deploy — if existing rows violate it the push FAILS HERE on the copy with the offending shape; fix and re-push until green. (b) write a @convex-dev/migrations backfill and run it against the preview; verify every row is now valid. (c) tighten the validator (required / narrowed union) and deploy again — the gate now passes because the backfill ran.
5. VERIFY on the preview: run the app's functions against the migrated data (MCP `run`/`runOneoffQuery` pointed at the preview, or a smoke query) to confirm behavior and shape.
6. PROMOTE only on the fresh explicit yes from step 1: apply the SAME sequence to prod (optional schema → backfill → tighten). Because it already succeeded on prod-shaped data, the prod push repeats a proven run. Keep the snapshot as the rollback artifact (`npx convex import snapshot.zip --replace --prod`); state plainly that data written after the snapshot is lost, so keep the promote window short.
7. CLEAN UP: the preview auto-expires; delete the local snapshot when done (it holds real data — treat it as sensitive, never commit it).

## Rules

- Create the preview from the PRE-CHANGE code and seed the snapshot BEFORE editing schema.ts — so the import conforms and the conformance gate then fails on the copy (not prod) when you push the change; each preview push is `deploy --preview-name`, import targets it with `--deployment`.
- Follow the migrate order every time: optional field → push → backfill → verify → tighten → push; skipping 'optional first' makes the very first push reject existing rows.
- The prod promote needs a fresh explicit yes (deploy-guard) and is a REPEAT of the proven preview run, not a new attempt.
- Keep the prod snapshot as the rollback artifact; state plainly that a snapshot-restore loses data written after the snapshot, so keep the promote window short.
- Treat the exported snapshot as sensitive real data: delete it locally when finished; never commit it.
- Backfills go through @convex-dev/migrations (batched, resumable, dry-runnable), not ad-hoc one-shot mutations over a whole table.
- This is the rehearsal-and-promote flow; for the plain 'explain optional-then-tighten' guidance with no live data, that's migrate.

© convex · Apache-2.0 · convex/agent-skills

Похожие скиллы

Все скиллы по теме «Данные и базы» →
convex-migrations waynesutton Проводит изменение схемы Convex через шесть шагов: сделать поле необязательным, залить данные батчами, переключить валидатор, подчистить. Пригодится, когда npx convex dev падает на существующих документах. CX Codex +1 2 600установок convex-schema-validator waynesutton Проектирует таблицы, валидаторы, индексы и связи в convex/schema.ts. Пригодится при ошибках проверки схемы и развитии модели данных. CX Codex +1 3 000установок planetscale-schema-recommendations-agent-loop planetscale Превращает открытые рекомендации PlanetScale в план, issue, ветку или PR. Продовые изменения сам не применяет. CX Codex +1 1 800установок convex Mindrally Задаёт агенту правила работы с Convex: запросы, мутации, actions, индексы и файлы. Пригодится, когда бэкенд на Convex уже выбран. CX Codex +1 651установок surrealkit surrealdb Скилл учит агента работать с SurrealKit — CLI для синхронизации схем SurrealDB, планирования миграций и генерации типов. CX Codex +1 400установок migration JuliusBrussee Скилл задаёт правила безопасных миграций схем, данных и API с обязательным откатом. Пригодится при изменениях, где нельзя терять данные или ломать совместимость. CX Codex +1 103 900установок

Из того же набора32

convex-domains Ведёт агента по шагам: DNS-записи у вашего регистратора, привязка домена к приложению Convex и перепривязка auth-origin. CX Codex +1 35 800установок convex-launch-readiness Собирает четыре аудита Convex в один отчёт со счётом готовности и очередью правок. Пригодится, когда бэкенд пора выпускать, а непонятно, что чинить первым. CX Codex +1 35 900установок convex-explain-app Скилл строит понятную карту бэкенда Convex по схеме данных и функциям. Помогает быстро разобраться в незнакомом проекте перед правками или аудитом. CX Codex +1 35 900установок convex-backup Настраивает регулярные снапшоты базы Convex и прогоняет учебное восстановление в одноразовый preview, чтобы проверить, что данные действительно возвращаются. CX Codex +1 35 900установок convex-cost Оценивает расходы на Convex и находит функции, сжигающие бюджет. Показывает график роста затрат и предлагает дешёвое исправление. CX Codex +1 35 900установок convex-insights Читает логи и состояние работающего Convex-развёртывания по запросу на естественном языке. Нужен для разбора сбоев и проверки связи ошибок с выкладкой. CX Codex +1 35 900установок convex-agent Ставит в приложение на Convex бэкенд для ИИ-агента: долгие треды, история сообщений, вызовы инструментов и поиск по векторам. CX Codex +1 35 900установок convex-test Помогает генерировать детерминированные тесты для функций Convex с помощью convex-test и vitest. Проверяет запросы, мутации и авторизацию без запуска реального бэкенда. CX Codex +1 35 900установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой