원클릭으로
ss-review
Review UI code for design system compliance, accessibility, and best practices
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Review UI code for design system compliance, accessibility, and best practices
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
The VISUAL gate — render the UI, screenshot it, and score what you actually SEE, not what the code says. Catches the tells that only show up in pixels (dead whitespace, cramping, a hero that doesn't dominate, fonts that didn't load, real rendered color, the squint "does this look AI-made" test) — the things /ss-score can't read from source. Renders empty/loading/error states too, then fixes and re-renders until it passes. Use as the final gate on any screen you can render.
Turn ONE design axis up or down as a coordinated, deterministic transform — "denser", "sharper corners", "more muted", "bolder", "flatter", "livelier". Not a vibe the model reinterprets each time; a defined ramp that moves many tokens together, respects the guardrails (8px grid, a11y floors, single accent, nested-radius), updates the lock, and re-runs the gate. Use this when a human saying "more X" would otherwise get an inconsistent one-off.
Apply a named StyleSeed motion to a component — either one of the 5 personality seeds (Spring/Silk/Snap/Float/Pulse × entrance/exit/hover/press/layout) or a distinctive keyword move from the motion library (toggle-flip, toggle-curtain, reveal-blur, pop-in, shimmer, …). Translates vibe words into framer-motion code from one source of truth.
Score a UI file's design quality 0-100 against StyleSeed's design language — per-category breakdown, the worst offenders, and a prioritized fix list. A quantified version of /ss-review.
Re-style a project to a named aesthetic — swiss, editorial, technical, warm-dtc, minimal-mono, brutalist-lite. A preset is a *coordinate* across the dial axes (radius + density + color + weight + motion) plus a font, accent family, and one signature move — applied coherently as a single identity, written to the lock, and re-gated. This is for mood words ("more editorial") that aren't one axis; for a single axis use /ss-dial.
Build a screen the way the StyleSeed reference demo was built — one command that ENFORCES the full loop (lock the look → build → score → fix to ≥80 → only then show). Use this instead of building UI free-hand; it closes the gap between "knows the rules" and "actually followed them."
| name | ss-review |
| description | Review UI code for design system compliance, accessibility, and best practices |
| argument-hint | [file-path] |
| allowed-tools | Read, Grep, Glob |
/ss-a11y/ss-audit/ss-lintReview the file: $ARGUMENTS
text-foreground, bg-brand, etc.)p-6 not p-[24px])shadow-[var(--shadow-card)])rounded-md, rounded-lg, rounded-2xl)data-slot attributecn() for className mergingReact.ComponentProps<>className prop overridefocus-visible styles on all interactive elementsaria-* attributes where neededprefers-reduced-motionalt text-webkit-overflow-scrolling: touchleading-none + tracking-[-0.02em]leading-snug + tracking-[-0.01em]leading-normal (no custom tracking)tracking-[0.05em] or tracking-wideline-height: 1.5 on display/heading text (too loose)size-* shorthand instead of w-* h-*ms-*/me-* instead of ml-*/mr-* (logical properties)duration-[var(--duration-fast)])The biggest reason a UI reads as "AI-generated" isn't ugly parts — it's mixed parts. Check that each axis below uses ONE value system-wide; flag a mix as a real issue, not a nitpick.
rounded-none panel with rounded-full buttons).currentColor.inner = outer − padding, not the same radius (which bulges).Provide: