ui-ux-guidelines
Skill1 starsChanged 10 months agoMITView on GitHub
Implementation details for accessible, performant interfaces. Use alongside vercel-design-guidelines for detailed technical guidance on interactions, animations, and forms.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- allenhutchison/obsidian-geminitheir own version, first seen Oct 8, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- allenhutchison/obsidian-gemini★ 534same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository7 other files it gives its agents.
- skills/ui-ux-guidelines/AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- react-best-practicesSkill
- react-next-modernSkill
- ultraciteSkill
- vercel-deploySkill
- vercel-design-guidelinesSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
13 rules. About 0 are common, 9 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈9
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 33
MUST: Keep submit enabled until request starts.
- Distinctive: line 42
MUST: No dead zones on checkboxes/radios.
- Very specific: line 54
MUST: Use polite aria-live for toasts/inline validation
- Distinctive: line 67
SHOULD: Prefer CSS > Web Animations API > JS libraries
- Very specific: line 75
SHOULD: Use translateZ(0) or will-change: transform for text anti-aliasing artifacts
- Distinctive: line 84
MUST: Verify mobile, laptop, ultra-wide (simulate at 50% zoom)
- Distinctive: line 86
MUST: Avoid unwanted scrollbars.
- Distinctive: line 95
MUST: No dead ends; always offer next step/recovery
- Very specific: line 100
MUST: Use ellipsis character ...
- Very specific: line 104
MUST: Use non-breaking spaces: 10 MB, Cmd + K
- Distinctive: line 111
SHOULD: Test iOS Low Power Mode and macOS Safari
- Distinctive: line 117
SHOULD: Prefer uncontrolled inputs.
- Distinctive: line 138
SHOULD: Avoid gradient banding (use masks when needed)
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
UI/UX Implementation Details
Note: For high-level design rules (hit targets, focus rings, contrast, etc.), defer to
vercel-design-guidelineswhich fetches live standards from Vercel. This skill provides implementation-specific details.
Interactions
Keyboard & Focus
- MUST: Full keyboard support per WAI-ARIA APG
- MUST: Manage focus (trap, move, return) per APG patterns
- MUST: Group focus with
:focus-withinwhere appropriate
Touch & Input
- MUST:
touch-action: manipulationto prevent double-tap zoom - MUST: Set
-webkit-tap-highlight-colorto match design - MUST: Mobile
<input>font-size ≥16px to prevent iOS zoom, or use:<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, viewport-fit=cover">
Form Behavior
- MUST: Hydration-safe inputs (no lost focus/value)
- NEVER: Block paste in
<input>/<textarea> - MUST: Enter submits text input; in
<textarea>, Cmd/Ctrl+Enter submits - MUST: Keep submit enabled until request starts; use idempotency key
- MUST: Allow submitting incomplete forms to surface validation
- MUST: Errors inline next to fields; on submit, focus first error
- MUST:
autocomplete+ meaningfulname; correcttypeandinputmode - SHOULD: Disable spellcheck for emails/codes/usernames
- SHOULD: Placeholders end with ellipsis and show example (e.g.,
sk-012345...) - MUST: Warn on unsaved changes before navigation
- MUST: Compatible with password managers & 2FA
- MUST: Trim values to handle text expansion trailing spaces
- MUST: No dead zones on checkboxes/radios; label+control share hit target
State & Navigation
- MUST: URL reflects state (filters/tabs/pagination). Prefer nuqs
- MUST: Back/Forward restores scroll
- MUST: Links use
<a>/<Link>(support Cmd/Ctrl/middle-click)
Feedback
- SHOULD: Optimistic UI with reconciliation; on failure show error or Undo
- MUST: Confirm destructive actions or provide Undo window
- MUST: Use polite
aria-livefor toasts/inline validation - SHOULD: Ellipsis for follow-ups ("Rename...") and loading ("Saving...")
Touch/Drag
- MUST: Delay first tooltip; subsequent peers no delay
- MUST:
overscroll-behavior: containin modals/drawers - MUST: During drag, disable text selection and set
inerton dragged element
Animation
- SHOULD: Prefer CSS > Web Animations API > JS libraries
- MUST: Animations are interruptible and input-driven (avoid autoplay)
- MUST: Correct
transform-origin(motion starts where it "physically" should)
Cross-Browser
- MUST: Apply CSS transforms to SVG children (
<g>), not parent<svg> - MUST: Set
transform-box: fill-boxandtransform-origin: centeron SVG - SHOULD: Use
translateZ(0)orwill-change: transformfor text anti-aliasing artifacts
Layout
- SHOULD: Optical alignment; adjust by +/-1px when perception beats geometry
- MUST: Deliberate alignment to grid/baseline/edges
- SHOULD: Balance icon/text lockups (stroke/weight/size/spacing/color)
- MUST: Verify mobile, laptop, ultra-wide (simulate at 50% zoom)
- MUST: Respect safe areas (
env(safe-area-inset-*)) - MUST: Avoid unwanted scrollbars; fix overflows
Content & Accessibility
- SHOULD: Inline help first; tooltips last resort
- MUST: Skeletons mirror final content (avoid layout shift)
- MUST:
<title>matches current context - MUST: No dead ends; always offer next step/recovery
- MUST: Design empty/sparse/dense/error states
- SHOULD: Curly quotes (" "); avoid widows/orphans
- MUST: Tabular numbers for comparisons (
font-variant-numeric: tabular-nums) - MUST: Redundant status cues (not color-only); icons have text labels
- MUST: Use ellipsis character
...(not...) - MUST:
scroll-margin-topon headings; include "Skip to content" link - MUST: Resilient to user-generated content (short/avg/very long)
- MUST: Locale-aware dates/times/numbers/currency
- MUST: Use non-breaking spaces:
10 MB,Cmd + K - MUST: Detect language via
Accept-Languageheader, NOT IP geolocation
Performance
- SHOULD: Test iOS Low Power Mode and macOS Safari
- MUST: Measure reliably (disable extensions that skew runtime)
- MUST: Track and minimize re-renders (React DevTools/React Scan)
- MUST: Profile with CPU/network throttling
- MUST: Batch layout reads/writes; avoid reflows/repaints
- MUST: Mutations complete in <500ms
- SHOULD: Prefer uncontrolled inputs; make controlled loops cheap
- MUST: Virtualize large lists (virtua) or
content-visibility: auto - MUST: Preload only above-the-fold images; lazy-load rest
- MUST: Prevent CLS from images (explicit dimensions)
- SHOULD:
<link rel="preconnect">for asset/CDN domains - SHOULD: Preload critical fonts; subset via
unicode-range - SHOULD: Move expensive work to Web Workers
Design
- SHOULD: Layered shadows (ambient + direct)
- SHOULD: Crisp edges via semi-transparent borders + shadows
- SHOULD: Nested radii: child <= parent; concentric
- SHOULD: Hue consistency: tint borders/shadows/text toward bg hue
- MUST: Accessible charts (color-blind-friendly palettes)
- MUST: Increase contrast on
:hover/:active/:focus - SHOULD: Set
<meta name="theme-color">to match page background - MUST: Set
color-scheme: darkon<html>in dark themes - MUST: On Windows, set explicit
background-colorandcoloron<select> - SHOULD: Avoid gradient banding (use masks when needed)
Common Violations
Blocking paste
// Bad
<input onPaste={(e) => e.preventDefault()} />
// Good
<input type="email" autoComplete="email" />Non-semantic button
// Bad
<div onClick={handleClick}>Click me</div>
// Good
<button onClick={handleClick}>Click me</button>Windows select dark mode
// Bad
<select><option>Option 1</option></select>
// Good
<select className="bg-white dark:bg-gray-900 text-black dark:text-white">
<option>Option 1</option>
</select>References
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

