Agent skill
rust-crate-source
Clone and explore Rust crate source code. Use when user wants to read source code for a Rust crate, explore a crate's implementation, understand how a crate works, or needs context about a Rust library.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/development/rust-crate-source-praveenperera-dotfiles
SKILL.md
Rust Crate Source Explorer
This skill clones Rust crate repositories from crates.io to explore their source code. It fetches the repository URL from the crates.io API, clones to /tmp/rust-crates/, and checks out the appropriate version tag.
When to Use
Use this skill when the user:
- Wants to explore or read source code for a Rust crate
- Wants to understand how a crate is implemented
- Needs context about a Rust library's internals
- Mentions "crate source", "explore crate", "how does X crate work"
- Asks to look at the implementation of a specific crate feature
How to Use
Step 1: Fetch Crate Info
Query the crates.io API to get the repository URL and latest version:
CRATE_NAME="serde" # replace with the actual crate name
mkdir -p /tmp/rust-crates
CRATE_INFO=$(curl -sH "User-Agent: rust-crate-explorer" "https://crates.io/api/v1/crates/$CRATE_NAME")
REPO_URL=$(echo "$CRATE_INFO" | jq -r '.crate.repository')
VERSION=$(echo "$CRATE_INFO" | jq -r '.crate.max_version')
echo "Repository: $REPO_URL"
echo "Version: $VERSION"
Step 2: Clone Repository
Clone if not already cached:
if [ ! -d "/tmp/rust-crates/$CRATE_NAME" ]; then
git clone "$REPO_URL" "/tmp/rust-crates/$CRATE_NAME"
fi
Step 3: Checkout Version Tag
Try common tag naming patterns to match the crate version:
cd "/tmp/rust-crates/$CRATE_NAME"
git fetch --tags
git checkout "v$VERSION" 2>/dev/null || \
git checkout "$VERSION" 2>/dev/null || \
git checkout "$CRATE_NAME-$VERSION" 2>/dev/null || \
echo "No matching tag found, using HEAD"
Step 4: Explore the Source
Use Read, Glob, and Grep tools to explore the crate source at:
/tmp/rust-crates/$CRATE_NAME/
For workspace crates, the main source is typically in src/ or a subdirectory matching the crate name.
Example Workflow
User asks: "How does serde handle derive macros?"
# fetch and clone
CRATE_NAME="serde"
mkdir -p /tmp/rust-crates
CRATE_INFO=$(curl -sH "User-Agent: rust-crate-explorer" "https://crates.io/api/v1/crates/$CRATE_NAME")
REPO_URL=$(echo "$CRATE_INFO" | jq -r '.crate.repository')
VERSION=$(echo "$CRATE_INFO" | jq -r '.crate.max_version')
if [ ! -d "/tmp/rust-crates/$CRATE_NAME" ]; then
git clone "$REPO_URL" "/tmp/rust-crates/$CRATE_NAME"
fi
cd "/tmp/rust-crates/$CRATE_NAME"
git fetch --tags
git checkout "v$VERSION" 2>/dev/null || git checkout "$VERSION" 2>/dev/null || echo "Using HEAD"
Then explore with Glob/Read tools to find derive macro implementations.
Notes
- Missing repository: Some crates don't set the repository field; the API will return
null - Version tags: Not all crates tag releases; fall back to HEAD if no tag matches
- Monorepos: Large projects (tokio, serde) may have multiple crates in subdirectories
- Dependencies: Requires
jqfor JSON parsing - Temp storage: Repos are stored in
/tmp/rust-crates/and will be cleaned on reboot
Didn't find tool you were looking for?