rust-learner
npx skills add https://github.com/zhanghandong/rust-skills --skill rust-learner
Agent 安装分布
Skill 文档
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:**
```rust
{signature}
Description: {description}
Examples:
{example_code}
### Third-Party Crate Docs (tokio, serde, etc.)
- Construct URL: “https://docs.rs/{crate}/latest/{crate}/{path}“
- agent-browser CLI (or WebFetch fallback):
- open
- get text “.docblock”
- close
- Parse and format output
**Output Format:**
```markdown
## {crate}::{path}
**Signature:**
```rust
{signature}
Description: {description}
Examples:
{example_code}
### Clippy Lints
- agent-browser CLI (or WebFetch fallback):
- open “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:**
```markdown
## Clippy Lint: {lint_name}
**Level:** {warn|deny|allow}
**Category:** {category}
**Description:**
{what_it_checks}
**Example (Bad):**
```rust
{bad_code}
Example (Good):
{good_code}
---
## Tool Chain Priority
Both modes use the same tool chain order:
1. **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
2. **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)
DO NOT:
- Skip agent-browser because it’s slower
- Use WebFetch as primary when agent-browser is available
- Block on WebFetch without trying agent-browser first
Deprecated Patterns
| Deprecated | Use Instead | Reason |
|---|---|---|
| WebSearch for crate info | Task + agent or inline mode | Structured data |
| Direct WebFetch | actionbook + agent-browser | Pre-computed selectors |
| Guessing version numbers | Always fetch from source | Prevents misinformation |
Error Handling
| Error | Cause | Solution |
|---|---|---|
| Agent file not found | Skills-only install | Use inline mode |
| actionbook unavailable | MCP not configured | Fall back to WebFetch |
| agent-browser not found | CLI not installed | Fall back to WebFetch |
| Agent timeout | Site slow/down | Retry or inform user |
| Empty results | Selector mismatch | Report and use WebFetch fallback |
Proactive Triggering
This skill triggers AUTOMATICALLY when:
- Any Rust crate name mentioned (tokio, serde, axum, sqlx, etc.)
- Questions about “latest”, “new”, “version”, “changelog”
- API documentation requests
- Dependency/feature questions
DO NOT use WebSearch for Rust crate info. Use agents or inline mode instead.