PABCD Initiative Documentation Hub pabcd_initiative codexclaw cli-jaw

dev-uiux-design

Source: skills/dev-uiux-design/SKILL.md

UI/UX design direction: visual judgment, design isms, product personality, UX states.

왜 별도 모듈인가
에이전트에게 '멋지게 만들어'라고 하면 매번 비슷한 그라데이션, 둥근 카드, 보라색 팔레트가 나온다. 디자인 판단은 도메인, 사용자, 맥락에 따라 달라져야 하는데, 구현 스킬(dev-frontend)만으로는 이 판단이 빠진다. 이 스킬은 디자인 방향을 먼저 결정하고, 그 방향에 맞는 구체적인 타이포/색상/레이아웃을 설정한 뒤 dev-frontend에 구현을 넘긴다.
LLM 단독 사용 시 발생하는 문제

LLM에게 디자인을 맡기면 세 가지 수렴이 발생한다: (1) 시각적 수렴 — 모든 프로젝트가 같은 카드 그리드, 같은 히어로 레이아웃, 같은 색상 팔레트로 수렴한다. (2) 문화적 수렴 — 한국어 요청을 영어권 디자인 관습으로 해석한다('깔끔하게'를 일률적으로 미니멀리즘으로). (3) 상태 수렴 — 데이터가 완벽하게 들어와 있는 해피 상태만 디자인한다. 비어있는/에러/로딩/권한 부족 상태는 LLM이 자발적으로 고려하지 않는다.

이 세 가지 수렴은 LLM의 학습 데이터 분포에서 직접 비롯된다. dev-uiux-design은 구현 전에 이 세 수렴을 깨뜨리는 '디자인 방향 결정'을 강제한다.

이 스킬이 해결하는 실제 문제

한국어 디자인 요청의 번역 손실

'깔끔하게 해줘'라는 요청은 미니멀리즘인지, 화이트 스페이스 정리인지, 타이포 개선인지 맥락에 따라 다르다. Korean Request Translation(section 3)은 흔한 한국어 디자인 요청을 구체적인 디자인 방향으로 변환하는 사전을 제공한다.

모든 프로젝트가 같은 성격으로 수렴

에이전트는 SaaS 대시보드와 게임 랜딩 페이지에 같은 디자인을 적용한다. Product Personality Selection은 도메인별 성격(미니멀/엔터프라이즈/플레이풀/에디토리얼)을 먼저 결정하게 한다. product-personalities.md에 구체적인 참조 제품과 시각적 특성이 정리되어 있다.

UX 상태 누락 — 빈 상태, 에러 상태, 로딩 상태

에이전트는 데이터가 잘 들어와 있는 해피 경로만 구현한다. 데이터가 없을 때, API가 실패했을 때, 로딩 중일 때, 권한이 없을 때의 UX가 빠진다. ux-states.md는 이 4가지 상태를 반드시 설계하게 한다.

파비콘과 로고의 사후처리

에이전트가 앱을 완성한 뒤 파비콘을 까먹거나, 적당히 이모지를 넣는다. favicon-logo.md는 파비콘/로고가 디자인 시스템의 일부임을 명시하고, 브라우저 탭에서 식별 가능한 아이콘을 만들게 한다.

Triggers: make it look good, modern, clean, aesthetic, onboarding, empty state, error state, favicon, logo, design system

Key Concepts

  • Product Personality Selection
  • Design Isms (Bauhaus/Memphis/Brutalism/etc.)
  • Korean Request Translation
  • UX States (Empty/Error/Loading/Permission)
  • Typography Decision Gate
  • Favicon & Logo System

Reference Documents

DocumentDescription
Anti-Rationalization Table (UX-ANTI-RATIONAL-01)
color-system
Compositional Patterns
Conversational AI UX
Design Award Source Guide
design-ismsBauhaus/Memphis/Brutalism/Wabi-Sabi 등 디자인 사조와 적용 조건
Design Read Example
design-system-bootstrap
Dated Design Trends
Favicon & Product Logo — Design Judgment & Patterns파비콘/로고 생성 규칙, 크기별 대응, 브랜드 일관성
Form Design Patterns
Intent Discovery Ladder
Korean Design Vocabulary
layout-macrostructures
Logo Trust Sections — Design Patterns & Judgment
Mobile Native UX Conventions
product-personalities미니멀/엔터프라이즈/플레이풀/에디토리얼 성격별 참조 제품과 시각적 특성
responsive-nav
Typography Line Breaks — Design Judgment Guidetext-wrap: balance/pretty, ch 단위, 한국어 고아 방지
UX Preflight Checklist
ux-states빈 상태/에러/로딩/권한 부족의 UX 패턴과 마이크로카피 가이드
Visual Hierarchy

