๐ŸŽฏ

domain-web

๐ŸŽฏSkill

from actionbook/rust-skills

VibeIndex|
What it does

Builds robust, performant web services in Rust with async handling, type-safe routing, middleware composition, and secure state management.

๐Ÿ“ฆ

Part of

actionbook/rust-skills(35 items)

domain-web

Installation

Quick InstallInstall with npx
npx skills add ZhangHanDong/rust-skills
CargoRun with Cargo (Rust)
cargo install cowork
git cloneClone repository
git clone https://github.com/ZhangHanDong/rust-skills.git
Add MarketplaceAdd marketplace to Claude Code
/plugin marketplace add ZhangHanDong/rust-skills
๐Ÿ“– Extracted from docs: actionbook/rust-skills
12Installs
-
AddedFeb 4, 2026

Skill Details

SKILL.md

"Use when building web services. Keywords: web server, HTTP, REST API, GraphQL, WebSocket, axum, actix, warp, rocket, tower, hyper, reqwest, middleware, router, handler, extractor, state management, authentication, authorization, JWT, session, cookie, CORS, rate limiting, web ๅผ€ๅ‘, HTTP ๆœๅŠก, API ่ฎพ่ฎก, ไธญ้—ดไปถ, ่ทฏ็”ฑ"

Overview

# Web Domain

> Layer 3: Domain Constraints

Domain Constraints โ†’ Design Implications

| Domain Rule | Design Constraint | Rust Implication |

|-------------|-------------------|------------------|

| Stateless HTTP | No request-local globals | State in extractors |

| Concurrency | Handle many connections | Async, Send + Sync |

| Latency SLA | Fast response | Efficient ownership |

| Security | Input validation | Type-safe extractors |

| Observability | Request tracing | tracing + tower layers |

---

Critical Constraints

Async by Default

```

RULE: Web handlers must not block

WHY: Block one task = block many requests

RUST: async/await, spawn_blocking for CPU work

```

State Management

```

RULE: Shared state must be thread-safe

WHY: Handlers run on any thread

RUST: Arc, Arc> for mutable

```

Request Lifecycle

```

RULE: Resources live only for request duration

WHY: Memory management, no leaks

RUST: Extractors, proper ownership

```

---

Trace Down โ†“

From constraints to design (Layer 2):

```

"Need shared application state"

โ†“ m07-concurrency: Use Arc for thread-safe sharing

โ†“ m02-resource: Arc> for mutable state

"Need request validation"

โ†“ m05-type-driven: Validated extractors

โ†“ m06-error-handling: IntoResponse for errors

"Need middleware stack"

โ†“ m12-lifecycle: Tower layers

โ†“ m04-zero-cost: Trait-based composition

```

---

Framework Comparison

| Framework | Style | Best For |

|-----------|-------|----------|

| axum | Functional, tower | Modern APIs |

| actix-web | Actor-based | High performance |

| warp | Filter composition | Composable APIs |

| rocket | Macro-driven | Rapid development |

Key Crates

| Purpose | Crate |

|---------|-------|

| HTTP server | axum, actix-web |

| HTTP client | reqwest |

| JSON | serde_json |

| Auth/JWT | jsonwebtoken |

| Session | tower-sessions |

| Database | sqlx, diesel |

| Middleware | tower |

Design Patterns

| Pattern | Purpose | Implementation |

|---------|---------|----------------|

| Extractors | Request parsing | State(db), Json(payload) |

| Error response | Unified errors | impl IntoResponse |

| Middleware | Cross-cutting | Tower layers |

| Shared state | App config | Arc |

Code Pattern: Axum Handler

```rust

async fn handler(

State(db): State>,

Json(payload): Json,

) -> Result, AppError> {

let user = db.create_user(&payload).await?;

Ok(Json(user))

}

// Error handling

impl IntoResponse for AppError {

fn into_response(self) -> Response {

let (status, message) = match self {

Self::NotFound => (StatusCode::NOT_FOUND, "Not found"),

Self::Internal(_) => (StatusCode::INTERNAL_SERVER_ERROR, "Internal error"),

};

(status, Json(json!({"error": message}))).into_response()

}

}

```

---

Common Mistakes

| Mistake | Domain Violation | Fix |

|---------|-----------------|-----|

| Blocking in handler | Latency spike | spawn_blocking |

| Rc in state | Not Send + Sync | Use Arc |

| No validation | Security risk | Type-safe extractors |

| No error response | Bad UX | IntoResponse impl |

---

Trace to Layer 1

| Constraint | Layer 2 Pattern | Layer 1 Implementation |

|------------|-----------------|------------------------|

| Async handlers | Async/await | tokio runtime |

| Thread-safe state | Shared state | Arc, Arc> |

| Request lifecycle | Extractors | Ownership via From |

| Middleware | Tower layers | Trait-based composition |

---

Related Skills

| When | See |

|------|-----|

| Async patterns | m07-concurrency |

| State management | m02-resource |

| Error handling | m06-error-handling |

| Middleware design | m12-lifecycle |

More from this repository10

๐Ÿช
actionbook-rust-skills๐ŸชMarketplace

Comprehensive Rust development assistant with meta-question routing, coding guidelines, version queries, and ecosystem support

๐ŸŽฏ
coding-guidelines๐ŸŽฏSkill

Provides comprehensive Rust coding guidelines covering naming conventions, best practices, error handling, memory management, concurrency, and code style recommendations.

๐ŸŽฏ
rust-refactor-helper๐ŸŽฏSkill

Performs safe Rust refactoring by analyzing symbol references, dependencies, and potential impacts using Language Server Protocol (LSP) operations.

๐ŸŽฏ
m09-domain๐ŸŽฏSkill

Guides domain modeling in Rust by helping identify entities, value objects, aggregates, and their ownership patterns with domain-driven design principles.

๐ŸŽฏ
m05-type-driven๐ŸŽฏSkill

Enforces compile-time type safety by preventing invalid states through type-level design techniques like newtypes, type states, and phantom types.

๐ŸŽฏ
rust-learner๐ŸŽฏSkill

Retrieves and provides comprehensive Rust and crate information, including versions, features, documentation, and changelogs from authoritative sources.

๐ŸŽฏ
m02-resource๐ŸŽฏSkill

Guides developers in selecting the right smart pointer and resource management strategy based on ownership, thread safety, and design constraints.

๐ŸŽฏ
m11-ecosystem๐ŸŽฏSkill

Guides Rust developers in selecting, integrating, and managing ecosystem dependencies with best practices and strategic decision-making.

๐ŸŽฏ
rust-trait-explorer๐ŸŽฏSkill

Explores Rust trait implementations, revealing which types implement specific traits and their implementation details using LSP.

๐ŸŽฏ
rust-call-graph๐ŸŽฏSkill

Generates and visualizes Rust function call graphs using LSP, revealing function relationships and call hierarchies.