| name | dev-uiux-design |
| description | MUST USE for UI/UX direction and design judgment โ vague visual briefs, onboarding, empty/error/loading states, layout vocabulary, typography breaks, favicons, logos, and brand identity choices. Triggers: make it look good, modern, clean, aesthetic, onboarding, empty state, error state, favicon, logo, design system, ๊น๋ํ๊ฒ, ๋ชจ๋ํ๊ฒ, ๊ฐ์ฑ์ ์ผ๋ก. |
| metadata | {"short-description":"Design judgment for vague briefs, UX states, typography, layout, logos, and brands.","keywords":"design-intent, onboarding, empty-state, error-state, design-ism, product-personality, korean-ux, layout-patterns, typography-line-breaks, logo-trust-sections, favicon, logo, brand-identity, og-image, dark-mode-logo","last-verified":"2026-07-02"} |
UI/UX Design: Intent Discovery, Patterns & Product Vocabulary
Activates by change surface when:
- User's design direction is vague ("๊น๋ํ๊ฒ", "๋ชจ๋ํ๊ฒ", "just make it look good")
- Building onboarding, empty state, error state, or loading state UI
- User references a product aesthetic ("Notion ๋๋", "Linear์ฒ๋ผ")
- Starting a new design system or generating a color palette
- Choosing layout patterns or navigation architecture
- Setting up favicons, product logos, or brand identity elements
- Handling logo dark mode variants, OG images, or social sharing meta
Read this before style-specific references when the user cannot articulate a clear design direction.
For anti-slop detection and banned patterns, defer to dev-frontend/references/core/anti-slop.md.
Emoji ban (stub): no emoji as UI visual elements (STRICT). Canonical rule, scope, and exemptions: dev-frontend ยง5 / dev-frontend/references/core/anti-slop.md ยง Emoji Slop.
Role separation: This skill provides design judgment (when/why). dev-frontend provides implementation (CSS/HTML how). When both have a reference on the same topic (e.g., typography, logos), read this skill first for the decision, then dev-frontend for the code.
External/current design evidence: For live product-reference claims, current
design-system docs, browser API behavior, accessibility guidance that may have
changed, or browser-rendered source evidence, read the active search skill and
follow its query-rewrite, source-fetch, and evidence-status rules. Use browser
fetch/open/text/get-dom/snapshot only after candidate URLs exist.
C0/C1 work (small local patches): See dev ยง0.0 Work Classifier + ยง0.1 Patch Fast-Path before reading references.
Rule class note (UX-STYLE-01): Everything in this skill that expresses taste โ
product personalities, design-isms, preset tokens, aesthetic vocabulary โ is
STYLE_SAMPLE: examples to draw from, never universal requirements. Objective UX
correctness (state coverage, accessibility, readability) is owned by dev-frontend
ยง1.5 and stays STRICT/DEFAULT.
Modular References
| File | When to Read | What It Covers |
|---|
references/design-isms.md | User names a style/movement | 11 design movements with CSS signatures |
references/design-read-example.md | Learning or reviewing Design Read format | Filled-in Design Read + dial setting example |
references/product-personalities.md | User references a product | 8 product DNA profiles with exact tokens |
references/layout-macrostructures.md | Choosing page/component layout | Component layouts + page-level compositions |
references/ux-states.md | Building any stateful UI | Onboarding, empty, error, loading, progressive disclosure |
references/color-system.md | Generating colors/palette | OKLCH-based palette generation, dark mode, accessibility |
references/design-system-bootstrap.md | New project / design system | Token architecture, component hierarchy, DESIGN.md format (google-labs-code/design.md) |
references/responsive-nav.md | Responsive or navigation work | Breakpoints, container queries, nav patterns by density |
references/ux-preflight.md | Before delivery | UX state verification checklist |
references/typography-line-breaks.md | Always for text-heavy UI | Heading break quality, short descriptor category (hero subtitle, card desc โ use balance not pretty), orphan prevention, ch units, Korean orphan criteria, -webkit-line-clamp conflict |
references/favicon-logo.md | Favicon, product logo, or brand identity work | Favicon file set, SVG dark mode, logo in nav/footer, dark mode variants, OG images, brand tokens, common mistakes |
references/logo-trust-sections.md | Integration/partner/client logos | Marquee vs grid decision, anti-patterns, grayscale treatment, placement |
references/visual-hierarchy.md | Any layout / composition decision | 6 levers: size scale, weight contrast, color emphasis, spacing, position, density |
references/form-patterns.md | Forms, wizards, auth, file upload | Validation timing, multi-step, password UX, file upload, search/filter |
references/mobile-native-ux.md | Native mobile app UX decisions | iOS HIG vs Material 3, gestures, deep linking, Korean privacy, app store UX |
Lazy-User Gate (UX-LAZY-01, DEFAULT โ ponytail discipline applied to UX)
Design for the cognitively frugal user: users don't read, they scan; they satisfice;
they will trade choice for one obvious next action. Before shipping any user-facing
decision point โ option, setting, step, confirmation, input field, mode โ justify its
existence the ponytail way, in order:
- Do nothing: can a correct default remove this decision entirely? (A settings
page is a collection of defaults you failed to choose.)
- Delete: does the step/field earn its completion-rate cost? Every added decision
point taxes conversion and comprehension (Hick's law).
- Absorb: can the system take the complexity instead of the user (Tesler's law) โ
auto-detect, infer, remember last choice?
- Demote: still needed for some users โ progressive disclosure (advanced section,
"more options"), never a top-level fork.
Every screen has ONE primary action. If two actions compete visually, the design has
not decided what the screen is for.
Surface-conditional (do not over-apply): laziness means fewer decisions on
consumer/one-shot flows (D1-D3), but fewer repeated motions on repeated-work tools
(D4-D8: density, keyboard paths, batch actions โ collapsing an expert's controls into
wizards is the inverse failure). Route by the product-density profile first.
STRICT exemptions (never one-click away): destructive/irreversible actions,
consent/privacy/legal choices, payments confirmation, and accessibility affordances
are never collapsed into magic defaults.
UX State Contract (UX-STATE-01)
For onboarding, empty, loading, error, or progressive-disclosure work, answer the state meaning before styling. Deep patterns live in references/ux-states.md.
- Onboarding teaches the first meaningful action, not the whole product.
- Empty explains why the state exists and names the next action.
- Loading chooses skeleton for known structure, spinner/progress for short unknown waits, and avoids fake completion.
- Error exposes retry, recovery, or escalation; never dead-end the user.
- Progressive disclosure names what stays hidden, why, and where it becomes available.
IA Chooser (UX-IA-01)
Default navigation architecture by work shape; read references/responsive-nav.md for responsive details.
| Work shape | Default IA |
|---|
| Dense desktop repeated work | Sidebar + command palette |
| Medium sectioned work | Tabs or segmented navigation |
| Mobile-primary consumer flow | Bottom nav, sheet, or thumb-zone actions |
| Wizard/auth/setup | Stepper or stacked linear flow |
1. User Intent Discovery Protocol
When the user's design request is vague ("๊น๋ํ๊ฒ ํด์ค", "๋ชจ๋ํ๊ฒ", "just make it look good"), do not produce generic output. Run the compact ambiguity flow (UX-INTENT-01):
- Produce the Design Read from ยง2 using available signals.
- If one decision still blocks the direction, ask ONE best clarifying fork with binary/ternary choices.
- Proceed from the answer; if the user does not answer and the task can continue, choose the most domain-correct default and state the assumption.
Skip this section if the user provided explicit design specs or this is a โค5-line patch.
Optional deepening: use the ladder below only when the first fork fails or the user explicitly wants guided exploration.
- Use binary/ternary choices, not open-ended questions.
- Reference known products โ users recognize what they want faster than they articulate it.
- If the diagram skill is available, offer: "์ฐธ๊ณ ๋ก ์คํ์ผ ๋น๊ต๋ฅผ ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ๋ณด์ฌ๋๋ฆด ์๋ ์์ด์."
- If the user names a specific product reference, skip remaining steps and map directly via
references/product-personalities.md.
Step 1 โ Mood
Ask: "์ ์ฒด์ ์ธ ๋ถ์๊ธฐ๊ฐ ์ด๋ค ๋๋์ด๋ฉด ์ข์๊น์?" / "What overall feeling should the product have?"
| Option | Signals | Product References |
|---|
| ์ ๋ฌธ์ /์ ๋ขฐ๊ฐ (Professional) | swiss, flat, restrained | Linear, Vercel, GitHub |
| ๋ฐ๋ปํ/์น๊ทผํ (Warm/Friendly) | rounded, warm-neutrals, illustrations | Notion, Airbnb, Toss |
| ๊ณ ๊ธ์ค๋ฌ์ด/์ธ๋ จ๋ (Premium) | generous-whitespace, thin-type, restrained-color | Apple, Stripe, Aesop |
| ์ฌ๋ฏธ์๋/ํ๊ธฐ์ฐฌ (Fun/Energetic) | bright-colors, playful-shapes, bold-type | Figma, Discord |
| ๋๋ดํ/๋
ํนํ (Bold/Distinctive) | brutalism, asymmetry, experimental | Gumroad, Nothing |
Step 2 โ Lightness
Ask: "๋ฐ์ ํ๋ฉด์ด ์ข์ผ์ ๊ฐ์, ์ด๋์ด ํ๋ฉด์ด ์ข์ผ์ ๊ฐ์?" / "Light or dark background?"
| Option | CSS |
|---|
| ๋ฐ์ ๋ฐฐ๊ฒฝ (Light) | bg-white text-gray-900 |
| ์ด๋์ด ๋ฐฐ๊ฒฝ (Dark) | bg-gray-950 text-gray-100 |
| ๋ ๋ค (Both / auto) | prefers-color-scheme aware |
Step 3 โ Density
Ask: "ํ๋ฉด์ ์ ๋ณด๊ฐ ๋ง์ด ๋ณด์ด๋ ๊ฒ ์ข์ผ์ ๊ฐ์, ์ฌ์ ๋กญ๊ฒ ๋ณด์ด๋ ๊ฒ ์ข์ผ์ ๊ฐ์?" / "Dense or spacious?"
| Option | VISUAL_DENSITY | Tokens |
|---|
| ๋นฝ๋นฝํ๊ฒ (Dense) | 8โ10 | text-sm py-1 px-2 gap-1 |
| ๋ณดํต (Normal) | 4โ7 | text-base py-3 px-4 gap-4 |
| ์ฌ์ ๋กญ๊ฒ (Spacious) | 1โ3 | text-lg py-8 px-8 gap-8 |
Step 4 โ Shape
Ask: "๋ชจ์๋ฆฌ๊ฐ ๊ฐ์ง ๋๋์ด ์ข์ผ์ ๊ฐ์, ๋ฅ๊ทผ ๋๋์ด ์ข์ผ์ ๊ฐ์?" / "Sharp or rounded?"
| Option | CSS | Signals |
|---|
| ๊ฐ์ง (Sharp) | rounded-none / 0โ2px | Vercel, brutalism, swiss |
| ์ด์ง ๋ฅ๊ทผ (Slightly rounded) | rounded-md / 6โ8px | Linear, Notion, material |
| ๋ง์ด ๋ฅ๊ทผ (Very rounded) | rounded-2xl / 16โ24px | Figma, iOS, Toss |
Step 5 โ Viewport Priority
Ask: "์ฃผ๋ก ์ด๋ค ํ๋ฉด์์ ๋ณผ ๊ฑด๊ฐ์?" / "What's the primary viewing device?"
| Option | Responsive Strategy | Key Constraint |
|---|
| ๋ฐ์คํฌํ ์์ฃผ (Desktop-first) | Desktop layout โ tablet โ mobile collapse | Data density OK, hover interactions OK |
| ๋ชจ๋ฐ์ผ ์์ฃผ (Mobile-first) | Mobile layout โ tablet โ desktop expansion | Thumb zone, touch targets, minimal density |
| ๋ ๋ค ์ค์ (Both equally) | Design mobile AND desktop as separate compositions, not one adapted from the other | Most work โ section order/composition may differ |
Cross-ref: references/responsive-nav.md for canonical breakpoints and container query patterns, dev-frontend/references/core/mobile-ux.md for mobile-specific composition rules.
Step 6 โ Reference
Ask: "ํน์ '์ด๋ฐ ๋๋์ด๋ฉด ์ข๊ฒ ๋ค' ํ๋ ์ฌ์ดํธ๋ ์ฑ์ด ์์ผ์ ๊ฐ์?" / "Any website or app that feels like what you want?"
This single question often resolves all ambiguity. If the user names a product, map it via references/product-personalities.md.
Vague Request Disambiguation
When the user gives feedback without specifics, translate:
| User says | Action |
|---|
| "๋ ์ข๊ฒ" / "make it better" | Ask: "๋ ์ด์์? ์์? ํ์ดํฌ? ์ฌ๋ฐฑ?" โ identify the dimension |
| "๋ ์ ๋ฌธ์ ์ผ๋ก" / "more professional" | Increase whitespace, reduce color count to 2โ3, tighten grid alignment |
| "๋ ๋ชจ๋ํ๊ฒ" / "more modern" | Negative letter-spacing on headings, offer dark mode, reduce radius to 8px |
| "๋ ์ฌ๋ฏธ์๊ฒ" / "more exciting" | Add one bold accent color, increase type contrast, add micro-animation on hover |
| "๋๋ฌด ์ฌ์ฌํด" / "too boring" | Add asymmetric layout, introduce one unexpected element, vary section rhythm |
| "๋๋ฌด ๋ณต์กํด" / "too busy" | Reduce element count, increase whitespace, limit to 2 colors |
2. Design Read (MANDATORY for new pages, components, or layouts. Optional for โค5-line patches โ see dev ยง0.1 Patch Fast-Path.)
Before generating ANY frontend code, produce a Design Read. If the project has a DESIGN.md file, read it first โ its tokens and prose override everything below.
Output format (mini DESIGN.md)
Filled-in example: references/design-read-example.md.
---
name: <project-name>
colors:
primary: "<hex>"
accent: "<hex>"
background: "<hex>"
typography:
heading: { fontFamily: <font>, fontSize: <size> }
body: { fontFamily: <font>, fontSize: <size> }
---
Reading this as: for , with a language.
<1-2 sentences: specific reference, not adjectives. "1970s lecture handout" > "modern and clean">
Do's:
Don'ts:
Signals to read
- Page kind โ landing (SaaS/consumer/agency/event), portfolio, redesign, editorial, app UI, tool UI
- Vibe words โ what the user said or implied
- Reference signals โ URLs, screenshots, brands named
- Audience โ B2B procurement vs design-conscious consumer vs recruiter
- Existing brand assets โ logo, color, type, photography
- Quiet constraints โ accessibility-first, public-sector, regulated, kids
Dial Setting (MANDATORY โ immediately after Design Read)
From the Design Read, derive and declare three dials before any code:
DESIGN_VARIANCE: <1-10>
MOTION_INTENSITY: <1-10>
Product density profile: <D1-D8> (see dev-frontend/references/core/product-density.md)
Reasoning: <one sentence explaining why these values match the brief>
Inference rules:
- Corporate/gov/utility โ VARIANCE 2-4, MOTION 1-3, density D2-D3
- Marketing/landing โ VARIANCE 4-7, MOTION 3-5, density D2-D3
- Creative/portfolio/editorial โ VARIANCE 6-9, MOTION 4-7, density D1-D3
- Dashboard/SaaS/admin โ VARIANCE 2-4, MOTION 1-2, density D4-D5
- "Complex" in brief โ increase density profile (functional depth), NOT VARIANCE or MOTION
- "Simple" in brief โ decrease all three proportionally
"๋ณต์กํ๋ค" = high DESIGN_VARIANCE is WRONG. Complexity means more features/data/flows, not more visual tricks (carousels, parallax, animations).
Anti-Default Discipline
Do not default to: warm beige backgrounds, centered hero, three equal feature cards, generic glassmorphism, Inter + slate-900, card-based everything. These are LLM defaults. Reach past them BASED ON the design read.
If the brief is ambiguous, ask ONE clarifying question. Not a multi-question dump.
DESIGN.md persistence
If the project needs persistent design tokens across sessions, save the Design Read as a full DESIGN.md in the project root. Format spec: references/design-system-bootstrap.md ยง DESIGN.md Format.
3. Korean Request Translation
Map common Korean design descriptors to concrete tokens. When the user uses these words, translate before implementing.
| Korean | Literal | CSS/Token Translation |
|---|
| ๊น๋ํ๊ฒ | cleanly | Generous whitespace (24-48px gaps), strict grid, max 2-3 colors, saturation < 60%, 1px borders or none, 4-8px radius, single font, no/subtle shadows |
| ๋ชจ๋ํ๊ฒ | modern | Geometric sans-serif (Geist/Outfit), negative letter-spacing on headings, dark mode or high-contrast light, 8-16px radius, spring micro-interactions |
| ๊ณ ๊ธ์ค๋ฝ๊ฒ | luxurious | Very generous whitespace (48-96px padding), thin weights (300-400), serif for headings, low-saturation palette, slow animations (800ms+), 0-4px radius |
| ์ฌํํ๊ฒ | simply | Max 3-4 element types per screen, 1-2 colors, single font, 2-3 size steps, hidden/minimal navigation, zero decoration |
| ํธ๋ ๋ํ๊ฒ | trendy | Glassmorphism, bento grid, gradient mesh, variable fonts โ ask for a reference site |
| ๋ฐ๋ปํ๊ฒ | warmly | Warm hue range (stone/amber/orange), 12-20px radius, warm-tinted shadows rgba(180,140,100,0.1), serif or rounded sans |
| ์ฐจ๊ฐ์ด | cold/cool | Cool grays (slate/zinc), blue-tinted whites, geometric sans, thin weights, 0-8px radius |
| ๊ฐ์ฑ์ ์ผ๋ก | emotionally | Editorial/lifestyle, serif display + sans body, muted/pastel colors, generous line-height, photography-heavy |
Clarifying questions per term:
- ๊น๋: "Notion์ฒ๋ผ ๋ฐ๋ปํ ๊น๋ํจ์ธ์ง, Vercel์ฒ๋ผ ์ฐจ๊ฐ์ด ๊น๋ํจ์ธ์ง์?"
- ๋ชจ๋: "๋คํฌ ๋ชจ๋ + ๋ ์นด๋ก์(Linear)์ธ์ง, ํ์ดํธ + ๋ฏธ๋๋ฉ(Vercel)์ธ์ง์?"
- ๊ณ ๊ธ: "๋ธ๋๋ ๊ณ ๊ธ๊ฐ(Apple/Stripe)์ธ์ง, ํจ์
๋ญ์
๋ฆฌ(Art Deco)์ธ์ง์?"
- ์ฌํ: "๊ธฐ๋ฅ์ด ์ ์ ๊ฑด์ง, ๊ธฐ๋ฅ์ ๋ง์ง๋ง ํ๋ฉด์ด ์ฌํํด ๋ณด์ด๊ธธ ์ํ๋ ๊ฑด์ง์?"
4. Quick-Match Table
Rapid lookup: user word โ concrete starting point.
| User (KO) | User (EN) | Start From | Dark? | Radius | Density | Font |
|---|
| ๊น๋ํ๊ฒ | Clean | Notion or Vercel | No | 8px | 4โ7 | Geist / Pretendard |
| ๋ชจ๋ํ๊ฒ | Modern | Linear or Vercel | Yes | 6px | 4โ7 | Geist / Outfit |
| ๊ณ ๊ธ์ค๋ฝ๊ฒ | Premium | Apple or Stripe | Either | 0โ4px | 1โ3 | Satoshi / system thin-300 |
| ์ฌํํ๊ฒ | Simple | Vercel | Either | 0px | 1โ3 | Geist |
| ๋ฐ๋ปํ๊ฒ | Warm | Notion or Toss | No | 12px | 4โ7 | Pretendard / Cabinet Grotesk |
| ์ฌ๋ฏธ์๊ฒ | Fun | Figma | No | 16px+ | 4โ7 | Custom grotesque |
| ์ ๋ฌธ์ ์ผ๋ก | Professional | Linear or GitHub | Either | 6px | 4โ7 | Geist / Outfit |
| ๋๋ดํ๊ฒ | Bold | Neobrutalism | No | 0px | 4โ7 | Black 900 |
| ๊ฐ์ฑ์ ์ผ๋ก | Aesthetic | Editorial | No | 0โ4px | 1โ3 | Serif display |
| ํธ๋ ๋ํ๊ฒ | Trendy | Ask for reference | Either | 12px | 4โ7 | Variable font |
Font Selection Guidelines (STYLE_SAMPLE)
- Primary default: Geist (modern SaaS, Vercel ecosystem)
- Korean-first: Pretendard โ strong Korean-first default (Pretendard Variable
available); verify brand/product font rules before claiming any specific Korean
company standard
- Warm/editorial: Outfit or Cabinet Grotesk
- Premium/luxury: Satoshi or system thin weights
- Avoid defaulting to Inter (DEFAULT) โ a widely recognized AI-generated-UI tell
(judgment rule, not a measured fact). Use it when the user requests it or the project
already uses it.