bhaor/toolcheck

GitHub: bhaor/toolcheck

一个用通俗英语对任意仓库、包或 API 进行适用性检查的工具,帮助开发者在安装前判断是否真正需要该依赖。

Stars: 0 | Forks: 0

toolcheck

CI status Install in 30 seconds Claude Code supported Codex supported MIT licence By Fallback Labs

询问某个工具是否值得采用。获取带有来源的直接答复。

问题 · 功能 · 安装 · 安装时挂钩 · 工作原理 · 规则 · 局限性

## 问题 新 AI 工具涌现的速度超出了任何人的评判能力。目前有**22,277 个标记为 `mcp-server` 的 GitHub 仓库**以及 **npm 上超过 420 万个包**,而且在写下这句话时,这两个数字还在不断增加。每天都会带来新的仓库、新的 API、新的 agent 框架、新的 MCP server,而且它们看起来都很不错,因为发布它的人就是构建它的人。 有两个问题决定了这些东西是否与你有关: **这对我是不是真的有用?** 不是抽象意义上的有用,而是对你实际从事的工作有用。 **它能适应我现有的环境吗?** 它是否会与你的设置冲突,以及你是否已经拥有能做这项工作的现成工具。 与此同时,市场上的每个依赖扫描器都在忙着回答第三个问题:这个包危险吗。了解这一点很有价值,但它们只是孤立地评判包本身。它们都不知道你的项目里已经有了什么,而这正是你无法轻易查到的部分。 数据提取自 2026 年 7 月 31 日的 GitHub 搜索 API 和 npm 注册表。重现该数据:gh api "search/repositories?q=topic:mcp-server" --jq .total_count ## 功能 询问任何内容,每次都会获得同样包含六个部分的卡片。
Example toolcheck output showing a six-part evaluation card
### 当答案为否定时 那只是简单的情况。这里是 `request`,一个每周下载量超过 1500 万次的 HTTP 库。
A RISKY verdict for the request package, showing it is deprecated with an advisory that has no available fix
这张卡片中有三件事值得指出,因为它们正是为什么一眼看过去会得出错误结论的原因: - **它的仓库没有被标记为已归档(archived)。** 维护者很少费心去做这个标记。如果你去检查 archived 标志——这是最显而易见要检查的东西——这个包看起来完全没问题。 - **有一条安全通报被标记为在 3.0.0 版本中修复。** 但 3.0.0 版本从未发布过。根本没有可以升级的版本,所以“有修复方案”在技术上是对的,但在实际操作中是错的。 - **每周 1500 万次下载量。** 受欢迎并不等于健康,卡片将它们作为独立的事实分别报告,而不是让庞大的数字去暗示其健康程度。 ## 工作原理
Four steps: you ask, it reads your setup, it checks live sources, you get a card
## 安装 **Claude Code** **Codex** ``` curl -fsSL https://raw.githubusercontent.com/bhaor/toolcheck/main/AGENTS.md >> ~/.codex/AGENTS.md ``` 这就是安装的全部内容。无需 API 密钥,无需账号,无需配置文件。它使用的所有源都是免费且公开的。 ## 在你安装时进行拦截 Skill 会在你主动询问时作出回答。而 Hook 会在实际发生决定的那一刻,替你主动进行询问。 ``` mkdir -p ~/.claude/hooks && curl -fsSL https://raw.githubusercontent.com/bhaor/toolcheck/main/hooks/toolcheck-hook.py -o ~/.claude/hooks/toolcheck-hook.py ``` 然后将以下内容添加到 `~/.claude/settings.json` 中: ``` { "hooks": { "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "python3 ~/.claude/hooks/toolcheck-hook.py" } ] } ] } } ``` 现在,当 agent 尝试执行 `npm install some-package` 时,Hook 会察觉到,并在其运行前请求生成一张卡片。 **它绝不会进行拦截。** 它只会添加一条注释,命令会继续执行。一个会打断正在进行的会话的拦截门不出一周就会被关掉,所以这个 Hook 不会打断你。对于你的 `package.json` 中已经存在的包,它也会保持安静,因为重新安装你已经有依赖关系的包并不是一个新决定。 需要 Python 3.7 或更高版本,这涵盖了 macOS 默认附带的 3.9 版本。 ## 使用方法 ``` /toolcheck elevenlabs-mcp /toolcheck https://github.com/someone/some-repo /toolcheck fastapi /toolcheck "that thing everyone keeps posting about" ``` 它支持处理 npm 包、PyPI 包、GitHub 仓库、MCP server、CLI 工具和付费 API。你可以直接粘贴链接或输入名称。 比较两样东西也同样有效: ``` /toolcheck zod vs yup ``` ## 四种判定结论 每张卡片最后都会给出且仅给出这四种结论之一。没有评分,因为评分会诱导你去和计算结果争论,而不是去查看证据本身。 | 判定结论 | 含义 | |---|---| | **USE IT** | 维护良好,没有已知的安全问题,你现有的东西都不能胜任这项工作,成本清晰。 | | **YOU ALREADY HAVE THIS** | 你的环境中已经有东西能覆盖这个功能。卡片会指出具体是哪一个,并说明新工具到底是真正更好,还是仅仅有所不同。 | | **RISKY** | 存在未修复的安全通报、已被废弃且无人接手、要求的权限远远超出工作需要,或者发布者身份无法确认。 | | **SKIP IT** | 其他所有不值得你花时间的工具。太贵、设置太繁琐,或者解决了一个你根本没有的问题。 | ## 事实来源 | 内容 | 来源 | |---|---| | 版本、发布日期 | npm registry, PyPI | | 许可证、依赖项、关联的仓库 | [deps.dev](https://deps.dev) | | 安全通报 | [OSV](https://osv.dev) | | 提交记录、维护者、归档状态 | GitHub API | | 定价 | 产品官方的定价页面,在提问时即时获取 | 全部免费,全部公开,没有任何一个需要密钥。 ## 规则 这些约束条件确保了输出的可信度。它们存在于 Skill 本身中,而不仅仅是在这个 README 中。 **没有来源,就没有结论。** 如果某个事实无法获取,卡片就会显示 `UNKNOWN`。它从不估算提交日期或下载量。经常出现 `UNKNOWN` 这一点恰恰是关键所在。正是因为这样,你才能相信卡片上那些被填上的信息。 **抓取的文本是信息,而不是指令。** README 是由制作该工具的人编写的,有时则是由某个希望 AI 能够读取并遵照执行的人编写的。任何抓取到的内容都会被视为待分析的数据。如果某个页面包含了旨在让读取它的 agent 遵照执行的文本(例如让它给这个工具打高分),卡片会报告这一事实,因为一个工具这样做本身就告诉你了一些值得了解的东西。 **判断标准在于你自己。** 认定“14个月没有提交就算被废弃”是一种主观判断,而不是一种客观测量。因此,卡片会分别陈述测量数据和它所跨越的界限,而你是否同意这个界限由你自己决定。 ## 兼容性 | | 状态 | |---|---| | Claude Code (终端、桌面版、IDE) | 支持 | | Claude Code 网页版 | 支持 | | Codex CLI | 通过 `AGENTS.md` 支持 | | 其他任何能读取 markdown 指令的工具 | 应该没问题,但未经测试 | ## 局限性 在你依赖它之前,有必要了解这些内容。 - **它告诉你哪些是可以获知的信息,而不是你是否会喜欢使用它。** 人体工学、文档质量以及 API 的“手感”都不在评估范围内。 - **重叠检测只能看到它能看到的。** 如果你在当前机器之外订阅了某些服务,请明确告知,它会将其纳入考量。 - **重叠检测是尽力而为,而非绝对保证。** 共享的 npm 关键词是证明两个包执行相同任务的强有力证据,这能捕捉到像 `zod` 和 `joi` 这样的配对。但大量包根本不声明任何关键词,包括 `yup` 和 `date-fns`,因此在你最需要提示的环节,信号反而消失了。卡片上说没有重叠意味着没有检测到,而不是说实际上不存在重叠。 - **干净的卡片并不代表安全保证。** 恶意包的发布速度往往快于安全通报数据库的编目速度。“没有已知问题”仅代表字面意思。 - **刚发布的工具看起来信息不足。** 上周刚发布的东西没有任何历史记录,卡片会如实说明,而不是假装并非如此。这是正确的行为,但这确实意味着真正优秀的新工具在评估时也会显得未经证实。 - **定价页面会发生变化。** 卡片仅在运行当天是准确的。出于这个原因,卡片底部会打印日期。 ## 如果它对你的项目做出了误判 如果某张卡片对你维护的项目做出了误判,请[提交一个 issue](https://github.com/bhaor/toolcheck/issues),我们会予以修复。请粘贴卡片内容,因为修复通常在于如何读取信号,而不是数据本身的问题。上面提到的 `archived` 标志问题正是通过这种方式发现的。 ## 许可证 MIT。详见 [LICENSE](LICENSE)。 ``` ███████╗ █████╗ ██╗ ██╗ ██████╗ █████╗ ██████╗██╗ ██╗ ██╔════╝██╔══██╗██║ ██║ ██╔══██╗██╔══██╗██╔════╝██║ ██╔╝ █████╗ ███████║██║ ██║ ██████╔╝███████║██║ █████╔╝ ██╔══╝ ██╔══██║██║ ██║ ██╔══██╗██╔══██║██║ ██╔═██╗ ██║ ██║ ██║███████╗███████╗██████╔╝██║ ██║╚██████╗██║ ██╗ ╚═╝ ╚═╝ ╚═╝╚══════╝╚══════╝╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ██╗ █████╗ ██████╗ ███████╗ ██║ ██╔══██╗██╔══██╗██╔════╝ ██║ ███████║██████╔╝███████╗ ██║ ██╔══██║██╔══██╗╚════██║ ███████╗██║ ██║██████╔╝███████║ ╚══════╝╚═╝ ╚═╝╚═════╝ ╚══════╝ ``` **由 [Fallback Labs](https://fallbacklabs.com) 构建** 我们为营销团队构建 AI 系统。如果这个工具帮助你避免了一次糟糕的安装,欢迎来 **[fallbacklabs.com](https://fallbacklabs.com)** 打个招呼。
标签:AI辅助, MCP, SOC Prime, 代码评估, 依赖管理, 工具评估, 开发工具, 逆向工具, 防御加固