Skip to the usage guide
frontend-ui-engineeringby Addy Osmani

Frontend UI Engineering Skill.

A Claude Code and Codex skill for UI design: builds production-quality, accessible, responsive user-facing UIs.

  • Web & UI
  • UI code
addyosmani/agent-skills · skills/frontend-ui-engineering/SKILL.mdSKILL.md
--- name: frontend-ui-engineering description: Builds production-quality, accessible, responsive user-facing UIs. Use when building or modifying interfaces and pages, creating components, implementing layouts, meeting WCAG accessibility requirements, managing state, or when the output needs to look and feel production-quality rather than AI-generated. --- ## When to Use ## Component Architecture ## State Management ## Design System Adherence ## Accessibility (WCAG 2.1 AA) ## Responsive Design
Front matter and section headings read from the upstream file on 2026-09-14 · 10,679 characters in full

01 What it does

What the frontend-ui-engineering Skill Does in Claude Code and Codex

Summary, workflow and outputs, all read from the skill's SKILL.md.

From the SKILL.mdRead 2026-09-14 · not a recorded run

In the Skill's Own Terms

Builds production-quality user interfaces that are accessible, performant, and visually polished. The skill focuses on creating UI that looks like it was built by a design-aware engineer at a top company — not like it was generated by an AI. It enforces real design system adherence, proper WCAG 2.1 AA accessibility, thoughtful interaction patterns, and avoids generic AI aesthetic tropes.

The skill covers component architecture with colocation, composition over configuration, state management ranging from local useState to global stores, responsive mobile-first design tested at specific breakpoints, keyboard navigation, ARIA labels, focus management, meaningful empty and error states, skeleton loading, and optimistic updates for perceived speed.

What it produces

  • Skeleton loading states with aria-busy and aria-label for content that is loading
  • Meaningful empty and error states with role="status", descriptive text, icons, and actionable next steps
See the example prompt ↗

How It Works

  1. 01
    Colocate Component Files

    Place the component implementation, tests, stories, custom hooks, and types together in a single folder named after the component.

  2. 02
    Compose Components, Don't Configure Them

    Build composable component APIs with nested children rather than prop-heavy configuration objects.

  3. 03
    Separate Data Fetching from Presentation

    Create container components that handle data loading, errors, and empty states, then pass clean data to presentation components.

  4. 04
    Choose State Management by Scope

    Use useState for component-specific UI state, lifted state for 2-3 siblings, Context for theme/auth/locale, URL state for filters and pagination, server state libraries for remote data, and global stores for complex shared client state.

  5. 05
    Follow Design System Tokens

    Use semantic color tokens like text-primary and bg-surface instead of raw hex values, maintain a consistent spacing scale in 0.25rem increments, and respect the type hierarchy.

  6. 06
    Implement WCAG 2.1 AA Accessibility

    Make every interactive element keyboard accessible, add ARIA labels to unlabeled controls, manage focus when content changes, ensure 4.5:1 contrast for normal text, and provide meaningful empty and error states.

02 Find your fit

When to Use the frontend-ui-engineering Skill

Use the frontend-ui-engineering skill in Claude Code or Codex when the job is UI design of this kind. Fit and limits below are taken from the skill's own file.

Good Fit

  • Building new UI components or pages
  • Modifying existing user-facing interfaces
  • Implementing responsive layouts
  • Adding interactivity or state management
  • Fixing visual or UX issues

Know the Boundaries

  • Building prototypes with the expectation they will be rewritten later
  • Skipping styling because the design is not final
  • Deferring responsive design to a later phase
  • Treating accessibility as optional or nice-to-have

What to Provide

  • Realistic placeholder contentActual content or realistic examples to reveal layout problems that lorem ipsum hides (length, wrapping, overflow)

03 Inside the skill

Rules the frontend-ui-engineering Skill Gives Claude Code and Codex

8 concrete instructions, defaults and limits the SKILL.md sets for the agent — the part of the file that changes the result.

  1. Avoid AI Aesthetic Patterns

    Do not use purple/indigo everywhere, excessive gradients, rounded-2xl on everything, generic hero sections, lorem ipsum copy, oversized padding everywhere, stock card grids, or shadow-heavy design.

  2. No Prop Drilling Deeper Than 3 Levels

    If you are passing props through components that do not use them, introduce context or restructure the component tree.

  3. Use Consistent Spacing Scale

    Apply spacing from the scale in 0.25rem increments (or whatever the project uses). Do not invent values like 13px or 2.3rem that are not on the scale.

  4. Do Not Skip Heading Levels

    Maintain semantic heading hierarchy from h1 (page title, one per page) to h2 (section) to h3 (subsection). Do not use heading styles for non-heading content.

  5. Every Interactive Element Must Be Keyboard Accessible

    Use native focusable elements like button. If you must use div with onClick, add role="button", tabIndex={0}, and onKeyDown/onKeyUp handlers for Enter and Space.

  6. Design Mobile First

    Build for mobile breakpoints first, then expand to larger screens. Test at 320px, 768px, 1024px, and 1440px.

  7. Use Skeleton Loading, Not Spinners

    Show skeleton states with aria-busy and aria-label for content loading. Implement optimistic updates for perceived speed.

  8. Components Must Not Exceed 200 Lines

    Split components that grow beyond 200 lines into smaller focused units.

