Design reusable, composable, well-typed UI components with clear prop contracts, sensible defaults, controlled/uncontrolled patterns, accessibility built in, and minimal coupling; use when creating a new shared component, refactoring a bloated or prop-heavy component, building a design-system primitive, or when users mention component API, props, composition, variants, or reusability.