关于 cleanup
此技能编排当前分支变更的清理流程,涵盖代码审查、测试验证、覆盖率、Lint 和依赖审计,并在最后汇总待开发者选择的修复。
主要功能
- 01限定审查当前分支引入的变更
- 02调用测试用例验证流程
- 03运行覆盖率并补充变更代码测试
- 04自动修复适用的 Lint 问题
- 05执行依赖安全审计并汇总结果
适用场景
- 01提交前集中检查分支变更
- 02为变更代码补齐覆盖率测试
- 03在提交前整理格式和审计依赖
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ morphet81/ cheat-sheets --skill cleanup安装后在 Claude Code 中输入/cleanup确认已加载。
详细介绍
统筹清理当前工作目录:检查更改、验证测试、修复 lint 和审计问题、确保测试覆盖率完整、提出修复方案并提交。
用法:
/cleanup- 运行完整清理工作流
说明:
重要:这是一个自主工作流。请先自行运行所有检查并完成所有修复,然后在最后向开发者展示结果和建议的修复方案。过程中不要向开发者提问——只在最终审批步骤提问。
范围:仅关注当前分支引入的更改。 首先确定基础分支(检查 .agent 文件中的 baseBranch=<value>,默认为 main)。所有审查、覆盖率分析、lint 修复和测试编写都应仅针对基础分支与当前状态之间发生更改的文件和代码——不要指出或修复未更改代码中已有的问题。
-
审查未提交的更改:
- 运行
git status,查看所有已修改、已暂存和未跟踪的文件 - 运行
git diff查看未暂存的更改,并运行git diff --cached查看已暂存的更改 - 同时运行
git diff <base-branch>...HEAD,了解此分支更改的完整范围 - 阅读每个已更改文件,了解修改的完整上下文
- 按类别(新功能、错误修复、重构等)简要汇总此分支上的所有更改
- 运行
-
验证新增测试用例:
- 调用
/verify-test-cases技能,检查自上次推送以来修改的所有测试文件 - 记录发现的任何问题(无意义的测试、重复测试、覆盖不足)
- 调用
-
运行测试覆盖率(仅一次):
- 恰好运行一次项目的覆盖率命令,并保存完整输出。之后不要再次运行覆盖率——后续分析均复用此输出。
- Node.js: 检查
package.json中的脚本后,运行npm run test:coverage或npx jest --coverage或npx vitest run --coverage - Python:
pytest --cov或coverage run -m pytest && coverage report - Rust:
cargo tarpaulin或cargo llvm-cov - Go:
go test -coverprofile=coverage.out ./... && go tool cover -func=coverage.out
- Node.js: 检查
- 解析输出,确定:
- 总体覆盖率
- 未覆盖的文件和代码行
- 如果覆盖率为 100%:记录为通过并继续
- 如果覆盖率低于 100%:对于当前分支已更改文件中未覆盖的每个文件/代码行,自行编写缺失的测试用例,将覆盖率提升至 100%。按照项目惯例,在现有测试文件中添加测试,或创建新测试文件。不要为未修改文件中的未覆盖代码编写测试。
- 恰好运行一次项目的覆盖率命令,并保存完整输出。之后不要再次运行覆盖率——后续分析均复用此输出。
-
修复 lint 问题:
-
通过检查配置文件自动检测项目类型:
package.json(Node.js/JS/TS)pyproject.toml、setup.py、requirements.txt(Python)Cargo.toml(Rust)go.mod(Go)
-
如有自动修复命令,请使用:
- Node.js/JS/TS:
- 检查
package.json脚本中是否有lint:fix脚本。如果有,运行npm run lint:fix - 否则,检查是否有 ESLint,并运行
npx eslint . --fix - 检查是否有 Prettier,并运行
npx prettier --write .
- 检查
- Python:
- 检查是否有
ruff,如果有,运行ruff check --fix .,然后运行ruff format . - 或检查是否有
black,如果有,运行black . - 或检查是否有
autopep8,如果有,运行autopep8 --in-place --recursive .
- 检查是否有
- Rust:
- 运行
cargo fmt和cargo clippy --fix --allow-dirty
- 运行
- Go:
- 运行
gofmt -w .和go vet ./...
- 运行
- Node.js/JS/TS:
-
记录所有无法自动修复的剩余 lint 问题
-
-
运行审计并修复问题:
- Node.js: 运行
npm audit。如果发现漏洞,运行npm audit fix。如果仍不足以解决问题,请记录剩余问题,但不要自动运行npm audit fix --force - Python: 如果
pip audit可用,则运行该命令。记录发现的任何漏洞 - Rust: 如果
cargo audit可用,则运行该命令。记录发现的任何漏洞 - Go: 如果
govulncheck ./...可用,则运行该命令。记录发现的任何漏洞 - 记录任何无法自动修复的审计问题
- Node.js: 运行
-
展示建议的修复和改进:
完整总结已完成的工作和发现的问题。然后使用
AskUserQuestion工具,并设置multiSelect: true,让开发者选择要应用哪些修复和改进。开发者选择的不是要提交的个人更改,而是要接受 Agent 提出的修复和改进。按类别对条目分组:
- 已应用的 Lint 修复 — 由 Lint 工具自动格式化的文件
- 覆盖率修复 — 为达到 100% 覆盖率而编写的新增或更新测试文件
- 已应用的审计修复 — 通过审计修复进行的依赖项更改
- 测试质量问题 —
verify-test-cases发现的问题(以及建议的修正) - 无法修复的问题 — 任何无法自动修复的问题(仅供参考)
示例问题格式:
"Which fixes/improvements do you want to apply?" Options: - "Lint fixes: 5 files auto-formatted by ESLint" - "Coverage: added tests for 3 uncovered files (85% → 100%)" - "Audit fix: updated lodash 4.17.20 → 4.17.21" - "Test quality: fixed 2 incorrect test descriptions"如果条目数量超过 4 个选项的容纳范围,请按逻辑分组(例如,将“所有 Lint 修复(8 个文件)”合并为一个选项)。
-
应用选定的修复:
- 对于开发者批准的修复:保留更改
- 对于开发者拒绝的修复:使用
git restore <file>或撤销编辑来还原相应更改 - 使用
git add暂存所有已批准的更改
-
处理边缘情况:
- 如果没有未提交的更改,请告知用户并停止
- 如果未检测到 Lint 工具,则跳过 Lint 步骤并在总结中注明
- 如果未检测到审计工具,则跳过审计步骤并在总结中注明
- 如果未检测到覆盖率工具,则跳过覆盖率步骤并在总结中注明
- 如果
/verify-test-cases技能报告未修改任何测试文件,则在总结中跳过该部分 - 如果所有检查均通过且无需修复,则跳过审批步骤,直接进入提交选项
- 如果开发者拒绝所有修复,则仅提交开发者原有的更改(不包含任何修复)
输出格式示例:
## Cleanup Summary
### Changes Reviewed
- 3 files modified, 1 file added
- New feature: user profile endpoint
- Bug fix: corrected date parsing in utils
### Lint
✅ 5 files auto-fixed by ESLint
⚠️ 1 issue could not be auto-fixed:
- src/api.ts:42 — Unexpected any. Specify a different type.
### Test Verification
✅ All test cases verified — no issues found
### Coverage (from single run)
⚠️ Coverage at 87% — missing coverage in:
- src/services/auth.ts (lines 45-62)
- src/utils/parser.ts (lines 12-18)
✅ Wrote 2 new test files to cover missing lines
### Audit
✅ npm audit fix applied — resolved 2 vulnerabilities
⚠️ 1 moderate vulnerability remains (no auto-fix available)
---
[Approval checklist: developer picks which fixes to keep]
---
✅ Committed: "Add user profile endpoint, fix date parsing, and improve test coverage"
评论
支持 Markdown