用途
本 Skill 用于指导大规模、非平凡的重构工作。其核心判断是:重构最大的风险不是改错,而是改了不知道影响了什么。因此流程强调先建安全网、再动手,每一步都保留回退点。
适用判断:
- 改动 ≤2 个文件且不涉及公共接口:直接动手,不需要本 Skill。
- 改动 3-5 个文件、局部重构:走简化流程(第二步快速版 → 第四步 → 第五步)。
- 涉及公共接口、跨模块、架构调整、数据结构变更:走完整流程(第二步 → 第三步 → 第四步 → 第五步 → 第六步)。
走完整流程的信号包括:改公共函数/类的签名、拆分或合并模块、改数据模型或数据库 schema、改目录结构、改被多处引用的导入路径。纯内部实现优化且接口不变时走简化流程。
主要能力
第二步:影响分析
先搞清楚改动会波及哪里。
- 确定重构范围:重构目标是什么、触发原因(技术债/性能/可维护性/新需求倒逼)、明确哪些相关代码这次不动以防 scope 膨胀;可用 AskUserQuestion 与用户对齐。
- 依赖关系梳理:梳理上下游依赖(被谁调用 → 重构目标 → 调用了谁),通过 Grep 搜索函数名/类名/模块路径找到所有引用位置,检查 import/require 关系画出依赖图,若涉及数据结构变更则追踪数据流。
- 影响面评估:产出影响清单,区分直接影响(必须改)、间接影响(需要验证)、不受影响(确认安全)。简化流程下只做 Grep 确认引用范围,不需要完整影响清单文档。
第三步:安全网搭建
- 确认现有测试覆盖:用 grep 查找相关测试文件;有测试且覆盖核心路径则先跑通确认 baseline 全绿;有测试但覆盖不足则补关键路径测试;没有测试则先补测试,至少覆盖核心路径和边界情况。
- 补充缺失测试:不追求 100% 覆盖率,重点覆盖要改函数的核心输入输出、公共接口契约、边界情况;测试应验证行为(输入→输出)而非实现细节;测试用例记录到 docs/tests/<模块名>-refactor.md。
- 创建回退点:在重构开始前创建明确的 commit 或 branch,例如
git checkout -b refactor/<模块名>、git commit -m "chore: 重构前基线 — 测试全绿",确保随时可通过git diff refactor/<模块名>查看所有改动并快速回退。
第四步:分步重构
- 制定重构计划:将重构拆成独立、可验证的小步骤,每步完成后测试应通过。拆分原则:每步只做一件事(改结构不改逻辑/改逻辑不改结构),每步改完都能编译通过、测试通过,步骤间尽量不互相依赖,危险操作(删代码、改数据结构)放后面。
- 常用策略:改公共接口签名用「先新后删」;拆分大文件/大函数用「提取 → 内联引用 → 验证 → 删旧」;改目录结构先移文件再修导入再验证再提交;替换依赖/框架用适配器模式新旧共存逐步迁移;改数据模型用双写过渡。
- 执行纪律:每完成一步跑测试、跑 lint、快速 review diff、提交(每步一个 commit)。若测试挂了,先判断是不是测试本身需要更新;意料之外的失败要停下来分析,不要硬继续;搞不清就回退到上一步 commit 重新想策略。
第五步:回归验证
目标验证行为是否真的没变。
- 运行全量测试(如
npm test或pytest,有 e2e 则npm run test:e2e)。 - 人工验证核心路径:页面渲染、API 响应、关键业务流程端到端走通。
- 对比验证:用
git diff refactor/<模块名>..HEAD --stat确认没有混入不相关改动、没有遗留 debug 代码、没有遗留注释掉的旧代码。
第六步:收尾
- 清理:删除废弃旧代码(直接删除而非注释)、更新相关文档、更新 docs/tests/ 中的测试用例。
- 交给 task-finish 做 CR 自检:检查改动范围是否符合重构目标、有无混入不相关变更、有无遗留调试代码。
- 复盘沉淀:用户将需求标 done 时由 task-manager 触发复盘,重构类任务建议做完整复盘并记录到 docs/decisions/,内容包括目标是否达成、哪些步骤顺利/卡住、影响分析是否准确、可复用的经验。
使用方式
本 Skill 是流程调度型 Skill,与其他 Skill 衔接如下:
task-start 判定为重构任务后进入 refactoring;第二步可调用 dependency-map(影响分析)和 writing(撰写大型重构方案);第四步可调用 task-execute(跨会话进度管理);第五步在性能相关重构时可调用 perf-profiling 对比前后;收尾交给 task-finish 做 CR 自检;需求标 done 后由 task-manager 触发复盘。
适用场景
涉及多文件、架构调整、模块解耦、接口重新设计等非平凡重构,包括公共接口改造、模块拆分合并、目录结构调整、数据结构或 schema 变更、依赖/框架替换等。
限制与反模式
资料给出的反模式清单及其正确做法:
- 没有安全网就开始改 → 先确认测试覆盖再动手。
- 一次改太多 → 小步提交,每步可验证。
- 重构时顺手加功能 → 重构和功能开发分开做。
- 改结构的同时改逻辑 → 一步只做一件事。
- 注释掉旧代码不删 → 确认不用了就删。
- 跳过回归测试 → 每步跑测试,最后全量回归。
- 不记录影响面 → 把影响分析写下来。
关于收费、价格、平台支持等信息资料未提供。