Sections Overview

SectionSummary
Product Personality도메인과 사용자에 맞는 제품 성격(미니멀/엔터프라이즈/플레이풀 등)을 결정한다.
Design IsmsBauhaus, Memphis, Brutalism 등 디자인 사조를 알고 적절히 적용한다.
Korean Request Translation한국어 디자인 요청의 실제 의도를 파악하여 구체적 디자인 방향으로 변환한다.
UX States비어있는/에러/로딩/권한 부족 상태의 UX 패턴을 설계한다.

Academic References

PaperYearRelevance
Co-Constructed or Constrained? AI Tools Reshape UI Design Practice
CHI 2026
2026AI 도구가 UI 디자인을 동질적으로 만드는 현상의 실증.
Generative AI Enhances Individual Creativity but Reduces Collective Diversity
Science Advances 2024
2024AI 지원 창작의 개별 품질 향상 + 집단 다양성 감소.
Antislop: A Comprehensive Framework for Identifying and Eliminating Repetitive Patterns in LLMs
arXiv:2510.15061
2025LLM 특유의 반복적 언어 패턴 탐지 프레임워크. anti-slop 체크리스트의 학술적 근거.
Measuring AI Slop in Text
arXiv:2509.19163
2025전문가 기반 AI 슬롭 분류 체계와 해석 가능한 평가 차원 개발.

Official Guides

Full Specification

Show full SKILL.md content

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.

> dev is canonical: dev §0.2 Rule Classes, §3 Verification Gate, and §5 Safety Rules apply to all work governed by this skill.

> Role boundary (canonical):

> dev owns universal process, evidence, and safety rules. dev-uiux-design owns

> design intent, direction, and concept judgment. dev-frontend owns concrete frontend

> implementation and rendered tell enforcement. Anti-slop has three layers: dev =

> output/process hygiene, dev-uiux-design = concept/taste judgment,

> dev-frontend = rendered implementation tell detection and removal.

> 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

FileWhen to ReadWhat It Covers
references/design-isms.mdUser names a style/movement15 design movements with CSS signatures, incl. Liquid Glass + Liquid Editorial default kit (2025-2026) + AI Serif Editorial + Organic Capsule (verified 2026-07-09)
references/design-award-sources.mdLooking for real-world design referencesTiered award/gallery sources, retrieval strengths, and evidence boundaries
references/design-read-example.mdLearning or reviewing Design Read formatFilled-in Design Read + dial setting example
references/product-personalities.mdUser references a product10 product DNA profiles with exact tokens, incl. 2026 AI-product pastel + OpenAI warm-sans organic + Anthropic serif bookish
references/layout-macrostructures.mdChoosing page/component layoutComponent layouts + page-level compositions
references/compositional-patterns.mdComposing hero, navigation, motion, or content structureReusable pattern families distilled from award research
references/design-trends.mdChecking dated prevalence or emerging techniquesDated axis signals, maturity ledger, and re-crawl protocol
references/ux-states.mdBuilding any stateful UIOnboarding, empty, error, loading, progressive disclosure
references/conversational-ai.mdChat, agent, copilot, or any turn-based AI surfaceTurn-state distinguishability, recovery after interruption, honest uncertainty display
references/intent-discovery-ladder.mdThe compact intent flow did not land a directionOptional deepening path; the §1 flow stays the default
references/korean-design-vocabulary.mdKorean design descriptors in the briefDescriptor-to-token translation table
references/color-system.mdGenerating colors/paletteOKLCH-based palette generation, dark mode, accessibility
references/design-system-bootstrap.mdNew project / design systemToken architecture, component hierarchy, and the repository's DESIGN.md format
references/responsive-nav.mdResponsive or navigation workBreakpoints, container queries, nav patterns by density
references/ux-preflight.mdBefore deliveryUX state verification checklist
references/typography-line-breaks.mdAlways for text-heavy UIHeading 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.mdFavicon, product logo, or brand identity workFavicon file set, SVG dark mode, logo in nav/footer, dark mode variants, OG images, brand tokens, common mistakes
references/logo-trust-sections.mdIntegration/partner/client logosMarquee vs grid decision, anti-patterns, grayscale treatment, placement
references/visual-hierarchy.mdAny layout / composition decision6 levers: size scale, weight contrast, color emphasis, spacing, position, density
references/form-patterns.mdForms, wizards, auth, file uploadValidation timing, multi-step, password UX, file upload, search/filter
references/mobile-native-ux.mdNative mobile app UX decisionsiOS HIG vs Material 3, gestures, deep linking, Korean privacy, app store UX

