Nov 3, 2026
用三个经过实测的 Agent Skill 写出、评审并移植地道的 Rust
Beautiful Rust 是一套 2k star 的三个 Agent Skill 加一份 clippy 配置,教 Claude Code、Codex、Copilot、Cursor 和 Gemini CLI 写出、评审并移植地道的 Rust——每个代码示例都能在 stable Rust 上编译,配置里的每条 lint 都被证明真的会触发。
智能体写出的 Rust 能编译,但读起来像直译过来的 C:谁都不该改动的字段是 public 的,文档示例里调 unwrap(),# Errors 小节缺失。morganlinton/BeautifulRust 把五份权威 Rust 风格来源提炼成三个 Agent Skill 加一份 clippy 配置——判断类的规则放进提示词,机器可查的规则放进 CI。
为什么这个 Skill 重要
这个仓库提供三个 skill 和一份 lints 配置。rust-best-practices 会在你的智能体写或改 Rust 时自动加载,引导它写出地道、健壮、易维护的代码。rust-review 评审已有的 Rust 代码——一个文件、一个 crate 或一个 diff——输出一份分优先级的报告,每条发现都引用它违反的规则并给出修复。rust-port 把 C、C++、Python、Go 或 JavaScript 移植成行为一致的地道 Rust,而且先移植原有测试,让你能证明两边行为一致。lints/ 目录是一份即插即用的 clippy 配置,把机器可查的规则在 CI 里强制执行。
这些指引提炼自五个来源——Google Rust Style Guide、官方 Rust API Guidelines、David Drysdale 的《Effective Rust》、Rust Design Patterns、Microsoft 的 Pragmatic Rust Guidelines——每个来源的精简摘要都随 skill 附带,智能体需要时可以查阅原始论证。来源之间有分歧时,skill 会选一边站并说明理由。每个代码示例都能在 stable Rust 上编译,配置里每条 lint 都对照当前版本的 clippy 验证过。这些 skill 适用于 Claude Code、OpenAI Codex、GitHub Copilot、Cursor、Gemini CLI,以及任何能读 Agent Skills 格式的智能体。
安装
skills 安装器支持大多数智能体(需要 Node 22.20 或更高版本):
npx skills add morganlinton/BeautifulRust
加 -g 装到用户级而不是当前项目,或加 -a <agent> 指定智能体,比如 -a codex 或 -a cursor。在 Claude Code 上,以插件方式安装可以一条命令更新:
claude plugin install beautiful-rust --marketplace morganlinton/BeautifulRust
三个 skill 要一起装:review 和 port 依赖 best-practices 的风格规则。README 提到一个目录层面的注意事项:Claude Code 不读共享的 .agents/skills/ 位置,所以要用它自己的目录或插件方式。
实战:评审一个混乱的模块
让智能体评审一个文件、crate 或 diff——例如:
review src/parser.rs
rust-review skill 在工具链可用时运行 cargo fmt、clippy 和测试,然后输出一份分三档的报告:必须修、建议修、可以考虑。每条发现都给出 file:line 位置、违反的规则及其出处——API Guidelines 的编号(如 C-GETTER)、Effective Rust 的条目、Microsoft 指南或某条 clippy lint——以及能修复它的最小代码改动。每份报告以这个代码已经做得好的地方收尾。
实战:把 C 模块移植到 Rust
直接要求移植——「port parser.c to Rust」或「rewrite this Python service in Rust」。rust-port skill 读取原代码和它的测试,先移植测试,然后设计一个 Rust API 而不是逐行转写原代码,最后用 cargo test 和 clippy 验证。它把每种语言的习惯映射到对应的 Rust 等价物:NULL 和 None 映射到 Option,错误码和异常映射到错误枚举,出参映射到返回值,标志整数和魔法字符串映射到类型化枚举和选项,字典插入顺序映射到有序集合而不是会悄悄打乱输出顺序的 HashMap。每次移植都附带一份 PORTING.md,把旧 API 和测试映射到新的,并列出每一处有意为之的差异。
在 CI 里强制执行
skill 负责教规则,lint 负责防止规则回潮。把 lints/clippy.toml 复制到 Cargo.toml 旁边,把 lints/lints.toml 里的 [lints] 块粘贴进去,然后运行:
cargo clippy --all-targets --all-features -- -D warnings
它会抓出测试外的 unwrap()、没有 // SAFETY: 注释的 unsafe 块、没有理由的 #[allow]、任何 bool 类型的函数参数、悄悄丢失精度的 as 强转、缺失的 # Errors 和 # Panics 文档、没有消息的 assert!、没有标 #[non_exhaustive] 的导出枚举,以及残留的 dbg! 和 todo!。标记为 [lib] 的 lint 是给库用的,应用程序可以去掉。表里每条 lint 都被证明会触发:lints/check/ 是一个小 crate,每条 lint 都埋了一个故意违规,bash scripts/check-lints.sh 在某条 lint 不再触发时失败。
Bevy 例外
Bevy 会调用你的 system 并替你构造它们的参数,所以某些通用的 Rust 建议对它并不适用。当 crate 依赖 bevy 或 bevy_ecs 时,写作和评审 skill 会先读 references/bevy.md。它覆盖 Bevy 0.20,点名哪些约定不要动(按值传入的 system 参数、prelude、纯数据组件的 public 字段),并列出那些能干净编译通过的 ECS bug——两个都能修改同一组件的 query 会在第一帧以错误 B0001 panic。参考里的每个行为都用针对 bevy 0.20.0 的测试验证过。
技巧
- 仓库 2026 年 10 月的 benchmark 在 Claude Code 和 Codex CLI 上各跑八个用例,分别带和不带这些 skill:Claude Code(Opus 5.5)从 72/85(85%)提升到 80/85(94%),Codex 从 53/85(62%)提升到 76/85(89%)。skill 对 Codex 的帮助大于 Claude,对评审的帮助最大;但 Claude 在带 skill 的 Bevy 功能用例上反而变差。benchmark 页面注明:每个配置只跑了一次,由一个 Claude 模型打分。
- 贡献代码前先验证:
python3 scripts/check-skill.py检查 frontmatter、链接、评测和清单,python3 scripts/check-examples.py编译 skills、参考摘要、README 和示例里的每个 Rust 代码块。 - 更新随安装方式走:Claude Code 用
claude plugin update beautiful-rust,Codex 用codex plugin marketplace upgrade beautiful-rust;复制文件夹或用安装器的用户重跑安装命令即可。 - 在 claude.ai 上使用时,每个 skill 打一个 zip、以 skill 文件夹为 zip 根目录上传;需要先开启代码执行。
何时不用这个 Skill
这份 lint 表强制执行的是一套特定规则,包括一些代码库会有意放宽的 bool 参数禁令和 #[non_exhaustive] 要求——接进 CI 之前先过一遍这张表;应用程序可以去掉标记为 [lib] 的 lint。本地仍然需要 Rust 工具链:review skill 只在工具链可用时才运行 cargo fmt、clippy 和测试。
查看 排行榜 了解更多 skill。