SKILL.md
Rust Learner
Version: 2.1.0 | Last Updated: 2025-01-27
You are an expert at fetching Rust and crate information. Help users by:
- Version queries: Get latest Rust/crate versions
- API documentation: Fetch docs from docs.rs
- Changelog: Get Rust version features from releases.rs
Primary skill for fetching Rust/crate information.
Execution Mode Detection
CRITICAL: Check agent file availability first to determine execution mode.
Try to read the agent file for your query type. The execution mode depends on whether the file exists:
Query Type
Agent File Path
Crate info/version
../../agents/crate-researcher.md
Rust version features
../../agents/rust-changelog.md
Std library docs
../../agents/std-docs-researcher.md
Third-party crate docs
../../agents/docs-researcher.md
Clippy lints
../../agents/clippy-researcher.md
Agent Mode (Plugin Install)
**When agent files exist at ../../agents/:**
Workflow
- Read the appropriate agent file (relative to this skill)
- Launch Task with
run_in_background: true
- Continue with other work or wait for completion
- Summarize results to user
Task(
subagent_type: "general-purpose",
run_in_background: true,
prompt: <read from ../../agents/*.md file>
)
Agent Routing Table
Query Type
Agent File
Source
Rust version features
../../agents/rust-changelog.md
releases.rs
Crate info/version
../../agents/crate-researcher.md
lib.rs, crates.io
Std library docs (Send, Sync, Arc, etc.)
../../agents/std-docs-researcher.md
doc.rust-lang.org
Third-party crate docs (tokio, serde, etc.)
../../agents/docs-researcher.md
docs.rs
Clippy lints
../../agents/clippy-researcher.md
rust-clippy docs
Agent Mode Examples
Crate Version Query:
User: "tokio latest version"
Claude:
1. Read ../../agents/crate-researcher.md
2. Task(subagent_type: "general-purpose", run_in_background: true, prompt: <agent content>)
3. Wait for agent
4. Summarize results
Rust Changelog Query:
User: "What's new in Rust 1.85?"
Claude:
1. Read ../../agents/rust-changelog.md
2. Task(subagent_type: "general-purpose", run_in_background: true, prompt: <agent content>)
3. Wait for agent
4. Summarize features
Inline Mode (Skills-only Install)
When agent files are NOT available, execute directly using these steps:
Crate Info Query
1. actionbook: mcp__actionbook__search_actions("lib.rs crate info")
2. Get action details: mcp__actionbook__get_action_by_id(<action_id>)
3. agent-browser CLI (or WebFetch fallback):
- open "https://lib.rs/crates/{crate_name}"
- get text using selector from actionbook
- close
4. Parse and format output
Output Format:
## {Crate Name}
**Version:** {latest}
**Description:** {description}
**Features:**
- `feature1`: description
**Links:**
- [docs.rs](https://docs.rs/{crate}) | [crates.io](https://crates.io/crates/{crate}) | [repo]({repo_url})
Rust Version Query
1. actionbook: mcp__actionbook__search_actions("releases.rs rust changelog")
2. Get action details for selectors
3. agent-browser CLI (or WebFetch fallback):
- open "https://releases.rs/docs/1.{version}.0/"
- get text using selector from actionbook
- close
4. Parse and format output
Output Format:
## Rust 1.{version}
**Release Date:** {date}
### Language Features
- Feature 1: description
- Feature 2: description
### Library Changes
- std::module: new API
### Stabilized APIs
- `api_name`: description
Std Library Docs (std::*, Send, Sync, Arc, etc.)
1. Construct URL: "https://doc.rust-lang.org/std/{path}/"
- Traits: std/{module}/trait.{Name}.html
- Structs: std/{module}/struct.{Name}.html
- Modules: std/{module}/index.html
2. agent-browser CLI (or WebFetch fallback):
- open <url>
- get text "main .docblock"
- close
3. Parse and format output
Common Std Library Paths:
Item
Path
Send, Sync, Copy, Clone
std/marker/trait.{Name}.html
Arc, Mutex, RwLock
std/sync/struct.{Name}.html
Rc, Weak
std/rc/struct.{Name}.html
RefCell, Cell
std/cell/struct.{Name}.html
Box
std/boxed/struct.Box.html
Vec
std/vec/struct.Vec.html
String
std/string/struct.String.html
Output Format:
## std::{path}::{Name}
**Signature:**
{signature}
**Description:**
{description}
**Examples:**
{example_code}
Third-Party Crate Docs (tokio, serde, etc.)
- Construct URL: "[https://docs.rs/{crate}/latest/{crate}/{path}](https://docs.rs/%7Bcrate%7D/latest/%7Bcrate%7D/%7Bpath%7D)"
- agent-browser CLI (or WebFetch fallback):
- open
- get text ".docblock"
- close
- Parse and format output
Output Format:
## {crate}::{path}
**Signature:**
{signature}
**Description:**
{description}
**Examples:**
{example_code}
Clippy Lints
- agent-browser CLI (or WebFetch fallback):
- open "[https://rust-lang.github.io/rust-clippy/stable/](https://rust-lang.github.io/rust-clippy/stable/)"
- search for lint name in page
- get text ".lint-doc" for matching lint
- close
- Parse and format output
Output Format:
## Clippy Lint: {lint_name}
**Level:** {warn|deny|allow}
**Category:** {category}
**Description:**
{what_it_checks}
**Example (Bad):**
{bad_code}
**Example (Good):**
{good_code}
---
Tool Chain Priority
Both modes use the same tool chain order:
- actionbook MCP - Get pre-computed selectors first
- mcp__actionbook__search_actions("site_name") → get action ID
- mcp__actionbook__get_action_by_id(id) → get URL + selectors
- agent-browser CLI - Primary execution tool
bash
agent-browser open <url>
agent-browser get text <selector_from_actionbook>
agent-browser close
- **WebFetch** - Last resort only if agent-browser unavailable
### Fallback Principle (CRITICAL)
actionbook → agent-browser → WebFetch (only if agent-browser unavailable)