The award references are repository-local curated synthesis. Treat their examples as dated evidence and context-gated options, never as an external devlog dependency or a universal style prescription.

---

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:

  1. Do nothing: can a correct default remove this decision entirely? (A settings

page is a collection of defaults you failed to choose.)

  1. Delete: does the step/field earn its completion-rate cost? Every added decision

point taxes conversion and comprehension (Hick's law).

  1. Absorb: can the system take the complexity instead of the user (Tesler's law) —

auto-detect, infer, remember last choice?

  1. 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 shapeDefault IA
Dense desktop repeated workSidebar + command palette
Medium sectioned workTabs or segmented navigation
Mobile-primary consumer flowBottom nav, sheet, or thumb-zone actions
Wizard/auth/setupStepper 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):

  1. Produce the Design Read from §2 using available signals.
  2. If one decision still blocks the direction, ask ONE best clarifying fork with binary/ternary choices.
  3. 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. On EXPRESSIVE surfaces (landing/consumer/creative/AI-product), that default is the No-Brief Default Direction below (UX-DEFAULT-ISM-01); quiet surfaces keep quiet domain-correct defaults.

> Skip this section if the user provided explicit design specs or this is a ≤5-line patch.

No-Brief Default Direction (UX-DEFAULT-ISM-01, DEFAULT — kit content STYLE_SAMPLE)

This is the UX-INTENT-01 step-3 FALLBACK, never a bypass: it fires only after

the Design Read and after the one blocking fork is resolved or unanswered, and

the applied direction is ALWAYS stated as an explicit assumption in the

deliverable. A named, specific, domain-gated direction replaces generic LLM

defaults; it must NOT reintroduce generic glassmorphism / centered-card /

beige-default taste under a new label.

Default kit for expressive surfaces: Liquid Editorial (2026 composite,

decided 2026-07-07 from Tier-2 trend research — see references/design-isms.md

§1.13 for the full signature):

  • Structure: type-led editorial composition (oversized authored headline

scale, grotesk default, serif display only with editorial rationale per

UX-TYPE-01), tactile/photographic texture over flat gradient washes,

asymmetric content-weighted layout.

  • Material accent: Liquid Glass or near-opaque pill chrome ONLY on floating

functional layers (nav/toolbars/chip clusters); pill-chip content units;

content layer stays solid (dev-frontend FE-LIQUID-LAYER-01).

  • Motion: feedback baseline + exactly ONE signature moment

(pointer-proximity chips or scroll-driven reveal), per motion domain gates.

  • Color: OKLCH-derived single accent + tinted neutrals (hue budget,

references/color-system.md).

Domain gate (STRICT): dashboards, admin, ops, finance, gov, B2B repeated-work

tools NEVER receive this kit by default — "fancy" never overrides domain

correctness (§ IA Chooser + dev-frontend product-density profiles).

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?"

OptionSignalsProduct References
전문적/신뢰감 (Professional)swiss, flat, restrainedLinear, Vercel, GitHub
따뜻한/친근한 (Warm/Friendly)rounded, warm-neutrals, illustrationsNotion, Airbnb, Toss
고급스러운/세련된 (Premium)generous-whitespace, thin-type, restrained-colorApple, Stripe, Aesop
재미있는/활기찬 (Fun/Energetic)bright-colors, playful-shapes, bold-typeFigma, Discord
대담한/독특한 (Bold/Distinctive)brutalism, asymmetry, experimentalGumroad, Nothing

Step 2 — Lightness

Ask: "밝은 화면이 좋으신가요, 어두운 화면이 좋으신가요?" / "Light or dark background?"

OptionCSS
밝은 배경 (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?"

OptionVISUAL_DENSITYTokens
빽빽하게 (Dense)8–10text-sm py-1 px-2 gap-1
보통 (Normal)4–7text-base py-3 px-4 gap-4
여유롭게 (Spacious)1–3text-lg py-8 px-8 gap-8

Step 4 — Shape

Ask: "모서리가 각진 느낌이 좋으신가요, 둥근 느낌이 좋으신가요?" / "Sharp or rounded?"

OptionCSSSignals
각진 (Sharp)rounded-none / 0–2pxVercel, brutalism, swiss
살짝 둥근 (Slightly rounded)rounded-md / 6–8pxLinear, Notion, material
많이 둥근 (Very rounded)rounded-2xl / 16–24pxFigma, iOS, Toss

Step 5 — Viewport Priority

Ask: "주로 어떤 화면에서 볼 건가요?" / "What's the primary viewing device?"

OptionResponsive StrategyKey Constraint
데스크탑 위주 (Desktop-first)Desktop layout → tablet → mobile collapseData density OK, hover interactions OK
모바일 위주 (Mobile-first)Mobile layout → tablet → desktop expansionThumb zone, touch targets, minimal density
둘 다 중요 (Both equally)Design mobile AND desktop as separate compositions, not one adapted from the otherMost 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 saysAction
"더 좋게" / "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: <page kind> for <audience>, with a <vibe> language.

<1-2 sentences: specific reference, not adjectives. "1970s lecture handout" > "modern and clean">

Do's: <context-specific positive from brief>

Don'ts: <context-specific ban from brief>

Signals to read

  1. Page kind — landing (SaaS/consumer/agency/event), portfolio, redesign, editorial, app UI, tool UI
  2. Vibe words — what the user said or implied
  3. Reference signals — URLs, screenshots, brands named
  4. Audience — B2B procurement vs design-conscious consumer vs recruiter
  5. Existing brand assets — logo, color, type, photography
  6. 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).

Dial Presets (UX-DIAL-PRESET-01, STYLE_SAMPLE)

Source: taste-skill v2, via codexclaw. Exact tuples for common use cases. Presets are

authoritative specializations that may exceed the inference ranges above — Agency

motion 8 exceeds the general landing 5-7 range on purpose. When a preset exists for the

exact use case, use it directly and adjust from the Design Read.

Use caseVarianceMotionDensityNotes
Landing (SaaS mainstream)764
Landing (agency/creative)983
Landing (premium consumer)763
Portfolio (designer/studio)873
Portfolio (developer)654
Editorial / blog643
Public-sector service324
Dashboard / SaaS admin325
Finance / ops217density D6-D7
Game874domain-specific
Korean consumer app545CJK density

Redesign arithmetic (DEFAULT). Score the existing surface with the preset rules

first, then move from it:

  • Preserve: variance = match existing, motion = match + 1, density = match existing.
  • Overhaul: variance = existing + 2, motion = existing + 2, density = match existing.
  • "Complex" in the brief increases density, never variance or motion.
  • "Simple" decreases variance and motion; density stays or increases.

Clamp all arithmetic to 1-10 and D1-D8. An existing SaaS surface at 7/6/4 preserves to

7/7/4 and overhauls to 9/8/4.

Audience-first ownership (UX-AUDIENCE-01, DEFAULT)

The audience picks the aesthetic, not the model's taste. When audience signal and

model preference conflict, audience wins. The presets above encode audience

expectations — a public-sector audience expects trust-first restraint, an agency

audience expects high variance — so reaching past a preset because the result feels

plain is the failure this rule names. Override with stated rationale only.

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.

Image-First Direction Discovery (UX-IMAGE-FIRST-01, DEFAULT)

Fires when the brief has no named ism, product reference, or concrete design

direction. Generate 5 maximally different ism directions, varying layout family,

palette, type stance, material, and hero grammar. Every prompt must be detailed enough

to reconstruct the layout.

Compare candidates on hero composition, palette coherence, typographic voice, and

density fit. Pick the winning ism, not the winning image — the render is evidence

for a direction, and treating it as the deliverable is how a one-off composition becomes

an accidental design system.

Then synthesize rather than crowning one candidate. Build an element ledger recording,

per token, which variant did it best and why:

TokenBest variantRationaleLocked value
Palette#3warmest coherenceprimary + accent
Hero#1strongest asymmetric compositioneditorial offset
Type#2best weight contrastheading 300, body 400

The synthesis IS the direction lock: it assembles the best tokens from several

candidates into one coherent set, and the lock is that assembled set rather than any

single render. Refine the locked direction with 2-4 variants afterwards.

When a human is in the loop they pick the ism; running unattended, state the selection

reasoning in the record.

2.6 Asset Production Handoff (UX-ASSET-GEN-01, DEFAULT)

Once the concept direction is locked, asset work belongs to

dev-frontend/references/core/asset-requirements.md — generation, background removal

(FE-ASSET-BG-01), batching, selection, and integration. This section exists to mark the

handoff rather than to duplicate it: the direction is decided here, the assets are

produced there, and blurring the two is how an unlocked direction gets 40 generated

images spent on it.

2.7 Icon Strategy (UX-ICON-01, DEFAULT)

Choose iconography during the Design Read, before frontend implementation. Select

the domain-correct default from the density matrix; an explicit DESIGN.md

iconography block overrides it. Do not ask the user unless icon direction is a

material brand decision that cannot be inferred from the brief.

DensityTypical surfaceRecommended libraryWhy
D1Editorial, campaign, sparse portfolioIconoirAiry 1.5px linework suits low-density art-directed composition
D2Marketing site, premium consumer landingPhosphor or IconoirPhosphor adds expressive weights; Iconoir stays restrained
D3Consumer product, content appPhosphorBroad semantics plus regular/fill/duotone hierarchy
D4SaaS product, general app UIPhosphorDefault balance of clarity, coverage, personality
D5Korean consumer app, feature-rich mobilePhosphor + custom domain layerSystem clarity plus colorful product-specific concepts
D6Dense admin, B2B workflowHugeicons or Untitled UIHigher coverage, neutral precise forms
D7Finance, ops, analyticsUntitled UI or HugeiconsControlled neutral geometry at high information density
D8Developer tool, expert control surfaceHugeicons or LucideMaximum coverage; Lucide only when ecosystem fit is intentional

Routing:

  1. Set the system library from the matrix and the product's visual language. Phosphor is

the general default, not a universal mandate.

  1. Respect an explicit user choice or an existing DESIGN.md value over the inferred

default.

  1. Use the library for routine system semantics — navigation, actions, status, search,

disclosure, utility controls.

  1. Generate a custom icon when a domain concept has no clear library glyph, when forcing

an approximate glyph would reduce comprehension, or when the brief requires a

brand-specific visual style. A licensed premium set is the alternative when it

already supplies a coherent domain vocabulary.

Three visual layers, kept distinct:

  • System icons (library) — routine interface semantics, one coherent library and

weight language.

  • Domain icons (custom or premium) — product concepts, categories, KPIs, services,

objects that generic libraries cannot represent precisely.

  • Brand icons (custom) — identity-bearing marks, characters, mascots, signature

illustrations. Never substitute a generic stroke icon for a logo.

Korean consumer apps often carry more information and rely on colorful domain category

and KPI icons for fast scanning. For D4-D6 Korean-first apps, prefer a restrained system

library plus a coherent colored domain layer over forcing every concept into monochrome

outline icons.

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.

KoreanLiteralCSS/Token Translation
깔끔하게cleanlyGenerous whitespace (24-48px gaps), strict grid, max 2-3 colors, saturation < 60%, 1px borders or none, 4-8px radius, single font, no/subtle shadows
모던하게modernGeometric sans-serif (Geist/Outfit), negative letter-spacing on headings, dark mode or high-contrast light, 8-16px radius, spring micro-interactions
고급스럽게luxuriousVery generous whitespace (48-96px padding), thin weights (300-400), serif for headings, low-saturation palette, slow animations (800ms+), 0-4px radius
심플하게simplyMax 3-4 element types per screen, 1-2 colors, single font, 2-3 size steps, hidden/minimal navigation, zero decoration
트렌디하게trendyGlassmorphism, bento grid, gradient mesh, variable fonts — ask for a reference site
따뜻하게warmlyWarm hue range (stone/amber/orange), 12-20px radius, warm-tinted shadows rgba(180,140,100,0.1), serif or rounded sans
차가운cold/coolCool grays (slate/zinc), blue-tinted whites, geometric sans, thin weights, 0-8px radius
감성적으로emotionallyEditorial/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 FromDark?RadiusDensityFont
깔끔하게CleanNotion or VercelNo8px4–7Geist / Pretendard
모던하게ModernLinear or VercelYes6px4–7Geist / Outfit
고급스럽게PremiumApple or StripeEither0–4px1–3Satoshi / system thin-300
심플하게SimpleVercelEither0px1–3Geist
따뜻하게WarmNotion or TossNo12px4–7Pretendard / Cabinet Grotesk
재미있게FunFigmaNo16px+4–7Custom grotesque
전문적으로ProfessionalLinear or GitHubEither6px4–7Geist / Outfit
대담하게BoldNeobrutalismNo0px4–7Black 900
감성적으로AestheticEditorialNo0–4px1–3Serif display
트렌디하게TrendyAsk for referenceEither12px4–7Variable font

Font Selection Guidelines (STYLE_SAMPLE)

  • Typography stance (UX-TYPE-01): sans by default; serif only with brief/brand/editorial rationale. When justified (AI-product/editorial/research/trust surfaces), use the three-role system — display serif at light weights 330-400 + sans UI + mono accent — never serif-everywhere or as a bare AI-premium shortcut ("tasteslop", 2026); gates in dev-frontend aesthetics.md § Serif Discipline.
  • 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
  • Korean serif display: MaruBuri (Naver 명조/부리) 400-600 for editorial Hangul headlines, paired with Pretendard UI — see dev-frontend korea-2026.md § Korean Serif / Myeongjo Display
  • 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.