Agent Skills: cargo-machete - Unused Dependency Detection

|

UncategorizedID: laurigates/claude-plugins/cargo-machete

Install this agent skill to your local

pnpm dlx add-skill https://github.com/laurigates/claude-plugins/tree/HEAD/rust-plugin/skills/cargo-machete

Skill Files

Browse the full folder contents for cargo-machete.

Download Skill

Loading file tree…

rust-plugin/skills/cargo-machete/SKILL.md

Skill Metadata

Name
cargo-machete
Description
|

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:

cargo install cargo-machete

Step 2: Run dependency analysis

Run cargo-machete with metadata for detailed output:

# 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:

cargo machete --fix

For false positives, add ignore annotations in Cargo.toml:

serde = "1.0"  # machete:ignore - used via derive macro

Or create .cargo-machete.toml for project-wide ignores:

[ignore]
dependencies = ["serde", "log"]

Step 5: Verify build

After removing dependencies, confirm everything still compiles:

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:

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 REFERENCE.md.