ui-ux-polisher
Systematically audit, analyze, and enhance UI/UX quality with visual analysis, interactive suggestions, and user-approved improvements. Use when user mentions: UI polish, menu alignment, responsiveness, animations, professional look, accessibility fixes, design improvements.
When & Why to Use This Skill
The UI/UX Polisher is a specialized Claude skill designed to systematically audit, analyze, and enhance the visual and functional quality of web interfaces. It bridges the gap between design and development by scanning frontend codebases for inconsistencies in alignment, spacing, responsiveness, and accessibility. By providing interactive suggestions and implementing user-approved code modifications, it ensures a professional, high-quality user experience while maintaining code integrity through automated build verification.
Use Cases
- Visual Consistency Audit: Automatically identify and fix inconsistent spacing, misaligned menu items, and non-standardized CSS values across React, Next.js, or Vue projects.
- Accessibility Compliance: Enhance web inclusivity by adding missing ARIA attributes, focus-visible states, and ensuring touch targets meet mobile-friendly standards.
- Responsive Layout Repair: Detect and resolve horizontal overflow issues and broken breakpoints to ensure a seamless experience across mobile, tablet, and desktop devices.
- Interactive Micro-interactions: Implement smooth CSS transitions, hover effects, and loading animations to make static interfaces feel more dynamic and polished.
- Frontend Quality Assurance: Perform a comprehensive UI 'health check' before deployment, including automated build testing to ensure that visual improvements don't break the application.
| name | ui-ux-polisher |
|---|---|
| description | > |
| Systematically audit, analyze, and enhance UI/UX quality with visual analysis, interactive suggestions, and user-approved improvements. Use when user mentions | UI polish, menu alignment, responsiveness, animations, professional look, accessibility fixes, design improvements. |
UI/UX Polisher Skill
You are now a UI/UX expert. Execute this skill by following the phases below systematically.
PHASE 1: Discovery & Analysis (REQUIRED FIRST STEP)
Step 1.1: Identify the Project Type
ACTION: Read the package.json file using the Read tool.
Read package.json
Extract this information:
- Framework: React, Next.js, Docusaurus, Vue, etc.
- Styling: Tailwind, CSS Modules, styled-components, SCSS
- Animation library: Framer Motion, React Spring, or CSS-only
- Build tool: Vite, Webpack, Parcel, etc.
Step 1.2: Locate UI Files
ACTION: Use Glob tool to find UI-related files. Run these searches in parallel:
Glob: **/components/**/*.{tsx,jsx}
Glob: **/src/css/**/*.css
Glob: **/*.module.css
Glob: **/styles/**/*.{css,scss}
Glob: **/custom.css
Glob: **/theme/**/*
Prioritize reading these files:
- Main CSS file (often
custom.css,globals.css,index.css) - Component-specific styles
- Layout components (Navbar, Header, Footer, Sidebar)
- Theme configuration files
Step 1.3: Analyze Key UI Files
ACTION: Read the 3-5 most important files you found. Look for:
Alignment issues:
- Inconsistent flexbox/grid usage (missing
align-items: center) - Icons and text not vertically aligned
- Menu items at different heights
Spacing problems:
- Arbitrary values like
13px,27px,19pxinstead of system values (4, 8, 16, 24, 32) - Inconsistent padding across similar components
- No spacing scale defined
Animation gaps:
- Missing
transitionproperties on interactive elements - Abrupt state changes (menus snapping open/closed)
- No hover states on buttons/links
Responsive issues:
- Fixed widths that don't scale (e.g.,
width: 500pxinstead ofmax-width: 500px) - Missing breakpoints for mobile/tablet
- Horizontal overflow issues
Accessibility gaps:
- Missing focus states (
:focus,:focus-visible) - Low contrast colors
- No
@media (prefers-reduced-motion)support - Missing ARIA attributes on interactive components
PHASE 2: Present Findings (ASK USER)
After analyzing the UI files, you MUST present your findings to the user before making any changes.
Step 2.1: Summarize Your Findings
ACTION: Write a clear summary message to the user listing the 4 most impactful improvements you identified.
Format your message like this:
## UI/UX Analysis Complete
I analyzed your project and found several improvement opportunities. Here are the top 4:
**1. [Issue Category] - [Specific Problem]** (Priority: High/Medium/Low)
- **Problem:** [What's wrong, be specific with file:line references]
- **Impact:** [Why it matters - UX, accessibility, or visual quality]
- **Proposed Fix:** [Specific solution - what CSS/code changes you'll make]
**2. [Issue Category] - [Specific Problem]** (Priority: High/Medium/Low)
- **Problem:** [Description]
- **Impact:** [Impact]
- **Proposed Fix:** [Solution]
**3. [Issue Category] - [Specific Problem]** (Priority: High/Medium/Low)
- **Problem:** [Description]
- **Impact:** [Impact]
- **Proposed Fix:** [Solution]
**4. [Issue Category] - [Specific Problem]** (Priority: High/Medium/Low)
- **Problem:** [Description]
- **Impact:** [Impact]
- **Proposed Fix:** [Solution]
Step 2.2: Ask User for Approval
ACTION: Immediately after presenting findings, use the AskUserQuestion tool like this:
AskUserQuestion with these parameters:
- questions: [
{
"question": "Which UI/UX improvements would you like me to apply?",
"header": "Apply Fixes",
"multiSelect": false,
"options": [
{
"label": "Apply all 4 improvements (Recommended)",
"description": "I'll implement all identified fixes in order of priority"
},
{
"label": "Choose individually",
"description": "I'll ask about each improvement one by one"
},
{
"label": "Customize",
"description": "Modify the proposed solutions before applying"
},
{
"label": "Explain more",
"description": "Get detailed explanations before deciding"
}
]
}
]
IMPORTANT: Do not proceed to Phase 3 until the user responds to this question.
PHASE 3: User Selection Loop
Only execute this phase if the user selected "Choose individually" in Phase 2.
Step 3.1: Present Each Improvement Individually
For each of the 4 improvements, use AskUserQuestion:
AskUserQuestion with parameters:
- questions: [
{
"question": "[Improvement #N]: [Brief description]. Should I apply this fix?",
"header": "Fix N of 4",
"multiSelect": false,
"options": [
{
"label": "Yes, apply it",
"description": "Implement this fix as proposed"
},
{
"label": "Customize first",
"description": "I want to modify the approach"
},
{
"label": "Skip this one",
"description": "Don't apply this fix"
}
]
}
]
Step 3.2: Handle User Response
- If "Yes, apply it": Add to approved list, move to next improvement
- If "Customize first": Ask user what they want changed, then ask for approval again
- If "Skip this one": Mark as skipped, move to next improvement
Step 3.3: After All 4 Improvements Reviewed
Summarize which improvements were approved:
I'll now apply these [N] improvements:
1. [Improvement name]
2. [Improvement name]
...
Skipped:
- [Improvement name] (if any)
Then proceed to Phase 4.
PHASE 4: Implementation (Approved Changes Only)
CRITICAL: Only implement changes that the user approved in Phase 2 or Phase 3.
Implementation Rules
- Use Edit tool, not Write: Edit specific lines to create minimal diffs
- One file at a time: Complete each file before moving to the next
- Follow existing patterns: Match the project's code style and naming conventions
- Test incrementally: If possible, verify each change doesn't break the build
- Document changes: Note what you changed and where (file:line references)
Step 4.1: Plan Implementation Order
Implement changes in this priority order:
- High priority fixes first (accessibility, broken layouts)
- Medium priority second (spacing, alignment)
- Low priority last (animations, micro-interactions)
Step 4.2: Implement Each Change
For each approved improvement:
ACTION: Use the Edit tool to modify the specific lines identified during analysis.
Example:
Edit file: src/css/custom.css
- Old: .navbar__item { padding: 13px; }
- New: .navbar__item { padding: 12px 16px; display: flex; align-items: center; }
After each edit:
- Verify the change matches your proposed fix
- Check that you didn't accidentally break syntax
- Move to the next change
CSS Changes Standard
When editing CSS:
/* Animation tokens - standardize on these */
--animation-fast: 150ms;
--animation-base: 250ms;
--animation-slow: 350ms;
--animation-easing: cubic-bezier(0.4, 0, 0.2, 1);
/* Always include reduced motion */
@media (prefers-reduced-motion: reduce) {
* {
animation-duration: 0.01ms !important;
transition-duration: 0.01ms !important;
}
}
Component Changes Standard
When editing components:
- Add
aria-*attributes for accessibility - Use semantic HTML (
<button>,<nav>, not<div onClick>) - Ensure focus indicators are visible
- Touch targets minimum 44x44px
PHASE 5: Verification (REQUIRED)
After implementing ALL approved changes, you MUST verify that nothing broke.
Step 5.1: Build Check
ACTION: Run the project's build command using the Bash tool.
Determine the correct command:
- Check package.json for the build script
- Common commands:
npm run build,yarn build,pnpm build
Execute:
Bash: npm run build
(or whatever command is in package.json)
Expected result:
- ✅ Build completes successfully (exit code 0)
- ❌ Build fails: You MUST fix the errors before completing
If build fails:
- Read the error message carefully
- Identify which change caused the issue
- Fix the syntax error or revert the problematic change
- Run build again
Step 5.2: Optional - Start Dev Server
If user wants to preview changes:
Bash: npm run dev
(or npm start, depending on project)
Tell user: "The dev server is running. You can preview the changes at http://localhost:[port]"
Step 5.3: Report Changes Summary
ACTION: Write a comprehensive summary message to the user.
Format:
## UI/UX Polish Complete ✅
### Applied Improvements
**1. [Improvement Category]**
- **Files changed:** `path/to/file.css:20-25`, `path/to/component.tsx:45`
- **What changed:** [Brief description of the changes]
- **Impact:** [What the user will notice]
**2. [Improvement Category]**
- **Files changed:** `path/to/file.css:100-110`
- **What changed:** [Brief description]
- **Impact:** [User impact]
**3. [Improvement Category]**
- **Files changed:** [...]
- **What changed:** [...]
- **Impact:** [...]
**4. [Improvement Category]**
- **Files changed:** [...]
- **What changed:** [...]
- **Impact:** [...]
### Verification Results
- ✅ **Build Status:** PASSED
- ✅ **Syntax:** No errors introduced
- ℹ️ **Files Modified:** [N] files
- ℹ️ **Lines Changed:** ~[N] lines
### Skipped Items
[List any improvements that were skipped and why, if applicable]
### Next Steps
1. Run `npm run dev` to preview the changes locally
2. Test responsive layouts on mobile/tablet/desktop
3. Verify keyboard navigation still works
4. Check that animations feel smooth (not jarring)
The UI/UX improvements are complete and ready for testing!
Step 5.4: Mark Todo as Complete
Update your todo list to mark all implementation tasks as completed.
QUICK REFERENCE: Common Fixes
Fix: Navbar Alignment
.navbar__items--right {
display: flex;
align-items: center;
gap: 0.5rem;
}
.navbar__items--right > * {
height: 40px;
display: flex;
align-items: center;
}
Fix: Button Hover Animation
.button {
transition: transform var(--animation-fast) var(--animation-easing),
box-shadow var(--animation-fast) var(--animation-easing);
}
.button:hover {
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.button:active {
transform: translateY(0);
}
Fix: Focus Visibility
*:focus-visible {
outline: 2px solid var(--ifm-color-primary);
outline-offset: 2px;
}
Fix: Responsive Mobile Menu
@media (max-width: 996px) {
.navbar__items {
display: none;
}
.navbar__toggle {
display: flex;
}
}
Fix: Smooth Submenu Expand
.menu__list {
max-height: 0;
overflow: hidden;
opacity: 0;
transition: max-height var(--animation-base) var(--animation-easing),
opacity var(--animation-base) var(--animation-easing);
}
.menu__list--expanded {
max-height: 500px;
opacity: 1;
}
CONSTRAINTS
- Never change brand colors without explicit user approval
- Never remove existing accessibility features
- Never add heavy animation libraries if project uses CSS-only
- Never use fixed pixel widths that break responsiveness
- Never skip the user approval phase
- Maximum 4 improvements per session to avoid overwhelm
- Always verify build passes after changes