mcpField
S
slop

slop

github.com/jellydn开发12546 次安装3 天前更新
代码仓库

关于 slop

slop 是代码精简技能,会对比指定分支检查变更,移除多余复杂性或不一致的风格,同时保留原有行为。它仅关注修改过的代码,并通过测试验证结果。

主要功能

  1. 01与指定分支对比变更
  2. 02移除冗余注释和检查
  3. 03改进类型和代码结构
  4. 04遵循仓库约定
  5. 05精简后运行测试

适用场景

  1. 01提交 PR 前精简代码变更
  2. 02移除分支中不必要的防御性代码
  3. 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

常见冗余代码模式

  1. 过度注释:解释显而易见代码的注释
  2. 冗长的错误处理:不必要的 try/catch 块
  3. 不必要的类型强转:使用 x as any 绕过 TypeScript
  4. 防御式编程:检查已经过验证的输入
  5. 重复验证:重复进行 null/undefined 检查
  6. 嵌套三元运算符:复杂的嵌套三元运算符
  7. 过度紧凑的代码:牺牲可读性的密集单行代码

优化指南

优化代码时:

  1. 找出修改过的部分——只优化 diff 中变更的代码
  2. 分析改进机会——寻找提升简洁性和一致性的方法
  3. 遵循项目标准——采用既定的约定和模式
  4. 保留功能——确保行为保持不变
  5. 验证改进——优化后的代码应更简单且更易于维护
  6. 记录重大变更——仅记录影响理解的变更
代码风格偏好
  • 明确优先于紧凑——可读的代码胜过巧妙的代码
  • 使用描述性名称——清晰优先于简短
  • 通过提前返回和守卫子句减少深层嵌套
  • 移除冗余代码——消除重复
  • 使用符合语言习惯的模式——遵循惯用实践

评论

支持 Markdown