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

migration-ready-schema — скилл для Claude Code: обзор и установка

Задаёт правила структуры базы данных, чтобы таблицы можно было наполнять повторно и откатывать импорт. Помогает при описании контрактов в ARCH-{slug}.md.

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

Что делает migration-ready-schema

Скилл проверяет архитектурные описания баз данных перед запуском разработки. Он требует добавлять в импортируемые таблицы два поля: nullable-колонку source_ref с ограничением UNIQUE в формате {source}:{type}:{id} для дедупликации и import_batch_id типа UUID. Без import_batch_id невозможно удалить последствия сбойной загрузки. Откат должен работать сразу.

Второе требование — выносить реальных участников вроде клиентов или поставщиков в отдельные сущности. Если сохранить контакт строкой внутри заказа, импортированного контрагента некуда будет привязать. Также скилл требует хранить деньги только целыми числами (*_cents), фиксировать часовой пояс во времени и объявлять таблицы outbound_message и processed_webhook_events.

Правила проверяются в каталогах docs/architecture/** и docs/data-import/**. На временные таблицы, кеши и материализованные представления эти ограничения не распространяются.

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

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

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

  • Проверь контракт данных в docs/architecture/ARCH-billing.md по правилам migration-ready-schema.
  • Добавь в схему сущности Customer поля source_ref и import_batch_id для безопасного импорта.
  • Оцени новую таблицу заказов на совместимость с правилами миграции данных.

Как установить migration-ready-schema

1Через Skills CLI (Vercel)

npx skills add avelikiy/great_cto --skill migration-ready-schema -a claude-code

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

~/.claude/skills/migration-ready-schema/SKILL.md

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

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

Вопросы о migration-ready-schema

Как установить migration-ready-schema в Claude Code?

Выполните команду npx skills add avelikiy/great_cto --skill migration-ready-schema -a claude-code. Конфигурация навыка сохранится в файле ~/.claude/skills/migration-ready-schema/SKILL.md.

Зачем нужны поля source_ref и import_batch_id?

Колонка source_ref хранит идентификатор записи из сторонней системы для идемпотентного перезапуска, а import_batch_id группирует строки одного запуска для быстрого удаления при сбое.

К каким таблицам нельзя применять правила скилла?

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

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

SKILL.md · MIT
---
name: migration-ready-schema
description: Data-model rules that make a schema importable from day one, so the migration-import-engineer is never blocked on missing columns. Every SMB Product-Builder product must let a customer bring their data from an incumbent (ServiceTitan/Toast/Mindbody/Shopify) — that requires provenance (source_ref) and rollback (import_batch_id) on importable entities, and modelling real-world actors as entities rather than inline fields. Applied by architect when writing the data model in ARCH-{slug}.md, and checked by migration-import-engineer. One cheap rule set prevents the migration↔architecture seam gap from recurring across all 40 products.
when_to_use: |
  Apply when:
  - architect writes the Data contracts / data model section of ARCH-{slug}.md
  - migration-import-engineer verifies the destination schema can satisfy its
    idempotency + rollback invariants
  - any new entity is added that could be populated from an import or a third-party sync
  Do NOT apply to purely ephemeral / derived tables (caches, materialized views) that are
  never imported into.
effort: low
allowed-tools: Read, Write, Grep, Glob
paths:
  - "docs/architecture/**"
  - "docs/data-import/**"
---

# Migration-ready schema — importable from day one

Every SMB product's wedge is **low switching cost** — the customer brings their data from
the incumbent. If the schema can't receive that data idempotently and reversibly, the
`migration-import-engineer` blocks and the wedge is a slogan. These rules are cheap at
design time and impossible to retrofit cleanly. **Apply them to the data model in ARCH,
before any import is designed.**

## The three rules (the ones that actually block imports)

### 1. Importable entities carry `source_ref` (provenance)
Any entity that can be populated from an incumbent export or a third-party sync gets a
nullable, **unique** `source_ref` column:

```
source_ref  text  UNIQUE NULL   -- e.g. "servicetitan:pricebook:8842"
```

- It is the **dedup key** for idempotent re-import (re-running an export never duplicates).
- Namespaced `{source}:{type}:{id}` so two incumbents can't collide.
- Nullable because natively-created rows have no source.

### 2. Importable entities carry `import_batch_id` (rollback)
```
import_batch_id  uuid  NULL  -- tags every row written by one import run
```
Rollback = delete where `import_batch_id = ?`. Without it there is no undo, and an import
with no undo is one a user will never trust enough to run.

### 3. Model real-world actors as entities, not inline fields
A customer, contact, vendor, member, or tenant is an **entity with its own table**, even if
v1 only stores a name + phone. Reason: imports populate these **before** the dependent
records (quotes, orders, bookings) exist — an inline `customer_name` field on `Quote` has
**nowhere to land** an imported customer. Inline-actor is the single most common migration
blocker.

```
-- WRONG (blocks import):  Quote(... customer_contact text)
-- RIGHT:                   CustomerContact(id, ..., source_ref, import_batch_id)
                            Quote(... customer_contact_id → CustomerContact.id)
```

## Supporting rules (cheap, prevent silent data loss)

- **Money in integer minor units** (`*_cents`), never float — incumbent exports carry exact
  amounts; floats corrupt them.
- **Timestamps carry the source timezone** (store UTC + offset, or tz-aware) — exports use
  local times; ambiguous `MM/DD` and naive datetimes lose data.
- **Infra tables for integration bookkeeping exist in the model**: `outbound_message`
  (idempotent send guard), `processed_webhook_events` (event dedup). The
  integrations-engineer relies on them; enumerate them so they aren't a surprise.

## Checklist (architect runs this before finalizing the data model)

```
For each entity in the data model:
- [ ] Can it be imported from an incumbent or third-party? If yes → has source_ref + import_batch_id
- [ ] Is it a real-world actor (customer/contact/vendor/member)? If yes → it is its own entity, not an inline field
- [ ] Money fields integer minor units? Timestamps tz-aware?
- [ ] Listed the infra tables (outbound_message, processed_webhook_events) the integrations layer needs?
```

A data model that passes this checklist hands `migration-import-engineer` a destination it
can import into idempotently and reversibly — no blocked seam.

© avelikiy · MIT · avelikiy/great_cto

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

Все скиллы по теме «Данные и базы» →
xlsx официальный anthropics Работает с табличными файлами: создаёт, читает, правит и преобразует книги. Подходит, когда итогом должен стать файл Excel или другой табличный формат. 187 223установок google-agents-cli-observability официальный Google Помогает настроить трассировку и сбор данных о работе ИИ-агентов, включая агентов на ADK. Пригодится, когда нужно разбирать выполнение запросов или наблюдать за агентом после развёртывания. CX Codex +1 511 300установок caveman-evidence-review JuliusBrussee Скилл читает данные Caveman Cloud о расходах LLM, трассах и маршрутизации. Подходит для проверки того, куда уходит бюджет проекта. CX Codex +1 104 500установок migration JuliusBrussee Скилл задаёт правила безопасных миграций схем, данных и API с обязательным откатом. Пригодится при изменениях, где нельзя терять данные или ломать совместимость. CX Codex +1 103 900установок performance-optimization addyosmani Скилл для агентов ИИ-кодинга: сначала замеряет, потом чинит узкое место — от Core Web Vitals до N+1 запросов и индексов в базе. CX Codex +1 65 200установок supabase официальный supabase Скилл помогает настраивать базу данных, аутентификацию и RLS в Supabase без скрытых дыр в безопасности. CX Codex GP ChatGPT 8установок

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

pm-planning Превращает утверждённый документ архитектуры в список задач Beads с зависимостями, оценками и критериями приёмки. Нужен, когда pm-агент готовит план для senior-dev. CX Codex +1 ★ 107звёзд репо outcome-roadmap Переписывает списки фич в дорожные карты результатов с метриками пользы. Помогает объяснить стейкхолдерам, зачем команда берёт задачи в квартал. CX Codex +1 ★ 107звёзд репо opportunity-solution-tree Скилл помогает связать измеримый результат с проблемами клиентов, вариантами решений и экспериментами. Пригодится, когда команда выбирает, что исследовать или строить дальше. CX Codex +1 ★ 107звёзд репо observability-baseline Добавляет в новый сервис перехват ошибок в Sentry, структурные логи с request_id и эндпоинты /healthz и /readyz. Пригодится, когда проект только собирается и первый сбой в проде не должен остаться незамеченным. CX Codex +1 ★ 107звёзд репо lifecycle-messaging Скилл помогает проектировать email- и SMS-сообщения с учётом согласия, доставки и разделения транзакционных и маркетинговых рассылок. Пригодится при подключении провайдера или добавлении сообщений в продукт. CX Codex +1 ★ 107звёзд репо great_cto Скилл превращает Claude в оркестратора: CTO описывает задачу словами, а агенты сами проходят этапы пайплайна. Пригодится тем, кто ведёт проект целиком через агента. CX Codex +1 ★ 107звёзд репо done-blocked Фиксирует строгий формат финала для агентов: статус только DONE или BLOCKED с доказательствами. Помогает убрать расплывчатые отчёты в пайплайнах. CX Codex +1 ★ 107звёзд репо discovery Скилл помогает собрать контекст и ограничения до архитектурного решения, аудита или плана безопасности. Используйте его, когда важных деталей ещё нет в запросе. CX Codex +1 ★ 107звёзд репо

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

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