rocket

Rocket Core Knowledge

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "rocket" with this command: npx skills add claude-dev-suite/claude-dev-suite/claude-dev-suite-claude-dev-suite-rocket

Rocket Core Knowledge

Full Reference: See advanced.md for custom guards (authentication, API key), fairings (CORS, timing), database state, error catchers, and testing patterns.

Deep Knowledge: Use mcp__documentation__fetch_docs with technology: rocket for comprehensive documentation.

Basic Setup

Cargo.toml

[dependencies] rocket = { version = "0.5", features = ["json"] } serde = { version = "1", features = ["derive"] } serde_json = "1" tokio = { version = "1", features = ["full"] }

#[macro_use] extern crate rocket;

#[get("/")] fn index() -> &'static str { "Hello, World!" }

#[launch] fn rocket() -> _ { rocket::build().mount("/", routes![index]) }

Routing

#[get("/users/<id>")] fn get_user(id: u32) -> String { format!("User {}", id) }

#[post("/users", data = "<user>")] fn create_user(user: Json<CreateUser>) -> Json<User> { Json(User::from(user.into_inner())) }

#[get("/files/<path..>")] fn get_file(path: PathBuf) -> Option<NamedFile> { NamedFile::open(Path::new("static/").join(path)).ok() }

// Query parameters #[derive(FromForm)] struct Pagination { page: Option<u32>, per_page: Option<u32> }

#[get("/users?<pagination..>")] fn list_users(pagination: Pagination) -> Json<Vec<User>> { let page = pagination.page.unwrap_or(1); Json(fetch_users(page, pagination.per_page.unwrap_or(20))) }

// Mounting #[launch] fn rocket() -> _ { rocket::build() .mount("/", routes![index]) .mount("/api/v1", routes![list_users, get_user, create_user]) }

Request Guards

// JSON body #[post("/users", data = "<user>")] fn create_user(user: Json<CreateUser>) -> Json<User> { Json(User::from(user.into_inner())) }

// Form data #[post("/login", data = "<login>")] fn login(login: Form<LoginForm>) -> String { format!("Welcome, {}", login.username) }

// Cookies #[get("/session")] fn session(cookies: &CookieJar<'_>) -> Option<String> { cookies.get("session_id").map(|c| c.value().to_string()) }

State Management

use std::sync::atomic::{AtomicU64, Ordering};

struct HitCount(AtomicU64);

#[get("/count")] fn count(hit_count: &State<HitCount>) -> String { let count = hit_count.0.fetch_add(1, Ordering::Relaxed); format!("Hits: {}", count) }

#[launch] fn rocket() -> _ { rocket::build() .manage(HitCount(AtomicU64::new(0))) .mount("/", routes![count]) }

Fairings (Middleware)

use rocket::fairing::AdHoc;

#[launch] fn rocket() -> _ { rocket::build() .attach(AdHoc::on_liftoff("Liftoff", |_| Box::pin(async { println!("Rocket has launched!"); }))) }

When NOT to Use This Skill

  • Axum projects - Axum integrates better with Tower ecosystem

  • Actix-web projects - Actix has more performance optimizations

  • Stable Rust requirement - Rocket requires nightly (though v0.5 works on stable)

Anti-Patterns

Anti-Pattern Why It's Bad Solution

Using Outcome::Forward everywhere Routes become hard to trace Use specific error types

Not using request guards Repetitive validation code Create custom FromRequest guards

Mutable state without sync primitives Data races Use Mutex or RwLock with State

No database connection pooling Resource exhaustion Use rocket_db_pools

Hardcoded secrets in Rocket.toml Security risk Use environment variables

Quick Troubleshooting

Problem Diagnosis Fix

"Use of unstable library feature" Wrong Rust version Install nightly or use Rocket 0.5+

Route not matching Rank conflict Specify rank attribute or reorder routes

Guard returns error Validation failed Check guard implementation logic

Database error on startup Wrong connection string Verify Rocket.toml database config

CORS issues No fairing Add CORS fairing with proper config

Production Checklist

  • Rocket.toml configured for production

  • CORS fairing attached

  • Custom error catchers registered

  • Request guards for authentication

  • Database pool configured

  • Health/readiness endpoints

  • Secret key set for release

Reference Documentation

  • Guards

  • Fairings

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

cron-scheduling

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

token-optimization

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

webrtc

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

react-19

No summary provided by upstream source.

Repository SourceNeeds Review