Skip to content
go-goose logo

Go Goose

go-goose

Use this skill to plan, write, or run database migrations with the pressly/goose CLI and Go library (SQL/Go migrations, env vars, provider API, embedded migrations).

SKILL.md

Full skill instructions

go-goose

Expert guidance for using pressly/​goose to create and run database migrations via the CLI or Go library.

When to trigger

  • The user mentions goose, pressly/​goose, database migrations in Go, or asks how to run SQL/​Go migrations.
  • The task involves embedding migrations, provider API usage, or CI workflows with goose.

Core rules

  • Follow the repository's existing migration layout, dialect, and naming conventions first.
  • Ensure the database driver and goose dialect match (e.g., postgres driver with postgres dialect).
  • Prefer SQL migrations for schema changes; use Go migrations for complex data backfills or code-driven steps.
  • Keep migrations deterministic and idempotent within goose's rules (one Up, optional Down).

Workflow

  1. Clarify context: target DB/​dialect, driver, migration directory, SQL vs Go migration needs, and desired command (create/​up/​down/​status/​etc).
  2. Choose interface:
    • CLI for ad-hoc runs or CI/​CD.
    • Library/​Provider when migrations are executed inside Go services or tests.
  3. Author migrations:
  4. Run migrations:
  5. Versioning + ordering:

Output expectations

  • Provide exact commands or code snippets that match the user's dialect and environment.
  • Warn about missing Down migrations when rollbacks are required.
  • If a migration requires special parsing or non-transactional execution, call it out explicitly.

References