SuperAPI AI 工具集

cleanup-defensive

通用与其它

查看项目

更新于 10-16 04:57

技能介绍

用途:清理代码中没真正作用的 try/catch 与防御性检查,让错误干净地传播到知道如何处理它的边界,而不是被静默回退掩盖。核心原则是只在能比默认传播做更多有用事情时才捕获。

主要能力:

  • 预检:识别 TS/JS、Python、Go、Rust 语言;检测 Git 工作区状态(脏树时拒绝执行);确保报告目录存在;并识别边界文件(HTTP 请求处理器、CLI 入口、消息/队列消费者、测试文件),这些位置的 catch 一律保留。
  • 检测:按语言用 grep 与 ESLint 查找 try/catch,并分类为纯重抛、吞掉并返回空值、仅记录日志、记录加重抛、有实质处理等类别。
  • 评估:生成 .claude/cleanup-reports/cleanup-defensive-{YYYY-MM-DD}.md 报告,按 HIGH(建议移除)、MEDIUM(仅审查)、LOW(保留)分级。
  • 应用:仅自动移除 HIGH 级问题,如静默吞掉、空操作重抛、丢失堆栈的重包装、非边界文件中的静默回退,Python 的 except: pass,Go 中被丢弃的 error。移除后以单个提交记录。
  • 验证:运行 bun run check、npx tsc --noEmit、npx eslint .、bun test、pytest、go test ./...、cargo test 等命令;若测试失败默认回退并把该项降级为 MEDIUM,因为被吞掉的错误往往掩盖着真实 bug。

使用方式:作为 raintree-technology/claude-starter 中的技能使用,按其预检、检测、评估、应用、验证流程逐步执行,报告与提交均按文档约定生成。

限制:绝不改函数签名;不删除请求处理器、路由、消息消费者、CLI 入口中的 catch;不删除带 finally 做资源清理的 catch;不删除有语义的错误类型转换;不“修复” Go 的 if err != nil 模式;不随意移除 Rust unwrap 或 Python 的特定异常捕获;不为了让测试通过而修改错误处理。价格、平台支持范围等未在资料中提供。