apply-migrations

star 18

Apply pending database migrations (rockhopper up)

c9s By c9s schedule Updated 6/16/2026

name: apply-migrations description: Apply pending database migrations (rockhopper up) disable-model-invocation: true argument-hint: [config_file]

Apply pending migrations using rockhopper.

Steps

  1. If $ARGUMENTS is provided, use it as the config file path. Otherwise, find all rockhopper_*.yaml config files and ask the user which one to use.
  2. Run:
    rockhopper --config <config_file> up
    
  3. Report the result.

Handling out-of-order migrations

If up fails with an "out-of-order migrations detected" error, it means a pending migration has a lower version than one that is already applied (common after merging parallel branches). Do not blindly re-run with --allow-out-of-order. Instead:

  1. Show the user the offending migration(s) from the error.
  2. Explain the two options:
    • Renumber the new migration above the latest applied version (safe default — keeps history linear).
    • Apply in place with rockhopper --config <config_file> up --allow-out-of-order, only if the older migration is independent of the newer ones.
  3. Ask the user which they prefer before proceeding.

Environment variable overrides

If the user needs to override the DSN or driver, remind them they can set:

  • ROCKHOPPER_DRIVER - database driver name
  • ROCKHOPPER_DIALECT - SQL dialect name; one of postgres, mysql, sqlite3, tidb, redshift, clickhouse
  • ROCKHOPPER_DSN - data source name connection string

Dialect notes

All listed dialects support schema migrations (up/down/status). Data migrations (the lease-based backfill API) require conditional UPDATE ... RETURNING RowsAffected==1 semantics and are therefore not supported on ClickHouse, which is capability-gated and returns ErrDataMigrationUnsupported.

Install via CLI
npx skills add https://github.com/c9s/rockhopper --skill apply-migrations
Repository Details
star Stars 18
call_split Forks 4
navigation Branch main
article Path SKILL.md
More from Creator