Skip to content

/coding-guidelines

Use when asking about Rust code style or best practices. Keywords: naming, formatting, comment, clippy, rustfmt, lint, code style, best practice, P.NAM, G.FMT, code review, naming convention, variable naming, function naming, type naming, 命名规范, 代码风格, 格式化, 最佳实践, 代码审查, 怎么命名

From plugin
rust-skills
1.6k38 skills11 agents21 commands1 hook
+1

Claude Code

$ npx -y skills add actionbook/rust-skills --skill coding-guidelines --agent claude-code

SKILL.md

coding-guidelines.SKILL.md
name: coding-guidelines
description: "Use when asking about Rust code style or best practices. Keywords: naming, formatting, comment, clippy, rustfmt, lint, code style, best practice, P.NAM, G.FMT, code review, naming convention, variable naming, function naming, type naming, 命名规范, 代码风格, 格式化, 最佳实践, 代码审查, 怎么命名"
source: https://rust-coding-guidelines.github.io/rust-coding-guidelines-zh/
user-invocable: false

Rust Coding Guidelines (50 Core Rules)

Naming (Rust-Specific)

| Rule | Guideline | |------|-----------| | No `get_` prefix | `fn name()` not `fn get_name()` | | Iterator convention | `iter()` / `iter_mut()` / `into_iter()` | | Conversion naming | `as_` (cheap &), `to_` (expensive), `into_` (ownership) | | Static var prefix | `G_CONFIG` for `static`, no prefix for `const` |

Data Types

| Rule | Guideline | |------|-----------| | Use newtypes | `struct Email(String)` for domain semantics | | Prefer slice patterns | `if let [first, .., last] = slice` | | Pre-allocate | `Vec::with_capacity()`, `String::with_capacity()` | | Avoid Vec abuse | Use arrays for fixed sizes |

Strings

| Rule | Guideline | |------|-----------| | Prefer bytes | `s.bytes()` over `s.chars()` when ASCII | | Use `Cow<str>` | When might modify borrowed data | | Use `format!` | Over string concatenation with `+` | | Avoid nested iteration | `contains()` on string is O(n*m) |

Error Handling

| Rule | Guideline | |------|-----------| | Use `?` propagation | Not `try!()` macro | | `expect()` over `unwrap()` | When value guaranteed | | Assertions for invariants | `assert!` at function entry |

Memory

| Rule | Guideline | |------|-----------| | Meaningful lifetimes | `'src`, `'ctx` not just `'a` | | `try_borrow()` for RefCell | Avoid panic | | Shadowing for transformation | `let x = x.parse()?` |

Concurrency

| Rule | Guideline | |------|-----------| | Identify lock ordering | Prevent deadlocks | | Atomics for primitives | Not Mutex for bool/usize | | Choose memory order carefully | Relaxed/Acquire/Release/SeqCst |

Async

| Rule | Guideline | |------|-----------| | Sync for CPU-bound | Async is for I/O | | Don't hold locks across await | Use scoped guards |

Macros

| Rule | Guideline | |------|-----------| | Avoid unless necessary | Prefer functions/generics | | Follow Rust syntax | Macro input should look like Rust |

Deprecated → Better

| Deprecated | Better | Since | |------------|--------|-------| | `lazy_static!` | `std::sync::OnceLock` | 1.70 | | `once_cell::Lazy` | `std::sync::LazyLock` | 1.80 | | `std::sync::mpsc` | `crossbeam::channel` | - | | `std::sync::Mutex` | `parking_lot::Mutex` | - | | `failure`/`error-chain` | `thiserror`/`anyhow` | - | | `try!()` | `?` operator | 2018 |

Quick Reference

Naming: snake_case (fn/var), CamelCase (type), SCREAMING_CASE (const)
Format: rustfmt (just use it)
Docs: /// for public items, //! for module docs
Lint: #![warn(clippy::all)]

Claude knows Rust conventions well. These are the non-obvious Rust-specific rules.

Read more
@actionbook
Ships withrust-skills

AI-powered Rust development assistant with meta-cognition framework

1.6k38 skills11 agents1 MCP
Get the whole plugin, auto-invoked

Stars on GitHub

Momentum

stars in total
1.6k
Star history of actionbook/rust-skills on GitHub, a chart by star-history.com

Other skills on rust-skills.

core-actionbook
Auto-invoked

core-actionbook

Internal support skill for actionbook MCP selectors used by Rust documentation research workflows. Use only when another…

core-agent-browser
Auto-invoked

core-agent-browser

Internal support skill for agent-browser CLI workflows used by rust-learner, docs-researcher, and crate-researcher. Use only when…

core-dynamic-skills
Auto-invoked

core-dynamic-skills

Internal command support for dynamic Rust crate skill management. Use only when explicitly invoked by /sync-crate-skills,…

core-fix-skill-docs
Auto-invoked

core-fix-skill-docs

Internal maintenance support for checking and fixing generated Rust skill documentation references. Use only when explicitly…

domain-cli
Auto-invoked

domain-cli

Use when building CLI tools. Keywords: CLI, command line, terminal, clap, structopt, argument parsing, subcommand, interactive,…

domain-cloud-native
Auto-invoked

domain-cloud-native

Use when building cloud-native apps. Keywords: kubernetes, k8s, docker, container, grpc, tonic, microservice, service mesh,…

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills11d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc12d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about coding-guidelines.

Which coding agents can use coding-guidelines?
coding-guidelines installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.