git:20260610.be2a852 to git:20260610.c15894f

141 added, 2 removed. Audit A to A.

---
name: cargo-machete
description: "Detect and remove unused dependencies in Rust projects using cargo-machete."
model: haiku
group: brana
keywords: [rust, dependencies, cleanup, cargo]
task_strategies: [refactor, tech-debt]
stream_affinity: [tech-debt]
effort: low
allowed-tools: [Bash, Read, Glob, Grep, Edit]
status: stable
---
- <!-- PROCEDURE_FILE: procedures/cargo-machete.md -->
- Read and execute the full procedure from `../../procedures/cargo-machete.md` resolved against this skill's base directory (the path announced when the skill loads) — i.e. `{base-dir}/../../procedures/cargo-machete.md`. This form is valid in both the repo layout and the deployed-plugin layout.
+ # cargo-machete - Unused Dependency Detection
+
+ Detect and remove unused dependencies in Rust projects using cargo-machete.
+
+ ## When to Use This Skill
+
+ | Use this skill when... | Use X instead when... |
+ |------------------------|----------------------|
+ | Auditing for unused dependencies | Checking for outdated deps -- use `cargo outdated` |
+ | Cleaning up Cargo.toml | Auditing security vulnerabilities -- use `cargo audit` |
+ | Optimizing build times by removing bloat | Checking license compliance -- use `cargo deny` |
+ | Verifying deps in CI | Need nightly-accurate analysis -- use `cargo +nightly udeps` |
+
+ ## Context
+
+ - Cargo.toml: !`find . -maxdepth 1 -name \'Cargo.toml\'`
+ - Workspace: !`grep -q '\[workspace\]' Cargo.toml`
+ - cargo-machete installed: !`cargo machete --version`
+ - Machete config: !`find . -maxdepth 1 -name \'.cargo-machete.toml\'`
+ - Workspace members: !`grep -A 20 '^\[workspace\]' Cargo.toml`
+
+ ## Execution
+
+ Execute this unused dependency analysis:
+
+ ### Step 1: Verify installation
+
+ Check if cargo-machete is installed (see Context above). If not installed, install it:
+
+ ```bash
+ cargo install cargo-machete
+ ```
+
+ ### Step 2: Run dependency analysis
+
+ Run cargo-machete with metadata for detailed output:
+
+ ```bash
+ # Single crate
+ cargo machete --with-metadata
+
+ # Workspace (if Context shows workspace)
+ cargo machete --workspace --with-metadata
+ ```
+
+ ### Step 3: Evaluate results
+
+ Review the output and classify each finding:
+
+ | Finding | Action |
+ |---------|--------|
+ | Genuinely unused dependency | Remove with `--fix` or manually |
+ | Proc-macro dependency (e.g., serde derive) | Add `machete:ignore` comment |
+ | Build.rs-only dependency | Move to `[build-dependencies]` |
+ | Re-exported dependency | Add `machete:ignore` comment with explanation |
+
+ ### Step 4: Apply fixes
+
+ For confirmed unused dependencies, auto-remove them:
+
+ ```bash
+ cargo machete --fix
+ ```
+
+ For false positives, add ignore annotations in `Cargo.toml`:
+
+ ```toml
+ serde = "1.0" # machete:ignore - used via derive macro
+ ```
+
+ Or create `.cargo-machete.toml` for project-wide ignores:
+
+ ```toml
+ [ignore]
+ dependencies = ["serde", "log"]
+ ```
+
+ ### Step 5: Verify build
+
+ After removing dependencies, confirm everything still compiles:
+
+ ```bash
+ cargo check --all-targets
+ cargo test --no-run
+ ```
+
+ ## False Positive Handling
+
+ | Scenario | Solution |
+ |----------|----------|
+ | Proc-macro deps (e.g., serde derive) | `machete:ignore` comment |
+ | Build.rs-only deps | Move to `[build-dependencies]` |
+ | Re-exported deps | `machete:ignore` comment with explanation |
+ | Example/bench-only deps | Verify in `[dev-dependencies]` |
+
+ ## Comparison with cargo-udeps
+
+ | Feature | cargo-machete | cargo-udeps |
+ |---------|---------------|-------------|
+ | Accuracy | Good | Excellent |
+ | Speed | Very fast | Slower |
+ | Rust version | Stable | Requires nightly |
+ | False positives | Some | Fewer |
+
+ Use cargo-machete for fast CI checks. Use cargo-udeps for thorough audits:
+
+ ```bash
+ cargo +nightly udeps --workspace --all-features
+ ```
+
+ ## Agentic Optimizations
+
+ | Context | Command |
+ |---------|---------|
+ | Quick check | `cargo machete` |
+ | Detailed check | `cargo machete --with-metadata` |
+ | Workspace check | `cargo machete --workspace --with-metadata` |
+ | Auto-fix | `cargo machete --fix` |
+ | Verify after fix | `cargo check --all-targets` |
+ | Accurate check (nightly) | `cargo +nightly udeps --workspace` |
+
+ ## Quick Reference
+
+ | Flag | Description |
+ |------|-------------|
+ | `--with-metadata` | Show detailed output with versions and locations |
+ | `--fix` | Auto-remove unused dependencies from Cargo.toml |
+ | `--workspace` | Check all workspace members |
+ | `-p <crate>` | Check specific workspace member |
+ | `--exclude <crate>` | Exclude specific workspace member |
+
+ ## Troubleshooting
+
+ | Problem | Solution |
+ |---------|----------|
+ | Proc macro flagged as unused | Add `machete:ignore` comment in Cargo.toml |
+ | Build.rs dep flagged | Move to `[build-dependencies]` |
+ | Re-exported dep flagged | Add `machete:ignore` with explanation |
+ | Need more accuracy | Use `cargo +nightly udeps` |
+
+ For CI integration patterns, configuration file examples, pre-commit setup, and Makefile integration, see the `cargo-machete` documentation.