모든 화면을 구성하는 10개 GUI 요소(버튼·폼·메뉴·링크·다이얼로그·알림·아이콘·체크박스/라디오·탭·검색)와 보너스 2(윈도우·포인터)에 대한 증거 기반 사용성 가이드라인 86종. UX Tigers(Jakob Nielsen, 2026-07-29) "10 GUI Design Elements"를 shadcn 컴포넌트와 1:1로 매핑해 한국어 실용 지침으로 증류. design-prompt-builder 패턴 3(디자인 시스템 생성)·패턴 6(사용성 감사)이 컴포넌트별 체크리스트로 참조. 다음과 같은 요청 시 반드시 이 스킬을 사용하세요: - "컴포넌트 사용성 가이드라인" - "GUI 위젯 설계 규칙" - "버튼/폼/다이얼로그 잘 만드는 법" - "Nielsen GUI 가이드라인" - "디자인 시스템 컴포넌트 감사 체크리스트"
Scanned 9/4/2026
Install to Claude Code
npx -y skills add modu-ai/moai-cowork --skill design-gui-guide --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Design Gui Guide?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/modu-ai-design-gui-guide)More formats (shields.io, HTML) on the badges page.
---
name: design-gui-guide
description: |
모든 화면을 구성하는 10개 GUI 요소(버튼·폼·메뉴·링크·다이얼로그·알림·아이콘·체크박스/라디오·탭·검색)와 보너스 2(윈도우·포인터)에 대한 증거 기반 사용성 가이드라인 86종.
UX Tigers(Jakob Nielsen, 2026-07-29) "10 GUI Design Elements"를 shadcn 컴포넌트와 1:1로 매핑해 한국어 실용 지침으로 증류.
design-prompt-builder 패턴 3(디자인 시스템 생성)·패턴 6(사용성 감사)이 컴포넌트별 체크리스트로 참조.
다음과 같은 요청 시 반드시 이 스킬을 사용하세요:
- "컴포넌트 사용성 가이드라인"
- "GUI 위젯 설계 규칙"
- "버튼/폼/다이얼로그 잘 만드는 법"
- "Nielsen GUI 가이드라인"
- "디자인 시스템 컴포넌트 감사 체크리스트"
version: "1.1.1"
---
# design-gui-guide — 10 GUI 요소 사용성 가이드라인 SSOT
## 목적과 근거
거의 모든 화면은 10개 표준 GUI 요소로 조립된다. 각 요소는 40년+ 다윈 필터를 통과한 관습이다 — **Jakob's Law**(사용자는 다른 사이트에서 보던 대로 너의 것도 작동하길 기대한다)가 익숙한 버전을 늘 더 낫게 만든다. 혁신 예산은 새 체크박스 종자를 만드는 데 쓰지 말고 콘텐츠와 서비스에 써라.
근거: UX Tigers, Jakob Nielsen, "10 GUI Design Elements Build Every User Interface" (2026-07-29) — 86개 증거 기반 가이드라인 + 보너스 2. 본 스킬은 이를 한국어 실용 지침으로 증류하고 shadcn 63종과 매핑한다. 원문 가이드라인(사용성 원칙·방법)을 재서술한 것이지 복사한 것이 아니다.
**세 가지 상위 명제** (모든 86개 지침은 이 아래 있다):
1. **기억시키지 말 것** — 인식(recognition) 우위 유지
2. **추측시키지 말 것** — 시각 문법·관습을 훼손하지 말 것
3. **기다리게 하지 말 것** — 반응·완결에 엄격한 예산
## 소비 지점
| 소비자 | 사용 방법 |
|---|---|
| `design-prompt-builder` 패턴 3 | 디자인 시스템 생성 시 각 컴포넌트를 해당 요소 가이드라인에 맞춰 설계 |
| `design-prompt-builder` 패턴 6 | 사용성 감사 시 Nielsen 10 휴리스틱 + 본 86개 지침(컴포넌트 단위)으로 평가 |
| `design-system-prep` | DESIGN.md Component recipes 품질 기준 |
| `design-slop-check` | 카피 중심 검수의 보완 — 컴포넌트 동작·레이아웃 품질은 본 스킬 |
---
## 1. Buttons — 누르면 무언가 일어난다
**shadcn**: Button · Button Group
버튼은 세계를 바꾸는 유일한 요소(링크·탭은 옮기고, 메뉴·다이얼로그는 대화를 재배열할 뿐). 그래서 라벨 규칙이 가장 엄격하다 — 잘못된 링크는 Back 한 번이지만, 잘못된 버튼은 고객 한 명을 잃는다.
1. **누를 수 있게 보이게.** 닫힌 형태 + 배경 대비 + 누름 시 상태 변화. 플랫 디자인으로 테두리/그림자를 걷어내면 "어떤 글자가 명령인지" 사용자가 추측하게 된다.
2. **모든 버튼에 결과를 나타내는 동사 라벨.** "Save Invoice"지 "OK"가 아니다. 효과가 2–4단어 안에 안 들어오면 라벨 문제가 아니라 더 깊은 문제.
3. **화면마다 시각적으로 우세한 주 액션 정확히 1개.** 주 액션이 2개 경쟁하면 주 액션이 없는 것.
4. **Fitts's law 준수.** 자주 쓰는 액션은 크고 가깝게. 터치 타깃 최소 1×1cm.
5. **모든 누름을 0.1초 안에 인지.** 반응한 것처럼 느끼는 한계.
6. **비활성 버튼은 주 색의 흐린 버전 + 왜 비활성인지/어떻게 켜는지 설명.** 숨기지 말 것.
7. **액션엔 버튼, 이동엔 링크.** 두 시각 언어를 섞지 말 것.
8. **버튼은 작업이 끝나는 자리에.** 필드·콘텐츠 뒤, 읽기 흐름의 자연스러운 끝.
> **Split button**: 주 액션(큰 영역, 1클릭) + 변형(작은 영역, 화살표/3점). 한 명령이 빈도로 압도적일 때만. 두 영역 사이 가시적 구분자 필수. 기본 하나가 안 정해지면 일반 메뉴 버튼을 써라.
---
## 2. Input Fields & Forms — 돈이 오가는 자리
**shadcn**: Input · Input Group · Input OTP · Textarea · Label · Field · Select · Native Select · Combobox · Date Picker · Checkbox · Radio Group · Switch · Toggle · Toggle Group · Slider
폼은 체크아웃·가입·리드 발생 — 사용성이 수익으로 직결된다(UX = profits). 가장 강한 지침은 **뺄셈**: 불필요한 필드 하나마다 완료율이 떨어진다. 선택 필드도 **필드 세금**(주의를 소모)을 매긴다 — DB에서 선택이어도 사용자 주의에선 선택이 아니다.
1. **엄격히 필요 없는 필드는 삭제.** 남길 필드 하나는 잃는 완료율/매출과 저울질해야 한다.
2. **모든 필드에 필드 밖의 영구 라벨.** placeholder는 힌트지 라벨이 아니다 — 타이핑 시작하면 사라진다.
3. **유연한 입력 포맷 수용.** 전화번호 하이픈 유무를 가리지 말고 코드에서 정제. 컴퓨터가 사람에게 떠넘긴 일을 되찾아라.
4. **에러는 해당 필드 옆에, 사용자가 입력한 값은 보존.** 에러로 입력을 날리는 폼은 두 번 쓰이지 않는다.
5. **작업에 맞는 전용 컨트롤 사용.** 날짜엔 Date Picker, 장바구니 제거엔 휴지통 아이콘(사용자 머릿속 "0으로 설정"이 아니라 "제거").
6. **단일 컬럼 + 관련 필드 그룹화.** 다중 컬럼은 읽기 순서를 모호하게 해 필드를 건너뛰게 한다.
7. **제출 버튼은 결과 라벨.** "Submit"이 아니라 "Place Order".
8. **입력 도중 검증 금지.** 키 입력 중 "잘못된 이메일"은 성급한 판단 — 필드를 벗어날 때 검증.
> **부담 인쇄 역설**: "3문항, 40초"처럼 부담을 미리 말하면 두려움이 거래로 바뀐다. 단, 거짓말 금지 — 1분이라 했는데 5분이면 신뢰가 사라진다.
---
## 3. Menus — 정보 구조의 시각화
**shadcn**: Dropdown Menu · Navigation Menu · Menubar · Context Menu · Breadcrumb
메뉴는 공간 절약 + 인식 우위(가시 선택에서 고르기). 단, **완결성 주장**이라는 함정 — 사용자는 메뉴를 "부엌이 만들 수 있는 전체 목록"으로 읽는다. 열리지 않을 라벨 아래 있는 것은 사용자에겐 없는 것이다.
1. **카테고리는 사용자 어휘로 — card sorting·tree testing으로 검증.** 조직도는 정보 구조가 아니다.
2. **hover보다 click-to-open.** hover 필수면 짧은 지연 + 대각선 허용 경로 추가.
3. **캐스케이드 2단계 한도.** 더 깊으면 깊이 말고 카테고리를 재구성.
4. **데스크톱에선 최상위 내비게이션 노출.** 햄버거는 작은 화면 전용 — 보이지 않는 내비게이션은 안 쓰는 것이다.
5. **현재 위치 표시.** "you are here" 점 없는 지도.
6. **중요도·작업 빈도순 정렬.** 정확한 이름을 아는 경우에만 가나다/알파벳순.
7. **가장 자주 쓰는 2–3 명령은 메뉴에서 빼고 가시 버튼으로 승격.** 메뉴는 긴 꼬리용.
---
## 4. Links — 웹의 원자
**shadcn**: (Typography·Breadcrumb 맥락)
링크는 두 약속 — 클릭 가능하다는 시각 약속(색+밑줄)과, 반대편에 무엇이 있는지에 대한 약속(information scent). "Click here"/"Learn more"는 향이 0이다. 스캐닝 사용자는 링크 **앞 11문자**를 주로 읽는다.
1. **링크는 링크답게.** 본문 속 링크는 색+밑줄 — 색만은 색맹·저가 화면에서 실패.
2. **링크 서식은 링크 전용.** 다른 것에 밑줄을 주면 가구를 클리커블로 훈련시킨다.
3. **정보를 담은 단어를 앞에.** 앞 11문자가 대부분의 일을 한다.
4. **목적지를 예측하게 + 맥락 없이도 의미 통하는 텍스트.** 스크린리더는 링크 목록을 뽑아준다 — "click here" 14개는 무용.
5. **방문·미방문 링크 구분** (링크 많은 디자인).
6. **링크를 버튼으로, 버튼을 링크로 교차 복장 금지.** 시각 문법이 의미를 운반한다.
7. **기본 같은 탭에서 열기.** 예외 시 링크에 표시(예: "(PDF)").
> **핵심 경계**: 링크는 *가고*, 버튼은 *한다*. 두 언어를 흐리면 매 클릭마다 작은 세금이 붙는다.
---
## 5. Dialog Boxes — 중단은 그 값을 증명해야
**shadcn**: Dialog · Alert Dialog · Sheet · Drawer
Modal은 모든 작업을 차단하고 사용자의 작업 기억에 세금을 매긴다. 그래서 중단을 **벌어야** 한다 — 차단 결정, 되돌릴 수 없는 결과, 없으면 진행 못 하는 입력.
1. **진짜 차단 결정에만 modal.** 합리적으로 계속 작업할 수 있다면 중단은 정당화 안 된다.
2. **버튼은 결과 라벨.** "Delete 3 Files" / "Keep Files"가 질문에 답한다 — "OK"/"Cancel"은 모호.
3. **안전한 선택을 기본으로, Esc는 항상 취소.** 잘못된 Enter 한 번이 무언가를 파괴해선 안 된다.
4. **다이얼로그당 1문제, 1–2문장.** 상황·결과·선택 — 읽기 과제가 아니다.
5. **되돌릴 수 있는 액션엔 확인 대신 undo.** undo는 경고를 클릭하도록 훈련하지 않고 사용자를 보호.
6. **작업 계속 가능하면 modeless.** 찾기바꾸기가 1980년대에 푼 문제.
7. **첫 방문자에게 오버레이로 인사 금지.** 가치 전달 전 이메일을 요구하는 건 인사 전에 교제를 요구하는 것.
8. **다이얼로그 위에 다이얼로그 금지.** 중단 대기열은 상류 설계가 이미 실패한 것이다.
> **다크 패턴 경고**: 오버레이는 3% 전환은 측정하지만 97%의 반감은 측정 안 된다 — "원한은 이벤트 핸들러가 없다". 강제 전환의 비용도 같이 측정하라.
---
## 6. Alerts · Notifications · Errors — 시스템의 대화 차례
**shadcn**: Alert · Toast · Message · Message Scroller
에러 메시지 가이드라인은 GUI 이전부터: 평언으로 무엇이 잘못됐는지, 정확히 어디서, 어떻게 복구하는지 — 사용자 탓 금지.
1. **평언, 날것의 에러코드만 금지.** "Error 0x80004005"는 개발자가 자기 위해 쓴 것이다.
2. **무엇이·어디서 잘못됐는지 정확히.** "문제가 발생했습니다"는 아무 도움 안 된다.
3. **나아갈 길 제시.** 좋은 에러 메시지는 1문장 복구 계획.
4. **사용자 탓 금지.** "illegal", "fatal", "invalid user" — 신뢰한 사람에게 죄를 떠넘기는 표현 금지.
5. **심각도 ↔ 포맷 매칭.** Toast는 FYI, 에러는 고쳐질 때까지 남는 인라인, modal은 재난 전용.
6. **아이콘 + 색 + 글자로 신호(중복 코딩).** 남성 약 1/12가 적녹 색약 — "빨간색 표시"만으로는 의미가 없다.
7. **알림 배급.** 기본 적게, 사용자가 볼륨 조절 — 매 중단은 한정된 신뢰 통장에서 인출.
> **Toast 함정**: 자가 소멸이라 확인용("메시지 전송됨")엔 좋지만, 사용자가 조치해야 할 에러에 쓰면 4초 뒤 사라져 하드 웨이로 재발견된다.
---
## 7. Icons — 작은 그림, 큰 오해
**shadcn**: Lucide 아이콘 전반
아이콘의 만성 약점 — 사용자가 낯선 그림을 자주 잘못 추측. 보편 인식에 가까운 건 손에 꼽는다(돋보기·집·기어·휴지통). 나머지는 테스트 대기 중인 가설.
1. **아이콘에 글자 라벨 짝지음.** 공간이 진짜 안 되면 tooltip 제공 + 학습성을 픽셀과 맞바꿨음을 인정.
2. **표준 은유가 있으면 그것 사용.** 검색·설정의 새 기호는 사용자 주의를 써서 아무것도 사지 않는다.
3. **은유를 믿기 전 인식 테스트.** 5명에게 아이콘만 보여 의미를 물어라 — 망설임이 답이다.
4. **일관된 스타일 + 구별되는 실루엣.** 형제처럼 보이되 흘겨봐도 구별 가능하게.
5. **학습된 아이콘을 유행으로 재디자인 금지.** 친숙한 기호 재설계는 모든 기존 사용자에게 세금을 매긴다.
6. **16×16에서 살아남는 favicon.** 로고를 한 강한 형태 + 브랜드 색으로 단순화 — 정밀 디테일은 진흙이 된다.
7. **아이콘 전용 버튼은 보편 소수만.** 돋보기는 단독 가능, 네 "insights" 글리프는 안 된다.
> **텍스트 라벨은 살 수 있는 가장 싼 사용성 보험이다.** 라벨링된 아이콘은 *수업*이고, 라벨 없는 아이콘은 *시험*이다.
---
## 8. Checkboxes · Radio Buttons · Toggles — 네모는 "아무거나", 동그라미는 "하나만"
**shadcn**: Checkbox · Radio Group · Switch · Toggle · Toggle Group
형태가 선택 모델을 가르친다 — 네모는 복수, 동그라미는 정확히 1개. 수십년 노출로 사용자가 배운 문법. 디자이너가 둘을 바꾸면 화면이 자기 규칙에 대해 거짓말한다.
1. **독립 옵션엔 체크박스, 상호배타엔 라디오.** 형태가 계약 — 지켜라.
2. **옵션은 세로 배치.** 가로는 어느 라벨이 어느 컨트롤인지 모호하게 만든다.
3. **라벨 클릭 가능.** 14px 동그라미는 잔인한 타깃 — 라벨이 면적을 공짜로 늘린다.
4. **라디오 그룹엔 합리적 기본값 + (기권 유효하면) "None" 옵션.** 한 번 누르면 취소 불가하다.
5. **옵션은 긍정 어법.** "뉴스레터 받기"가 "통신에서 제외하지 마세요"보다 낫다.
6. **토글은 즉시 적용될 때만.** 제출 단계가 뒤따르면 체크박스다 — Save 버튼 위 토글은 모순.
7. **예/아니오는 라디오 2개가 아니라 체크박스 1개.** 컨트롤 1, 결정 1, 읽기 절반.
8. **2–4 옵션은 드롭다운 대신 가시 라디오.** 한 번에 보는 게 클릭+기억 테스트보다 낫다.
---
## 9. Tabs — 한 행, 같은 타입, 같은 단계
**shadcn**: Tabs
물리적 비유가 규칙을 정한다 — 선택 탭은 패널에 붙어 보여야, 미선택은 클릭 가능하되 종속적으로. 라벨은 짧고 **1행이 한도**.
1. **탭은 항상 1행.** 안 들어맞으면 탭이 너무 많거나 라벨이 긴 것 — 탭 수/라벨을 고쳐라.
2. **라벨은 평범한 1–2단어.** 탭은 병렬 콘텐츠의 제목, 문장이 아니다.
3. **선택 탭을 패널에 시각 연결 + 이웃과 구별.** current/hover/unselected 세 가지 다른 외관.
4. **같은 타입·같은 단계 콘텐츠에만 탭.** 순차 프로세스엔 단계 표시자 있는 마법사.
5. **대다수가 먼저 필요로 하는 탭을 기본.** 탭 영역의 첫인상은 네가 열어둔 패널이다.
6. **비교해야 할 콘텐츠를 탭에 걸치지 말 것.** 앞뒤로 넘기는 건 기억 테스트 — 비교표가 답이다.
7. **플랫폼이 허락하면 탭마다 URL.** 사용자는 북마크·공유·Back — 링크 가능한 장소만 온전히 존재한다.
---
## 10. Search — 사용자가 자기 말로 목표를 말한다
**shadcn**: Command
검색은 살아남은 명령줄 — 가능성 공간이 메뉴를 넘어서면 글자가 이긴다. AI 프롬프트 입력란도 같은 화석의 환생. **검색 로그는 얻을 수 있는 가장 싼 사용자 리서치**다.
1. **콘텐츠 많은 사이트 매 페이지 상단에 오픈 검색창.** 아이콘이 상자를 숨기면 클릭 한 번 + 가시성 마이너스.
2. **상자 최소 27문자 폭.** 전체 쿼리가 보여야 편집 가능 — 필드 안 스크롤은 비참하다.
3. **제출은 돋보기 표시 + Enter 작동.** 둘 다 사용자가 가져오는 관습.
4. **오타·복수·동의어 관용.** 엔진의 일은 사용자가 *의미*한 걸 찾는 것, *친* 걸 채점하는 게 아니다.
5. **결과 페이지에서 쿼리를 상자에 유지.** 재구성이 검색 행동의 절반 — 편집을 재시작이 아니라 키 입력으로.
6. **결과 페이지를 온전한 UI로 설계.** 스캔 가능한 제목, 왜 매치했는지 드러내는 스니펫, 컬렉션 커지면 필터.
7. **사용자가 사이트 일부로 여기는 모든 것 색인.** 지원 섹션을 조용히 건너뛰면 거짓 "결과 없음"을 양산한다.
8. **검색 로그 월 1회 마이닝.** 대량·빈약 결과 쿼리는 사용자가 직접 접수한 사용성 버그다.
---
## 보너스 A. Windows & Scrolling — 상속받은 것, 새로 띄우지 말 것
**shadcn**: Sidebar · Scroll Area · Resizable (컨텍스트)
오늘날 디자이너는 윈도우(브라우저 탭)를 상속받지 디자인하지 않는다. 남은 설계 질문은 "언제 새 창을 띄울까" — 답: **드물게**. 깜짝 창은 웹의 후진 기어(Back)를 부순다.
1. **기본 같은 창/탭에서 열기.** 새 탭을 원하는 사용자는 스스로 연다 — 대신 결정하지 말 것.
2. **스크롤 속도·방향 하이재킹 금지.** 스크롤은 근육 기억 — 덮어쓰면 페이지 전체가 빙의된 느낌.
3. **스크롤 가능한 모든 영역에 스크롤바 가시 유지.** 지도를 숨긴다고 영토가 짧아지진 않는다.
4. **무한 스크롤은 아래에 사용자가 필요한 것이 없을 때만.** 푸터가 중요하면 "Load More" 버튼.
5. **콘텐츠를 중요도순 배치.** 사용자는 스크롤하지만 주의는 매 화면마다 얇아진다 — 위가 프라임 부동산.
6. **Back 버튼 보호.** 이것을 부수는 것(불필요한 새 창 포함)은 내비게이션의 주 undo를 부순다.
---
## 보너스 B. Pointers & Cursors — 화면 위의 손
**shadcn**: (커서/포커스 표시 — 간접)
포인터 형태는 클릭이 할 일을 알리는 기호 언어 — 화살표·손·잡기 손·I-beam. 디자이너가 커서를 직접 그리는 일은 드물지만 신호를 존중해야 한다.
1. **플랫폼 표준 커서 사용, 재스타일링 금지.** 커스텀 커서는 디자이너엔 참신, 사용자엔 거짓말 탐지기다.
2. **진짜 클릭 가능 요소에만 손 모양, 편집 가능 텍스트에만 I-beam.** 커서 변화는 약속 — 거짓은 진짜들을 갉아먹는다.
3. **1초 이상 대기엔 busy 표시.** 커서의 가장 오래된 일은 시스템이 들었는지 솔직해지는 것.
4. **중요 정보·액션 경로를 hover 유일으로 만들지 말 것.** 터치 기기엔 hover가 없다 — 키보드도.
5. **키보드 사용자에게 가시 포커스 표시.** 포커스 아웃라인은 키보드의 커서 — 미학상 제거하면 Tab으로 이동하는 모두를 고립시킨다.
---
## 자주 헷갈리는 경계 — 요약표
| 하려는 일 | 쓸 것 | 금지 |
|---|---|---|
| 페이지 이동 | Link | 버튼으로 복장 |
| 즉시 실행(상태 토글) | Switch / Toggle | Save 버튼 위 토글(모순) |
| 제출로 확정 | Checkbox + Button | 같은 것에 토글 |
| 복수 선택 | Checkbox | Radio |
| 정확히 1개 | Radio | Checkbox |
| 차단 결정 | Modal Dialog | 인라인 가능한 데 modal |
| FYI 확인 | Toast | 에러(사라지면 안 됨) |
| 정보가 많은 내비게이션 | Search / Command | 햄버거(데스크톱) |
## 출처
- Jakob Nielsen, UX Tigers, "10 GUI Design Elements Build Every User Interface" (2026-07-29) — 86개 증거 기반 가이드라인 + 보너스(윈도우·포인터). https://www.uxtigers.com/post/gui-widgets
- 본 스킬은 원문의 가이드라인(사용성 원칙·방법)을 한국어 실용 지침으로 증류·재서술한 것이지 원문을 복사한 것이 아니다. 인용 사례(Expedia $12M·Fitts's law·남성 1/12 색약·27문자 폭·앞 11문자·0.1초 반응 등)는 사실 관계에 기반한다.
- 이론 뿌리: Jakob's Law · 인식>재인(Nielsen heuristic 6) · Fitts's law(1954) · perceived affordance(Don Norman) · information scent(Pirolli & Card).
## 관련 스킬
| 스킬 | 사용 시점 |
|---|---|
| `moai-designer:design-prompt-builder` | 패턴 3(생성)·6(감사)이 본 가이드라인을 컴포넌트별 체크리스트로 참조 |
| `moai-designer:design-system-prep` | DESIGN.md Component recipes 품질 기준 |
| `moai-designer:design-slop-check` | 카피 중심 검수의 보완 — 컴포넌트 동작·레이아웃 품질은 본 스킬 |
| `moai-designer:design-system-library` | shadcn vanilla 컴포넌트 참조 마크업과 본 가이드라인의 짝 |
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!