mcpField
R
rust-crate-discovery

rust-crate-discovery

github.com/full-stack-skills开发12100 次安装5 周前更新
代码仓库

关于 rust-crate-discovery

面向 Rust 开发者和编码 Agent 的依赖发现技能,通过 Python 工具从注册表、文档、代码仓库和安全数据源搜索并评估 crate,提供评分、风险提示与采用建议。

主要功能

  1. 01按关键词、类别或名称搜索 crates.io
  2. 02从六个维度评估 crate 状况
  3. 03并列比较多个 crate 的评分
  4. 04标记安全、维护和许可风险
  5. 05生成可读报告或 JSON

适用场景

  1. 01为 Rust 项目筛选 crate
  2. 02检查 crate 的安全公告和维护状况
  3. 03添加依赖前比较候选 crate
  4. 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.yaml
examples/
evaluation-examples.md
examples/golden-crate-discovery/
Cargo.lock
Cargo.toml
examples/golden-crate-discovery/src/
lib.rs
references/
api-endpoints.md
red-flags.md
scoring-rubric.md
scripts/
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)。

能力边界

✅ 优势
  1. 按关键词、类别或名称搜索 crates.io,返回排名靠前的候选项
  2. 深入评估单个 Crate:从 crates.io、docs.rs、GitHub 和 RustSec 获取元数据
  3. 并排比较 2 个或更多 Crate,并细分各项子评分
  4. 按 6 个维度为每个 Crate 打 0-100 分:采用情况(30)、维护情况(25)、文档(15)、成熟度(15)、社区(10)、许可证(5)
  5. 标记红旗问题:过时、存在安全公告、没有文档、采用率低且波动、单一维护者带来的巴士系数风险、没有源代码仓库、缺少许可证信息
  6. 推荐最合适的选择,并在用户采用之前指出阻碍性问题
  7. 输出人类可读的报告或机器可读的 JSON(供 Agent 使用)
⚠️ 前提条件
  1. 网络访问权限(工具会从 crates.io、docs.rs、GitHub 和 RustSec 获取数据)
  2. Python 3.9+(无需外部 pip 包,仅使用标准库)
❌ 不在范围内
  1. 采用后的治理(cargo-deny 配置、许可证政策、安全公告响应工作流)→ rust-dependencies
  2. Cargo.toml 字段语义 → rust-cargo-build
  3. Semver 和破坏性变更分类 → rust-semver
  4. 用哪个标准库类型替代 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

工作流

  1. 搜索 — 使用 search "<domain keyword>" 查找候选项。根据下载量和近期活跃情况检查排名靠前的 5-10 个候选项。
  2. 筛选 — 选择 2-4 个采用情况并非微不足道(≥1k 次下载)且近期有活动的名称。
  3. 比较 — 使用 compare <names...> 获取并排评分卡。
  4. 调查红旗 — 对首选项,阅读红旗列表。遇到安全公告时应阻止采用;调查过时或单一维护者相关的问题。
  5. 验证适用性 — 分数衡量的是健康状况,而非适用性。阅读 Crate 文档,从 API 形态角度审视(参考 rust-api-design),并确认它能满足你的用例。
  6. 交接 — 采用后,设置 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、仓库链接
成熟度15API 是否稳定?存续时间、稳定版本 ≥1.0、是否有仓库
社区10是否有贡献者群体?GitHub 星标数、贡献者数量
许可证5是否宽松?优先选择宽松许可证(MIT/Apache/BSD);对著作权非宽松许可证作扣分处理
总分100

等级区间

等级分数含义
A≥85优秀——推荐
B70-84良好——很可能适用
C55-69可接受——请核实是否适用
D40-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 上;此工具无法提供帮助。请人工审查。

资源

上游来源

评论

支持 Markdown