Skip to content

Latest commit

 

History

28 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rust Skills

rules categories Rust license

345 Rust rules your AI coding agent can use to write better code. Current for Rust 1.97.1 (2024 edition).

Works with Claude Code, Cursor, Windsurf, Copilot, Codex, Aider, Zed, Amp, Cline, and pretty much any other agent that supports skills.

Why

Out of the box, coding agents write average Rust — they clone to dodge the borrow checker, .unwrap() everything, and reach for Box<dyn Trait> when impl Trait would do. These rules encode what expert Rust actually looks like: idiomatic, fast, and safe. Each rule is small and focused, so the agent pulls in only what's relevant to the code in front of it.

Install

npx add-skill jason931225/rust-skills

That's it. The CLI figures out which agents you have and installs the skill to the right place.

How to use it

After installing, just ask your agent:

/rust-skills review this function
/rust-skills is my error handling idiomatic?
/rust-skills check for memory issues
/rust-skills is this unsafe block sound?

The agent loads the relevant rules and applies them to your code.

See it in action

Ask the agent to review a function like this:

// before
fn first_word(s: &String) -> String {
    s.clone().split_whitespace().next().unwrap().to_string()
}

With these rules loaded, it knows to take &str instead of &String, drop the needless clone() and allocation, and return an Option instead of panicking:

// after — applies own-slice-over-vec, own-borrow-over-clone, anti-unwrap-abuse
fn first_word(s: &str) -> Option<&str> {
    s.split_whitespace().next()
}

What's in here

345 rules split into 27 categories:

Category Rules What it covers
Ownership & Borrowing 12 When to borrow vs clone, Arc/Rc, lifetimes
Error Handling 16 thiserror for libs, anyhow for apps, the ? operator
Memory 18 SmallVec, arenas, avoiding allocations, mem::take, drop order
Unsafe Code 10 SAFETY: comments, Miri, MaybeUninit, 2024-edition unsafe
API Design 35 Builder pattern, newtypes, sealed traits, FromIterator
Async 25 Tokio patterns, channels, async fn in traits, cancel safety
Concurrency 6 rayon, scoped threads, atomic ordering, thread-locals
Optimization 12 LTO, inlining, PGO, SIMD
Numeric & Arithmetic 6 Overflow handling, as vs TryFrom, float compare, NonZero
Type Safety 14 Newtypes, parse don't validate, Deref, Display/Debug
Trait & Generics Design 7 dyn vs generic, associated types, blanket impls, object safety, orphan rule
Conversions 3 TryFrom, FromStr, AsMut
Const & Compile-Time 5 const fn, const vs static, const generics, const {} blocks
Serde 8 rename_all, default, flatten, enum tagging, validate-on-deserialize
Pattern Matching 6 let-else, matches!, if-let chains, exhaustive matches
Macros 11 macro_rules! hygiene, fragment specifiers, proc-macros with syn/quote
Closures 5 Fn/FnMut/FnOnce bounds, returning impl Fn, move & disjoint capture
Collections 4 HashMap/BTreeMap/IndexMap, Vec/VecDeque, sets, BinaryHeap
Naming 18 Following Rust API Guidelines
Testing 19 Proptest, mockall, criterion, loom, snapshot tests
Docs 16 Doc examples, intra-doc links, README/crate-doc unification
Observability 10 tracing over log, spans, structured fields, redacting secrets
Performance 15 Iterators, entry API, faster hashers, I/O buffering
Project Structure 27 Workspaces, module layout, features, MSRV
FFI & Interop 5 ABI boundaries, native handles, -sys crates, dynamic libraries
Linting 16 Clippy config, CI setup, unexpected_cfgs
Anti-patterns 16 Common mistakes and how to fix them

Each rule has:

  • Why it matters
  • A bad code example
  • A good code example
  • Links to related rules and sources

How it works

The design is built for low token cost and easy auditing:

  • SKILL.md is a lightweight index — every rule listed as a one-line summary, grouped by category, with a link to its file. The agent reads this first.
  • rules/ holds one Markdown file per rule (<prefix>-<name>.md). The agent opens only the handful relevant to your code instead of loading the whole corpus — progressive disclosure keeps context small.
  • Prefixes (own-, err-, unsafe-, async-, …) map directly to categories, so an agent reviewing async code can pull just async-, conc-, and own- rules.