04 Put it to work

Install frontend-ui-engineering in Claude Code or Codex

One npx skills add command, then a first task in your agent and a checklist for the result.

Add frontend-ui-engineering to Claude Code, Codex or Your Agent

Run in your project; the installer asks which agent to add it to.

Terminal
npx skills add https://github.com/addyosmani/agent-skills --skill frontend-ui-engineering

Generic skills CLI form for skills/frontend-ui-engineering/SKILL.md; the repository may document its own path.

Give the Skill a First UI Design Task

Written in the skill's own terms; replace the bracketed parts with your material.

Starter prompt
Build a TaskList component for [project name] that displays a list of tasks with checkboxes to mark them complete and delete buttons. The component should handle loading, error, and empty states. It should be keyboard accessible, meet WCAG 2.1 AA standards, work responsively from 320px to 1440px, and follow the design system's spacing scale and color tokens. Include a container component that fetches tasks using React Query and a presentation component that receives clean data.

Source: written from the SKILL.md in the skill's own terms.

Check the First Result

What the SKILL.md itself says a correct result looks like:

  • Component renders without console errors
  • All interactive elements are keyboard accessible by tabbing through the page
  • Screen reader can convey the page's content and structure
  • Responsive layout works at 320px, 768px, 1024px, and 1440px breakpoints
  • Loading, error, and empty states are all handled
  • No accessibility warnings in dev tools or axe-core

In OpenDesign import frontend-ui-engineering from its SKILL.md link: Plugins → Add → Skill → Import from link, then pick it in the top bar.

05 Open source, traceable

Source, License and Verification

Where this page's facts come from, and when they were last checked.

Skill file
skills/frontend-ui-engineering/SKILL.md Content checksum recorded at verification; commit be4e44a
License
MIT From LICENSE.
Repository stars
94,139 GitHub snapshot taken 2026-09-14 for the whole addyosmani/agent-skills repository. Not a rating or usage count for frontend-ui-engineering.
Verified by OpenDesign
2026-09-14 Source file, path, license text and star count were checked. Not bundled in OpenDesign main (checked 2026-08-28); a live run has not been recorded on this page.

Inside the SKILL.md

  1. OverviewGoal is production-quality UI that looks design-aware, not AI-generated
  2. When to UseBuilding or modifying UI components, pages, layouts, interactivity, state, or fixing visual issues
  3. Component ArchitectureColocate files, prefer composition over configuration, keep components focused, separate data from presentation
  4. State ManagementChoose simplest approach: local state, lifted state, context, URL state, server state, or global store
  5. Design System AdherenceAvoid AI aesthetic patterns, use consistent spacing scale, respect typography hierarchy, use semantic color tokens
  6. Accessibility (WCAG 2.1 AA)Keyboard navigation, ARIA labels, focus management, meaningful empty and error states required
  7. Responsive DesignMobile-first approach, test at 320px, 768px, 1024px, 1440px breakpoints
  8. Loading and TransitionsUse skeleton loading not spinners, implement optimistic updates for perceived speed
  9. Common RationalizationsCounters arguments that defer accessibility, responsive design, styling, or accept AI aesthetic
  10. Red FlagsComponents over 200 lines, inline styles, missing states, no keyboard testing, color-only indicators, AI look
  11. VerificationChecklist for rendering, keyboard access, screen reader, responsive, states, design system, accessibility tools
The Skill's Own Description
“Builds production-quality, accessible, responsive user-facing UIs. Use when building or modifying interfaces and pages, creating components, implementing layouts, meeting WCAG accessibility requirements, managing state, or when the output needs to look and feel production-quality rather than AI-generated.”

Front-matter description from SKILL.md. The full file is about 10,679 characters. Read the full file on GitHub.

06 Before you install

Questions About the frontend-ui-engineering Skill

Answers come from the SKILL.md as read on 2026-09-14, not from a recorded run.

When should I use Context versus a global store like Zustand?

Use Context for read-heavy, write-rare data like theme, auth, and locale. Use a global store like Zustand or Redux for complex client state shared app-wide.

If you are only sharing state between 2-3 sibling components, lift the state to their common parent instead. Avoid prop drilling deeper than 3 levels by introducing context or restructuring the component tree.

Frontend UI Engineering

Run frontend-ui-engineering on a Real UI Design Task.

Download OpenDesign, import frontend-ui-engineering from its SKILL.md link, paste the prompt above, and read the plan before the result.

Terminal
npx skills add https://github.com/addyosmani/agent-skills --skill frontend-ui-engineering

OpenDesign Desktop

One design system. Every output unmistakably your brand

Inside the full Vibe Design Workspace, use the same brand rules across websites, slide decks, interactive prototypes, dashboards, images, and HTML video. Connect Codex, Claude Code, Cursor, and other coding agents already on your computer, then create locally for free.

  • Web, slides, prototypes, dashboards, images, and video
  • 140+ design systems, plus the full template and skill library
  • Connect local Codex and 21+ coding agents · Free to use
Download free

Available for macOS and Windows