关于 go-goose
go-goose 为使用 pressly/goose 的 Go 开发者提供数据库迁移指导,涵盖命令行和 Go 库。它强调遵循项目约定、匹配驱动与方言,并安全管理迁移顺序和回滚。
主要功能
- 01CLI 与 Go 库迁移流程
- 02SQL 与 Go 迁移编写指引
- 03数据库驱动与方言匹配
- 04版本排序及回滚注意事项
适用场景
- 01创建数据库架构迁移
- 02在 Go 服务或测试中执行迁移
- 03为 CI/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
使用 pressly/goose 通过命令行或 Go 库创建和运行数据库迁移的专家指导。
何时触发
- 用户提到 goose、pressly/goose、Go 中的数据库迁移,或询问如何运行 SQL/Go 迁移。
- 任务涉及嵌入迁移、Provider API 用法或使用 goose 的 CI 工作流。
核心规则
- 优先遵循仓库现有的迁移布局、方言和命名约定。
- 确保数据库驱动与 goose 方言匹配(例如,
postgres驱动搭配postgres方言)。 - 架构变更优先使用 SQL 迁移;复杂的数据回填或代码驱动的步骤使用 Go 迁移。
- 在 goose 的规则范围内保持迁移的确定性和幂等性(一个 Up,可选的 Down)。
工作流
- 明确上下文:目标数据库/方言、驱动、迁移目录、SQL 还是 Go 迁移需求,以及所需命令(create/up/down/status 等)。
- 选择接口:
- 命令行 用于临时运行或 CI/CD。
- 库/Provider 当迁移在 Go 服务或测试内部执行时。
- 编写迁移:
- SQL:使用 goose 注解和语句规则(参见 references/sql-annotations.md)。
- Go:在 init 中注册迁移,并接入自定义二进制文件或 Provider(参见 references/go-migrations.md)。
- 运行迁移:
- 命令行用法、命令和环境变量见 references/cli.md。
- 库/Provider 模式见 references/library.md。
- 版本控制 + 排序:
- 开发期间使用混合版本控制,如有需要,生产环境排序使用
fix(参见 references/versioning.md)。
- 开发期间使用混合版本控制,如有需要,生产环境排序使用
输出预期
- 提供与用户方言和环境匹配的准确命令或代码片段。
- 当需要回滚时,警告缺少 Down 迁移。
- 如果迁移需要特殊解析或非事务性执行,请明确指出。
参考
- 命令行用法和环境变量:references/cli.md
- SQL 注解和解析规则:references/sql-annotations.md
- Go 迁移注册模式:references/go-migrations.md
- 库和 Provider API 用法:references/library.md
- 版本控制和排序:references/versioning.md
评论
支持 Markdown