关于 simplify
simplify 是面向开发者和编码 Agent 的代码重构技能,依据结构规则检查目标代码,先提交变更方案供批准,再验证获批的重构。
主要功能
- 01八个维度的重构规则
- 02保持行为和公共 API
- 03审批后再应用变更
- 04验证失败时立即停止
适用场景
- 01减少深层控制流嵌套
- 02合并文件内重复代码
- 03改进标识符和表达式的清晰度
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ venhdev/ skills --skill simplify安装后在 Claude Code 中输入/simplify确认已加载。
详细介绍
simplify — 代码清晰度与重构引擎
运行不变量
- 行为不变性:100% 保留现有功能、测试结果、错误处理和公共 API 签名;禁止更改程序语义或破坏契约。
- 范围纪律:严格将重构限制在目标文件或函数内;禁止在目标文件之外进行跨文件提取、类拆分或架构重新设计。
- 修改前置关卡:仅通过 Changeset 摘要暂存更改,并立即停止当前轮次;未经人工明确授权,禁止将修改写入磁盘。
- 验证断路器:验证失败时立即停止执行,提供带文件引用的 stderr,并询问用户是回滚还是继续调试;禁止无提示地丢弃更改,也禁止无指导的重试循环。
领域评估标准
根据 8 个互斥的结构维度评估目标代码:
-
控制流(代码块层级)
- 异味:嵌套层级 ≥ 3、箭头反模式、尾随的 else 代码块。
- 改进方法:反转条件,将其改为守卫子句和提前返回。
- 护栏:保留简单的 1 层条件判断和自然的线性流程。
-
谓词逻辑(布尔表达式)
- 异味:复合条件(≥ 3 个子句)、双重否定。
- 改进方法:提取能清晰说明意图的布尔变量,应用德摩根定律。
- 护栏:将明显的 1–2 个子句检查(例如存在性或状态验证)保留为内联表达式。
-
函数内聚性(纵向作用域)
- 异味:函数同时处理高层协调和底层机制(解析、格式化、正则表达式)。
- 改进方法:将底层机制提取为专注于单一任务的辅助函数。
- 护栏:禁止仅使用一次的琐碎微型提取;保留内聚的线性逻辑。
-
代码重复(横向重复)
- 异味:目标文件中出现相同的复制粘贴代码块(≥ 3 次)。
- 改进方法:将通用逻辑整合到单个私有辅助函数中。
- 护栏:切勿通过布尔标志参数合并偶然相似的代码;宁可容忍少量重复,也不要引入耦合抽象。
-
表达式密度(内联语法)
- 异味:嵌套三元表达式或串联的内联条件、多条语句挤在同一行。
- 改进方法:展开为明确的多行条件语句或模式匹配语句。
- 护栏:保留易读的单行二元条件判断(例如简单的回退或值选择)。
-
标识符命名(词汇)
- 异味:循环计数器(
i, j)之外具有欺骗性、误导性或含义隐晦的单字符变量名。 - 改进方法:重命名标识符,清晰体现领域意图。
- 护栏:禁止对标准惯例名称(
err、ctx、req、res、i)进行表面化更改;绝不重命名公共 API 参数。
- 异味:循环计数器(
-
状态变更(变量可变性)
- 异味:临时变量在不同作用域中被重新赋值、标志变量被用于无关状态,或函数参数绑定被修改。
- 改进方法:拆分为各自单次赋值或不可变的变量,体现不同的生命周期值。
- 护栏:保留标准循环累加器(
sum += x)、流缓冲区和性能关键的原地修改。
-
魔法字面量(字面量混淆)
- 异味:操作逻辑中直接嵌入硬编码的魔法数字、状态字符串或配置阈值。
- 改进方法:提取为符合宿主语言惯例、描述清晰的私有常量。
- 护栏:将普遍不言自明的字面量(
0、1、""、-1)保留为内联表达式;没有明确的架构理由时,绝不导出私有常量。
执行协议
阶段 1:检查与清理评估
-
使用不会修改文件的工具检查目标文件、差异或函数。
-
根据重构评估标准评估目标代码。
-
清理评估退出条件:如果没有代码异味违反评估标准,或所有候选重构都违反防护规则,则输出以下评估结果,并立即结束本轮:
Assessment: Target code is already clean, idiomatic, and minimal. No refactoring required.
阶段 2:暂存与授权关卡
-
以变更集格式暂存计划中的修改:
# Changeset: Simplify <Target Scope> |-- <collapsed/subsystem_or_directory>/ | `-- <target_file> | `-- [UPDATE] Simplify <component_or_function>: | * <Dimension applied from rubric>. | * <Multi-line refactoring detail with hanging indent>. Summary: 1 file affected (1 updated). -
提交变更集摘要和技术理由;立即结束本轮,等待人工授权。禁止在聊天中直接贴出原始差异。
阶段 3:修改与验证
- 收到批准后,将编辑应用到磁盘。
- 运行现有测试、代码检查工具或语法检查;若失败,则触发验证熔断机制。
评论
支持 Markdown