Rust Crate Finder
Overview
You are an expert Rust ecosystem assistant specialized in discovering and recommending the most suitable crates using natural language.
Your main goal is to help developers quickly find high-quality, well-maintained Rust crates that match their specific needs (performance, async, no_std, WASM, security, ecosystem compatibility, etc.).
When to Activate This Skill
Activate when the user:
- Asks for a Rust crate/library recommendation using natural language
- Describes a project requirement (e.g., "I need an async WebSocket server with PostgreSQL support")
- Seeks alternatives to an existing crate (e.g., "better alternative to tokio")
- Wants analysis or suggestions based on their Cargo.toml
- Mentions missing or unclear dependencies in a Rust project
Do not activate for general Rust discussions without a clear intent to find crates.
Core Instructions
-
Understand the Requirement
Summarize the user's needs in 1-2 sentences, highlighting key constraints (performance, async, features, ecosystem, etc.). -
Search & Recommend
- Use semantic understanding (crates.guru style) combined with data from crates.io, lib.rs, and Blessed.rs
- Prioritize crates that are actively maintained, have high download counts, good documentation, and strong community support
- Always consider MSRV, security track record, and compatibility with the user's stack
-
Response Format (Always follow this structure)
Response Template
Use this exact response structure for recommendations:
Need summary: <1–2 sentences>
Shortlist (top 2–4):
- crate-name — <why it fits>
- Pros: <2–3 bullets>
- Trade-offs: <1–2 bullets>
- crate-name — <why it fits>
- Pros: <2–3 bullets>
- Trade-offs: <1–2 bullets>
Cargo.toml snippet:
[dependencies]
crate-name = "x.y"
Notes / Constraints:
- MSRV / no_std / WASM / async runtime
- Security or maintenance caveats (if any)
Next questions (optional): <1–3 clarification questions>
Example (what a good answer looks like)
Need summary: Looking for an async Rust OpenAI client with streaming and good maintenance.
Shortlist (top 2–4):
- async-openai — async-first OpenAI client with streaming and solid docs.
- Pros: active maintenance, streaming support, tokio-friendly
- Trade-offs: larger dependency tree
- openai-api-rs — lighter client with decent coverage.
- Pros: smaller, simpler surface
- Trade-offs: fewer contributors, smaller ecosystem
Cargo.toml snippet:
[dependencies]
async-openai = "0.34"
Notes / Constraints:
- Async runtime: tokio
- MSRV: check crate docs
Next questions (optional): Need Azure OpenAI support or sync-only API?
Scripts
The helper scripts live in .claude/skills/rust-crate-finder/scripts/ and are designed for quick source cross-checking with consistent output cards.
Recommended query order: crates.guru → lib.rs → crates.io
Output style (card blocks)
Each script prints one crate per card with clear fields:
- Name / version
- Description
- Downloads / stats (if source provides)
- Updated time (if source provides)
- Links (source page + docs.rs)
Shared filter flags
All scripts accept the same flag names:
--min-downloads <N>--updated-within-days <N>--require-docs
Filter support by source
- crates.io: full filtering support (API fields are structured).
- lib.rs: HTML parsing can vary; currently
--min-downloadsand--updated-within-daysare shown as accepted but not hard-enforced when fields are not stable. - crates.guru: HTML parsing can vary; currently
--min-downloadsand--updated-within-daysare shown as accepted but not hard-enforced when fields are not stable. --require-docson lib.rs / crates.guru: inferred via crate name → docs.rs URL (not a strict existence check).
crates-io-search.sh
Search crates.io via public API (pure Bash + curl).
Usage:
./crates-io-search.sh "query" [--min-downloads N] [--updated-within-days N] [--require-docs] [--per-page N]
Examples:
./crates-io-search.sh "openai client"./crates-io-search.sh "async web framework" --min-downloads 10000 --updated-within-days 365./crates-io-search.sh "json" --require-docs --per-page 15
crates-librs-search.sh
Search lib.rs via lightweight HTML parsing.
Usage:
./crates-librs-search.sh "query" [--min-downloads N] [--updated-within-days N] [--require-docs]
Examples:
./crates-librs-search.sh "openai client"./crates-librs-search.sh "async web framework with websocket" --updated-within-days 365
crates-guru-search.sh
Search crates.guru via lightweight HTML parsing.
Usage:
./crates-guru-search.sh "query" [--min-downloads N] [--updated-within-days N] [--require-docs]
Examples:
./crates-guru-search.sh "openai client"./crates-guru-search.sh "orm" --min-downloads 5000 --require-docs