necessary-code-auditlisted
Install: claude install-skill danhuaxiansheng/claude-code-cleanup-skills
# 必要性代码审计
## 原则
优化目标是“当前是否必要”,不只是“是否零引用”。一个符号即使仍有调用,也可能只是包装层、兼容面、防御分支、陈旧公共 API 或假设性的扩展点。
核心问题是:这个代码被用了,但当前代码真的还需要它吗?
不要删除真实运行约束。必须保留代表加载、空数据、错误、权限、生命周期、浏览器、SSR、配额、外部输入或领域可空状态的分支。
不要把普通注释当作清理目标。只有注释已经过期、错误、误导,或因为代码删除而孤立时,才删除或改写注释。
不要在发现第一个明显清理点后停止。对于用户指定的目录或功能,必须先审完整个作用域,再报告“没有更多”或要求用户继续。
## 技能协作
本技能是三个清理技能的主入口:
- 用 `necessary-code-audit` 判断“已被使用的代码是否仍然必要”。
- 用 `unused-code-audit` 证明删除候选是否仍有消费者。
- 目标涉及页面状态、查询/变更流、权限、错误或用户可见行为时,用 `page-flow-cleanup-audit`。
不依赖仓库专属图工具。优先使用当前环境可用的文件列表、语言工具、构建/类型检查、manifest、导入图和文本搜索。
## 边界
本技能只回答“即使有人在用,这个抽象/行为/API 是否仍然必要?”。
适合本技能:
- 有调用方的 wrapper、facade、兼容别名、默认值、fallback、可选字段或配置。
- 多处调用但调用方可以直接使用更基础 primitive 的 helper。
- 公共 API 仍被 import,但只是历史兼容面或陈旧入口。
- 防御分支、try/catch、可选链、`as any` 或旧格式兼容是否代表真实约束。
- 两份 source of truth、重复 cache/store/query/派生计算是否需要合并。
不适合本技能单独完成:
- 只想证明某文件、导出或类型是否零消费者;改用 `unused-code-audit`。
- 删除没有调用方的死代码;先用 `unused-code-audit` 完成消费者证明。
- 页面状态、权限、查询/变更链路或用户可见流程清理;改用 `page-flow-cleanup-audit`。
协作规则:
- 若候选看起来零消费者,暂停必要性判断,转为 `unused-code-audit` 的删除证明。
- 若候选仍有消费者,再继续判断是否必要、是否能替换调用方、是否应收缩公共面。
- `unused-code-audit` 的结论只能说明“能否安全删除未使用项”,不能替代本技能对“已使用但不必要”的判断。
## 基线
开始时必须收集:
- `git status --short --untracked-files=all`
- `git diff --name-status -- <scope>`
- `git diff --cached --name-status -- <scope>`
- 目标作用域文件清单,优先用 `rg --files <scope>`。
- 当前导入、导出、公共入口和直接消费者。
- 作用域符号清单:导出的函数/类型/常量、非导出 helper、配置字段和重复字面量。
- 影响面图:同包消费者、包入口、直接 app/package import,以及 manifest 中的下游包。
不要假设 staged 或 dirty 变更是自己造成的。不要回滚无关变更。
## 深度门槛
编辑前和完成前都