Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", "check my site against best practices", or "web interface guidelines".
.claude/skills/cloudai-x-web-design-guidelines/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 174% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 195% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 47% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 240% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 145% | 0% |
Self-contained guidelines for reviewing web interfaces. Apply these rules when auditing UI code.
Report findings as: file:line — [RULE_ID] description
Example: src/Button.tsx:12 — [A11Y-01] Missing aria-label on icon button
<button> for actions, <a> for navigation, <input> for data entry<div onClick> or <span onClick> for interactive elements<nav>, <main>, <aside>, <header>, <footer> for landmarksaria-label<label> or aria-labelalt text (decorative images: alt="")role, tabIndex, and key handlersoutline: none without replacement)aria-live regionsaria-busy="true"aria-describedbynext/image or responsive images with srcsetwidth and height to prevent layout shiftloading="lazy"import { Button } from 'lib' not import libReact.lazy() or dynamic importswill-change sparingly (only for known animations)transform and opacity for 60fps animations (compositor-only)@media (min-width) for larger screensrem/em for typography, not pxclamp() for fluid typography: font-size: clamp(1rem, 2.5vw, 2rem)max-width: 65ch for readabilitytype="email", type="tel", inputmode="numeric" for mobile keyboardsaria-busy="true" on loading containers<dialog> element or proper role="dialog"!important (use specificity or cascade layers)margin-bottom over margin-topposition: absolute for layout (use for overlays only)gap over margins between flex/grid childrenmin-height: 100dvh (not 100vh) for full-height layoutsprefers-color-scheme media querydangerouslySetInnerHTML without sanitizationrel="noopener noreferrer" on external links with target="_blank"logical properties (margin-inline-start over margin-left)lang attribute on <html> tagWhen auditing a file, check in this order (CRITICAL first):
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 4,222 | 3,058 | -28% | 1 | 1 | 0% | 812 | 2,221 | +174% | 0 | 0 | — |
case-02 | fail→pass | 4,625 | 2,645 | -43% | 1 | 1 | 0% | 787 | 2,320 | +195% | 0 | 0 | — |
case-03 | fail→pass | 8,402 | 2,183 | -74% | 1 | 1 | 0% | 1,503 | 2,213 | +47% | 0 | 0 | — |
case-04 | fail→pass | 3,841 | 3,017 | -21% | 1 | 1 | 0% | 684 | 2,329 | +240% | 0 | 0 | — |
case-05 | fail→pass | 4,784 | 1,591 | -67% | 1 | 1 | 0% | 820 | 2,009 | +145% | 0 | 0 | — |
case-06 | fail→pass | 5,900 | 2,309 | -61% | 1 | 1 | 0% | 1,157 | 2,262 | +96% | 0 | 0 | — |
case-07 | fail→pass | 4,495 | 2,085 | -54% | 1 | 1 | 0% | 839 | 2,218 | +164% | 0 | 0 | — |
case-08 | fail→pass | 6,596 | 3,664 | -44% | 1 | 1 | 0% | 1,031 | 2,545 | +147% | 0 | 0 | — |
case-09 | fail→pass | 5,992 | 2,549 | -57% | 1 | 1 | 0% | 1,048 | 2,330 | +122% | 0 | 0 | — |
case-10 | fail→pass | 12,245 | 3,217 | -74% | 1 | 1 | 0% | 1,048 | 2,435 | +132% | 0 | 0 | — |
case-11 | fail→pass | 12,391 | 2,991 | -76% | 1 | 1 | 0% | 2,099 | 2,379 | +13% | 0 | 0 | — |
case-12 | fail→pass | 4,169 | 3,128 | -25% | 1 | 1 | 0% | 808 | 2,344 | +190% | 0 | 0 | — |
case-13 | fail→pass | 5,136 | 3,547 | -31% | 1 | 1 | 0% | 957 | 2,528 | +164% | 0 | 0 | — |
case-19 | fail→pass | 3,468 | 2,556 | -26% | 1 | 1 | 0% | 662 | 2,279 | +244% | 0 | 0 | — |
case-14 | fail→pass | 4,975 | 3,077 | -38% | 1 | 1 | 0% | 909 | 2,352 | +159% | 0 | 0 | — |
case-15 | fail→pass | 4,110 | 2,331 | -43% | 1 | 1 | 0% | 767 | 2,256 | +194% | 0 | 0 | — |
case-16 | fail→pass | 3,888 | 2,432 | -37% | 1 | 1 | 0% | 663 | 2,308 | +248% | 0 | 0 | — |
case-17 | fail→pass | 4,121 | 2,493 | -40% | 1 | 1 | 0% | 792 | 2,235 | +182% | 0 | 0 | — |
case-18 | fail→pass | 4,102 | 1,926 | -53% | 1 | 1 | 0% | 607 | 2,168 | +257% | 0 | 0 | — |
case-20 | pass→pass | 11,145 | 5,670 | -49% | 1 | 1 | 0% | 2,324 | 3,084 | +33% | 0 | 0 | — |
case-21 | pass→pass | 4,006 | 3,293 | -18% | 1 | 1 | 0% | 670 | 2,406 | +259% | 0 | 0 | — |
case-22 | pass→pass | 7,057 | 6,058 | -14% | 1 | 1 | 0% | 1,533 | 2,910 | +90% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +86 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.