Component API and Composition
Design reusable component contracts with semantic typed APIs, slots, defaults, events, extension points, and controlled complexity.
SKILL.mdskills/frontend/design/component-api-composition/SKILL.md
GitHubComponent API and Composition
Purpose
Create components that are easy to adopt correctly and hard to misuse without exposing implementation details.
When to Use
- A reusable component has growing booleans, overrides, variants, or copied markup.
- A component family needs stable composition, theming, and event contracts.
Do
- Define one responsibility, use and non-use cases, typed defaults, variants, slots, domain events, and state ownership.
- Prefer discriminated unions over interacting booleans and public extension points over private DOM selectors.
- Keep accessibility complete in the default path and semantic in API names.
Do Not
- Do not mirror all HTML/CSS properties, emit vague DOM events, accept arbitrary templates, or create mega-components.
Review Checklist
- Basic use needs minimal configuration and invalid combinations are blocked.
- API remains coherent across state and responsive variants.
- Consumers need no private DOM targets or repeated ARIA expertise.
Expected Output
- Responsibility, typed API, composition, and event contract.
- Theming and extension policy.
- Migration examples and validation scope.