flydb-migration-scriptslisted
Install: claude install-skill zzxCoding/skills
# Flydb 迁移脚本目录管理
在使用 Flydb 的项目里创建、修改和组织迁移脚本目录。本技能管"写脚本":命名、版本、目录布局与修改纪律;执行 CLI(migrate/validate 等)用姊妹技能 `flydb-cli-release`,多环境/CI 自动化用 `flydb-multi-environment`(总入口为 `flydb` 技能),各技能可独立使用。
## 参考文档(按任务读取)
| 文件 | 何时读取 |
|---|---|
| [`references/naming-and-versions.md`](references/naming-and-versions.md) | 命名语法、版本规则、三类脚本语义、版本策略、目录组织、占位符 |
| [`references/errors-and-discipline.md`](references/errors-and-discipline.md) | 修改红线、脚本目录相关错误码处置、FLYDB-2003 分类、失败记录流程 |
## 核心契约
1. **改动范围**:只在迁移脚本目录内新增/编辑 SQL 文件(以及经用户确认的 `flydb.locations` 配置);不动其他项目文件。
2. **绝不改写已应用的版本化脚本**来"修复"历史——对已应用 `V` 脚本的任何变更(内容、格式、文件名)都用新版本脚本承载。checksum 记录在历史表里,改动即 `FLYDB-2003`。用户明确要求修改已应用脚本时,先说明后果(校验失败/需 repair),确认后再动。
3. **文件名必须可解析**:`V`/`U` 候选命名不合法时 Flydb 报 `FLYDB-2001` 阻断,不会静默跳过;交付前自行核对命名。
4. **跟随既有风格**:新脚本的版本策略(递增整数/日期版本/目录版本)与现有项目一致;空目录且无约定时采用递增整数并说明选择,只有会影响既有历史的风格冲突才澄清。
5. **校验后交付**:新增/修改脚本后建议用户跑 `validate` 与 `--dry-run migrate` 核对(只读检查);本技能不主动执行写入数据库的命令。
## 工作流
### 1. 定位脚本目录
- 读 `flydb.conf` 的 `flydb.locations`(或 `-l` 参数);没有配置文件时 CLI 默认 `filesystem:db/migration`。
- `filesystem:` 相对路径以执行 CLI 的工作目录为基准,先解析成绝对路径再操作,避免看错目录。
- 目录不存在时报 `FLYDB-4005` 的是配置问题:核对前缀与路径,而不是创建一堆空目录掩盖。
### 2. 盘点现状(只读)
用 `bin/flydb info --color=never`(需要数据库连接)或直接 `find <脚本目录> -name '*.sql' | sort` 盘点:
- 现有脚本的类型分布(V/R/U)与版本风格;
- 哪些版本已应用、哪些待执行(info 有库时);
- 是否存在失败记录或 MISSING/FUTURE 迹象——有则先按 [`references/errors-and-discipline.md`](references/errors-and-discipline.md) 处置,再叠加新变更。
### 3. 新增脚本
1. 读 [`references/naming-and-versions.md`](refe