UI Design
Designs and builds React/Next/Tailwind UI and audits visual and interaction defects. Use when asked to "build a landing page", "extract our design system", "add dark mode", "make this responsive", "remove UI slop", or "audit this component". For product decisions use product-design; for browser measurements use ui-verification; for motion use ui-animation.
- Skill ID
- mblode/agent-skills/ui-design
- Publisher
- mblode
- Repository
- agent-skills
- Installs
- 0
- Files
- 125
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
mblode/agent-skills/ui-designInstalls these files- SKILL.md
- add-dark-mode.md
- canonicalize-tailwind.md
- componentize.md
- dark-mode-image.md
- design-guidelines.md
- direction/aesthetic-direction.md
- direction/brand-kit-prompt.md
- direction/cro.md
- direction/design-in-code.md
- direction/marketing-ui.md
- direction/modern.md
- direction/product-ui.md
- direction/testing.md
- evals/evals.json
- evaluations/fixtures/clean-settings.tsx
- evaluations/fixtures/delete-version-modal.tsx
- evaluations/fixtures/invite-member-form.tsx
- evaluations/fixtures/pricing-page.tsx
- evaluations/fixtures/real-proof-landing.tsx
- evaluations/merge-routing.json
- evaluations/refine-ai-ui.json
- guidelines/assets-api.md
- guidelines/avatars.md
- guidelines/badges.md
- guidelines/border-radius.md
- guidelines/buttons.md
- guidelines/colors.md
- guidelines/copywriting.md
- guidelines/custom-fonts.md
- guidelines/dark-mode.md
- guidelines/dashboards.md
- guidelines/description-lists.md
- guidelines/feature-lists.md
- guidelines/flexbox-layout.md
- guidelines/font-recommendations.md
- guidelines/footers.md
- guidelines/form-controls.md
- guidelines/general.md
- guidelines/headers.md
- guidelines/heading-groups.md
- guidelines/icons.md
- guidelines/images.md
- guidelines/landing-pages.md
- guidelines/login-pages.md
- guidelines/logo-clouds.md
- guidelines/materials.md
- guidelines/navigation.md
- guidelines/pagination.md
- guidelines/placeholder-content.md
- guidelines/pricing-cards.md
- guidelines/prose-content.md
- guidelines/responsive-design.md
- guidelines/section-layout.md
- guidelines/shadows.md
- guidelines/surfaces.md
- guidelines/svg.md
- guidelines/tables.md
- guidelines/team-sections.md
- guidelines/testimonials.md
- guidelines/typography.md
- ideas.md
- make-responsive.md
- markup-from-image.md
- references/craft-checklist.md
- references/defer-to-other-tools.md
- references/design-system-extract.md
- references/feature-playbooks.md
- references/output-adapters.md
- references/ship-readiness.md
- references/states-coverage.md
- rules/_sections.md
- rules/_template.md
- rules/a11y-color-only-meaning.md
- rules/a11y-data-table-semantics.md
- rules/a11y-disabled-control-tooltip.md
- rules/a11y-document-language.md
- rules/a11y-icon-controls-labeled.md
- rules/a11y-image-alt-text.md
- rules/a11y-media-captions.md
- rules/a11y-semantic-html-first.md
- rules/a11y-skip-link-heading-order.md
- rules/a11y-tooltip-no-interactive.md
- rules/async-no-error-boundary.md
- rules/async-no-suspense-boundary.md
- rules/async-optimistic-without-rollback.md
- rules/async-out-of-order-responses.md
- rules/dark-i18n-rtl-untested.md
- rules/dark-i18n-untested.md
- rules/focus-broken-focus-trap.md
- rules/focus-not-restored.md
- rules/focus-on-dynamic-content.md
- rules/forms-dont-block-paste-ime.md
- rules/forms-error-association.md
- rules/forms-inline-errors-first-focus.md
- rules/forms-input-affix-hit-target.md
- rules/forms-labels-and-autocomplete.md
- rules/forms-lost-data-on-error.md
- rules/forms-mobile-input-font-size.md
- rules/forms-no-disable-while-submitting.md
- rules/forms-use-form-status-misuse.md
- rules/interaction-focus-visible.md
- rules/interaction-keyboard-operable.md
- rules/interaction-target-size.md
- rules/layout-long-content-safety.md
- rules/microcopy-leaked-error-message.md
- rules/microcopy-vague-error.md
- rules/mobile-hover-only-affordance.md
- rules/mobile-viewport-scaling.md
- rules/nav-live-region-feedback.md
- rules/nav-semantic-links.md
- rules/perf-image-dimensions-and-priority.md
- rules/perf-lazy-load-offscreen.md
- rules/perf-virtualize-large-lists.md
- rules/slop-affordance-mismatch.md
- rules/slop-decoration-no-role.md
- rules/slop-faux-product-chrome.md
- rules/slop-near-duplicate-scale.md
- rules/slop-token-drift.md
- rules/slop-unverifiable-proof.md
- rules/states-layout-shift.md
- rules/states-no-empty-state.md
- rules/states-no-error-state.md
- rules/type-hover-weight-shift.md
- rules/type-readable-scale.md
What this skill tells the agent
UI Design
Owns everything that touches the built artifact: pick the visual direction, implement it in code, and audit what shipped.
- IS: choosing visual direction (palettes, type scales, tokens, layout systems, CRO strategy, brand boards), building UI in code, and auditing built React or Next frontends for user-facing defects with
file:lineevidence, applied fixes, and a ship verdict. - IS NOT: deciding what an interface should do before it exists (use
product-design); non-UI correctness and code quality (usetidy); agentic-app review (useax-audit); deep typography or motion passes (usetypography-audit,ui-animation); the wording of a string (useghostwriter).
Contents
- Routing boundary
- Modes
- Direction mode
- Extract mode
- Build mode
- Audit mode
- Other modes
- Quality Bar
- Verify
- Gotchas
- Sources
- Related skills
Routing boundary
product-design owns action semantics, scope, reversibility, and contested state choices. ui-design builds and styles those states. ui-animation owns timing, gestures, and measured motion. A routine missing loading or error state stays with the UI build; a gesture replacing a control needs a product decision and an accessible alternative before its physics.
For brand positioning, identity changes, or a system spanning campaigns and physical applications, that is out of scope; name the open brand question and apply the identity the company already has. Direction mode applies that identity to UI; it does not reopen an approved brand.
Before choosing styles, read the project's existing design.md, design-system.md, or brand guide when present. Check its scope and source against the implemented theme; report drift instead of creating a second competing specification.
Modes
Resolve one mode before acting, and load only that mode's files.
| Mode | Dispatch when the user asks for | Load |
|---|---|---|
| Direction | visual direction, palettes, fonts, tokens, a brand kit, "pick a style"; deliverable is a spec, not code | the Direction section below |
| Extract | recording what an existing codebase already decided: "what design system does this use", "document our tokens", "inventory our components and scales" | references/design-system-extract.md only |
| Build | the target does not exist yet: "build a landing page", "create a dashboard", "add a pricing section" | direction/aesthetic-direction.md, design-guidelines.md, then the applicable files from its index |
| Audit | the target exists and no change was named: "audit this component", "check my UI", "is this accessible", "design QA this page", "is this ready to ship". Deslop scope on "remove AI slop", "looks vibe coded", "simplify this UI" | references/feature-playbooks.md and rules/ only |
| Options | variants to compare in the browser: "show me 3 hero layouts" | ideas.md plus the guidelines per variant |
| Scaffold | semantic, unstyled markup from a screenshot, Figma export, mockup, or wireframe | markup-from-image.md only; the scaffold stays unstyled |
| Retrofit | one dimension added to existing UI: "add dark mode", "make this responsive", "fix this on mobile" | add-dark-mode.md, make-responsive.md; for raster images also dark-mode-image.md (requires the imagegen skill, Codex) |
| Componentize | extracting components or cleaning up classes: "componentize this page", "clean up the Tailwind" | componentize.md; for cleanup also canonicalize-tailwind.md |
No mode named? Build if the target does not exist. Audit if it does and no change was requested. Resolving "look at this page" or "can you improve this checkout" to Build silently skips the rule run, which is the most expensive mistake this table prevents.
Named chrome fixes still audit. "Feel native on mobile" runs existing mobile-* rules (viewport, hover-only actions) and ui-animation for press and hover gating. It does not go to Retrofit or Build. Retrofit's "fix this on mobile" is layout.
Direction and Build chain: for a new surface with no direction, run Direction first (or propose one inline for small surfaces), then Build. If a direction already exists in the project, go straight to Build. Extract chains ahead of both on an existing codebase: a direction chosen without knowing what the project already uses is a second design system, not a direction.
Direction mode
A decision skill. It does ONE thing: choose the visual system. It writes no markup; the build is Build mode's job.
Output a decision set: a one-sentence visual thesis (mood, material, energy), palette as CSS variables, type pairing and scale, spacing grid, radius and depth strategy, the layout pattern for the primary surface, and for conversion pages the section sequence, CTA plan, and proof placement. Close against the Quality Bar, then hand off to Build.
Pick a track
| Surface | Track | Optimises for |
|---|---|---|
| Dashboards, admin panels, data tables, settings pages, internal and dev tools | direction/product-ui.md | Information density, calm chrome, scanability, utility copy |
| Landing pages, brand sites, promotional pages, portfolios, pricing pages | direction/marketing-ui.md | Visual impact, storytelling, one-CTA conversion flow |
Tie-breakers: a marketing site for a SaaS product is the marketing track; the app behind the login is product. Design them separately. Convert a stranger = marketing; let an operator work = product.
Shared foundations (load with either track)
- direction/aesthetic-direction.md: AI-slop signals, restraint philosophy, reference products, polish details. Direction mode reads it after the track pick; Build and the Deslop scope load it first, with no track pick.
- direction/design-in-code.md: low-fi ASCII wireframing and the copy-what-works workflow. Read before building a new surface from scratch.
Marketing references (conversion pages only)
Load when the marketing track has a conversion goal. Skip for pure brand/portfolio work and all product UI.
| File | Read when |
|---|---|
| direction/cro.md | Persuasion tactics, social proof, page length, or a CRO plan |
| direction/testing.md | Optimising a page or planning experiments: prioritisation, significance rules, the CTA statistics table |
| direction/modern.md | Personalisation and mobile-first conversion |
For "create a brand kit" or a brand direction board, load direction/brand-kit-prompt.md; its Rendering section covers the imagegen handoff and the text-only fallback.
Extract mode
A recording skill. It does ONE thing: read an existing codebase and write down the design decisions it already contains, as a durable design-system.md the other modes consume.
The guidelines defer to "what the project already does" constantly and cannot resolve it themselves; this mode is the answer they read. Load references/design-system-extract.md and nothing else. Five things go in the artifact: which theme source the build actually honours, the scales as used rather than as declared, the component inventory, the conventions in force, and the documented exceptions. Values, not prose.
More from mblode
Use this skill in a project
Open any RiverX project, search the Skills panel for mblode/agent-skills/ui-design, and install it in one click.
