关于 rust-crate-discovery
面向 Rust 开发者和编码 Agent 的依赖发现技能,通过 Python 工具从注册表、文档、代码仓库和安全数据源搜索并评估 crate,提供评分、风险提示与采用建议。
主要功能
- 01按关键词、类别或名称搜索 crates.io
- 02从六个维度评估 crate 状况
- 03并列比较多个 crate 的评分
- 04标记安全、维护和许可风险
- 05生成可读报告或 JSON
适用场景
- 01为 Rust 项目筛选 crate
- 02检查 crate 的安全公告和维护状况
- 03添加依赖前比较候选 crate
- 04在 Agent 工作流中查看评估结果
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ full-stack-skills/ rust-skills --skill rust-crate-discovery安装后在 Claude Code 中输入/rust-crate-discovery确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlexamples/evaluation-examples.mdexamples/golden-crate-discovery/Cargo.lockCargo.tomlexamples/golden-crate-discovery/src/lib.rsreferences/api-endpoints.mdred-flags.mdscoring-rubric.mdscripts/crate_eval.py详细介绍
Rust Crate 发现与评估
权威来源:crates.io API、docs.rs、GitHub REST API、RustSec Advisory Database。
此技能负责将 Crate 纳入 Cargo.toml 之前的发现与评估阶段。它使用随附的 Python 工具(scripts/crate_eval.py)从 4 个来源获取信号,并生成加权 0-100 分、字母等级(A/B/C/D/F)、红旗列表和建议。它不负责采用后的治理(rust-dependencies)、清单机制(rust-cargo-build)或 semver(rust-semver)。
能力边界
✅ 优势
- 按关键词、类别或名称搜索 crates.io,返回排名靠前的候选项
- 深入评估单个 Crate:从 crates.io、docs.rs、GitHub 和 RustSec 获取元数据
- 并排比较 2 个或更多 Crate,并细分各项子评分
- 按 6 个维度为每个 Crate 打 0-100 分:采用情况(30)、维护情况(25)、文档(15)、成熟度(15)、社区(10)、许可证(5)
- 标记红旗问题:过时、存在安全公告、没有文档、采用率低且波动、单一维护者带来的巴士系数风险、没有源代码仓库、缺少许可证信息
- 推荐最合适的选择,并在用户采用之前指出阻碍性问题
- 输出人类可读的报告或机器可读的 JSON(供 Agent 使用)
⚠️ 前提条件
- 网络访问权限(工具会从 crates.io、docs.rs、GitHub 和 RustSec 获取数据)
- Python 3.9+(无需外部 pip 包,仅使用标准库)
❌ 不在范围内
- 采用后的治理(cargo-deny 配置、许可证政策、安全公告响应工作流)→
rust-dependencies - Cargo.toml 字段语义 →
rust-cargo-build - Semver 和破坏性变更分类 →
rust-semver - 用哪个标准库类型替代 Crate →
rust-stdlib
数据隐私
此技能会向 crates.io、docs.rs、GitHub 和 RustSec 发送 HTTP 请求。User-Agent 会标识此工具。除 URL 路径中的 Crate 名称外,不会收集或传输任何用户数据;该名称属于公开注册表数据。对于私有或专有的 Crate 名称,建议优先手动审查。
评估工具——scripts/crate_eval.py
一个仅使用标准库的 Python 脚本,包含三个子命令:
# Search candidates
python3 scripts/crate_eval.py search "orm"
python3 scripts/crate_eval.py search "http client" --limit 5
python3 scripts/crate_eval.py search "logging" --category "development-tools::debugging"
# Evaluate one crate in depth
python3 scripts/crate_eval.py eval rbatis
python3 scripts/crate_eval.py eval rbatis --json # machine-readable
python3 scripts/crate_eval.py eval rbatis -v # show raw signals
python3 scripts/crate_eval.py eval rbatis --skip-github # faster, less signal
# Compare multiple candidates
python3 scripts/crate_eval.py compare rbatis diesel sea-orm sqlx
工作流
- 搜索 — 使用
search "<domain keyword>"查找候选项。根据下载量和近期活跃情况检查排名靠前的 5-10 个候选项。 - 筛选 — 选择 2-4 个采用情况并非微不足道(≥1k 次下载)且近期有活动的名称。
- 比较 — 使用
compare <names...>获取并排评分卡。 - 调查红旗 — 对首选项,阅读红旗列表。遇到安全公告时应阻止采用;调查过时或单一维护者相关的问题。
- 验证适用性 — 分数衡量的是健康状况,而非适用性。阅读 Crate 文档,从 API 形态角度审视(参考
rust-api-design),并确认它能满足你的用例。 - 交接 — 采用后,设置
cargo-deny(rust-dependencies)并确定版本固定策略(rust-semver)。
阅读输出
=== rbatis === A (92/100) — RECOMMENDED — strong fit, low risk
version 4.9.6 | 657,356 downloads (19,938 recent) | license: Apache-2.0
Subscores:
adoption █████████████░░░░░░░░░░░░ 27/30
maintenance ████████████░░░░░░░░░░░░░ 25/25
...
Red flags:
! license not declared
- 等级 + 分数 — 一目了然地了解健康状况
- 子评分 — 查看哪些维度较强或较弱
- 备注(
+)— 正向信号 - 红旗(
!)— 采用前需要调查的问题 - 建议 — 结论(RECOMMENDED / LIKELY SUITABLE / ACCEPTABLE / CAUTION / BLOCK / RISKY)
评分模型
| 维度 | 最高分 | 衡量内容 | 关键信号 |
|---|---|---|---|
| 采用情况 | 30 | 是否有人在使用? | 累计下载量、近期(90 天)下载量 |
| 维护情况 | 25 | 是否在积极维护? | 最近一次 crates.io 更新、版本数量、GitHub 最近一次提交 |
| 文档 | 15 | 用户能否了解如何使用? | docs.rs 构建状态、描述、文档 URL、仓库链接 |
| 成熟度 | 15 | API 是否稳定? | 存续时间、稳定版本 ≥1.0、是否有仓库 |
| 社区 | 10 | 是否有贡献者群体? | GitHub 星标数、贡献者数量 |
| 许可证 | 5 | 是否宽松? | 优先选择宽松许可证(MIT/Apache/BSD);对著作权非宽松许可证作扣分处理 |
| 总分 | 100 |
等级区间
| 等级 | 分数 | 含义 |
|---|---|---|
| A | ≥85 | 优秀——推荐 |
| B | 70-84 | 良好——很可能适用 |
| C | 55-69 | 可接受——请核实是否适用 |
| D | 40-54 | 有风险——使用前请调查 |
| F | <40 | 避免使用——存在重大问题 |
完整公式和信号权重请参阅 references/scoring-rubric.md。
风险信号目录
该工具会提示具体问题。采用前请务必查看这些信号。
| 标记 | 严重程度 | 操作 |
|---|---|---|
| RustSec 安全公告 | 阻止 | 锁定到已修复的版本或选择替代方案 |
| 超过 12 个月没有发布版本 | 高 | 检查是否已弃用;考虑使用分支或替代方案 |
| GitHub 最近一次提交距今超过 6 个月 | 高 | 项目活动可能已转移到其他地方 |
| 没有 docs.rs 构建 | 中 | 可能缺少 API 文档;请手动检查 |
| 未声明许可证 | 中 | 按专有软件处理;未澄清前不可使用 |
| 采用率低但版本很多 | 中 | 缺乏实际使用却频繁变更;请调查质量 |
| 1.0 之前已有 20 个以上版本 | 中 | API 在小版本更新间可能不稳定 |
| 单一维护者且采用率低 | 中 | 存在关键人员风险;考虑备份或创建分支 |
| 没有源代码仓库 | 高 | 无法审查;请避免使用 |
完整目录和决策指引请参阅 references/red-flags.md。
快速决策指南
| 问题 | 答案 |
|---|---|
| X 用哪个 crate? | search "X",然后对得分最高的 3-4 个执行 compare |
| 这个 crate 安全吗? | eval <name>;检查风险信号中的安全公告 |
| 它还在维护吗? | eval <name>;检查维护子评分和最近一次更新 |
| API 稳定吗? | eval <name>;检查成熟度子评分和版本是否 ≥1.0 |
| 许可证是什么? | eval <name>;会显示在信号中 |
| A、B、C 该选哪个? | compare A B C;选择得分最高且没有阻止级风险信号的选项 |
| 评分是 A,但不适合我的使用场景 | 相信适用性检查,而不是评分——评分衡量的是健康状况,而非适用性 |
评分可能产生误导的情况
- 小众 crate——特定领域的 crate 可能下载量不高,却是唯一的选择。评分可能偏低;请依靠人工审查。
- 新 crate——近期发布的 crate 采用率信号较低;请改为检查维护者的过往记录。
- 分支项目——某个分支可能下载量不高,却是仍在维护的后继版本。请检查其上游 crate 的状态。
- 内部/私有 crate——不在 crates.io 上;此工具无法提供帮助。请人工审查。
资源
- 评分标准 — 完整公式、对数尺度参数、子评分明细
- 风险信号目录 — 完整标记列表及其严重程度和操作建议
- API 端点参考 — 4 个数据源及其端点
- 评估工作流示例 — 完整场景示例(ORM 选择、HTTP 客户端、日志记录)
scripts/crate_eval.py— 评估工具(使用python3运行)
上游来源
- crates.io API — 搜索、crate 元数据、版本下载
- docs.rs — 文档构建状态、版本存在情况
- GitHub REST API — 星标数、贡献者、上次提交、未关闭的问题
- RustSec Advisory Database — 已知漏洞
- crates.io-index — 注册表索引(API 的替代方案)
评论
支持 Markdown