What problem does it solve? Type-level assertions in TypeScript test suites often silently pass without proving anything: a @ts-expect-error can be satisfied by the wrong error, a union initializer narrows before the assertion runs, and an annotated generic export can be wider than its inferred type. This Skill defines where type assertions belong, what is worth asserting, and how to avoid the traps that make them vacuous. ## Core Features & Use Cases - Placement rules: Keep expectTypeOf assertions in the same Vitest suite as the runtime tests for the surface they check, so a signature change breaks both halves in one place. - Assertion patterns: Assert that generics do not widen, that discriminated unions narrow on their discriminant, that invalid inputs fail to compile, and that as const satisfies literal lists stay in step with a union. - Trap avoidance: Handle the three failure modes — @ts-expect-error inside it() still executing, union initializers narrowing before assertion, and @ts-expect-error being satisfied by the wrong error. - Use Case: When adding a new member to the LlmErrorCode union, write a type test comparing the ALL_CODES manifest against the union so a forgotten case fails at compile time. ## Quick Start Ask the AI to add a type test for a changed exported function signature using expectTypeOf in the existing test suite for that module.