UI Verification
This skill provides criteria and guidelines for verifying that UI implementations match approved design specifications. It defines what to verify, severity levels, and acceptable tolerances.
When to Use
- When verifying UI implementation against approved design specifications
- When performing self-verification before code review
- When reviewing frontend changes that involve visual elements
- When determining if a difference is a bug or acceptable variance
Verification Categories
Structure (CRITICAL - never ignore)
Structure differences are automatic failures. Always verify:
| Check |
Description |
| Container hierarchy |
Does DOM structure match the design layer hierarchy? |
| Nesting depth |
Are elements nested at the same level as in the design? |
| Grouping |
Are related elements grouped together as in design? |
| Element order |
Is the visual order of elements the same? |
| Wrapper elements |
Are there extra/missing wrapper divs that change layout? |
| Sections present |
Are ALL sections from the design present in implementation? |
Layout (CRITICAL - never ignore)
| Check |
Description |
| Flex/Grid direction |
row vs column, wrap behavior |
| Alignment |
justify-content, align-items values |
| Distribution |
How space is distributed between elements |
| Positioning |
relative, absolute, fixed - matches design intent? |
| Centering |
Is content centered as in design? |
Dimensions (CRITICAL - never ignore)
| Check |
Description |
| Container width |
max-width, fixed width constraints |
| Card/panel boundaries |
Does card have same width as in the design? |
| Content area vs viewport |
Ratio of content width to available space |
| Width/Height |
Fixed, percentage, auto, min/max constraints |
| Spacing |
Padding, margin, gap between elements |
| Gaps |
Space between flex/grid children |
CRITICAL: If a card/container in the design is narrow and centered, but implementation shows it wider or full-width, this MUST be reported.
Visual
| Check |
Description |
| Typography |
font-family, size, weight, line-height, letter-spacing |
| Colors |
Text, background, border colors |
| Radii |
border-radius values |
| Shadows |
box-shadow, drop-shadow |
| Backgrounds |
Solid, gradient, image |
Components
| Check |
Description |
| Correct variants |
Is the right variant of a component used? |
| Design tokens |
Are correct tokens used (not hardcoded values)? |
| States |
hover, focus, active, disabled states |
Severity Definitions
| Severity |
Description |
Action |
| Critical |
Structure/layout differences, wrong component used |
Must fix immediately |
| Major |
Dimensions off by >2px, wrong colors/typography |
Must fix before merge |
| Minor |
1-2px browser rendering variance |
Acceptable, document if recurring |
Tolerance Rules
| Category |
Tolerance |
Notes |
| Structure |
None |
Any structural difference = FAIL |
| Layout direction |
None |
row vs column must match exactly |
| Alignment |
None |
Centering, justify, align must match |
| Dimensions |
1-2px |
Only for browser rendering variance |
| Colors |
Exact match |
Must use correct design tokens |
| Typography |
Exact match |
Font properties must match |
| Spacing |
1-2px |
Only for browser rendering variance |
CRITICAL: Never Guess - Always Ask
If you are unsure about ANYTHING, STOP and ask the user.
Check your available tools for a way to ask the user questions (e.g., a tool that allows user interaction or questions). Use it to get the missing information before continuing.
This skill requires comparing the actual implementation against the expected design. If you cannot reliably get either side of that comparison, you cannot do your job. Do not guess. Do not assume. Do not continue hoping it will work out.
The rule is simple:
- If something is missing → ask
- If something is broken → ask
- If something is unexpected → ask
- If you're not 100% sure you're looking at the right thing → ask
Never:
- Continue working based on assumptions
- Make up data you couldn't retrieve
- Skip steps because something didn't work
- "Work around" missing information
Pre-Verification Checklist
Before starting verification:
Structure Verification Checklist
Before reporting PASS, verify:
Common Mistakes to Catch
| Mistake |
Why It's Wrong |
| "It looks similar enough" |
Structure must match exactly |
| "It's just an extra wrapper" |
Extra wrappers change layout behavior |
| "The alignment is close" |
Alignment must be exact |
| "Only verified visible viewport" |
Must verify entire scrollable page |
| "Assumed off-screen content is correct" |
Must scroll and verify everything |
Verification Report Format
## Verification Result: [PASS | FAIL]
### Component: [name]
**Confidence:** [HIGH | MEDIUM | LOW]
- HIGH: Both tools returned complete data, comparison is reliable
- MEDIUM: Some values could not be extracted, manual review recommended
- LOW: Tool errors occurred, treat as incomplete verification
### Structural Issues (CRITICAL)
| Issue | Expected (Design Spec) | Actual (Implementation) |
| ------- | ---------------- | ----------------------- |
| [issue] | [expected] | [actual] |
### Dimension/Visual Differences
**Differences found:** [count]
| Property | Expected (Design Spec) | Actual (Implementation) | Severity |
| -------- | ---------------- | ----------------------- | ---------------------- |
| [prop] | [expected] | [actual] | [Critical/Major/Minor] |
### Recommended Fixes
- [specific fix with exact values]
Confidence Levels
| Level |
Meaning |
Action |
| HIGH |
Both design and implementation data complete |
Trust the report, fix all differences |
| MEDIUM |
Some values couldn't be extracted |
Fix obvious differences, manually verify unclear ones |
| LOW |
Tool errors occurred |
Manual verification required before making changes |
Connected Skills
frontend-implementation - for implementing fixes following design system patterns
technical-context-discovery - for understanding project's design token conventions
1---2name: ui-verification3description: UI verification criteria, structure checklists, severity definitions, and tolerance rules for comparing implementations against approved design specifications. Use for verifying UI matches design, understanding what to check, and determining acceptable differences.4metadata:5 source: https://skillmd.com/skills/jakubmikolajek/ui-verification6---78# UI Verification910This skill provides criteria and guidelines for verifying that UI implementations match approved design specifications. It defines what to verify, severity levels, and acceptable tolerances.1112## When to Use1314- When verifying UI implementation against approved design specifications15- When performing self-verification before code review16- When reviewing frontend changes that involve visual elements17- When determining if a difference is a bug or acceptable variance1819## Verification Categories2021### Structure (CRITICAL - never ignore)2223Structure differences are **automatic failures**. Always verify:2425| Check | Description |26| ----------------------- | -------------------------------------------------------- |27| **Container hierarchy** | Does DOM structure match the design layer hierarchy? |28| **Nesting depth** | Are elements nested at the same level as in the design? |29| **Grouping** | Are related elements grouped together as in design? |30| **Element order** | Is the visual order of elements the same? |31| **Wrapper elements** | Are there extra/missing wrapper divs that change layout? |32| **Sections present** | Are ALL sections from the design present in implementation? |3334### Layout (CRITICAL - never ignore)3536| Check | Description |37| ----------------------- | -------------------------------------------------- |38| **Flex/Grid direction** | row vs column, wrap behavior |39| **Alignment** | justify-content, align-items values |40| **Distribution** | How space is distributed between elements |41| **Positioning** | relative, absolute, fixed - matches design intent? |42| **Centering** | Is content centered as in design? |4344### Dimensions (CRITICAL - never ignore)4546| Check | Description |47| ---------------------------- | -------------------------------------------- |48| **Container width** | max-width, fixed width constraints |49| **Card/panel boundaries** | Does card have same width as in the design? |50| **Content area vs viewport** | Ratio of content width to available space |51| **Width/Height** | Fixed, percentage, auto, min/max constraints |52| **Spacing** | Padding, margin, gap between elements |53| **Gaps** | Space between flex/grid children |5455**CRITICAL**: If a card/container in the design is narrow and centered, but implementation shows it wider or full-width, this MUST be reported.5657### Visual5859| Check | Description |60| --------------- | ------------------------------------------------------ |61| **Typography** | font-family, size, weight, line-height, letter-spacing |62| **Colors** | Text, background, border colors |63| **Radii** | border-radius values |64| **Shadows** | box-shadow, drop-shadow |65| **Backgrounds** | Solid, gradient, image |6667### Components6869| Check | Description |70| -------------------- | ----------------------------------------------- |71| **Correct variants** | Is the right variant of a component used? |72| **Design tokens** | Are correct tokens used (not hardcoded values)? |73| **States** | hover, focus, active, disabled states |7475## Severity Definitions7677| Severity | Description | Action |78| ------------ | -------------------------------------------------- | --------------------------------- |79| **Critical** | Structure/layout differences, wrong component used | Must fix immediately |80| **Major** | Dimensions off by >2px, wrong colors/typography | Must fix before merge |81| **Minor** | 1-2px browser rendering variance | Acceptable, document if recurring |8283## Tolerance Rules8485| Category | Tolerance | Notes |86| ---------------- | --------------- | ------------------------------------ |87| Structure | **None** | Any structural difference = FAIL |88| Layout direction | **None** | row vs column must match exactly |89| Alignment | **None** | Centering, justify, align must match |90| Dimensions | **1-2px** | Only for browser rendering variance |91| Colors | **Exact match** | Must use correct design tokens |92| Typography | **Exact match** | Font properties must match |93| Spacing | **1-2px** | Only for browser rendering variance |9495## CRITICAL: Never Guess - Always Ask9697**If you are unsure about ANYTHING, STOP and ask the user.**9899Check your available tools for a way to ask the user questions (e.g., a tool that allows user interaction or questions). Use it to get the missing information before continuing.100101This skill requires comparing the actual implementation against the expected design. If you cannot reliably get either side of that comparison, you cannot do your job. Do not guess. Do not assume. Do not continue hoping it will work out.102103**The rule is simple:**104105- If something is missing → ask106- If something is broken → ask107- If something is unexpected → ask108- If you're not 100% sure you're looking at the right thing → ask109110**Never:**111112- Continue working based on assumptions113- Make up data you couldn't retrieve114- Skip steps because something didn't work115- "Work around" missing information116117## Pre-Verification Checklist118119Before starting verification:120121- [ ] Design specification available for the component/view122- [ ] Dev server is running123- [ ] Page fully loaded (no skeleton states)124- [ ] Correct viewport size set125126## Structure Verification Checklist127128Before reporting PASS, verify:129130- [ ] **Verified ENTIRE page** (scrolled from top to bottom)131- [ ] **All sections from the design are present** in implementation132- [ ] Container hierarchy matches design layers133- [ ] Flex/grid direction is correct134- [ ] Alignment (justify/align) matches design135- [ ] Element order matches design136- [ ] No extra wrapper elements that change layout137- [ ] No missing container elements138- [ ] Spacing between elements matches design139140## Common Mistakes to Catch141142| Mistake | Why It's Wrong |143| --------------------------------------- | ------------------------------------- |144| "It looks similar enough" | Structure must match exactly |145| "It's just an extra wrapper" | Extra wrappers change layout behavior |146| "The alignment is close" | Alignment must be exact |147| "Only verified visible viewport" | Must verify entire scrollable page |148| "Assumed off-screen content is correct" | Must scroll and verify everything |149150## Verification Report Format151152```markdown153## Verification Result: [PASS | FAIL]154155### Component: [name]156157**Confidence:** [HIGH | MEDIUM | LOW]158159- HIGH: Both tools returned complete data, comparison is reliable160- MEDIUM: Some values could not be extracted, manual review recommended161- LOW: Tool errors occurred, treat as incomplete verification162163### Structural Issues (CRITICAL)164165| Issue | Expected (Design Spec) | Actual (Implementation) |166| ------- | ---------------- | ----------------------- |167| [issue] | [expected] | [actual] |168169### Dimension/Visual Differences170171**Differences found:** [count]172173| Property | Expected (Design Spec) | Actual (Implementation) | Severity |174| -------- | ---------------- | ----------------------- | ---------------------- |175| [prop] | [expected] | [actual] | [Critical/Major/Minor] |176177### Recommended Fixes178179- [specific fix with exact values]180```181182## Confidence Levels183184| Level | Meaning | Action |185| ---------- | ------------------------------------------- | ----------------------------------------------------- |186| **HIGH** | Both design and implementation data complete | Trust the report, fix all differences |187| **MEDIUM** | Some values couldn't be extracted | Fix obvious differences, manually verify unclear ones |188| **LOW** | Tool errors occurred | Manual verification required before making changes |189190## Connected Skills191192- `frontend-implementation` - for implementing fixes following design system patterns193- `technical-context-discovery` - for understanding project's design token conventions