| name | design-audit |
| description | Audit UI code against ui-ux-pro-max UX guidelines; report by severity |
Audit current UI code against the ui-ux-pro-max UX guidelines. Report violations by severity.
Scope
the task/scope the user described when invoking this skill (if none given, ask or infer from context)
If no scope provided: ํ์ฌ ํ๋ก์ ํธ ์ ์ฒด UI ์ฝ๋ (components, pages, styles).
1. ์ฒดํฌ๋ฆฌ์คํธ ๋ก๋
~/.codex/skills/ui-ux-pro-max/ux-guidelines.md๋ฅผ ๋ก๋.
2. ํ์ผ ์ค์บ (rg / grep)
rg(ripgrep)๋ lookahead/lookbehind๋ฅผ ์ง์ํ์ง ์๋๋ค โ ํด๋น ํจํด์ ์กฐ์ฉํ ์คํจํ๋ค. ์๋ ํญ๋ชฉ์ 2๋จ๊ณ ๋ฐฉ์์ผ๋ก ๊ฒ์ฌํ๋ค: โ ์์ฑ ํจํด์ ๋งค์นญ โ โก ๋งค์นญ๋ ๋ผ์ธ/ํ์ผ์์ ํ์ ์์ฑ์ ๋ถ์ฌ๋ฅผ ๋ณ๋๋ก ํ์ธ.
์ ๊ทผ์ฑ ์๋ฐ (CRITICAL):
rg 'outline:\s*(none|0)' (ํฌ์ปค์ค ๋ง ์ ๊ฑฐ)
- alt ๋๋ฝ (2๋จ๊ณ): โ
<img ๋งค์นญ โ โก ๊ฐ ๋ผ์ธ์ alt= ์ ๋ฌด ํ์ธ. ๋น ๋ฅธ ์ถ์ถ: rg '<img' | rg -v 'alt='. ์ฌ๋ฌ ๋ผ์ธ ํ๊ทธ๋ ๊ฒฐ๊ณผ๋ฅผ ์ฝ์ด ์ง์ ํ์ธ.
- ํ
์คํธ ์๋ ๋ฒํผ (2๋จ๊ณ): โ
<button ๋งค์นญ โ โก ํ
์คํธ ์ฝํ
์ธ ๋๋ aria-label/aria-labelledby ์ ๋ฌด ํ์ธ. ๊ทผ์ฌ ์ถ์ถ: rg '<button' | rg -v 'aria-label|aria-labelledby' ํ ์ก์ ํ์ธ.
ํฐ์น & ์ธํฐ๋์
(CRITICAL):
- 44pt ๋ฏธ๋ง ๋ฒํผ:
rg 'height:\s*[1-3][0-9]px' ๋ ๊ทธ๋๋ก ๋งค์นญ. Tailwind ๋์ด๋ (2๋จ๊ณ) โ rg 'min-h-[0-9]+|\bh-[0-9]+' ๋งค์นญ โ โก ๊ฐ์ด 44px(Tailwind 11/2.75rem) ๋ฏธ๋ง์ธ์ง ํ์ธ (min-h-1min-h-10, h-1h-10 ์๋ฐ; min-h-11 ์ด์ ํต๊ณผ).
- ํธ๋ฒ๋ง ์์กด (2๋จ๊ณ): โ
onMouseEnter ๋งค์นญ โ โก ๊ฐ์ ์์/ํ์ผ์ onTouchStart(๋๋ ๋๋ฑ ํธ๋ค๋ฌ) ๋ถ์ฌ ํ์ธ. ๊ทผ์ฌ ์ถ์ถ: rg -L onTouchStart <onMouseEnter ๋งค์นญ ํ์ผ๋ค>.
์คํ์ผ ์ ํ (HIGH):
rg '[๐จ๐โ๏ธ๐๐ผ๐ฅโญ]' ๊ตฌ์กฐ ์์ด์ฝ์ ์ด๋ชจ์ง ์ฌ์ฉ
rg 'color:\s*#[0-9a-fA-F]{3,6}' ์ปดํฌ๋ํธ์ raw hex (ํ ํฐ ๋์ )
๋ ์ด์์ (HIGH):
rg 'width:\s*[0-9]+px' ๊ณ ์ ๋๋น
rg 'user-scalable=no|maximum-scale=1' ์ ๊ทผ์ฑ ์๋ฐ
rg 'height:\s*100vh' (๋ชจ๋ฐ์ผ์ dvh ๊ถ์ฅ)
ํ์ดํฌ & ์ปฌ๋ฌ (MEDIUM):
rg 'font-size:\s*1[0-4]px|text-xs' ๋ณธ๋ฌธ (16px ๋ฏธ๋ง)
- ์ค๋์ด < 1.4 (2๋จ๊ณ): โ
rg 'line-height:\s*1(\.[0-9]+)?' ๋งค์นญ โ โก ๊ฐ์ด 1.4 ๋ฏธ๋ง์ธ์ง ํ์ธ (1, 1.0~1.3 ์๋ฐ; 1.4 ์ด์ ๋ฐ ๋จ์ ์๋ ๊ฐ ํต๊ณผ).
์ ๋๋ฉ์ด์
(MEDIUM):
rg 'transition.*(width|height|top|left|margin)' ์ฑ๋ฅ ์ํฐ
rg 'animation-duration:\s*[5-9][0-9][0-9]+ms' 500ms ์ด๊ณผ
๋ค๋น๊ฒ์ด์
(HIGH):
<BottomNav> ์์ โฅ6 (ํ๋จ ๋ค๋น ์ด๊ณผ)
3. ์ค์ ํ์ผ ๊ฒ์ฆ
design-system/MASTER.md ์กด์ฌ ํ์ธ. ์์ผ๋ฉด ๊ถ๊ณ .
- Tailwind config ๋๋ theme ํ์ผ์์ semantic token ์ฌ์ฉ ํ์ธ.
- ๋คํฌ ๋ชจ๋ ํ ํฐ ์ ์ ์ ํ์ธ.
4. ๋ฐ๊ฒฌ ๋ถ๋ฅ ๋ฐ ๋ฆฌํฌํธ
## Design Audit Report
### Summary
- Total violations: N
- CRITICAL: N | HIGH: N | MEDIUM: N | LOW: N
### CRITICAL (๋ฐ๋์ ์์ )
[{file}:{line}] ๊ท์น ยง{n} "{rule name}"
์๋ฐ: {์ค์ ์ฝ๋}
ํด๊ฒฐ: {์ ์}
### HIGH (์ด๋ฒ ์คํ๋ฆฐํธ ๋ด ์์ )
### MEDIUM (๋ฐฑ๋ก๊ทธ)
### Anti-pattern Detection
- AI purple/pink gradients: {count}
- ์ด๋ชจ์ง ์์ด์ฝ: {count}
- Raw hex: {count}
- ํ ๊ณ์ธต์ filled + outline ํผ์ฉ: {๋ฐ๊ฒฌ ์}
### ์ถ์ฒ ๋ค์ ๋จ๊ณ
1. CRITICAL ๋จผ์ ์์ (์ ๊ทผ์ฑยทํฐ์น)
2. `/design-system` ์คํํ์ฌ ํ ํฐ ์ ๋ฆฌ
3. ์์ ํ `/design-audit` ์ฌ์คํ
5. ์๋ ์์ ์ฌ๋ถ ํ์ธ
์ฌ์ฉ์๊ฐ ์ํ๋ฉด CRITICAL/HIGH ์๋ ์์ : aria-label ์ถ๊ฐ ยท ์ด๋ชจ์ง โ Lucide/Heroicons ยท raw hex โ semantic token ยท ํฐ์น ํ๊ฒ ํ๋.
๊ท์น
- False positive ์ต์ํ (๋ฌธ๋งฅ ํ์ธ).
- CRITICAL์ ์ฃผ์ ํฌํจ ์์ธ ์ค๋ช
.
- ์์ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์ฝ๋ diff ์ ๊ณต.
- ์คํฌ ํ์ผ ๋งํฌ:
~/.codex/skills/ui-ux-pro-max/ux-guidelines.md ยง{n}.