From hb
Front-loads UI construction decisions: component boundary, prop API, state placement, async data, UI states, responsive behavior, and accessibility by construction. For creating or refactoring components, pages, or design-system primitives.
How this skill is triggered — by the user, by Claude, or both
Slash command
/hb:frontend-ui-engineering [component or path][component or path]The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Decide **how to structure a UI unit before writing it**, so the choices your audits would otherwise catch late (accessibility, i18n, bundle cost, missing states) are made up front. This is the frontend counterpart to [`codebase-design`](../codebase-design/SKILL.md): treat a component as a **deep module** — a lot of behaviour behind a small prop surface.
Decide how to structure a UI unit before writing it, so the choices your audits would otherwise catch late (accessibility, i18n, bundle cost, missing states) are made up front. This is the frontend counterpart to codebase-design: treat a component as a deep module — a lot of behaviour behind a small prop surface.
It is a knowledge/decision skill, not a code generator. It resolves the design questions, then hands the actual implementation to tdd/build and verification to the audit skills. Framework-agnostic; examples in React.
Boundaries:
tdd / build — they implement; this decides the UI shape and hands off.codebase-design — that is generic module depth; this applies the lens to components (prop surface = public API).prototype — that explores throwaway directions; this is for code that stays.a11y-audit / i18n / perf-audit / visual-validate — they verify after; this builds it right up front. It references their standards, never re-copies their checklists.Name the unit and pick the emphasis:
| Kind | Emphasis |
|---|---|
| Design-system primitive (Button, Input) | prop API, variants via props, tokens, a11y contract |
| Composite component | composition, state placement, the required states |
| Page / route | data fetching boundary, layout, loading/error at the route |
| Refactor of existing UI | shrink prop surface, extract states, remove magic values |
Work through each; state the decision explicitly.
children/slots) over configuration. A growing set of boolean flags (isPrimary, isSmall, isLoading…) is a smell — reach for a variant/size union or composition instead.a11y-audit for the full WCAG pass.)i18n.)Apply the decisions. Keep the component shallow at its interface and hide implementation detail behind it. Delegate any non-trivial logic to tdd (red → green → refactor); this skill does not hand-write the whole component or its tests.
Do not consider the unit done until:
Then hand off: tdd for behavior tests (query by role/label), visual-validate for before/after in a real browser, and let review run the audits (a11y/i18n/perf) as the final gate.
tdd. This skill designs; it does not replace the builders.Excuses that skip the work, and the rebuttal:
| Excuse | Rebuttal |
|---|---|
| "I'll add the error/empty state later." | Later never comes and it ships half-built. States are part of the design pass, not a follow-up. |
| "A boolean prop is faster right now." | Three booleans is eight states, most untested. A variant union or composition is cheaper within a week. |
| "Hardcode the string, I'll translate later." | Retro-i18n means re-touching every component. Route it now — it's one import. |
| "ARIA will fix the accessibility." | Semantic HTML gives it for free; ARIA is the patch for when you couldn't. Reach for the element first. |
| "Fetch inside the component, it's simpler." | It couples render to network and blocks reuse/testing. Decide the fetch boundary deliberately. |
any/loose props at the component boundary.div/span with click handlers instead of a button/a.npx claudepluginhub helderberto/agent-skills --plugin hbGuides building production-quality UIs with component architecture, accessibility, and state management. Use when creating or modifying user-facing interfaces.
Builds production-quality user interfaces that avoid generic AI aesthetics. Use when creating or modifying components, implementing layouts, managing state, or fixing visual/UX issues.
Builds production-ready frontend components with accessible markup, sensible props, and defined states. Use when creating, refactoring, or designing component APIs.