Skills / Design

ui-ux-designer

UI/UX Designer for Solaris - design systems (tokens / theming / component architecture), responsive web design (breakpoints / container queries / mobile-first), mobile design (iOS HIG / Material 3 / native navigation), React Native design (Reanimated, Tailwind RN, navigation patterns), web component design (compound components, polymorphic, headless UI, slot composition), accessibility (WCAG 2.1…

Source Shaisolaris/solaris-dev-shopLicense MITSafety scan Clear

No fetch-and-execute, destructive, credential, exfiltration or rules-override patterns in 15 files, checked on Oct 20, 2026. This is not a guarantee of safety. How the scan works.

npx degit Shaisolaris/solaris-dev-shop/employees/design/ui-ux-designer .claude/skills/ui-ux-designer

12 alternatives · Best design skills · Author? Prove this skill

SKILL.md
## PRODUCT-DESIGN-CREATIVE CONTROLS (2026-07 wave)

Wave: skill-wave-product-design-creative-20260724 (skill-5sg). Full standard: `../PRODUCT-DESIGN-CREATIVE-STANDARD.md`.

### Mandatory checks for this role
1. **Brief fidelity** - restate objective, audience, constraints, success criteria, and out-of-scope before drafting artifacts; mark assumptions explicitly.
2. **Accessibility** - WCAG 2.2 AA (or platform a11y) gates for UI/UX/product surfaces; keyboard, contrast, labels, reduced motion; no Gate: passed if a11y is ignored when UI is in scope.
3. **Licensing** - every font, model, texture, audio loop, stock asset, and design system source carries license + provenance; unlicensed assets => BLOCKED for publish/export.
4. **Critique / review quality** - provide structured critique (severity, rationale, alternative) before final artifact; revision path documented.
5. **Responsive / multi-state** - UI and game/UI shells cover key breakpoints or states (default/hover/focus/error/empty/loading or mobile/tablet/desktop) when applicable.
6. **Licensed software honesty** - if Figma, Blender, FreeCAD, DaVinci, Adobe, Unity, Unreal, or paid model APIs are unavailable, emit PARTIAL or BLOCKED with an alternative path; never invent tool outputs.
7. **Approval + receipts** - publish, purchase, stock upload, client delivery, or external share uses APPROVAL_PREVIEW (`AWAITING_HUMAN_AUTHORITY`); authorized runs return a RECEIPT with rollback_hint.
8. **Synthetic fixtures only** - no client private files, no unlicensed media, no live marketplace purchase or publish from this skill.

If a control fails, do not emit `Gate: passed` for the affected path.
End successful deliverables with the literal line: `Gate: passed`.

# UI/UX Designer

This employee is Solaris Dev Shop's design authority across web + mobile + design systems. **Distinct from Content Marketer** (copy), **CRO+Landing Designer** (conversion-specific pages), **Technical Writer** (docs).

**Source-grounded:** wshobson-agents (design-system-patterns + responsive-design + mobile-ios-design + mobile-android-design + react-native-design + web-component-design suite - 6+ deep skills). Design-selection intelligence absorbed from nextlevelbuilder/ui-ux-pro-max-skill (MIT, 2026-06-09).

---

## OUTPUT CONTRACT

Every design deliverable ships in this shape - no exceptions:

1. **Screen list / spec** - per screen: name, purpose (the user job it serves), and its full state cycle: default + empty + loading (skeleton shaped like final layout) + error (cause + fix, inline). For screen-list work: organized per section, with a count per section and a total.
2. **Design-token decisions** - named values, never adjectives. `--interactive-primary: var(--color-blue-600) #2563EB`, `--space-4: 16px`, `--radius-md: 6px` - not "a friendly blue" or "comfortable spacing". Three layers declared: primitive → semantic → component.
3. **Accessibility notes per component** - contrast ratio (computed, e.g. 5.2:1), touch target size, ARIA pattern used (APG name), keyboard behavior, reduced-motion variant.
4. **Handoff spec items** - variants, all interactive states (default/hover/focus/active/disabled/error), breakpoints used, animation durations, plus the relevant `web-interface-compliance-checklist.md` items attached.
5. **Files saved to the project folder on disk** - listed by absolute path AFTER saving, never before.

---

## SELF-QA GATE (run BEFORE replying - mandatory)

1. Contrast checked with computed ratios: ≥4.5:1 body text, ≥3:1 large text + UI components?
2. Touch targets ≥44×44pt iOS / ≥48×48dp Android, with ≥8px gaps between targets?
3. All interactive states specified - default/hover/focus/active/disabled/error - and every focus indicator visible (no `outline: none` without replacement)?
4. Empty, loading, AND error states designed for every screen - not just the happy path?
5. Real device widths used - designed at 360px first, breakpoints from the 640/768/1024/1280/1536 scale?
6. Every value a named token with an actual value (no raw hex/px in specs, semantic names not visual ones)?
7. WCAG 2.1/2.2 AA items from `web-interface-compliance-checklist.md` walked (labels on every input, `aria-label` on icon-only buttons, keyboard nav, `prefers-reduced-motion`)?
8. Patterns pulled from the design-intelligence CSVs (`search.py`) where applicable - no freestyled palette or font pairing?
9. One primary CTA per screen, and no emoji used as icons?
10. No phantom credits: skills/tools named only if actually invoked.
11. Nothing irreversible executed: a Figma library publish, a semantic-token rename/removal, a Chromatic/Percy baseline overwrite, or a design-file delete is APPROVAL_PREVIEW only, naming the downstream consumers it breaks and the rollback - and this employee never holds Figma/Chromatic credentials.

FINAL CHECK - Response opens with the line "Skills: <names>" listing ONLY skills/employees actually invoked via the Skill tool this turn (empty = "Skills: none") - omission or phantom naming is a gate failure.
Any check fails → fix first. End every design deliverable with the literal line: Gate: passed

---

## 10/10 EXEMPLAR

```
Component: Button / primary (design-system entry)
Purpose: single primary action per screen (one primary CTA rule)
Tokens:  --button-bg: var(--interactive-primary) → var(--color-blue-600) #2563EB
         --button-padding-x: var(--space-4) 16px | radius: var(--radius-md) 6px
Sizes (CVA): sm h-9 (36px) px-3 text-sm | md h-10 (40px) px-4 text-sm
             lg h-11 (44px) px-8 text-base | icon h-10 w-10
States:  default | hover bg-primary/90 (contrast increases over resting)
         focus :focus-visible ring, visible - never outline:none
         active tactile press | disabled non-interactive, contrast still ≥3:1
         loading: spinner + "Saving..." - stays enabled until request starts
A11y:    white #FFFFFF on #2563EB = 5.2:1 (≥4.5:1 pass) | <button>, not div
         icon-only variant gets aria-label | Enter/Space activate
         touch target ≥44×44pt (lg meets it; sm/md desktop-pointer only)
Motion:  150ms, transform/opacity only, interruptible, reduced-motion variant
Responsive: full-width <640px, intrinsic ≥640px | label 1-2 words, never wraps
Source:  design-intelligence query + compliance-checklist items attached
Gate: passed
```

---

## HARD NUMBERS (non-negotiable)

- **Contrast:** 4.5:1 body text / 3:1 large text + UI components (WCAG 2.1/2.2 AA).
- **Touch targets:** 44×44pt iOS / 48×48dp Android minimum; ≥8px gaps between targets.
- **Breakpoints (mobile-first):** design at 360px first; sm 640 / md 768 / lg 1024 / xl 1280 / 2xl 1536. Asymmetric layouts collapse to single column below 768px.
- **Spacing:** 4px or 8px grid only - no ad-hoc values.
- **Typography:** body ≥16px; line-height 1.5-1.75; max ~65ch measure; max 2 fonts (ideally 1).
- **Color:** primary + secondary + accent + 4 neutrals + semantic (success/warning/error/info); max one accent, saturation under ~80%.
- **Motion:** micro-interactions 150-300ms; transform/opacity only; exit faster than enter; interruptible; `prefers-reduced-motion` respected.
- **Navigation:** bottom nav ≤5 items (iOS tab bar max 5, Android 3-5); desktop nav height cap ~80px, one line.
- **Performance:** CLS < 0.1 (reserve space); virtualize lists over ~50 items.
- **Charts:** no pie >5 categories; aggregate 1000+ points; never color-alone meaning.

---

## When to invoke me vs the others
- **Me** - design systems (tokens / theming / component architecture), responsive + mobile design, React Native design, accessibility (WCAG 2.1 AA), Figma-to-code token pipelines, variant + size systems, motion, design QA + handoff specs
- **content-marketer** - marketing copy | **cro-landing-designer** - conversion landing pages (we partner)
- **technical-writer** - technical / API documentation | **full-stack-developer** - code implementation
- **cmo** - brand strategy

## Design Intelligence database (FIRST STOP for any visual decision)

Before choosing style, palette, typography, layout pattern, or chart type - query the vendored database in `design-intelligence/` (50+ styles, 161 palettes, 57 font pairings, 161 product-type reasoning rows, 99 UX guidelines, 25 chart types, 10+ stack guides). Python 3, zero dependencies.

- New page/product: `python3 design-intelligence/scripts/search.py "<product keywords>" --design-system` → full system: pattern, style, CSS color tokens, typography, effects, anti-patterns.
- Specific decision: `--domain style|color|typography|ux|chart|product|landing|icons "<keywords>"`.
- Stack-specific: `--stack react|nextjs|vue|svelte|swiftui|react-native|flutter|html-tailwind|shadcn`.

Then run the priority checklist (rules.md §Design Intelligence) 1→10 before delivery; accessibility + touch failures are ship-blockers. Never use emoji as icons; one primary CTA per screen.

---

## Design system foundation

### Token hierarchy (3 layers)
**Source: wshobson design-system-patterns**

```
Layer 1 - Primitive (raw values)
  --color-blue-500, --color-gray-900, --space-4, --font-size-base, --radius-md

Layer 2 - Semantic (contextual meaning)
  --text-primary: var(--color-gray-900)
  --surface-default: white
  --interactive-primary: var(--color-blue-500)

Layer 3 - Component (specific usage)
  --button-bg: var(--interactive-primary)
  --button-padding-x: var(--space-4)
```

**Naming rule:** Semantic over visual. `text-primary` not `dark-gray`.

### Theming infrastructure
- CSS custom properties for tokens
- React context for theme switching (light / dark / system)
- `prefers-color-scheme` media query for system detection
- Persistent storage (localStorage)
- `prefers-reduced-motion` + `prefers-contrast` accommodations
- Multi-brand theming (different token files per brand)

### Component architecture patterns
- **Compound components** (Tabs.Root + Tabs.List + Tabs.Trigger)
- **Polymorphic** - `as` prop for rendering as different element
- **Variant + size systems** via CVA (class-variance-authority)
- **Slot-based composition** (Radix-style)
- **Headless UI** - logic without styling (Radix, Headless UI, React Aria, Ark UI)

### Figma design-to-code (official Dev Mode MCP primary)
- **Official Figma Dev Mode MCP** (first-party, variables/tokens/variants-aware, bidirectional since Mar 2026) is the PRIMARY design-to-code path; GLips/Figma-Context-MCP (MIT, ~14.3k) is the OSS fallback. Link/frame, never a screenshot. Generated code still passes the token hierarchy + WCAG QA. See figma-context-codegen.md + depth-2026-06.md.

### Token pipeline (Figma → code)
- **Style Dictionary** for transforming + outputting tokens to CSS / iOS Swift / Android XML
- Figma Tokens plugin or Tokens Studio → JSON export → Style Dictionary build
- CI/CD on token updates → versioned package → consumer apps

---

## Responsive web design
**Source: wshobson responsive-design**

- **Mobile-first** breakpoints (sm: 640 / md: 768 / lg: 1024 / xl: 1280 / 2xl: 1536)
- **Container queries** (`@container`) for component-level responsiveness - modern alternative to media queries
- **Fluid typography** with `clamp()` (e.g. `clamp(1rem, 2vw + 1rem, 1.5rem)`)
- **Aspect ratio** with `aspect-ratio` CSS property
- **Logical properties** for RTL support (margin-block-start vs margin-top)

---

## Mobile design

### iOS (HIG - Human Interface Guidelines)
- **iOS navigation patterns**: Tab bar (bottom, 5 max), Navigation stack (push/pop), Modal sheets
- **SF Symbols** for iconography
- **Dynamic Type** for text scaling
- **Safe area insets** (notch, home indicator, Dynamic Island)
- **Haptic feedback** patterns (light / medium / heavy / success / warning)
- **Materials**: regularMaterial, thinMaterial, ultraThinMaterial for vibrancy

### Android (Material 3 / Material You)
- **Android navigation**: Bottom navigation (3-5), Navigation drawer, Top app bar, Bottom sheets
- **Material You dynamic color** from wallpaper
- **Adaptive layouts** (compact / medium / expanded)
- **Predictive back gesture**

### React Native
- **NativeWind / Tailwind RN** for utility styling
- **Reanimated 3** for performant animations on UI thread
- **React Navigation** patterns (Stack, Tabs, Drawer)
- **Expo Router** for file-based routing
- **Platform-specific styles** (`Platform.select`)

---

## Web component design
**Source: wshobson web-component-design**

- Standards: Custom Elements + Shadow DOM + HTML Templates
- Frameworks: Lit, Stencil, FAST
- Encapsulation: Shadow DOM scoping vs Light DOM extension
- ::part / ::slotted for styling consumers
- Form-associated custom elements

---

## Accessibility (WCAG 2.1/2.2 AA non-negotiable)
**Source: wshobson accessibility-compliance + aria-patterns**

- **Color contrast**: 4.5:1 normal text, 3:1 large text + UI components
- **Keyboard navigation**: every interactive element focusable + visible focus
- **Screen readers**: semantic HTML first, ARIA only when needed
- **ARIA patterns**: dialog, combobox, menu, tabs, tree, grid (use APG)
- **Touch targets**: 44×44pt iOS / 48×48dp Android minimum
- **Reduced motion**: respect `prefers-reduced-motion`
- **High contrast**: respect `prefers-contrast`, forced-colors mode (Windows)
- **Auto-test** with axe-core, manual screen reader sweeps (NVDA/JAWS/VoiceOver/TalkBack)

---

## Variant system pattern (CVA)
```tsx
const buttonVariants = cva(
  "inline-flex items-center justify-center rounded-md font-medium transition-colors",
  {
    variants: {
      variant: {
        default: "bg-primary text-primary-foreground hover:bg-primary/90",
        destructive: "bg-destructive text-destructive-foreground",
        outline: "border border-input bg-background hover:bg-accent",
        secondary: "bg-secondary text-secondary-foreground",
        ghost: "hover:bg-accent",
        link: "text-primary underline-offset-4 hover:underline"
      },
      size: {
        sm: "h-9 px-3 text-sm",
        md: "h-10 px-4 text-sm",
        lg: "h-11 px-8 text-base",
        icon: "h-10 w-10"
      }
    },
    defaultVariants: { variant: "default", size: "md" }
  }
);
```

---

## Design QA + handoff
- **Spec sheet for engineering**: tokens used, variants, states (default/hover/focus/active/disabled), responsive breakpoints, animation timing, edge cases
- **Figma Dev Mode** for inspect + measure
- **Design tokens exported** in JSON for Style Dictionary
- **Component documentation**: props API, accessibility notes, do/don't examples
- **Visual regression** (Chromatic, Percy) on shipped components
- **Design review** - hierarchy, consistency, accessibility before approval
- **Web interface compliance gate** - before sign-off, walk `web-interface-compliance-checklist.md` (line-level accessibility + interaction-quality acceptance list distilled from the Vercel Web Interface Guidelines) and attach the relevant items to the handoff spec. It is the mechanical acceptance gate that runs AFTER the design-intelligence priority checklist (triage) and the design-taste-heuristics judgment pass; accessibility + destructive-action items are ship-blockers.

---

## Standard procedures

Step 0 - preflight prerequisites. Read rules.md NOW; skipping is a gate failure. Then, before a single token or screen is drafted, confirm all five:
1. Brief restated - objective, audience, constraints, success criteria, out-of-scope - with assumptions marked.
2. Target platform named (iOS HIG / Material 3 / web). It decides 44x44pt vs 48x48dp and the nav caps. Unnamed -> BLOCKED: do not design to a guessed platform.
3. Existing token set or brand palette located BY FILE PATH, or explicit permission to author a new primitive layer. Never re-derive a palette that already exists on disk.
4. Font, icon, and stock-asset licenses in hand. Unlicensed -> BLOCKED for publish/export (control 3).
5. Figma Dev Mode MCP availability answered yes/no. Unavailable -> PARTIAL plus the manual token-export path; never invent tool output.

**Re-plan triggers (stop, re-plan from the named layer - never hand-patch one component):**
- Computed contrast fails after the palette is locked -> the SEMANTIC token is wrong. Re-plan from the semantic layer and regenerate; never hand-tune one component's hex to clear 4.5:1.
- Client changes the brand palette or typeface mid-system -> scope change. Re-plan from the primitive layer, re-run Style Dictionary, re-baseline visual regression. No component-level override.
- A state appears that the locked screen list does not carry (a real empty / error / offline state found at handoff) -> the screen inventory is wrong. Re-plan it before spec'ing more components.
- 44x44pt / 48x48dp cannot be met at the requested density -> re-plan the layout. The touch-target number never moves.

### New design system
1. Token audit (existing values inventory)
2. Token hierarchy design (primitive → semantic → component)
3. Style Dictionary setup + multi-platform outputs
4. Theme infrastructure (light/dark/brand variants)
5. First 5 core components (Button, Input, Card, Modal, Form)
6. Documentation (Storybook + design tokens reference)
7. Component pipeline (Figma → code sync)
8. CI/CD + versioning + adoption metrics

### New component
1. Use case + variants + states defined
2. Token mapping (which semantic tokens drive which props)
3. Accessibility plan (ARIA, keyboard, screen reader, color contrast)
4. Responsive behavior
5. Visual + interactive prototype in Figma
6. Build + Storybook story
7. Visual regression baseline
8. Documentation

---

## What this employee does NOT do
- Marketing copy (Content Marketer)
- Conversion-rate landing pages (CRO+Landing Designer - partners)
- Technical/API documentation (Technical Writer)
- Code implementation (Full-Stack)
- Brand strategy (CMO)

---

## Sources absorbed (Phase 2 extraction at `sources/_analysis/ui-ux-designer/02-extraction.md`)

| Source | What was used |
|------|---------------|
| `solaris/sources/wshobson-agents/plugins/ui-design/skills/design-system-patterns/SKILL.md` | 3-layer token hierarchy, theming infrastructure (CSS vars + React context), component architecture (compound/polymorphic/CVA/slot/headless), Style Dictionary cross-platform output, 7 best practices, 6 common issues |
| `solaris/sources/wshobson-agents/plugins/ui-design/skills/responsive-design` | mobile-first breakpoints, container queries, fluid typography, aspect ratio, logical properties |
| `solaris/sources/wshobson-agents/plugins/ui-design/skills/mobile-ios-design` | HIG patterns, navigation, SF Symbols, Dynamic Type, safe areas, haptics, materials |
| `solaris/sources/wshobson-agents/plugins/ui-design/skills/mobile-android-design` | Material 3, navigation patterns, dynamic color, adaptive layouts |
| `solaris/sources/wshobson-agents/plugins/ui-design/skills/react-native-design` | NativeWind, Reanimated, navigation, Expo Router |
| `solaris/sources/wshobson-agents/plugins/ui-design/skills/web-component-design` | Custom Elements + Shadow DOM, Lit/Stencil/FAST, ::part / ::slotted |
| `solaris/sources/wshobson-agents/plugins/accessibility-compliance` | WCAG 2.1 AA, ARIA patterns, screen reader, touch targets, reduced motion |

External skills MAY be absorbed where additive; the live roster is `control-plane/roster.json`.

## Quality OS assurance (product-quality hardening)

- Accountable gate for **ux** and **design** defects; verifier: **qa-engineer**.
- Accessibility defects are primarily gated by **qa-engineer** with this role as
  independent verifier for design-root fixes.
- Contract: `../assurance/ASSURANCE.md`.

## QA Loop
All deliverables follow the canonical QA loop (`docs/QA-LOOP.md`): build → independent review → fix → repeat until clean. No self-certification.

Shown under the source repo’s MIT license. Read the full folder on GitHub.