muno-claude-plugin 1.7.0 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,640 @@
1
+ ---
2
+ name: app-design
3
+ description: |
4
+ UI/UX 디자인을 생성하고 개선합니다. Apple과 Toss 스타일의 세련된 앱 디자인을 제공합니다.
5
+ "UI 디자인해줘", "UX 개선해줘", "화면 디자인", "인터페이스 만들어줘", "디자인 시스템",
6
+ "디자인 가이드", "프로토타입" 등의 요청에 사용합니다.
7
+ 개발자가 직접 구현할 수 있도록 구체적이고 실행 가능한 디자인 스펙을 제공합니다.
8
+ allowed-tools: Read, Glob, Grep, Write, Edit, WebSearch, WebFetch
9
+ ---
10
+
11
+ # App Design Skill
12
+
13
+ ## 페르소나
14
+
15
+ @.claude/personas/app-designer.md
16
+
17
+ > **App Design의 역할**: 사용자 경험을 극대화하는 직관적이고 아름다운 인터페이스를 설계합니다.
18
+ > Apple과 Toss의 디자인 철학을 바탕으로 단순하지만 강력한 디자인을 제공합니다.
19
+
20
+ ---
21
+
22
+ ## 디자인 철학
23
+
24
+ ### Apple HIG 2026 원칙
25
+
26
+ 1. **Hierarchy (위계)**
27
+ - 사용자의 시선을 즉시 안내
28
+ - 중요한 요소를 명확히 강조
29
+ - 정보의 우선순위를 시각적으로 표현
30
+
31
+ 2. **System Integration (시스템 통합)**
32
+ - 하드웨어 디자인을 소프트웨어에 반영
33
+ - Rounded corners, minimal lines 사용
34
+ - Dynamic materials로 깊이감 표현
35
+
36
+ 3. **Consistency (일관성)**
37
+ - 학습한 패턴을 전체 앱에서 재사용
38
+ - 예측 가능한 인터랙션
39
+ - 플랫폼 표준 준수
40
+
41
+ ### Toss Design System 원칙
42
+
43
+ 1. **명확성 (Clarity)**
44
+ - 텍스트 최소화, 시각적 언어 우선
45
+ - 한눈에 이해되는 인터페이스
46
+ - 불필요한 설명 제거
47
+
48
+ 2. **속도 (Speed)**
49
+ - 최소한의 탭으로 목표 달성
50
+ - 로딩 최소화
51
+ - 즉각적인 피드백
52
+
53
+ 3. **신뢰 (Trust)**
54
+ - 명확한 결과 표시
55
+ - 에러 상황의 친절한 안내
56
+ - 투명한 정보 제공
57
+
58
+ ---
59
+
60
+ ## 워크플로우
61
+
62
+ ```mermaid
63
+ flowchart TD
64
+ A[디자인 요청] --> B[Step 1: 사용자 & 컨텍스트 파악]
65
+ B --> C{정보 충분?}
66
+ C -->|No| D[질문: 사용자, 사용 상황, 목표]
67
+ D --> E[사용자 응답]
68
+ E --> C
69
+ C -->|Yes| F[Step 2: 정보 아키텍처 설계]
70
+ F --> G{구조 명확?}
71
+ G -->|No| H[질문: 핵심 기능, 우선순위]
72
+ H --> I[사용자 응답]
73
+ I --> G
74
+ G -->|Yes| J[Step 3: 비주얼 디자인]
75
+ J --> K[Step 4: 인터랙션 디자인]
76
+ K --> L[Step 5: 디자인 스펙 문서화]
77
+ L --> M[개발자 핸드오프]
78
+ ```
79
+
80
+ ---
81
+
82
+ ## Step 1: 사용자 & 컨텍스트 파악
83
+
84
+ ### 수집해야 할 정보
85
+
86
+ - **타겟 사용자**: 누가 사용하는가? (연령, 기술 숙련도, 사용 맥락)
87
+ - **플랫폼**: iOS, Android, Web, 또는 크로스 플랫폼?
88
+ - **사용 시나리오**: 언제, 어디서, 왜 사용하는가?
89
+ - **핵심 목표**: 사용자가 달성하려는 것은?
90
+ - **제약사항**: 기술적 제약, 브랜드 가이드라인
91
+
92
+ ### 질문 예시
93
+
94
+ ```
95
+ 1. "어떤 사용자를 타겟으로 하나요? (연령대, 기술 수준 등)"
96
+ 2. "이 기능을 주로 언제, 어디서 사용하나요? (출퇴근 중, 집에서, 업무 중 등)"
97
+ 3. "iOS, Android, 또는 둘 다인가요?"
98
+ 4. "기존 브랜드 컬러나 디자인 가이드라인이 있나요?"
99
+ ```
100
+
101
+ ---
102
+
103
+ ## Step 2: 정보 아키텍처 설계
104
+
105
+ ### 화면 구조 설계
106
+
107
+ 1. **기능 우선순위 결정**
108
+ - Primary action (가장 중요한 행동)
109
+ - Secondary actions (부가 기능)
110
+ - Tertiary actions (설정, 옵션 등)
111
+
112
+ 2. **네비게이션 구조**
113
+ - Tab Bar (주요 섹션 2-5개)
114
+ - Navigation Bar (계층 구조)
115
+ - Modal (임시 작업)
116
+
117
+ 3. **정보 그룹핑**
118
+ - 관련된 정보를 카드/섹션으로 묶기
119
+ - 시각적 분리 (Spacing, Divider)
120
+
121
+ ### 질문 예시
122
+
123
+ ```
124
+ 1. "이 화면에서 사용자가 가장 자주 하는 행동은 무엇인가요?"
125
+ 2. "한 화면에 표시해야 할 정보가 많나요? 우선순위는?"
126
+ 3. "이 화면에서 다른 화면으로 이동할 수 있어야 하나요?"
127
+ ```
128
+
129
+ ---
130
+
131
+ ## Step 3: 비주얼 디자인
132
+
133
+ ### 컬러 시스템
134
+
135
+ #### Apple 스타일
136
+ ```
137
+ Primary: System Blue (#007AFF)
138
+ Secondary: System Gray (#8E8E93)
139
+ Success: System Green (#34C759)
140
+ Warning: System Orange (#FF9500)
141
+ Danger: System Red (#FF3B30)
142
+
143
+ Background:
144
+ - Light: White (#FFFFFF), System Gray 6 (#F2F2F7)
145
+ - Dark: Black (#000000), System Gray 6 (#1C1C1E)
146
+ ```
147
+
148
+ #### Toss 스타일
149
+ ```
150
+ Primary: Toss Blue (#3182F6)
151
+ Secondary: Toss Black (#191F28)
152
+ Success: Toss Green (#3BCE84)
153
+ Warning: Toss Yellow (#FFC043)
154
+ Danger: Toss Red (#F04452)
155
+
156
+ Background:
157
+ - White (#FFFFFF)
158
+ - Gray 50 (#F9FAFB)
159
+ - Gray 100 (#F2F4F6)
160
+ ```
161
+
162
+ ### 타이포그래피
163
+
164
+ #### iOS (San Francisco)
165
+ ```
166
+ Large Title: 34pt, Bold
167
+ Title 1: 28pt, Regular
168
+ Title 2: 22pt, Regular
169
+ Title 3: 20pt, Regular
170
+ Headline: 17pt, Semibold
171
+ Body: 17pt, Regular
172
+ Callout: 16pt, Regular
173
+ Subheadline: 15pt, Regular
174
+ Footnote: 13pt, Regular
175
+ Caption 1: 12pt, Regular
176
+ Caption 2: 11pt, Regular
177
+ ```
178
+
179
+ #### Toss 스타일
180
+ ```
181
+ Display: 32px, Bold, -0.5px letter-spacing
182
+ Headline 1: 24px, Bold
183
+ Headline 2: 20px, Bold
184
+ Headline 3: 18px, Bold
185
+ Body 1: 16px, Regular, 1.6 line-height
186
+ Body 2: 14px, Regular, 1.5 line-height
187
+ Caption: 12px, Regular
188
+ ```
189
+
190
+ ### Spacing System (8pt Grid)
191
+
192
+ ```
193
+ 4px - Micro spacing (아이콘과 텍스트)
194
+ 8px - Small spacing (관련 요소)
195
+ 12px - Medium spacing (섹션 내부)
196
+ 16px - Base spacing (기본 패딩)
197
+ 24px - Large spacing (섹션 간)
198
+ 32px - XL spacing (큰 구분)
199
+ 48px - XXL spacing (주요 구분)
200
+ ```
201
+
202
+ ### Corner Radius
203
+
204
+ #### Apple 스타일
205
+ ```
206
+ Button: 8-12px
207
+ Card: 12-16px
208
+ Modal: 16-20px
209
+ Bottom Sheet: 16px (상단만)
210
+ ```
211
+
212
+ #### Toss 스타일
213
+ ```
214
+ Button: 8px
215
+ Card: 12px
216
+ Input: 8px
217
+ Bottom Sheet: 16px (상단만)
218
+ ```
219
+
220
+ ---
221
+
222
+ ## Step 4: 인터랙션 디자인
223
+
224
+ ### 제스처
225
+
226
+ ```
227
+ Tap: 기본 액션
228
+ Long Press: 컨텍스트 메뉴, 미리보기
229
+ Swipe:
230
+ - Left: 삭제, 보관
231
+ - Right: 좋아요, 완료
232
+ - Down: 새로고침 (Pull to Refresh)
233
+ Pinch: 확대/축소
234
+ ```
235
+
236
+ ### 애니메이션 타이밍
237
+
238
+ ```
239
+ Instant: 100ms (토글, 스위치)
240
+ Quick: 200ms (버튼 피드백)
241
+ Standard: 300ms (화면 전환)
242
+ Slow: 500ms (복잡한 변화)
243
+
244
+ Easing:
245
+ - ease-out: 0.25s (기본 전환)
246
+ - spring: (response: 0.3, damping: 0.7) (iOS)
247
+ ```
248
+
249
+ ### 피드백
250
+
251
+ 1. **Haptic Feedback** (iOS)
252
+ - Light: 선택, 스위치
253
+ - Medium: 확인, 완료
254
+ - Heavy: 에러, 경고
255
+
256
+ 2. **Visual Feedback**
257
+ - 버튼: Pressed state (투명도 70%)
258
+ - 리스트 아이템: Highlight (배경색 변경)
259
+ - 로딩: Skeleton UI 또는 Spinner
260
+
261
+ 3. **Sound** (선택적)
262
+ - 성공: 짧고 경쾌한 소리
263
+ - 에러: 부드러운 경고음
264
+
265
+ ---
266
+
267
+ ## Step 5: 디자인 스펙 문서화
268
+
269
+ ### 화면별 스펙
270
+
271
+ 각 화면마다 다음 정보를 포함:
272
+
273
+ ```markdown
274
+ ## [화면 이름]
275
+
276
+ ### 목적
277
+ 이 화면의 역할과 사용자 목표
278
+
279
+ ### 레이아웃
280
+ - Navigation Bar
281
+ - Title: "제목"
282
+ - Left Button: 뒤로가기
283
+ - Right Button: 설정
284
+
285
+ - Content Area
286
+ - Header Section
287
+ - 타이틀 (Headline 1, Bold)
288
+ - 서브타이틀 (Body 2, Gray)
289
+
290
+ - Card Component
291
+ - Padding: 16px
292
+ - Border Radius: 12px
293
+ - Shadow: 0 2px 8px rgba(0,0,0,0.08)
294
+ - Background: White
295
+
296
+ - Bottom Button
297
+ - Height: 56px
298
+ - Border Radius: 12px
299
+ - Background: Primary Color
300
+ - Text: Body 1, Bold, White
301
+
302
+ ### 인터랙션
303
+ 1. 카드 탭 시 → 상세 화면으로 전환 (300ms slide)
304
+ 2. 버튼 탭 시 → API 호출 + 로딩 상태 표시
305
+ 3. Pull to Refresh → 데이터 새로고침
306
+
307
+ ### 상태
308
+ - Default: 초기 로드 상태
309
+ - Loading: Skeleton UI 표시
310
+ - Empty: 빈 상태 일러스트 + 안내 문구
311
+ - Error: 에러 메시지 + 재시도 버튼
312
+ ```
313
+
314
+ ### 컴포넌트 명세
315
+
316
+ 재사용 가능한 컴포넌트는 별도 문서화:
317
+
318
+ ```markdown
319
+ ## Button Component
320
+
321
+ ### Variants
322
+ 1. Primary Button
323
+ - Background: Primary Color
324
+ - Text: White, Bold
325
+ - Height: 56px
326
+ - Border Radius: 12px
327
+ - Pressed: Opacity 70%
328
+
329
+ 2. Secondary Button
330
+ - Background: Gray 100
331
+ - Text: Primary Color, Bold
332
+ - Height: 56px
333
+ - Border Radius: 12px
334
+
335
+ 3. Text Button
336
+ - Background: Transparent
337
+ - Text: Primary Color
338
+ - Underline on Pressed
339
+
340
+ ### Props
341
+ - label: string
342
+ - disabled: boolean
343
+ - loading: boolean
344
+ - onPress: () => void
345
+
346
+ ### States
347
+ - Default
348
+ - Pressed (opacity 70%)
349
+ - Disabled (opacity 30%)
350
+ - Loading (spinner)
351
+ ```
352
+
353
+ ---
354
+
355
+ ## 플랫폼별 가이드라인
356
+
357
+ ### iOS (Apple HIG 2026)
358
+
359
+ 1. **Safe Area**
360
+ - Top: 44-47pt (노치 고려)
361
+ - Bottom: 34pt (홈 인디케이터)
362
+ - Sides: 16pt
363
+
364
+ 2. **Navigation Bar**
365
+ - Height: 44pt (Regular), 96pt (Large Title)
366
+ - Large Title: 34pt, Bold
367
+ - Back Button: 항상 왼쪽
368
+
369
+ 3. **Tab Bar**
370
+ - Height: 49pt + Safe Area
371
+ - Icons: 25pt × 25pt (filled when selected)
372
+ - Max 5 tabs
373
+
374
+ 4. **Lists**
375
+ - Row Height: 최소 44pt (터치 영역)
376
+ - Separator: Inset 16pt from left
377
+ - Swipe Actions: Delete (red), Archive (gray)
378
+
379
+ ### Android (Material Design 3)
380
+
381
+ 1. **Top App Bar**
382
+ - Height: 56dp (Small), 112dp (Medium), 152dp (Large)
383
+ - Elevation: 0-4dp
384
+
385
+ 2. **Navigation Bar**
386
+ - Height: 80dp
387
+ - Icons: 24dp × 24dp
388
+ - Max 5 items
389
+
390
+ 3. **FAB (Floating Action Button)**
391
+ - Size: 56dp × 56dp
392
+ - Elevation: 6dp
393
+ - Position: 16dp from edge
394
+
395
+ 4. **Cards**
396
+ - Elevation: 1-8dp
397
+ - Border Radius: 12dp
398
+
399
+ ---
400
+
401
+ ## 접근성 (Accessibility)
402
+
403
+ ### WCAG 2.1 AA 준수
404
+
405
+ 1. **Color Contrast**
406
+ - Text: 4.5:1 이상
407
+ - Large Text (18pt+): 3:1 이상
408
+ - Interactive Elements: 3:1 이상
409
+
410
+ 2. **Touch Target**
411
+ - 최소 크기: 44pt × 44pt (iOS), 48dp × 48dp (Android)
412
+ - 간격: 최소 8pt
413
+
414
+ 3. **Font Size**
415
+ - 최소 크기: 11pt (iOS), 12sp (Android)
416
+ - Body Text: 17pt (iOS), 16sp (Android)
417
+ - Dynamic Type 지원 (iOS)
418
+ - Scalable Text 지원 (Android)
419
+
420
+ 4. **Screen Reader**
421
+ - 모든 인터랙티브 요소에 Label 제공
422
+ - 의미 없는 이미지는 숨김 처리
423
+ - 논리적인 포커스 순서
424
+
425
+ ---
426
+
427
+ ## 다크 모드
428
+
429
+ ### 컬러 변환 규칙
430
+
431
+ ```
432
+ Light → Dark 변환:
433
+
434
+ Background:
435
+ White → System Gray 6 (Dark)
436
+ Gray 100 → System Gray 5
437
+ Gray 200 → System Gray 4
438
+
439
+ Text:
440
+ Black → White
441
+ Gray 700 → Gray 200
442
+
443
+ Elevation (Shadow → Overlay):
444
+ Shadow 제거 → 밝은 Overlay 추가
445
+ ```
446
+
447
+ ### Toss 다크 모드
448
+
449
+ ```
450
+ Background:
451
+ #FFFFFF → #1A1B1E
452
+ #F9FAFB → #25262B
453
+
454
+ Text:
455
+ #191F28 → #FFFFFF
456
+ #6B7684 → #ADB5BD
457
+
458
+ Primary Color는 유지:
459
+ #3182F6 (동일)
460
+ ```
461
+
462
+ ---
463
+
464
+ ## 성능 최적화
465
+
466
+ ### 이미지
467
+
468
+ 1. **형식**
469
+ - PNG: 투명도 필요 시
470
+ - JPEG: 사진
471
+ - WebP: 웹 (50% 작은 용량)
472
+ - SVG: 아이콘, 일러스트
473
+
474
+ 2. **해상도**
475
+ - @1x, @2x, @3x 제공 (iOS)
476
+ - hdpi, xhdpi, xxhdpi, xxxhdpi (Android)
477
+ - Lazy Loading 적용
478
+
479
+ ### 애니메이션
480
+
481
+ 1. **60fps 유지**
482
+ - transform, opacity만 애니메이션
483
+ - width, height 애니메이션 지양
484
+ - GPU 가속 활용
485
+
486
+ 2. **Reduce Motion 고려**
487
+ - 모션 감소 설정 시 애니메이션 최소화
488
+ - 필수 정보는 애니메이션 없이도 전달
489
+
490
+ ---
491
+
492
+ ## 디자인 핸드오프
493
+
494
+ ### 개발자에게 전달할 정보
495
+
496
+ 1. **디자인 파일**
497
+ - Figma, Sketch, Adobe XD 링크
498
+ - Asset Export (모든 해상도)
499
+
500
+ 2. **스펙 문서**
501
+ - 화면별 레이아웃
502
+ - 컴포넌트 명세
503
+ - 인터랙션 정의
504
+ - 애니메이션 타이밍
505
+
506
+ 3. **코드 스니펫** (선택)
507
+ ```swift
508
+ // iOS Example
509
+ let button = UIButton()
510
+ button.backgroundColor = .systemBlue
511
+ button.layer.cornerRadius = 12
512
+ button.titleLabel?.font = .systemFont(ofSize: 17, weight: .bold)
513
+ ```
514
+
515
+ ```kotlin
516
+ // Android Example
517
+ Button(
518
+ onClick = { },
519
+ colors = ButtonDefaults.buttonColors(
520
+ containerColor = MaterialTheme.colorScheme.primary
521
+ ),
522
+ shape = RoundedCornerShape(12.dp)
523
+ ) {
524
+ Text("버튼", fontWeight = FontWeight.Bold)
525
+ }
526
+ ```
527
+
528
+ 4. **Token/Variables**
529
+ ```json
530
+ {
531
+ "color": {
532
+ "primary": "#3182F6",
533
+ "secondary": "#191F28",
534
+ "background": "#FFFFFF"
535
+ },
536
+ "spacing": {
537
+ "xs": "4px",
538
+ "sm": "8px",
539
+ "md": "16px",
540
+ "lg": "24px",
541
+ "xl": "32px"
542
+ },
543
+ "borderRadius": {
544
+ "sm": "8px",
545
+ "md": "12px",
546
+ "lg": "16px"
547
+ }
548
+ }
549
+ ```
550
+
551
+ ---
552
+
553
+ ## 참고 자료
554
+
555
+ 이 스킬은 다음 자료를 기반으로 작성되었습니다:
556
+
557
+ - [Apple Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/)
558
+ - [Toss Design System Guide](https://toss.tech/article/toss-design-system-guide)
559
+ - [Frontend Design Best Practices 2026](https://www.whizzbridge.com/blog/ui-ux-best-practices-2025)
560
+ - [Material Design 3](https://m3.material.io/)
561
+
562
+ ---
563
+
564
+ ## 추측 금지 원칙
565
+
566
+ ```
567
+ 정보가 충분하면 → 바로 디자인
568
+ 정보가 부족하면 → 추측하지 말고 질문
569
+
570
+ ✅ 질문해야 할 때:
571
+ • 타겟 사용자를 모를 때
572
+ • 플랫폼이 명확하지 않을 때
573
+ • 브랜드 컬러/가이드라인이 불분명할 때
574
+ • 기능의 우선순위를 모를 때
575
+
576
+ ❌ 질문하지 말아야 할 때:
577
+ • 일반적인 UX 패턴 (로그인, 회원가입 등)
578
+ • 플랫폼 표준 (iOS, Android 가이드라인)
579
+ • 접근성 기준 (WCAG 2.1)
580
+ ```
581
+
582
+ ---
583
+
584
+ ## 결과물 형식
585
+
586
+ 디자인 완료 시 다음 형식으로 전달:
587
+
588
+ ```markdown
589
+ # [화면/기능 이름] 디자인 스펙
590
+
591
+ ## 1. 개요
592
+ - 목적: ...
593
+ - 타겟 사용자: ...
594
+ - 플랫폼: iOS/Android/Web
595
+
596
+ ## 2. 정보 아키텍처
597
+ [화면 구조 다이어그램]
598
+
599
+ ## 3. 비주얼 디자인
600
+ ### 컬러
601
+ - Primary: #3182F6
602
+ - ...
603
+
604
+ ### 타이포그래피
605
+ - Headline: 24px Bold
606
+ - ...
607
+
608
+ ### Spacing
609
+ - Section Padding: 16px
610
+ - ...
611
+
612
+ ## 4. 컴포넌트
613
+ ### 버튼
614
+ [상세 스펙]
615
+
616
+ ### 카드
617
+ [상세 스펙]
618
+
619
+ ## 5. 인터랙션
620
+ - 탭: ...
621
+ - 스와이프: ...
622
+ - 애니메이션: ...
623
+
624
+ ## 6. 상태
625
+ - Default
626
+ - Loading
627
+ - Error
628
+ - Empty
629
+
630
+ ## 7. 접근성
631
+ - Color Contrast: ✅
632
+ - Touch Target: ✅
633
+ - Screen Reader: ✅
634
+
635
+ ## 8. 다크 모드
636
+ [다크 모드 컬러 맵핑]
637
+
638
+ ## 9. 개발 가이드
639
+ [코드 스니펫 및 구현 팁]
640
+ ```