Create a database migration to add a table, add columns to an existing table, add a setting, or otherwise change the schema of Ghost's MySQL database. Use this skill whenever the task involves modifying Ghost's database schema — including adding, removing, or renaming columns or tables, adding new settings, creating indexes, updating data, or any change that requires a migration file in ghost/core. Also use when the user references schema.js, knex-migrator, the migrations directory, or asks to "add a field" or "add a column" to any Ghost model/table. Even if the user frames it as a feature or Linear issue, if the implementation requires a schema change, this skill applies.
cd ghost/core && pnpm migrate:create <kebab-case-slug>. IMPORTANT: do not create the migration file manually; always use this script to create the initial empty migration file. The slug must be kebab-case (e.g. add-column-to-posts).ghost/core/core/server/data/migrations/versions if needed, create the empty migration file with the appropriate name, and bump the core and admin package versions to RC if this is the first migration after a release.ghost/core/core/server/data/migrations/utils/*.ghost/core/core/server/data/schema/schema.js, and make sure it aligns with the latest changes from the migration.cd ghost/core && pnpm knex-migrator migrate --v {version directory} --forceghost/core/core/server/data/exporter/table-lists.js as appropriate.ghost/core/test/integration/exporter/exporter.test.js. This test has a hardcoded alphabetically-sorted array of all database tables — it runs in CI integration tests (not unit tests) and will fail if the new table is missing.cd ghost/core && pnpm test:single test/unit/server/data/schema/integrity.test.jscd ghost/core && pnpm test:unitSee examples.md for example migrations.
See rules.md for rules that should always be followed when creating database migrations.39:["$","$L3d",null,{"content":"$3e","frontMatter":{"name":"Create database migration","description":"Create a database migration to add a table, add columns to an existing table, add a setting, or otherwise change the schema of Ghost's MySQL database. Use this skill whenever the task involves modifying Ghost's database schema — including adding, removing, or renaming columns or tables, adding new settings, creating indexes, updating data, or any change that requires a migration file in ghost/core. Also use when the user references schema.js, knex-migrator, the migrations directory, or asks to "add a field" or "add a column" to any Ghost model/table. Even if the user frames it as a feature or Linear issue, if the implementation requires a schema change, this skill applies."}}]