What problem does it solve? Public APIs are easy to add but hard to remove, and speculative generalization leads to unused, undeletable surface area. This Skill provides judgment criteria for deciding whether an interface should exist and how to design it so misuse is caught at compile time rather than in production. ## Core Features & Use Cases - Necessity Judgment: Decides whether a new public method or data structure is justified based on the number of real callers, blocking speculative generalization. - Type-Safe Design Patterns: Shows how to make illegal states unrepresentable using branded types, discriminated unions, and named parameter objects in TypeScript. - Error and Evolution Rules: Defines when errors must be distinguishable by callers and prescribes a four-step migration path (add new, coexist, migrate, remove old) for breaking changes. - Use Case: When adding a public method to a shared service like a session manager, use this Skill to check whether the single internal caller should instead receive a private capability closure at construction time. ## Quick Start Ask the AI to review your proposed public interface or new module method using the api-design skill to check necessity, parameter design, and error distinguishability.