Skip to content
Back to skills

Rust Patterns

ASecurity

Rust idioms — ownership-first design; types encode invariants (newtype pattern for UserId / Cents / etc.); errors as values (Result<T, E> + thiserror for libs + anyhow for apps); enums for closed sets (exhaustive match); builders for many-optional inputs; protocol-style traits for ports (dependency inversion); DI via struct composition (Arc<dyn Trait>); async/await + tokio with structured concurrency (try_join! / JoinSet); no .unwrap() outside tests (use ? or expect with reason); no panic! in...

  • 12 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 28, 2026
ai-agentsrustgonodetestingsecurity

Works with

  • cli

Security analysis

A100/100

Scanned September 28, 2026

npx -y skills add Nmor/the-claude-council --skill rust-patterns --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Rust Patterns?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Rust Patterns
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/nmor-rust-patterns/badge)](https://www.skillsdirectory.com/skills/nmor-rust-patterns)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
---
name: rust-patterns
description: Rust idioms — ownership-first design; types encode invariants (newtype pattern for UserId / Cents / etc.); errors as values (Result<T, E> + thiserror for libs + anyhow for apps); enums for closed sets (exhaustive match); builders for many-optional inputs; protocol-style traits for ports (dependency inversion); DI via struct composition (Arc<dyn Trait>); async/await + tokio with structured concurrency (try_join! / JoinSet); no .unwrap() outside tests (use ? or expect with reason); no panic! in library code; cargo clippy --pedantic; cargo audit + cargo deny. Auto-fires on Rust source.
paths:
  - "**/*.rs"
  - "Cargo.toml"
  - "**/Cargo.toml"
  - "Cargo.lock"
  - "**/Cargo.lock"
  - "rust-toolchain.toml"
  - "**/rust-toolchain.toml"
  - "**/.cargo/config.toml"
---


# rust-patterns

> **Size budget: 25 KB.** Check: wc -c. Gate: node ~/.claude/scripts/token-budget.mjs --check
>
> Migrated 2026-06-02 from `~/.claude/rules-library/rust/` as part of the lazy-rules-loading plan.
> Phase H will delete the source files.

## Purpose

Routing table for the Rust discipline. Every rule, code example, citation and
anti-pattern lives in `references/` — read the row that matches the work rather
than the whole surface, because this skill is `paths:`-gated and whatever stays
here is paid on every edit to every `*.rs` / `Cargo.toml` file.

## Routing table

| Row | Read this | It holds |
| --- | --- | --- |
| **Coding style** | [`references/coding-style.md`](references/coding-style.md) | Core principle · Naming · Ownership + borrowing · Error handling · Modules + visibility · Idioms · Async (tokio) · Required `Cargo.toml` setup · `rustfmt.toml` · Required tooling · Cross-references |
| **Hooks + CI gates** | [`references/hooks.md`](references/hooks.md) | Pre-commit gates · CI workflow · `deny.toml` (the cargo-deny policy) · `rust-toolchain.toml` · Cross-references |
| **No-discards extension** | [`references/no-discards.md`](references/no-discards.md) | The 15 banned patterns — `unwrap()`/`expect()` · `let _ =` · `panic!`/`todo!` · ignored iterator values · undocumented `unsafe` · unjustified `#[allow(...)]` · `clone()` to dodge the borrow checker · hot-path allocations · `mem::forget` · lossy `as` casts · `println!` in product code · hardcoded credentials · uninjected clocks · mutable statics · range-loop discards. Plus required `Cargo.toml` lints and the verification block |
| **Architecture patterns** | [`references/patterns.md`](references/patterns.md) | Module + workspace layout · Newtype · Enums for closed sets · Builder · Traits for ports · DI via struct composition · Async (tokio idioms) · Reuse-first · Anti-patterns 1-4 |
| **Security** | [`references/security.md`](references/security.md) | OWASP A02 crypto · A03 injection · A06 vulnerable components · A07 authentication · A10 SSRF · `unsafe` discipline · Secrets · Required tooling |
| **Testing** | [`references/testing.md`](references/testing.md) | Test layout · Property-based (proptest) · Async testing · HTTP mocking · Snapshot (insta) · Mocking traits (mockall) · Coverage gates · Hard rules 1-5 |

Start with **Coding style** when the work is a plain `*.rs` edit; add the other
rows only as the change reaches them.

Files in this skill

  • SKILL.md3.2 KB
  • references/coding-style.md4.9 KB
  • references/hooks.md3.9 KB
  • references/no-discards.md7.8 KB
  • references/patterns.md6.7 KB
  • references/security.md4.9 KB
  • references/testing.md5.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…