Pushes you to encode invariants in the type system before reaching for runtime validation. When you're about to add an is_valid flag or validate in every function, this asks whether the compiler could catch it instead. Covers newtypes for primitive obsession, type state patterns for state machines, PhantomData for variance markers, and builder patterns for gradual construction. The "Error to Design Question" table is the real gem here, reframing common runtime checks as type design opportunities. Honestly most useful when you catch yourself writing the same validation logic in multiple places. Traces up to domain modeling when unclear what types to create, traces down to concrete patterns like sealed traits and zero-sized types.
npx skills add https://github.com/actionbook/rust-skills --skill m05-type-driven