cargo-machete · git:20260610.c15894f · 2026-06-10 · sha256 f111b8812a80c198
cargo-machete git:20260610.c15894fA
Immutable. This exact content is served forever at /api/v1/blob/f111b8812a80c198.
--- 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 --- # 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.