go-goose について
go-gooseは、pressly/gooseを使うGo開発者向けに、CLIまたはGoライブラリでのデータベースマイグレーションを案内します。リポジトリの規約やドライバーと方言の整合性を重視し、順序管理やロールバックにも触れます。
主な機能
- 01CLIとGoライブラリの移行手順
- 02SQL・Goマイグレーションの作成指針
- 03データベースドライバーと方言の照合
- 04バージョン順序とロールバックの考慮点
活用シーン
- 01データベースのスキーマ移行の作成
- 02Goサービスやテスト内での移行実行
- 03CI/CDでの移行コマンド実行
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ metalagman/ agent-skills --skill go-gooseインストール後、Claude Code で/go-gooseを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/cli.mdgo-migrations.mdlibrary.mdsql-annotations.mdversioning.md詳細
go-goose
CLI または Go ライブラリを使ってデータベースマイグレーションを作成、実行するための pressly/goose の専門ガイダンスです。
トリガーするタイミング
- ユーザーが goose、pressly/goose、Go でのデータベースマイグレーションに言及した場合、または SQL/Go マイグレーションの実行方法を尋ねた場合。
- タスクに goose を使ったマイグレーションの埋め込み、Provider API の使用、CI ワークフローが含まれる場合。
基本ルール
- まず、リポジトリに既存のマイグレーションの配置、方言、命名規則に従ってください。
- データベースドライバーと goose の方言が一致していることを確認してください(例:
postgresドライバーにはpostgres方言)。 - スキーマ変更には SQL マイグレーションを優先し、複雑なデータのバックフィルやコード駆動の手順には Go マイグレーションを使用してください。
- goose のルールに従い、マイグレーションを決定的かつ冪等にしてください(Up は 1 つ、Down は任意)。
ワークフロー
- コンテキストを確認する:対象の DB/方言、ドライバー、マイグレーションディレクトリ、SQL と Go のどちらのマイグレーションが必要か、実行したいコマンド(create/up/down/status など)を確認します。
- インターフェースを選ぶ:
- CLI:その場での実行や CI/CD に使用します。
- ライブラリ/Provider:Go サービスやテスト内でマイグレーションを実行する場合に使用します。
- マイグレーションを作成する:
- SQL:goose のアノテーションとステートメントのルールを使用します(references/sql-annotations.md を参照)。
- Go:init でマイグレーションを登録し、カスタムバイナリまたは Provider に組み込みます(references/go-migrations.md を参照)。
- マイグレーションを実行する:
- CLI の使い方、コマンド、環境変数は references/cli.md を参照してください。
- ライブラリ/Provider のパターンは references/library.md を参照してください。
- バージョン管理と順序:
- 開発時はハイブリッドバージョニングを使用し、本番環境での順序付けが必要な場合は
fixを使用します(references/versioning.md を参照)。
- 開発時はハイブリッドバージョニングを使用し、本番環境での順序付けが必要な場合は
出力に関する期待事項
- ユーザーの方言と環境に合った、正確なコマンドまたはコードスニペットを提示してください。
- ロールバックが必要なのに Down マイグレーションがない場合は警告してください。
- 特別な解析や非トランザクション実行が必要なマイグレーションの場合は、その旨を明示してください。
参考資料
- CLI の使い方と環境変数:references/cli.md
- SQL アノテーションと解析ルール:references/sql-annotations.md
- Go マイグレーションの登録パターン:references/go-migrations.md
- ライブラリと Provider API の使い方:references/library.md
- バージョン管理と順序:references/versioning.md
コメント
Markdown 対応