关于 slop
slop 是代码精简技能,会对比指定分支检查变更,移除多余复杂性或不一致的风格,同时保留原有行为。它仅关注修改过的代码,并通过测试验证结果。
主要功能
- 01与指定分支对比变更
- 02移除冗余注释和检查
- 03改进类型和代码结构
- 04遵循仓库约定
- 05精简后运行测试
适用场景
- 01提交 PR 前精简代码变更
- 02移除分支中不必要的防御性代码
- 03在保留行为的同时提升可读性
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ jellydn/ my-ai-tools --skill slop安装后在 Claude Code 中输入/slop确认已加载。
详细介绍
移除 AI 代码冗余
检查与某个分支的差异,并移除此分支引入的所有 AI 生成的冗余代码。在保留所有功能的同时,简化并优化代码,使其更清晰、一致且易于维护。
用法
/slop [branch-name]
- 如果未提供分支,则与 main 比较:
/slop main
什么是 AI 代码冗余?
包括:
- 人类不会添加的额外注释,或与文件其余部分风格不一致的注释
- 在代码库对应部分并不常见的额外防御性检查或 try/catch 块
- 为绕过类型问题而将类型强转为
any - 其他与文件风格不一致的写法
核心原则
1. 保留功能
绝不改变代码的行为,只调整实现方式。所有原有功能、输出和行为都必须保持不变。
2. 遵循项目标准
遵循 @CLAUDE.md 中规定的编码标准或项目惯例:
- 正确排序导入并组织文件
- 遵循特定语言的模式(ES modules、恰当的 TypeScript 类型等)
- 保持命名约定一致
- 采用恰当的错误处理模式
3. 提高清晰度
通过以下方式简化代码结构:
- 减少不必要的复杂性和嵌套
- 消除冗余代码和抽象
- 使用清晰的变量和函数名称,提高可读性
- 合并相关逻辑
- 移除解释显而易见代码的不必要注释
- 重要:优先使用 switch 语句或 if/else 链,而不是嵌套三元运算符
- 清晰优先于简短——明确的代码通常胜过过度紧凑的代码
4. 保持平衡
保留必要的复杂性——过度简化可能会:
- 降低代码的清晰度或可维护性
- 产生难以理解、过于巧妙的解决方案
- 将过多关注点合并到单个函数中
- 移除有助于改善代码组织的有效抽象
- 为了“减少行数”而牺牲可读性
流程
1. 获取差异
# Compare against main branch
git diff main...HEAD --stat
# Or against specific branch
git diff $1 --stat
2. 审查每个变更的文件
对于每个变更的文件:
- 阅读当前内容
- 与原始版本(变更前)进行比较
- 找出 AI 生成冗余代码的模式
- 检查是否有机会提升简洁性和一致性
3. 移除冗余并优化
- 移除不必要的注释
- 简化过度防御性的代码
- 尽可能移除
any类型强转 - 恢复自然的代码风格
- 遵循项目特定的最佳实践
- 确保所有功能保持不变
4. 验证
# Show remaining changes
git diff --stat
# Check tests still pass
npm test
常见冗余代码模式
- 过度注释:解释显而易见代码的注释
- 冗长的错误处理:不必要的 try/catch 块
- 不必要的类型强转:使用
x as any绕过 TypeScript - 防御式编程:检查已经过验证的输入
- 重复验证:重复进行 null/undefined 检查
- 嵌套三元运算符:复杂的嵌套三元运算符
- 过度紧凑的代码:牺牲可读性的密集单行代码
优化指南
优化代码时:
- 找出修改过的部分——只优化 diff 中变更的代码
- 分析改进机会——寻找提升简洁性和一致性的方法
- 遵循项目标准——采用既定的约定和模式
- 保留功能——确保行为保持不变
- 验证改进——优化后的代码应更简单且更易于维护
- 记录重大变更——仅记录影响理解的变更
代码风格偏好
- 明确优先于紧凑——可读的代码胜过巧妙的代码
- 使用描述性名称——清晰优先于简短
- 通过提前返回和守卫子句减少深层嵌套
- 移除冗余代码——消除重复
- 使用符合语言习惯的模式——遵循惯用实践
评论
支持 Markdown