--- name: component-engineering description: |- Apply the formal standard for React component engineering focusing on accessibility, composition, and styling. Use for building professional, composable React artifacts. Use proactively when creating or reviewing React components. Examples: - user: "/component-create Button trigger" → build accessible button with asChild and keyboard map - user: "/component-review src/components/Input.tsx" → audit for accessibility and composition compliance - user: "Build a responsive slider" → select taxonomy type and implement with data attributes - user: "Review my layout component" → check for monolithic patterns vs composition --- # Component Engineering Specification This skill embodies the formal standard for building professional, accessible, and composable React artifacts. You MUST read these reference files to perform your duties: - **Architecture**: `composition.md` - asChild, Taxonomy, Composition. - **Accessibility**: `accessibility.md` - Keyboard maps, ARIA, Focus management. - **Styling**: `styling.md` - `cn` utility, Data attributes, CVA, Design tokens. ### /component-review [file] Strictly audit the file against the specification pillars. 1. You MUST read all reference files in the `references/` directory before proceeding. 2. Classify the artifact using `taxonomy.md`. 3. Evaluate **Accessibility**: You MUST check keyboard support and semantic HTML against `accessibility.md`. 4. Evaluate **Architecture**: You MUST check for monolithic patterns vs composition against `composition.md`. 5. Evaluate **Styling**: Look for `data-slot` usage and prop spreading against `styling.md`. ### /component-create [name] [intent] Build a new artifact following the "Architecture First" workflow. 1. You MUST read the relevant `references/*.md` files to select the correct patterns. 2. Choose the **Taxonomy** type. 3. Select the base **Semantic Element** or **Headless Primitive**. 4. You MUST implement the **Keyboard Map**. 5. You MUST apply **asChild** support if the component is an activator/trigger. 6. You MUST expose **Data Attributes** (`data-state`, `data-slot`). 7. Use the `cn` utility for class merging.