Answers from the documentation; checking which model is on duty
Hi - I answer from the OpenSmartRoute documentation: routing, the API, plans and quotas, self-hosting. Ask away, or open a support ticket if you need a person.
Grounded in the docs - follow a source before acting on it.
domain-web - Skill - OpenSmartRoute
Skillv1.0.0
domain-web
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…
Imported from actionbook/rust-skills (skills/domain-web/SKILL.md) via skills.sh. Install upstream with npx skills add actionbook/rust-skills --skill domain-web. Copyright stays with the author.
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<T>, Arc<RwLock<T>> 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<RwLock<T>> 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<AppState>
Code Pattern: Axum Handler
async fn handler( State(db): State<Arc<DbPool>>, Json(payload): Json<CreateUser>,) -> Result<Json<User>, AppError> { let user = db.create_user(&payload).await?; Ok(Json(user))}// Error handlingimpl 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<RwLock>
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
Installed into a catalogue, chosen by a router
Install domain-web and it becomes one more candidate the router can pick - when it fits.
A listing is a routing target with a manifest: what it does, which domains it covers, what it costs and who publishes it. Once installed it sits beside your own models and tools, is scored like any other candidate for each request, and shows up in the trace when it wins. Ratings come from workspaces that installed it, one per account.
When a provider is down or over quota the request moves on; the trace says it did.
Use it
Copy one of these into your project. Installing also returns the manifest and these snippets.
# after Install: the listing is in your workspace's routing pool - a plan picks it for its slotcurl-s-X POST https://osr-api.kindrock-caaab1a2.centralindia.azurecontainerapps.io/api/v1/route -H 'Authorization: Bearer $OSR_API_KEY' -H 'Content-Type: application/json' -d '{"text": "...", "plan": true}'
Manifest
An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.
actionbook-rust-skills-domain-web.ocm.jsonjson
{
"ocm": "1",
"id": "actionbook-rust-skills-domain-web",
"kind": "skill",
"name": "domain-web",
"description": "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 设计, 中间件, 路由",
"publisher": "actionbook",
"version": "1.0.0",
"capabilities": {
"domains": [
"coding",
"observability"
],
"tags": [
"skill-md",
"skills-sh"
],
"languages": [
"en"
]
},
"quality_prior": 0.6,
"examples": [
"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 设计, 中间件, 路由"
],
"primary": false,
"metadata": {
"source": {
"provider": "skills.sh",
"repository": "https://github.com/actionbook/rust-skills",
"path": "skills/domain-web/SKILL.md",
"ref": "HEAD",
"url": "https://www.skills.sh/actionbook/rust-skills/domain-web",
"key": "actionbook/rust-skills/skills/domain-web/SKILL.md"
},
"applies_to": [
"**/Cargo.toml"
]
},
"instructions": "# Web Domain\n\n> **Layer 3: Domain Constraints**\n\n## Domain Constraints → Design Implications\n\n| Domain Rule | Design Constraint | Rust Implication |\n|-------------|-------------------|------------------|\n| Stateless HTTP | No request-local globals | State in extractors |\n| Concurrency | Handle many connections | Async, Send + Sync |\n| Latency SLA | Fast response | Efficient ownership |\n| Security | Input validation | Type-safe extractors |\n| Observability | Request tracing | tracing + tower layers |\n\n---\n\n## Critical Constraints\n\n### Async by Default\n\n```\nRULE: Web handlers must not block\nWHY:",
"cost": {
"context_tokens": 940
}
}
Fetch it by URL: GET /api/v1/registry/actionbook-rust-skills-domain-web/manifest?version=1.0.0
Reviews
Star ratings from people who tried it. One review per account; edit yours any time.
No reviews yet. Install it, try it, and be the first to rate it.