CLAUDE.md and AGENTS.md are symlinks to SKILL.md, so the same content works across agent conventions.

Manual install

If add-skill doesn't work for your setup, here's how to install manually:

Claude Code

Global (applies to all projects):

git clone https://github.com/jason931225/rust-skills.git ~/.claude/skills/rust-skills

Or just for one project:

git clone https://github.com/jason931225/rust-skills.git .claude/skills/rust-skills
OpenCode
git clone https://github.com/jason931225/rust-skills.git .opencode/skills/rust-skills
Cursor
git clone https://github.com/jason931225/rust-skills.git .cursor/skills/rust-skills

Or just grab the skill file:

curl -o .cursorrules https://raw.githubusercontent.com/jason931225/rust-skills/HEAD/SKILL.md
Windsurf
mkdir -p .windsurf/rules
curl -o .windsurf/rules/rust-skills.md https://raw.githubusercontent.com/jason931225/rust-skills/HEAD/SKILL.md
OpenAI Codex
git clone https://github.com/jason931225/rust-skills.git .codex/skills/rust-skills

Or use the AGENTS.md standard:

curl -o AGENTS.md https://raw.githubusercontent.com/jason931225/rust-skills/HEAD/SKILL.md
GitHub Copilot
mkdir -p .github
curl -o .github/copilot-instructions.md https://raw.githubusercontent.com/jason931225/rust-skills/HEAD/SKILL.md
Aider

Add to .aider.conf.yml:

read: path/to/rust-skills/SKILL.md

Or pass it directly:

aider --read path/to/rust-skills/SKILL.md
Zed
curl -o AGENTS.md https://raw.githubusercontent.com/jason931225/rust-skills/HEAD/SKILL.md
Amp
git clone https://github.com/jason931225/rust-skills.git .agents/skills/rust-skills
Cline / Roo Code
mkdir -p .clinerules
curl -o .clinerules/rust-skills.md https://raw.githubusercontent.com/jason931225/rust-skills/HEAD/SKILL.md
Other agents (AGENTS.md)

If your agent supports the AGENTS.md standard:

curl -o AGENTS.md https://raw.githubusercontent.com/jason931225/rust-skills/HEAD/SKILL.md

All rules

See SKILL.md for the full list with links to each rule file.

Sources & attribution

Leonardo Maldonado (leonardomso) created rust-skills and remains credited as its original author. Jason Lee maintains this standalone clone; the original repository and its history remain available at leonardomso/rust-skills.

These rules are an independent synthesis of official Rust guidance, well-known books, and patterns drawn from widely-used open-source crates. They are not affiliated with or endorsed by the Rust project or any crate author. The text and code examples are original summaries — no substantial content is copied from the sources below.

Official Rust documentation

Books & guides

Tooling

Real-world codebases studied for idioms

  • ripgrep, tokio, serde, clap, polars, axum, cargo, hyper, bevy, rayon, and dtolnay's crates (thiserror, anyhow, syn)

This project is MIT-licensed. Referenced upstream materials remain under their own licenses and copyrights — the official Rust documentation and API Guidelines are dual MIT / Apache-2.0, the Microsoft Pragmatic Rust Guidelines are MIT-licensed, and Zero To Production In Rust remains copyright Luca Palmieri.

Contributing

PRs welcome. To add or change a rule:

  1. Create rules/<prefix>-<name>.md using a kebab-case id with an existing category prefix (own-, err-, mem-, …).
  2. Follow the format of existing rules: a > one-line summary, then ## Why It Matters, ## Bad, ## Good, and ## See Also (with links that resolve).
  3. Make sure code examples compile on current stable Rust.
  4. Add the rule to the index in SKILL.md (Quick Reference list + the category count) so it stays in sync.
# prefix-rule-name

> One-line imperative summary.

## Why It Matters

Two to four sentences.

## Bad

```rust
// the anti-pattern
```

## Good

```rust
// the recommended pattern
```

## See Also

- [other-rule](other-rule.md) - why it's related

License

MIT

About

separately maintained standalone clone of leonardomso/rust-skills, preserving original authorship and upstream provenance.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages