What problem does it solve? Rust projects often accumulate inconsistent test doubles—hand-written fakes, ad-hoc stubs, and mocks mixed together—making tests hard to maintain and review. This Skill enforces a single convention: default to mockall-generated mocks for trait dependencies, with clearly documented exceptions for hand-written fakes. ## Core Features & Use Cases - Mock generation guidance: Shows how to apply #[cfg_attr(test, automock)] to traits (kept above #[async_trait]) and mock! for foreign traits, keeping mocks out of release builds. - Expectation patterns: Demonstrates expect_<method>() with .with(...), .returning(...), and .times(...) so call counts and arguments are verified automatically on drop. - Documented exceptions: Defines when hand-written fakes are acceptable—behavioural in-memory adapters, production-shipped fakes, and pure functions—each requiring a justification comment. - Use Case: When writing a unit test for a service that depends on a repository trait, generate a MockCatalogSearchRepo, set expectations for the exact call, and inject it via the existing Arc<dyn Repo> seam instead of writing a new fake struct. ## Quick Start Ask the assistant to write a unit test for a Rust module with a trait dependency using mockall mocks instead of a hand-written fake.