Database Migrations taste — промпт для ChatGPT: что делает
Свод правил для ИИ-ассистента по созданию безопасных миграций базы данных. Защищает продакшен от блокировок таблиц и опасных правок схемы.
Открыть на GitHubЧто делает Database Migrations taste
Промпт задаёт строгие инженерные привычки при работе со схемой базы данных. Он требует писать миграции на чистом SQL, держать их в версионированных файлах рядом с кодом и никогда не менять уже применённые скрипты. Для обновлений предписан паттерн expand-contract: сначала добавляется колонка, затем наливаются данные, переключается чтение, и только потом удаляется старое поле.
Внутри заложены правила под PostgreSQL и высокие нагрузки. Новые колонки делаются nullable или с константным дефолтом, чтобы избежать перезаписи таблиц. Индексы на больших таблицах создаются через CREATE INDEX CONCURRENTLY строго вне транзакций. Каждая миграция должна начинаться с коротких lock_timeout и statement_timeout. Фоновые бэкфилы выносятся в отдельные фоновые задачи, а внешние ключи сначала помечаются как NOT VALID.
Если база данных не поддерживает транзакции или параллельное построение индексов, часть рекомендаций придётся адаптировать вручную.
Какие задачи решает
- составить безопасную миграцию для добавления колонки в нагруженную таблицу
- переименовать поле без остановки сервиса через схему dual-write
- создать индекс в PostgreSQL без блокировки записи
- разбить тяжёлое обновление данных на фоновые пакетные задачи
Примеры запросов агенту
- Напиши SQL-миграцию для добавления статуса заказа с учётом нулевого простоя.
- Как безопасно переименовать колонку user_id в accounts_id по паттерну expand-contract?
- Сгенерируй миграцию для внешнего ключа в PostgreSQL, используя NOT VALID.
Как установить Database Migrations taste
Как использовать
Вставьте текст в начало диалога или в инструкции проекта
Вручную: положить файлы
.claude/commands/prompts.csv.mdВопросы о Database Migrations taste
Как использовать Database Migrations taste в ChatGPT?
Скопируйте текст промпта и вставьте его в системные инструкции (Custom Instructions) или отправьте в начале диалога перед запросом SQL-миграций.
Что делает этот промпт?
Он настраивает модель на генерацию безопасных SQL-миграций без даунтайма. Промпт запрещает править старые файлы и требует разделять изменения на независимые шаги.
Как промпт рекомендует создавать индексы на больших таблицах?
Для PostgreSQL предписано использовать команду CREATE INDEX CONCURRENTLY строго вне блока транзакции, чтобы избежать блокировки параллельных запросов.
Исходный текст
prompts.csv · CC0-1.0
# Database Migrations taste - Keep every schema change in a versioned migration file committed next to the code that needs it. Confidence: 0.95 - Write migrations in plain SQL rather than ORM-generated diffs you have not read. Confidence: 0.80 - Never edit a migration that has already run in a shared environment; add a new one instead. Confidence: 0.95 - Use the expand and contract pattern: add the new column, backfill, switch reads, then drop the old column in a later release. Confidence: 0.90 - Make every migration safe to run while the previous app version is still serving traffic. Confidence: 0.90 - Add new columns as nullable or with a constant default to avoid long table rewrites. Confidence: 0.85 - Create indexes on large Postgres tables with CREATE INDEX CONCURRENTLY outside a transaction. Confidence: 0.90 - Set a short lock_timeout and statement_timeout at the top of each migration. Confidence: 0.85 - Run large backfills as batched background jobs, not inside the migration itself. Confidence: 0.90 - Keep one logical change per migration so failures are easy to read and retry. Confidence: 0.80 - Name migration files with a UTC timestamp prefix and a short verb phrase like 20261017_add_orders_status. Confidence: 0.75 - Prefer forward-only migrations and fix mistakes with a new migration instead of relying on down scripts. Confidence: 0.70 - Run migrations as a separate deploy step before the new application code starts. Confidence: 0.85 - Test every migration in CI against a fresh database and against a copy of production-sized data. Confidence: 0.80 - Add foreign keys and check constraints as NOT VALID first, then validate them in a separate step. Confidence: 0.80 - Rename columns and tables only through a view or dual-write period, never in a single step. Confidence: 0.75 - Store the applied migration history in the database and fail the deploy if it has drifted. Confidence: 0.85 - Review migrations as carefully as application code, with the generated SQL visible in the pull request. Confidence: 0.90 - Keep seed and fixture data out of schema migrations. Confidence: 0.80
© f · CC0-1.0 · f/prompts.chat