What problem does it solve? Writing correct async Rust with Tokio requires knowing which synchronization primitive, channel type, and spawning strategy fits each scenario, and mistakes like blocking the runtime or holding a std::sync::Mutex across .await cause deadlocks and data loss that are hard to debug. ## Core Features & Use Cases - Pattern and Anti-Pattern Guidance: Enforces bounded channels, spawn_blocking for blocking work, JoinSet for task groups, and CancellationToken for shutdown while flagging common mistakes like unbounded channels and non-cancel-safe futures in select!. - Module and Sync Reference: Provides a decision table for mpsc, oneshot, broadcast, and watch channels plus comparisons of std::sync::Mutex vs tokio::sync::Mutex, RwLock, Semaphore, Notify, and Barrier. - Use Case: When building a TCP server that must shut down cleanly, the Skill guides you to combine a watch channel or CancellationToken with a biased select! loop so shutdown signals are checked before new work. ## Quick Start Review my Tokio-based Rust code and fix any async anti-patterns such as blocking calls or unbounded channels.