Agent skill · howell5
subtraction-audit
代码减法审计与反腐化工程。用于给代码库做减法审计(找死代码/重复实现/死依赖/投机性泛化/死门禁),产出证据驱动的删除候选清单并按风险分级执行;也用于给 AI 重度开发的仓库搭建防膨胀门禁(CI、钩子、死代码基线)。核心信念:代码最终会腐化,人写机器写都一样;防腐化唯一可靠的方式是把约束变成机器门禁、把为什么变成文档、把删除变成一等工作流。方法学源自 DeepSeek Harness(dsh-find-simplifications)。
What it needs
About 2k tokens when loaded.
What this skill does
减法审计 · Subtraction Audit 一次 AI 对话的历史就是一部腐化史:AI 写代码太容易、太膨胀、太容易发散,人写机器写都一样,代码最终会腐化。这套方法把"防腐化"变成可重复的流程:证据驱动的减法审计 + 风险分级执行 + 机器门禁。 核心原则(先读,永远不要跳过) 1. 门禁 > 散文:约定必须变成可执行检查(退出码非零即失败),否则 Agent 不会遵守。AI 对强制门禁的遵从远高于对散文式约定的遵从。 2. 测试不是真理:测试钉住的是当前行为,不是正确行为——行为可能是历史妥协的产物。测试必须能为你报告的机制而失败,否则它在撒谎。 3. 删除是一等公民:简化是常规工作流,不是大扫除。每月的删除行数为零 = 腐化警报。 4. 决策必须写下来:每条非平凡删除配一条决策记录(Problem / 证据 / 代价 / 回退条件)。 5. 证据先行:没有消费证据的候选一律不报。"看起来没用"不是证据,rg 才是。 何时使用 用户想"清理一下仓库"、"找找死代码"、"这些能不能删" 用户担心 AI 写的代码膨胀/发散/不可维护 用户想给仓库(尤其是 AI 主力开发的仓库)搭建质量门禁 工作流 Phase 0 · 先懂架构(最重要,最容易翻车) 在声称任何东西"死"之前,先回答这些——跳过这步等于把报告建立在地基上: 入口在哪?路由/端点如何挂载?(静态 import / 动态 require / 框架自动发现如 Next.js pages / 字符串路径) 有没有同名活文件?(例:routes/agent/feedback.ts 疑似死,但 routes/feedback.ts 是活的并挂在 /api/feedback——两个不同文件) 构建/部署怎么描述它?(docker-compose、deploy manifest、runbook、README 声称 vs 实际) 有没有看起来像"占位/骨架"但其实是生产核心的东西?(小包可能是队列消费者、worker、调度器) 环境变量/配置旋钮有没有被外部引用(.env.example、部署平台 env、容器编排) 数据库表 / 队列 / 事件名有没有被字符串引用 反例教训(真实事故):一个 101 行的"worker 骨架"其实是生产必需的 DB 队列消费者(轮询 generationtasks 表)。部署清单里没有它 ≠ 它可有可无——那可能是配置漂移,甚至意味着生产队列已停摆。别把"部署配置里没有"当成"不需要"。 Phase 1 · 基线测量 1. 死代码基线:npx knip --reporter json(未使用导出 / 类型 / 文件 / 依赖 / 重复实现 / 二进制) 2. 仓库卫生:误提交文件(提交消息与内容不符的)、.gitignore 覆盖、.env 是否被跟踪(安全项,必须查)、被提交的大产物/工具输出、空目录、死门禁(脚本存在但没接 CI/钩子) 3. CI/钩子盘点:.github/、husky pre-commit 实际跑了什么;lint/test/typecheck 有没有任何自动流程执行。零 CI 是腐化积累的根因,要单独列成系统性问题 4. …
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills howell5/subtraction-audit