Integrated polishing of design knowledge base (service-type-specific rules, component checklists, UX rules) + real-time visual comparison (Puppeteer screenshots) + WCAG automated checks (axe-core) + trend search (WebSearch).
Knowledge Base Resources
- knowledge/: Service-type-specific UI rules, component checklists, UX rules (read markdown directly)
- data/: 66 design styles, 96 color palettes, 57 typography, 13 tech stack guides (JSON + BM25 search)
- scripts/search.cjs: Node.js BM25 search engine
Arguments
--apply: (optional) Apply improvements directly to code--wcag-only: (optional) Perform WCAG accessibility checks only--no-wcag: (optional) Skip WCAG checks- $1: (optional) Reference site (if unspecified, automatically selected to match the project type)
- $2: (optional) Feature keywords (if unspecified, full design polishing)
Usage Examples
/design-polish # 전체 자동 폴리싱 + WCAG 체크
/design-polish --apply # 폴리싱 + 코드 적용
/design-polish --wcag-only # WCAG 접근성 체크만
/design-polish mobbin # Mobbin에서 검색
/design-polish godly hero # Godly에서 hero 검색
/design-polish --apply godly hero # hero 폴리싱 + 코드 적용
Execution Flow Overview
전제조건 확인
↓
0단계: 프로젝트 분석 + 서비스 유형 감지 + 스크린샷 캡처 [Glob, Read, Bash]
↓
1단계: WCAG 접근성 체크 (axe-core) [Bash, Read]
↓
1.5단계: 디자인 지식 로딩 [Read, Bash]
↓
2단계: 레퍼런스 사이트 선택
↓
3단계: 트렌드 검색 → 레퍼런스 캡처 [WebSearch, Bash]
↓
4단계: Gap 분석 (시각 비교 + 지식 기반) [Read]
↓
5단계: 개선안 도출 (8단계 우선순위)
↓
6단계: 결과 출력
↓
7단계: 코드 적용 (--apply 시) [Edit, Bash]
↓
Pre-delivery 체크리스트
Prerequisite Checks
Before execution, check the following conditions:
1. Check Development Server Running
# Mac/Linux - 서버 상태 확인
curl -s -o /dev/null -w "%{http_code}" http://localhost:3000
# Windows PowerShell - 서버 상태 확인
try { (Invoke-WebRequest -Uri http://localhost:3000 -UseBasicParsing -TimeoutSec 5).StatusCode } catch { 0 }
Automatic port detection (the server may not be on 3000):
# Mac/Linux - 실행 중인 개발 서버 포트 탐지
lsof -i -P | grep LISTEN | grep -E ':(3000|5173|8080|4200)'
# Windows PowerShell - 실행 중인 개발 서버 포트 탐지
Get-NetTCPConnection -State Listen | Where-Object { $_.LocalPort -in 3000,5173,8080,4200 }
If the server is not running, notify the user:
"Please run the development server first. (e.g., npm run dev)"
2. Check Plugin Dependencies
# 플러그인 디렉토리에서 npm install 실행 여부 확인
ls ~/.claude/plugins/marketplaces/design-polish/node_modules/puppeteer
If not present, notify:
"Please install the plugin dependencies: cd ~/.claude/plugins/marketplaces/design-polish && npm install"
3. Check Node.js
node --version
Step 0: Project Analysis + Service Type Detection
Tools Used: Glob, Read, Bash
Project Type Detection
- Directory structure:
src/,components/,pages/,app/등 - Framework: React, Vue, Flutter, Next.js, Nuxt, etc.
- Styling: CSS, Tailwind, styled-components, CSS Modules, SCSS, etc.
Service Type Detection
Automatically detect service type signals from the project code:
| Detection Signal | Service Type |
|---|---|
| Payment/cart/product/checkout code | Online Shop |
| Auth+dashboard+subscription | SaaS Platform |
| Medical terminology, HIPAA, patient | Healthcare Service |
| Chart+trading+wallet+crypto | Finance & Trading |
| Learning+quiz+progress+course | Education & Learning |
| Portfolio+works+projects | Portfolio |
| .gov, accessibility-focused | Government Service |
| chat+AI+prompt+stream | AI & Chatbot |
| Menu+reservation+food | Food & Restaurant |
| booking+destination+travel | Travel & Booking |
| property+listing+map | Real Estate |
| game+score+level+player | Gaming |
| article+news+breaking | News & Media |
| feed+like+share+follow | Social Media |
| workout+fitness+health | Fitness & Gym |
| Luxury+premium+brand+high-end | Luxury Brand |
| Agency+case study+creative+team | Creative Agency |
| Wellness+meditation+mindfulness+calm | Wellness & Health |
| admin+dashboard+analytics+metrics | Admin Dashboard |
| IDE+terminal+code editor+syntax+CLI | Developer Tool |
Detection Method: GrepPerform keyword frequency analysis on key code files, and select the service type with the highest score.
Design file detection
| Type | Pattern |
|---|---|
| Component | **/*.tsx, **/*.jsx, **/*.js, **/*.vue, **/*.svelte, **/*.dart |
| Style | **/*.css, **/*.scss, **/tailwind.config.* |
| Layout | **/layout.*, **/App.*, **/page.*, **/_app.* |
Capture current design screenshot
Run capture script with Bash:
# 캡처 스크립트 실행 (${CLAUDE_PLUGIN_ROOT}는 플러그인 설치 경로로 자동 치환됨)
node "${CLAUDE_PLUGIN_ROOT}/scripts/capture.cjs" / /about /pricing
# 포트 변경시
BASE_URL=http://localhost:5173 node "${CLAUDE_PLUGIN_ROOT}/scripts/capture.cjs" /
Save location: .design-polish/screenshots/current-*.png
Analyze image with Read after capture
Read(".design-polish/screenshots/current-main.png")
Analysis items:
- Layout structure
- Color palette
- Typography
- Component style
Step 1: WCAG accessibility check
Tool used: Bash, Read
Run check
# WCAG 체크 포함 캡처
node "${CLAUDE_PLUGIN_ROOT}/scripts/capture.cjs" --wcag /
Check items (axe-core based)
| Category | Check item | WCAG criteria |
|---|---|---|
| Color contrast | Text-background contrast | 4.5:1 (AA) |
| Color contrast | Large text contrast | 3:1 (AA) |
| Color contrast | UI component contrast | 3:1 |
| Text size | Minimum text size | 12px or more recommended |
| Touch target | Minimum target size | 44x44px (mobile) |
| Link | Link distinction | Underline or 3:1 contrast |
Save results
.design-polish/
├── screenshots/
│ └── current-main.png
└── accessibility/
└── wcag-report.json
Check results
Read(".design-polish/accessibility/wcag-report.json")
Step 1.5: Load design knowledge
Tool used: Read, Bash
Load design knowledge based on the service type/tech stack information detected in Step 0.
Load markdown directly (required — every run)
Read("${CLAUDE_PLUGIN_ROOT}/knowledge/industry-rules.md")
Read("${CLAUDE_PLUGIN_ROOT}/knowledge/component-checklist.md")
Read("${CLAUDE_PLUGIN_ROOT}/knowledge/ux-rules.md")
Script search (based on detected service type/keywords)
# 0단계에서 감지된 서비스 유형 키워드를 사용
# 예: SaaS Platform 감지 시
node "${CLAUDE_PLUGIN_ROOT}/scripts/search.cjs" --domain style "saas dashboard minimal"
# 예: Online Shop 감지 시
node "${CLAUDE_PLUGIN_ROOT}/scripts/search.cjs" --domain color "ecommerce shopping"
# 예: Healthcare Service 감지 시
node "${CLAUDE_PLUGIN_ROOT}/scripts/search.cjs" --domain typography "medical clean accessible"
# 기술 스택 가이드 (코드 적용 시에만)
# 예: React 프로젝트 감지 시
node "${CLAUDE_PLUGIN_ROOT}/scripts/search.cjs" --domain stack --stack react "accessibility aria"
Search examples
| Detected service type | Style search | Color search | Typography search |
|---|---|---|---|
| SaaS Platform | "saas dashboard minimal" | "saas professional trust" | "modern professional clean" |
| Online Shop | "ecommerce vibrant card" | "ecommerce shopping" | "ecommerce clean shopping" |
| Healthcare Service | "healthcare accessible calm" | "healthcare calm" | "medical clean accessible" |
| Finance & Trading | "fintech dark glass" | "fintech crypto" | "financial trust" |
| Education & Learning | "education playful friendly" | "education playful" | "playful friendly" |
| Wellness & Health | "wellness organic biophilic" | "wellness nature calm" | "calming soft rounded" |
Step 2: Select reference site
Tool used: Decision logic
Auto-select when $1 is unspecified
| Project type | Decision criteria | Preferred site | Alternative site |
|---|---|---|---|
| 앱 UI/UX | Flutter, React Native, mobile-first | Mobbin | Page Flows, Refero |
| Modern web/SaaS | Next.js, Nuxt, dashboard | Godly | Dark Mode Design, Awwwards |
| Sensual/artistic | Portfolio, gallery, art keywords | SiteInspire | Savee, Behance |
| Landing page | Single page, marketing-focused | Lapa Ninja | Httpster |
| UI detail | Component-focused, buttons/cards, etc. | Dribbble | - |
Step 3: Trend search
Tool used: WebSearch, Bash
3-1. Search references with WebSearch
Function-based search (not by industry)
올바른 검색:
- site:mobbin.com onboarding flow
- site:godly.website hero section
- site:dribbble.com dashboard UI 2024
잘못된 검색:
- "금융 앱 디자인"
- "게임 앱 UI"
3-2. Extract URLs from search results
Select 2-3 useful reference URLs from WebSearch results.
3-3. Capture references with Bash
# 단일 레퍼런스 캡처
node "${CLAUDE_PLUGIN_ROOT}/scripts/capture.cjs" ref "https://dribbble.com/shots/..." hero
# 여러 개 캡처 (브라우저 재사용으로 효율적)
node "${CLAUDE_PLUGIN_ROOT}/scripts/capture.cjs" ref "https://site1.com" ref1 "https://site2.com" ref2
Save location: .design-polish/screenshots/reference-*.png
On search failure (automatic handling)
- Retry with alternative site: In the order of the alternative sites in the table above
- site: remove: switch to general web search
- keyword generalization: 예) "checkout" → "ecommerce flow"
Step 4: Gap Analysis (Visual Comparison + Knowledge-Based)
Tools Used: Read
Image comparison analysis with Read
Read(".design-polish/screenshots/current-main.png")
Read(".design-polish/screenshots/reference-hero.png")
Analysis Areas
| Area | Analysis Item | Knowledge-Based Reference |
|---|---|---|
| Layout | Grid, spacing, information hierarchy, CTA placement | ux-rules.md → Layout |
| Typography | Font, size, line height, weight | search.cjs typography search results |
| Color | Palette, contrast, dark mode support | search.cjs color search results |
| Interaction | Hover, transition, animation, loading | ux-rules.md → Animation |
| Components | Button, card, input, modal, toast | component-checklist.md |
| States | Loading/success/failure/empty state handling | ux-rules.md → Loading & Error |
| Accessibility | WCAG violations, touch targets, focus indicators | ux-rules.md → Accessibility |
| Service type suitability | Whether style/color matches industry-rules.md criteria | industry-rules.md |
| Style matching | Compare search.cjs search results with current design | search.cjs style search results |
Knowledge-Based Analysis (Additional)
- Service type suitability: Compare the recommended style/color for the service type in industry-rules.md with the current design
- Component quality: Do/Don't check from component-checklist.md — check violations per component in use
- UX rule compliance: Check patterns for each category in ux-rules.md
- Style matching: Compare the recommended style from search.cjs search results with the current design
- Color/typography matching: Compare the searched palette/font pairing vs the values currently in use
Additional Criteria by Platform
| Platform | Core Criteria |
|---|---|
| 웹 | Scannability, information density, responsiveness |
| 앱 | Thumb reach range, gestures, native patterns |
Step 5: Deriving Improvements (8-Level Priority)
Priority Classification
| Priority | Category | Impact | Example |
|---|---|---|---|
| P1 | Accessibility (WCAG violations) | CRITICAL | Insufficient contrast, touch target below minimum, no focus indicator |
| P2 | Touch/Interaction | CRITICAL | cursor not specified, target size below minimum, no hover |
| P3 | Performance | HIGH | Unoptimized images, reduced-motion not supported |
| P4 | Layout/Responsive | HIGH | CLS, mobile breakage, viewport issues |
| P5 | Typography/Color | MEDIUM | Insufficient line height, colors unsuitable for service type, font not matched |
| P6 | Animation | MEDIUM | Missing transitions, excessive motion, timing issues |
| P7 | Style suitability | MEDIUM | Mismatch with recommended styles by service type |
| P8 | Charts/Data | LOW | Chart accessibility, data visualization improvements |
Each improvement includes the following information:
- Target file path
- Specific changes
- Reference basis (knowledge files, search.cjs results, WCAG criteria, etc.)
Step 6: Output results
Output format
## 프로젝트 요약
[프레임워크], [스타일링 방식] 기반 [프로젝트 유형]
감지된 서비스 유형: [서비스 유형명]
## WCAG 접근성 체크
| 항목 | 상태 | 세부사항 |
|------|------|----------|
| 색상 대비 | X 3건 위반 | btn-primary: 3.2:1 (필요: 4.5:1) |
| 터치 타겟 | O 통과 | |
| 텍스트 크기 | ! 1건 주의 | caption: 11px |
## 서비스 유형별 적합성
| 항목 | 추천 (industry-rules) | 현재 | 일치 |
|------|----------------------|------|------|
| 스타일 | Glassmorphism + Flat | Flat Design | 부분 일치 |
| 색상 무드 | Trust blue + Accent contrast | Blue + Grey | 일치 |
| 타이포 | Professional + Hierarchy | ... | ... |
| 핵심 효과 | Subtle hover (200-250ms) | 호버 없음 | 불일치 |
## 컴포넌트 체크 결과
| 컴포넌트 | 위반 항목 | 심각도 |
|---------|----------|--------|
| Button | 터치 타겟 38px (최소 44px) | HIGH |
| Card | 호버 효과 없음 | MEDIUM |
| Input | placeholder만 사용, label 없음 | HIGH |
## 트렌드 요약
- [핵심 트렌드 1]
- [핵심 트렌드 2]
- [핵심 트렌드 3]
## Gap 분석
| 영역 | 현재 | 추천 (지식 기반 + 트렌드) | Gap |
|------|------|--------------------------|-----|
| 레이아웃 | ... | ... | ... |
| 타이포그래피 | ... | [추천 폰트 페어링 + URL] | ... |
| 색상 | ... | [추천 팔레트 HEX 코드] | ... |
| 인터랙션 | ... | ... | ... |
| 컴포넌트 | ... | ... | ... |
| 접근성 | 3건 위반 | WCAG AA 준수 | 색상 대비 수정 필요 |
| 스타일 적합성 | ... | [추천 스타일명] | ... |
## 추천 리소스 (search.cjs 결과)
- **추천 스타일**: [스타일명] — [cssHints]
- **추천 색상**: Primary [HEX], Secondary [HEX], CTA [HEX], BG [HEX]
- **추천 폰트**: [Heading Font] + [Body Font] — [Google Fonts URL]
## 개선안 (8단계 우선순위)
### P1: 접근성 (CRITICAL)
- [ ] btn-primary 색상 대비 수정 (src/components/Button.tsx)
### P2: 터치/인터랙션 (CRITICAL)
- [ ] [개선안 + 대상 파일]
### P3: 성능 (HIGH)
- [ ] [개선안 + 대상 파일]
### P4: 레이아웃/반응형 (HIGH)
- [ ] [개선안 + 대상 파일]
### P5: 타이포/색상 (MEDIUM)
- [ ] [개선안 + 대상 파일]
### P6: 애니메이션 (MEDIUM)
- [ ] [개선안 + 대상 파일]
### P7: 스타일 적합성 (MEDIUM)
- [ ] [개선안 + 대상 파일]
### P8: 차트/데이터 (LOW)
- [ ] [개선안 + 대상 파일]
Step 7: Apply code (only with --apply option)
Tools used: Edit, Bash
Reference stack guide
Before applying code, refer to the guidelines for the detected tech stack:
# 기술 스택 가이드 검색 (적용할 영역 키워드로)
# 예: React 프로젝트 감지 시
node "${CLAUDE_PLUGIN_ROOT}/scripts/search.cjs" --domain stack --stack react "accessibility aria"
Application order
- Apply sequentially starting with P1 (accessibility CRITICAL) priority
- Apply P2~P4 (CRITICAL/HIGH)
- P5~P7 (MEDIUM) — apply after user confirmation
- Save the file after each fix
- Output application results summary
What not to apply
- Changes requiring new library installation
- Large-scale structural changes (refactoring level)
- Breaking changes
Output application results
## 적용 완료
| 파일 | 변경 내용 |
|------|----------|
| src/components/Button.tsx | 색상 대비 수정 (4.5:1 이상) |
| src/components/Button.tsx | hover 스타일 추가 |
| src/styles/global.css | 여백 조정 |
## 미적용 (수동 필요)
- [ ] Framer Motion 설치 필요 (애니메이션)
Reference site list
Real service UX flows
| Site | URL | Features |
|---|---|---|
| Mobbin | mobbin.com | Real service screenshots, organized by flow |
| Page Flows | pageflows.com | Video-based flows, interaction reference |
| Refero | refero.design | Collection of real service UI elements |
Modern web trends (Tech & SaaS)
| Site | URL | Features |
|---|---|---|
| Godly | godly.website | Dark mode, micro-interactions |
| Dark Mode Design | darkmodedesign.com | Dark mode UI curation |
| Awwwards | awwwards.com | Creative/technical websites |
Sensory & artistic inspiration
| Site | URL | Features |
|---|---|---|
| SiteInspire | siteinspire.com | Layout, colors, atmosphere |
| Savee | savee.it | Visual stimulation for moodboards |
| Behance | behance.net | Branding, Case Study |
Landing pages & marketing
| Site | URL | Features |
|---|---|---|
| Lapa Ninja | lapa.ninja | Most landing page references |
| Httpster | httpster.net | Simple typography |
UI details
| Site | URL | Features |
|---|---|---|
| Dribbble | dribbble.com | Details such as buttons, cards |
Pre-delivery checklist
After applying code (with --apply) or before reporting final results, check the following:
Visual quality
- Color contrast 4.5:1 or higher (WCAG AA)
- Consistent border-radius (choose one of 8px/12px/16px)
- Consistent spacing scale (e.g., 4/8/12/16/24/32px)
- Clear font hierarchy (h1 > h2 > h3 > body > caption)
Interaction
- On all clickable elements:
cursor: pointer - Hover state (150-200ms transition)
- Focus ring (2-3px, keyboard users)
- Loading state (skeleton or spinner)
- Error state (inline message + icon)
Light/dark mode
- No elements break when switching to dark mode
- Dark mode color contrast maintained
Layout
- Mobile (320px~) does not break
- Tablet (768px) appropriate arrangement
- Desktop (1024px+) maximum width limited
Final accessibility check
- 0 axe-core violations (or justified)
- Keyboard navigation possible
- Screen reader compatible (ARIA labels)
-
prefers-reduced-motionSupported