用途
Fuck Over-Engineering 是一个用于审计代码库过度工程化的技能。它的目标是找出可以删除或精简的代码,让代码库更短,同时保持行为不变。当用户询问代码库中可以删除或减少什么以简化代码、提到“simplify”“over-engineered”,或希望对仓库、文件夹或文件范围进行简化时使用。
主要能力
该技能会审计指定范围(参数即范围;未提供参数时审计整个代码树),并按削减量从大到小排序报告可删除的内容。它使用以下标签对发现进行分类:
- delete:死代码、未使用的灵活性、推测性功能。无需替代。
- reuse:手写代码,但代码库中已有的辅助函数或已安装的依赖已经提供。需指明辅助函数或函数名。
- stdlib:手写实现,但语言标准库已提供。需指明函数名。
- native:依赖或代码在做平台已经做的事。需指明功能。
- yagni:只有一个实现的抽象、没人设置的配置、只有一个调用者的层。
- shrink:相同逻辑,更少行数。展示更短的形式。
它会搜寻:标准库或平台已覆盖的依赖、单实现接口、只有一个产品的工厂、仅做委托的包装器、只导出一个内容的文件、死标志和配置、手写标准库、现有辅助函数的近似重复、附加到共享路径上的特殊分支、位于共享模块中的功能逻辑。
使用方式
在 Claude Code 中使用 AskUserQuestion,或在 Codex 中使用 request_user_input(如果可用)。
每个发现一行,编号,按削减量从大到小排序:
N. <tag> <what to cut>. <replacement>. <evidence>. [path:line]
对于 delete 标签,省略替代句子。最后以 net: -<N> lines, -<M> deps possible 结尾。如果没有可削减的内容,输出“Lean already. Ship.”。
示例:
-
yagni: AbstractRepository with one implementation. Inline it. 1 subclass, 3 call sites typed to the base. [repo.py:88]
-
reuse: hand-rolled slugify. python-slugify is installed, slugify(). 1 caller. [utils/text.py:10-31]
-
delete: retry wrapper around an idempotent local call. 0 callers outside its own test. [src/net.py:52-71]
然后将发现作为多选问题提供,按排名每四个问题一批,并应用所选内容。
证据要求
每个发现都必须引用使其成为削减的证据:调用者数量、实现数量,或标准库或平台功能及其提供的版本。通过动态分派、入口点、钩子和测试来统计调用者,而不仅仅是 grep。已发布包的公共导出在仓库内调用者数量保持为零。在断言 stdlib 和 native 声明之前,对照当前文档验证(如果存在 find-docs 技能)。
一个发现必须删除行或概念;在文件之间移动它们是重构,不是削减。更少、更大的削减胜过一长串列表:一个 shrink 如果只节省两行,只有在同时移除一个概念时才值得列入。
适用场景
适用于用户希望简化代码库、减少过度工程化、删除死代码或未使用抽象的场景。可以针对整个仓库、特定文件夹或单个文件。
限制
该技能仅关注过度工程化和复杂性:正确性错误、安全漏洞和性能问题属于常规审查范畴。信任边界验证、数据丢失处理、安全性和可访问性永远不是削减对象。单个冒烟测试或基于断言的自我检查是最低要求,不是冗余。测试仅在作为被删除目标的副作用时进入报告。