Ui components
Build composable UI with loading/error/empty states, Reicon icons by default, mobile-first layout, and clean composition. Use whenever implementing or modifying pages, screens, components, forms, dialogs, tables, or navigation — including "buat component", "bikin form", "layout dashboard". Must report Conventions check (tokens/icons/states) before done — see compliance-gates.From its SKILL.md
npx -y skills add sukirman1901/frontend-expert --skill ui-componentsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 10 stars10 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
3.5 KB, as published. Nobody here has run it
UI Components
Overview
Implement production UI with composition over configuration, clear state handling, and components under 200 lines.
When to Use
- Building or modifying components, pages, layouts
- Wiring interactive UI with
/ui - Refactoring overgrown or prop-heavy components
Workflow
-
Structure
- Prefer composition over configuration
- Separate data fetching from presentation
- Colocate component + test + styles when practical
- Keep files under 200 lines (split if larger)
-
State (see also
references/architecture.md)- Local (
useState) → component UI - Lifted → 2–3 siblings
- Context → theme, auth, locale
- URL → filters, pagination
- Server state (React Query/SWR) → remote data
- Avoid prop drilling deeper than 3 levels
- Local (
-
Required UI states
- Loading
- Error
- Empty
- Default / success
-
Responsive — MUST load
responsive-uifor layout UI- Mobile-first; verify 320 / 768 / 1024 / 1440
- No fixed widths that break small screens; adapt tables/nav
-
Icons (default on — do not omit)
- MUST use Reicon for nav, toolbars, empty states, and icon buttons unless the project already standardizes another library
- Vanilla HTML/CSS/JS: add CDN
https://unpkg.com/reicon/cdn/reicon.min.js+<re-icon icon="kebab-name" size="20"> - React:
reicon-react; Vue/Svelte: matching package — seereferences/reicon-icons.md - Prefer
currentColor+ token text classes; Outline default, Filled for emphasis - Icon-only controls need an accessible name
- Text-only UI only with an explicit waiver in the Conventions check
-
Selects / filters (product UI)
- Prefer custom select / combobox / listbox styled with tokens — not bare OS
<select>chrome for dashboard filters and toolbars - Trigger: label + value + caret; generous end padding / gap so the chevron is not flush to the right edge
- Menu: token surface, hover/selected states, Escape + outside-click close; keyboard path required
- Native
<select>only with waiver (e.g. native mobile OS picker required) — note in Conventions
- Prefer custom select / combobox / listbox styled with tokens — not bare OS
-
Tokens + slop
- Use
design-tokensfor all visual values - Finish with
anti-ai-slopscan
- Use
-
Before DONE
- Output Conventions check from
references/compliance-gates.md(tokens, icons, states, responsive, webgl n/a, …)
- Output Conventions check from
Checklist
- Composition preferred over giant prop APIs
- Loading / error / empty handled
- Reicon (or project icon lib) actually in the markup — not forgotten
- Interactive elements keyboard accessible
- Filters/selects are custom (or waived) — caret not cramped
- Responsive: 320/768/1024/1440 + Conventions line
- Component ≤ 200 lines or split
- Anti-slop scan clean
- Conventions check reported
Depth
Good/bad examples: references/component-patterns.md.
Responsive: responsive-ui + references/responsive.md.
Icons: references/reicon-icons.md.
Ship gates: references/compliance-gates.md.
State & org: references/architecture.md.