Migrate Validate 是 ruflo 下的一项迁移校验技能,用于在正式应用数据库迁移之前,对全部待执行的迁移进行正确性、安全性与最佳实践检查。
用途
在应用迁移之前先做校验,以便尽早发现问题,包括:引用了不存在表的外键、缺少回滚 SQL、没有安全防护的破坏性操作,以及命名规范违规。
主要能力与检查步骤
-
查找待迁移文件:使用 Glob 列出所有迁移文件,并通过 mcp__plugin_ruflo-core_ruflo__memory_search 的 --namespace migrations(或 memory_list)与应用历史交叉比对,找出尚未应用的迁移。说明中指出 memory_* 系列按 namespace 路由,而 agentdb_hierarchical-* 按 tier 路由、不按 namespace,因此此处应使用 memory_*。
-
解析 SQL:使用 Read 加载每个待迁移的 .up.sql 和 .down.sql 文件并解析其中的 SQL 语句。
-
检查外键:确认所有 REFERENCES 目标存在于当前 schema 或先前的迁移中(已应用和待应用的都算)。
-
检查 NOT NULL 默认值:确认任何带 NOT NULL 的 ADD COLUMN 都带有 DEFAULT 值。
-
检查回滚完整性:确认 UP 文件中的每个 CREATE/ALTER 在 DOWN 文件中都有对应的 DROP/ALTER。
-
标记破坏性操作:对 DROP TABLE、DROP COLUMN、TRUNCATE 等在缺少明确确认时发出警告。
-
检查幂等性:确认是否使用了 IF EXISTS / IF NOT EXISTS 以保证安全。
-
检查命名:确认表名使用复数、列名使用 snake_case、索引名遵循 idx_table_column 约定。
-
存储校验模式:提供两条路径(依据 ruflo-cost-tracker 的 ADR-0001 双路径模式):模式存储(类型化,推荐)使用 mcp__plugin_ruflo-core_ruflo__agentdb_pattern-store,type 为 'migration-validation',不需要 namespace 参数,由 ReasoningBank 路由;普通存储(可按 namespace 路由)使用 mcp__plugin_ruflo-core_ruflo__memory_store --namespace migrations,用于保存与特定迁移编号相关的校验结果。
-
报告:输出错误(必须修复)、警告(应当修复)、提示(建议)三类问题,并针对每个问题给出文件路径与行号。
使用方式
该技能以步骤化流程执行上述检查,并可将结果写入记忆。它也提供 CLI 替代方案:npx @claude-flow/cli@latest memory search --query "migration validation results" --namespace migrations
适用场景
适用于在数据库迁移正式执行前进行审查的场合,特别是需要核对跨迁移外键引用、确认回滚脚本完整、避免无防护的破坏性变更,以及统一命名规范的数据库变更流程。
限制
资料未说明该技能支持的数据库类型、SQL 方言范围、价格或收费情况,也未提供具体平台依赖与性能说明,这些信息暂未提供。