plugins/rust-expert/skills/rust-ecosystem-crates/SKILL.md
Use when choosing crates for a Rust project — serialization, CLI, async runtime, web, database, HTTP client, error handling, observability. Provides a domain→crate decision map of the de-facto 2026 standards, with selection criteria. Do NOT use for API usage details of a chosen crate (load the matching domain skill, or verify via fuse-browser fast-path on docs.rs/crates.io → Context7 → Exa).
npx skillsauth add fusengine/agents rust-ecosystem-cratesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Before ANY crate selection, use TeamCreate to spawn 3 agents:
Cargo.toml to match established choicesAfter implementation, run fuse-ai-pilot:sniper for validation.
| Domain | De-facto standard (2026) | Reach for it when |
|--------|--------------------------|-------------------|
| Serialization | serde (+ serde_json) | Any (de)serialization; derive Serialize/Deserialize |
| CLI parsing | clap (derive API) | Argument parsing, subcommands, help generation |
| Async runtime | tokio | Almost all async I/O; the ecosystem default |
| Web framework | axum | HTTP servers on tokio + tower middleware |
| HTTP client | reqwest | Outbound HTTP, JSON, TLS |
| Database | sqlx / sea-orm / diesel | See db-and-async.md for the choice |
| Error (libraries) | thiserror | Typed error enums in a library's public API |
| Error (apps) | anyhow | Ergonomic Result with context in binaries |
| Observability | tracing (+ tracing-subscriber) | Structured, async-aware logs and spans |
Cargo.toml - versions move faster than this skill. Confirm on crates.io or via Context7; never paste a remembered patch number.serde 2.0 is NOT stable - it is under discussion. Depend on serde = "1" today; do not write 2.0.thiserror for libraries, anyhow for applications - never expose anyhow::Error in a library's public API.tokio; mixing runtimes causes executor conflicts.Cargo.toml before introducing a competing crate.Cargo.toml
├── [dependencies]
│ ├── serde / serde_json # data
│ ├── tokio (features = [...]) # runtime
│ ├── axum / reqwest # web in/out
│ ├── sqlx | sea-orm | diesel # persistence (pick one)
│ ├── thiserror | anyhow # errors (lib vs app)
│ └── tracing / tracing-subscriber
→ See cargo-toml-stack.md for a complete manifest
| Topic | Reference | When to Consult | |-------|-----------|-----------------| | Decision map | crate-decision-map.md | Choosing per domain, error strategy, observability | | DB & async | db-and-async.md | sqlx vs sea-orm vs diesel, tokio + axum wiring |
| Template | When to Use | |----------|-------------| | cargo-toml-stack.md | Scaffolding a web-service manifest |
// Library: typed, matchable errors.
#[derive(thiserror::Error, Debug)]
pub enum StoreError {
#[error("not found: {0}")]
NotFound(String),
}
// Application: contextual, any error.
use anyhow::Context;
let cfg = std::fs::read_to_string(path).context("reading config")?;
→ See crate-decision-map.md for the full rationale
tokio and enable only the features you usethiserror in libraries, anyhow in binariesserde = "2" — it is not stableanyhow::Error from a library APItesting
Copy self-audit and ban-lists — filler verbs/hype adjectives, slop placeholder names, fake-precise numbers, Title Case headlines, humor in error copy ('Oops!'), em-dash crutch, one copy register per page.
development
Logged-in web apps — dashboards, auth flows, settings, onboarding, data tables, command palettes, modals, toasts. Register `product`: density and glance-speed over marketing polish, no hero/CTA-tricks, every data surface covers empty/loading/error explicitly, tables and dataviz follow preattentive-processing rules.
development
Marketing sites, landing pages, campaign pages — register `brand` (design IS the product). Structure comes from the register's POV + a macrostructure pick, never from copying an inspiration site's section flow. Hero discipline, deviated section order, asymmetric grids, and a silhouette lookalike-test gate before ship.
development
Token-strategy core — OKLCH color rules, neutral tinting, accent-commitment levels, type scale, 8pt spacing grid, touch targets, and the canonical output format of design-system.md (the file the harness gates on). This is routing step 1 of design-method/SKILL.md — read it before design-web/design-webapp/design-ios/design-android, before picking or auditing a single color/type/spacing value.