slop-cleanerlisted
Install: claude install-skill KonghaYao/peri
# Slop Cleaner
自动化扫描代码库中的结构性问题——大文件、死代码、测试与实现混合、架构坏味道——
快速产出可行动的清扫报告。
与 code-review 的定位区别:code-review 偏人工辅助,深度分析具体代码逻辑;
slop-cleaner 偏自动化批量扫描,用 Glob/Grep/Bash 快速定位结构性问题,产出可行动的清扫清单。
---
## 核心原则
1. **速度优先**:用 Glob/Grep/Bash 批量扫描,避免逐文件 Read。只在需要深入分析时才 Read 具体文件。
2. **数据说话**:每个发现都要有具体的文件路径、行号、度量数据(行数、调用次数等),不凭感觉。
3. **可行动**:报告不只是问题清单,还要给出优先级排序和具体的修复建议。
4. **尊重项目规范**:扫描前先读取 CLAUDE.md / 项目文档,按项目已有的约定判断问题,不套用外部模板。
5. **增量感知**:对比历史扫描结果,区分新增问题和已知问题,让清扫有可量化的进展。
---
## 第一步:项目上下文 + 排除列表(快速)
并行读取,建立最小必要上下文:
```
Read("CLAUDE.md") # 项目规范、约定、已知待办
Glob("src/**/*.rs") 或 Glob("src/**/*.ts") # 主要源文件列表
Bash("git log --oneline -10") # 最近改动方向(可选)
Glob("spec/reviews/*.md") # 历史扫描报告(用于对比)
```
从上下文中提取:
- 项目语言和技术栈
- 模块/包的划分方式
- 项目已有的代码规范(如测试分离规则、文件大小上限等)
- **已知待办项**:CLAUDE.md 中已记录的问题(如「待迁移文件」表格),扫描时标注为 `已记录`,避免重复报告
- **排除目录**:内置默认排除 + 从 CLAUDE.md 提取的额外排除
**默认排除列表**(所有扫描命令统一过滤):
```
target/ node_modules/ vendor/ .git/ dist/ build/
*.generated.rs *.min.js *.min.css
migrations/ __snapshots/ fixtures/
```
所有 `find` / `Glob` / `Grep` 命令都必须遵守排除列表。用 `Grep` 时通过 `glob` 参数排除,用 `find` 时通过 `-not -path` 排除。
---
## 第二步:渐进式扫描
不是所有维度都需要每次全量跑。根据仓库规模和用户意图选择策略:
### 策略 A:快速扫描(默认)
先跑维度 1(大文件)+ 维度 2(死代码),这两个维度最快、结果最确定。
- 如果大文件扫描发现仓库整体很小(最大文件 < 200 行),跳过架构维度
- 如果没有 Rust 项目,跳过测试分离维度(`#[cfg(test)]` 是 Rust 特有的)
- 用户指定了维度时,只跑指定维度
### 策略 B:全量扫描
用户明确要求"全面扫描"或仓库规模较大时,四个维度全部并行执行。
### 策略 C:定向扫描
用户指定了目录或文件(如"扫一下 src/mcp/"),只对该范围执行扫描。
---
## 四大维度
### 维度