What problem does it solve? Tests that break on every refactor and mocks that couple tests to internal implementation details erode trust in the test suite. This Skill provides design norms, based on Vladimir Khorikov's unit testing principles, for writing robust tests that verify observable behavior instead of implementation details. ## Core Features & Use Cases - Fragility Avoidance: Step-by-step procedure to move assertions from implementation details (call counts, call order, private methods) to observable behavior (final output, persisted state), with grep-based completion checks. - Mock Overuse Avoidance: A three-way dependency classification (unmanaged out-of-process, managed out-of-process, in-process collaborators) that dictates when mocks, real instances, or fakes are appropriate, and whether to use output-based or state-based verification. - Use Case: Your vitest suite turns red every time you refactor a helper function. Use this Skill to identify assertions coupled to internal call sequences, rewrite them against final outputs, and reclassify each dependency so mocks are reserved for unmanaged out-of-process communication like email sending. ## Quick Start Review my test file and rewrite any fragile assertions that depend on internal call counts or mocked in-process collaborators so they verify observable behavior instead.