Skip to main content

rust-simplify

Scan Rust code for simplification opportunities — nested control flow, long functions, dead code, boolean param traps, redundant iterator chains, and Clippy-flagged complexity. Use when asked to simplify code, reduce cognitive complexity, clean up code, or find over-engineering in Rust.

Source facts

Repository
cosmian/kms
Last source activity
July 2, 2026 at 10:31
Detected SKILL.md language
English
Stars
367
Forks
43

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
rust-simplify
description
Scan Rust code for simplification opportunities — nested control flow, long functions, dead code, boolean param traps, redundant iterator chains, and Clippy-flagged complexity. Use when asked to simplify code, reduce cognitive complexity, clean up code, or find over-engineering in Rust.
# Rust Simplify Find and eliminate unnecessary complexity in Rust code. Complements `/rust-refactor` (duplication) and `/code-quality` (full audit) by targeting **complexity**, not duplication. **Usage**: `/rust-simplify` (current file / recent diff) or `/rust-simplify crate/server/src/core/` --- ## Phase 1 — Scan Run against the target path (default: files from `git diff --name-only`). ### 1a Clippy complexity lints ```bash cargo clippy-all 2>&1 | grep -E "cognitive_complexity|too_many_arguments|too_many_lines|needless_|dead_code|unused_" ``` ### 1b Long functions (> 50 lines) ```bash rg -c "^\s+(pub |pub\(crate\) )?fn " --type rust <path> # files with many fns # Then inspect flagged files for individual functions exceeding 50 lines ``` ### 1c Deep nesting (≥ 5 levels) ```bash rg -n "^ {20,}" --type rust <path> | head -30 ``` ### 1d Boolean param traps ```bash rg -n "fn [a-z_]+\([^)]*bool[^)]*bool" --type rust <path> ``` ### 1e Iterator anti-patterns ```bash rg -n "for .+ in .+\.(iter|iter_mut)\(\)" --type rust <path> | head -20 ``` ### 1f Redundant unwraps / sentinel values ```bash rg -n '\.unwrap\(\)|\.expect\(' --type rust <path> ``` --- ## Phase 2 — Classify | Smell | Pattern | |-------|---------| | Nested `if`/`match` (depth ≥ 3) | Early return, `let-else`, `?` | | Function > 50 lines | Extract named private helper | | Multiple `bool` params per fn | Replace with `pub(crate) enum` | | Dead / unused item | Delete; cross-crate check first | | Manual `for` → collect | Iterator chain (`map`, `filter`, `fold`) | | Sentinel value (–1, `""`, 0) | `Option<T>` or `Result<T, E>` | | `#[cfg(feature)]` inside fn body | Hoist to function / module level | | `Arc<Mutex<T>>` with immutable `T` | `Arc<T>` | --- ## Phase 3 — Prioritize Present this ranked list to the user **before touching any code**: ```text [BLOCKING] unwrap_used / expect_used — cardinal rule violation [HIGH] Function > 100 lines — extract helper(s) [HIGH] Nesting depth ≥ 5 — invert guard clause [MED] Bool param trap — define enum [MED] Dead code — delete after cross-crate check [LOW] Manual loop → iterator — cosmetic, improves readability ``` --- ## Phase 4 — Implement (one finding at a time) **Early return / `let-else`** ```rust // Before if let Some(x) = opt { use(x) } else { return Err(e) } // After let Some(x) = opt else { return Err(e) }; ``` **Extract helper** — name it by *what it does*, not by what calls it. Add a `#[cfg(test)]` unit test. **Bool trap → enum** — replace `bool` parameter with a named enum: 1. Define `pub(crate) enum FlagName { Yes, No }` near the call site. 2. Update every call site before removing the `bool` param. **Dead code removal** — always run `rg "item_name" --type rust` across all crates before deleting. After each file: `cargo clippy-all && cargo fmt --all` After each crate: `cargo test -p <crate>` --- ## Phase 5 — Verify ```bash cargo clippy-all # zero warnings cargo fmt --all # no drift cargo test -p <crate> # narrowest scope covering the change git diff --stat # every hunk explainable by the task ``` --- ## Quick Rules - Keep every function ≤ 50 lines after simplification. - Never remove a `pub` item without `rg "item_name" --type rust` across all crates. - One logical simplification per commit; never mix with feature work. - Add a `//` comment when a non-obvious simplification changes observable behaviour.
View on GitHub