This is your go-to when the borrow checker is yelling at you about E0596, E0499, or E0502. Instead of just slapping `mut` everywhere or reaching for RefCell, it walks you through the actual design question: does this data really need to change, and who should control that mutation? The decision trees are solid, like mapping from "need mutable access from &self" straight to Cell vs RefCell based on Copy, or choosing between Rc<RefCell<T>> and Arc<Mutex<T>> based on threading. The anti-patterns section alone will save you from runtime panics. Honestly, this reframes mutability errors from compiler complaints into architecture decisions, which is the right way to think about Rust's ownership model anyway.
npx skills add https://github.com/actionbook/rust-skills --skill m03-mutability