
Rust Router
- 710 installs
- 1.3k repo stars
- Updated May 24, 2026
- zhanghandong/rust-skills
rust-router is a Claude Code skill that routes every Rust question through a structured cognitive framework instead of answering directly for developers who need systematic analysis of ownership, lifetime, async, and com
About
rust-router is a Claude Code skill from zhanghandong/rust-skills marked highest priority for all Rust questions including errors, design comparisons, and coding tasks. The skill intercepts queries about cargo, rustc, ownership, borrow checker errors, lifetime issues, async Send/Sync, tokio versus async-std comparisons, and compile error codes E0382, E0597, E0277, E0308, E0499, E0502, and E0596 before routing them through intent analysis and structured reasoning. Developers reach for rust-router when generic LLM answers produce incorrect lifetime fixes, wrong async runtime advice, or shallow trait bound explanations. The skill performs semantic intent analysis in English and Chinese, then applies domain-specific Rust cognitive patterns rather than jumping to code patches. rust-router acts as a meta-routing layer ensuring borrow checker, concurrency, and API design questions receive framework-guided answers consistent with Rust best practices.
- Triggers on all Rust, Cargo, rustc, compile errors, borrow checker, lifetime, ownership, async, and concurrency queries
- Meta-cognition framework forces Layer 3 (Domain Constraints), Layer 2 (Design Choices), and Layer 1 (Implementation) ana
- Optimized context handling with examples moved to sub-files in v2.0
- Highest priority routing for comparison, best-practice, error code (E0382, E0597 etc.), and intent-analysis prompts
- Guarantees consistent, high-quality Rust guidance across any project type
Rust Router by the numbers
- 710 all-time installs (skills.sh)
- +6 installs in the week ending Jul 28, 2026 (Skillselion tracking)
- Ranked #1,392 of 16,659 AI & Agent Building skills by installs in the Skillselion catalog
- Security screen: HIGH risk (skills.sh audit)
- Data as of Jul 28, 2026 (Skillselion catalog sync)
npx skills add https://github.com/zhanghandong/rust-skills --skill rust-routerAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 710 |
|---|---|
| repo stars | ★ 1.3k |
| Security audit | 2 / 3 scanners passed |
| Last updated | May 24, 2026 |
| Repository | zhanghandong/rust-skills ↗ |
How do you fix Rust borrow checker compile errors?
Intelligently route every Rust question through a structured cognitive framework instead of answering directly.
Who is it for?
Rust developers facing borrow checker errors, lifetime issues, or tokio versus async-std decisions who need structured analysis instead of shallow LLM patches.
Skip if: Non-Rust projects or simple Rust syntax questions where a direct answer without cognitive routing overhead is sufficient.
When should I use this skill?
Any Rust question involving compile errors, ownership, lifetimes, async, tokio, cargo, or best-practice comparisons triggers rust-router at highest priority.
What you get
Structured Rust analysis with framework-guided diagnosis and corrected ownership, lifetime, or async code
- structured Rust error diagnosis
- framework-guided code fixes
By the numbers
- Handles 7 Rust compile error codes: E0382, E0597, E0277, E0308, E0499, E0502, E0596
Files
---
Rust Question Router
Version: 2.0.0 | Last Updated: 2025-01-22
>
v2.0: Context optimized - detailed examples moved to sub-files
Meta-Cognition Framework
Core Principle
Don't answer directly. Trace through the cognitive layers first.
Layer 3: Domain Constraints (WHY)
├── Business rules, regulatory requirements
├── domain-fintech, domain-web, domain-cli, etc.
└── "Why is it designed this way?"
Layer 2: Design Choices (WHAT)
├── Architecture patterns, DDD concepts
├── m09-m15 skills
└── "What pattern should I use?"
Layer 1: Language Mechanics (HOW)
├── Ownership, borrowing, lifetimes, traits
├── m01-m07 skills
└── "How do I implement this in Rust?"Routing by Entry Point
| User Signal | Entry Layer | Direction | First Skill |
|---|---|---|---|
| E0xxx error | Layer 1 | Trace UP ↑ | m01-m07 |
| Compile error | Layer 1 | Trace UP ↑ | Error table below |
| "How to design..." | Layer 2 | Check L3, then DOWN ↓ | m09-domain |
| "Building [domain] app" | Layer 3 | Trace DOWN ↓ | domain-* |
| "Best practice..." | Layer 2 | Both directions | m09-m15 |
| Performance issue | Layer 1 → 2 | UP then DOWN | m10-performance |
CRITICAL: Dual-Skill Loading
When domain keywords are present, you MUST load BOTH skills:
| Domain Keywords | L1 Skill | L3 Skill |
|---|---|---|
| Web API, HTTP, axum, handler | m07-concurrency | domain-web |
| 交易, 支付, trading, payment | m01-ownership | domain-fintech |
| CLI, terminal, clap | m07-concurrency | domain-cli |
| kubernetes, grpc, microservice | m07-concurrency | domain-cloud-native |
| embedded, no_std, MCU | m02-resource | domain-embedded |
---
INSTRUCTIONS FOR CLAUDE
CRITICAL: Negotiation Protocol Trigger
BEFORE answering, check if negotiation is required:
| Query Contains | Action |
|---|---|
| "比较", "对比", "compare", "vs", "versus" | MUST use negotiation |
| "最佳实践", "best practice" | MUST use negotiation |
| Domain + error (e.g., "交易系统 E0382") | MUST use negotiation |
| Ambiguous scope (e.g., "tokio 性能") | SHOULD use negotiation |
When negotiation is required, include:
## Negotiation Analysis
**Query Type:** [Comparative | Cross-domain | Synthesis | Ambiguous]
**Negotiation:** Enabled
### Source: [Agent/Skill Name]
**Confidence:** HIGH | MEDIUM | LOW | UNCERTAIN
**Gaps:** [What's missing]
## Synthesized Answer
[Answer]
**Overall Confidence:** [Level]
**Disclosed Gaps:** [Gaps user should know]详细协议见: patterns/negotiation.md---
Default Project Settings
When creating new Rust projects or Cargo.toml files, ALWAYS use:
[package]
edition = "2024" # ALWAYS use latest stable edition
rust-version = "1.85"
[lints.rust]
unsafe_code = "warn"
[lints.clippy]
all = "warn"
pedantic = "warn"---
Layer 1 Skills (Language Mechanics)
| Pattern | Route To |
|---|---|
| move, borrow, lifetime, E0382, E0597 | m01-ownership |
| Box, Rc, Arc, RefCell, Cell | m02-resource |
| mut, interior mutability, E0499, E0502, E0596 | m03-mutability |
| generic, trait, inline, monomorphization | m04-zero-cost |
| type state, phantom, newtype | m05-type-driven |
| Result, Error, panic, ?, anyhow, thiserror | m06-error-handling |
| Send, Sync, thread, async, channel | m07-concurrency |
| unsafe, FFI, extern, raw pointer, transmute | unsafe-checker |
Layer 2 Skills (Design Choices)
| Pattern | Route To |
|---|---|
| domain model, business logic | m09-domain |
| performance, optimization, benchmark | m10-performance |
| integration, interop, bindings | m11-ecosystem |
| resource lifecycle, RAII, Drop | m12-lifecycle |
| domain error, recovery strategy | m13-domain-error |
| mental model, how to think | m14-mental-model |
| anti-pattern, common mistake, pitfall | m15-anti-pattern |
Layer 3 Skills (Domain Constraints)
| Domain Keywords | Route To |
|---|---|
| fintech, trading, decimal, currency | domain-fintech |
| ml, tensor, model, inference | domain-ml |
| kubernetes, docker, grpc, microservice | domain-cloud-native |
| embedded, sensor, mqtt, iot | domain-iot |
| web server, HTTP, REST, axum, actix | domain-web |
| CLI, command line, clap, terminal | domain-cli |
| no_std, microcontroller, firmware | domain-embedded |
---
Error Code Routing
| Error Code | Route To | Common Cause |
|---|---|---|
| E0382 | m01-ownership | Use of moved value |
| E0597 | m01-ownership | Lifetime too short |
| E0506 | m01-ownership | Cannot assign to borrowed |
| E0507 | m01-ownership | Cannot move out of borrowed |
| E0515 | m01-ownership | Return local reference |
| E0716 | m01-ownership | Temporary value dropped |
| E0106 | m01-ownership | Missing lifetime specifier |
| E0596 | m03-mutability | Cannot borrow as mutable |
| E0499 | m03-mutability | Multiple mutable borrows |
| E0502 | m03-mutability | Borrow conflict |
| E0277 | m04/m07 | Trait bound not satisfied |
| E0308 | m04-zero-cost | Type mismatch |
| E0599 | m04-zero-cost | No method found |
| E0038 | m04-zero-cost | Trait not object-safe |
| E0433 | m11-ecosystem | Cannot find crate/module |
---
Functional Routing Table
| Pattern | Route To | Action |
|---|---|---|
| latest version, what's new | rust-learner | Use agents |
| API, docs, documentation | docs-researcher | Use agent |
| code style, naming, clippy | coding-guidelines | Read skill |
| unsafe code, FFI | unsafe-checker | Read skill |
| code review | os-checker | See integrations/os-checker.md |
---
Priority Order
1. Identify cognitive layer (L1/L2/L3) 2. Load entry skill (m0x/m1x/domain) 3. Trace through layers (UP or DOWN) 4. Cross-reference skills as indicated in "Trace" sections 5. Answer with reasoning chain
Keyword Conflict Resolution
| Keyword | Resolution |
|---|---|
unsafe | unsafe-checker (more specific than m11) |
error | m06 for general, m13 for domain-specific |
RAII | m12 for design, m01 for implementation |
crate | rust-learner for version, m11 for integration |
tokio | tokio- for API, m07* for concepts |
Priority Hierarchy:
1. Error codes (E0xxx) → Direct lookup, highest priority
2. Negotiation triggers (compare, vs, best practice) → Enable negotiation
3. Domain keywords + error → Load BOTH domain + error skills
4. Specific crate keywords → Route to crate-specific skill if exists
5. General concept keywords → Route to meta-question skill---
Sub-Files Reference
| File | Content |
|---|---|
patterns/negotiation.md | Negotiation protocol details |
examples/workflow.md | Workflow examples |
integrations/os-checker.md | OS-Checker integration |
Workflow Examples
rust-router 的工作流程示例
Example 1: Error Code with Domain Context
User: "Why am I getting E0382 in my trading system?"
Analysis:
1. Entry: Layer 1 (E0382 = ownership/move error)
2. Load: m01-ownership skill
3. Context: "trading system" → domain-fintech
Trace UP ↑:
- E0382 in trading context
- Check domain-fintech: "immutable audit records"
- Finding: Trading data should be shared, not moved
Response:
"E0382 indicates a value was moved when still needed.
In a trading system (domain-fintech), transaction records
should be immutable and shareable for audit purposes.
Instead of cloning, consider:
- Arc<TradeRecord> for shared immutable access
- This aligns with financial audit requirements
See: m01-ownership (Trace Up section),
domain-fintech (Audit Requirements)"Example 2: Design Question
User: "How should I handle user authentication?"
1. Entry: Layer 2 (design question)
2. Trace UP to Layer 3: domain-web constraints
3. Load: domain-web skill (security, stateless HTTP)
4. Trace DOWN: m06-error-handling, m07-concurrency
5. Answer: JWT with proper error types, async handlersExample 3: Comparative Query
User: "Compare tokio and async-std"
1. Detect: "compare" → Enable negotiation
2. Load both runtime knowledge sources
3. Assess confidence for each
4. Synthesize with disclosed gaps
5. Answer: Structured comparison tableExample 4: Multi-Layer Trace
User: "My web API reports Rc cannot be sent between threads"
1. Entry: Layer 1 (Send/Sync error)
2. Load: m07-concurrency
3. Detect: "web API" → domain-web
4. Dual-skill loading:
- m07: Explain Send/Sync bounds
- domain-web: Web state management patterns
5. Answer: Use Arc instead of Rc, or move to thread-localExample 5: Intent Analysis Request
User: "Analyze this question: How do I share state in actix-web?"
Analysis Steps:
1. Extract Keywords: share, state, actix-web
2. Identify Entry Layer: Layer 1 (sharing = concurrency) + Layer 3 (actix-web = web)
3. Map to Skills: m07-concurrency, domain-web
4. Report:
- Layer 1: Concurrency (state sharing mechanisms)
- Layer 3: Web domain (HTTP handler patterns)
- Suggested trace: L1 → L3
5. Invoke: m07-concurrency first, then domain-webOS-Checker Integration
代码审查和安全审计工具集成
Available Commands
| Use Case | Command | Tools |
|---|---|---|
| Daily check | /rust-review | clippy |
| Security audit | /audit security | cargo audit, geiger |
| Unsafe audit | /audit safety | miri, rudra |
| Concurrency audit | /audit concurrency | lockbud |
| Full audit | /audit full | all os-checker tools |
When to Suggest OS-Checker
| User Intent | Suggest |
|---|---|
| Code review request | /rust-review |
| Security concerns | /audit security |
| Unsafe code review | /audit safety |
| Deadlock/race concerns | /audit concurrency |
| Pre-release check | /audit full |
Tool Descriptions
clippy
Standard Rust linter for code style and common mistakes.
cargo audit
Security vulnerability scanner for dependencies.
geiger
Counts unsafe code usage in dependencies.
miri
Interprets MIR to detect undefined behavior.
rudra
Memory safety bug detector.
lockbud
Deadlock and concurrency bug detector.
Integration Flow
User: "Review my unsafe code"
│
▼
Router detects: unsafe + review
│
├── Load: unsafe-checker skill (for manual review)
│
└── Suggest: `/audit safety` (for automated check)Negotiation Protocol
比较查询和跨领域问题的处理协议
When to Enable Negotiation
For complex queries requiring structured agent responses, enable negotiation mode.
| Query Pattern | Enable Negotiation | Reason |
|---|---|---|
| Single error code lookup | No | Direct answer |
| Single crate version | No | Direct lookup |
| "Compare X and Y" | Yes | Multi-faceted |
| Domain + error | Yes | Cross-layer context |
| "Best practices for..." | Yes | Requires synthesis |
| Ambiguous scope | Yes | Needs clarification |
| Multi-crate question | Yes | Multiple sources |
Negotiation Decision Flow
Query Received
│
▼
┌─────────────────────────────┐
│ Is query single-lookup? │
│ (version, error code, def) │
└─────────────────────────────┘
│
├── Yes → Direct dispatch (no negotiation)
│
▼ No
┌─────────────────────────────┐
│ Does query require: │
│ - Comparison? │
│ - Cross-domain context? │
│ - Synthesis/aggregation? │
│ - Multiple sources? │
└─────────────────────────────┘
│
├── Yes → Dispatch with negotiation: true
│
▼ No
┌─────────────────────────────┐
│ Is scope ambiguous? │
└─────────────────────────────┘
│
├── Yes → Dispatch with negotiation: true
│
▼ No
└── Direct dispatch (no negotiation)Negotiation Dispatch
When dispatching with negotiation:
1. Set `negotiation: true`
2. Include original query context
3. Expect structured response:
- Findings
- Confidence (HIGH/MEDIUM/LOW/UNCERTAIN)
- Gaps identified
- Context questions (if any)
4. Evaluate response against original intentOrchestrator Evaluation
After receiving negotiation response:
| Confidence | Intent Coverage | Action |
|---|---|---|
| HIGH | Complete | Synthesize answer |
| HIGH | Partial | May need supplementary query |
| MEDIUM | Complete | Accept with disclosed gaps |
| MEDIUM | Partial | Refine with context |
| LOW | Any | Refine or try alternative |
| UNCERTAIN | Any | Try alternative or escalate |
Refinement Loop
If response insufficient:
Round 1: Initial query
│
▼ (LOW confidence or gaps block intent)
Round 2: Refined query with:
- Answers to agent's context questions
- Narrowed scope
│
▼ (still insufficient)
Round 3: Final attempt with:
- Alternative agent/source
- Maximum context provided
│
▼ (still insufficient)
Synthesize best-effort answer with disclosed gapsIntegration with 3-Strike Rule
Negotiation follows the 3-Strike escalation:
Strike 1: Initial query returns LOW confidence
→ Refine with more context
Strike 2: Refined query still LOW
→ Try alternative agent/source
Strike 3: Still insufficient
→ Synthesize best-effort answer
→ Report gaps to user explicitlySee _meta/error-protocol.md for full escalation rules.
Negotiation Routing Examples
Example 1: No Negotiation Needed
Query: "What is tokio's latest version?"
Analysis: Single lookup
Action: Direct dispatch to crate-researcherExample 2: Negotiation Required
Query: "Compare tokio and async-std for a web server"
Analysis: Comparative + domain context
Action: Dispatch with negotiation: true
Expected: Structured responses from both runtime lookups
Evaluation: Check if web-server specific data foundExample 3: Cross-Domain Negotiation
Query: "E0382 in my trading system"
Analysis: Error code + domain context
Action:
- Dispatch m01-ownership (standard - error is defined)
- Dispatch domain-fintech (negotiation: true - domain context)
Synthesis: Combine error explanation with domain-appropriate fixRelated Documents
_meta/negotiation-protocol.md- Full protocol specification_meta/negotiation-templates.md- Response templates_meta/error-protocol.md- 3-Strike escalationagents/_negotiation/response-format.md- Agent response format
Related skills
How it compares
Pick rust-router as the first skill for any Rust question requiring structured diagnosis; use language-agnostic debugging skills only after Rust-specific routing is unavailable.
FAQ
What Rust errors does rust-router handle?
rust-router handles ownership, borrow, lifetime, and trait errors including compile codes E0382, E0597, E0277, E0308, E0499, E0502, and E0596. The skill also routes tokio, async-std, Send, and Sync concurrency questions through structured analysis.
Why use rust-router instead of direct Rust answers?
rust-router applies intent analysis and a structured cognitive framework before answering, reducing incorrect lifetime fixes and shallow async advice. The skill has highest priority for all Rust questions including comparisons and best-practice queries.
Is Rust Router safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.