MANDATORY PREPARATION
Invoke /impeccable — it contains design principles, anti-patterns, and the Context Gathering Protocol. Follow the protocol before proceeding — if no design context exists yet, you MUST run /impeccable teach first. Additionally gather: quality bar (MVP vs flagship).
Perform a meticulous final pass to catch all the small details that separate good work from great work. The difference between shipped and polished.
Design System Discovery
Before polishing, understand the system you are polishing toward:
- Find the design system: Search for design system documentation, component libraries, style guides, or token definitions. Study the core patterns: color tokens, spacing scale, typography styles, component API.
- Note the conventions: How are shared components imported? What spacing scale is used? Which colors come from tokens vs hard-coded values? What motion and interaction patterns are established?
- Identify drift: Where does the target feature deviate from the system? Hard-coded values that should be tokens, custom components that duplicate shared ones, spacing that doesn't match the scale.
If a design system exists, polish should align the feature with it. If none exists, polish against the conventions visible in the codebase.
Pre-Polish Assessment
Understand the current state and goals:
Review completeness:
- Is it functionally complete?
- Are there known issues to preserve (mark with TODOs)?
- What's the quality bar? (MVP vs flagship feature?)
- When does it ship? (How much time for polish?)
Identify polish areas:
- Visual inconsistencies
- Spacing and alignment issues
- Interaction state gaps
- Copy inconsistencies
- Edge cases and error states
- Loading and transition smoothness
CRITICAL: Polish is the last step, not the first. Don't polish work that's not functionally complete.
Polish Systematically
Work through these dimensions methodically:
Visual Alignment & Spacing
- Pixel-perfect alignment: Everything lines up to grid
- Consistent spacing: All gaps use spacing scale (no random 13px gaps)
- Optical alignment: Adjust for visual weight (icons may need offset for optical centering)
- Responsive consistency: Spacing and alignment work at all breakpoints
- Grid adherence: Elements snap to baseline grid
Check:
- Enable grid overlay and verify alignment
- Check spacing with browser inspector
- Test at multiple viewport sizes
- Look for elements that "feel" off
Typography Refinement
- Hierarchy consistency: Same elements use same sizes/weights throughout
- Line length: 45-75 characters for body text
- Line height: Appropriate for font size and context
- Widows & orphans: No single words on last line
- Hyphenation: Appropriate for language and column width
- Kerning: Adjust letter spacing where needed (especially headlines)
- Font loading: No FOUT/FOIT flashes
Color & Contrast
- Contrast ratios: All text meets WCAG standards
- Consistent token usage: No hard-coded colors, all use design tokens
- Theme consistency: Works in all theme variants
- Color meaning: Same colors mean same things throughout
- Accessible focus: Focus indicators visible with sufficient contrast
- Tinted neutrals: No pure gray or pure black—add subtle color tint (0.01 chroma)
- Gray on color: Never put gray text on colored backgrounds—use a shade of that color or transparency
Interaction States
Every interactive element needs all states:
- Default: Resting state
- Hover: Subtle feedback (color, scale, shadow)
- Focus: Keyboard focus indicator (never remove without replacement)
- Active: Click/tap feedback
- Disabled: Clearly non-interactive
- Loading: Async action feedback
- Error: Validation or error state
- Success: Successful completion
Missing states create confusion and broken experiences.
Micro-interactions & Transitions
- Smooth transitions: All state changes animated appropriately (150-300ms)
- Consistent easing: Use ease-out-quart/quint/expo for natural deceleration. Never bounce or elastic—they feel dated.
- No jank: 60fps animations, only animate transform and opacity
- Appropriate motion: Motion serves purpose, not decoration
- Reduced motion: Respects
prefers-reduced-motion
Content & Copy
- Consistent terminology: Same things called same names throughout
- Consistent capitalization: Title Case vs Sentence case applied consistently
- Grammar & spelling: No typos
- Appropriate length: Not too wordy, not too terse
- Punctuation consistency: Periods on sentences, not on labels (unless all labels have them)
Icons & Images
- Consistent style: All icons from same family or matching style
- Appropriate sizing: Icons sized consistently for context
- Proper alignment: Icons align with adjacent text optically
- Alt text: All images have descriptive alt text
- Loading states: Images don't cause layout shift, proper aspect ratios
- Retina support: 2x assets for high-DPI screens
Forms & Inputs
- Label consistency: All inputs properly labeled
- Required indicators: Clear and consistent
- Error messages: Helpful and consistent
- Tab order: Logical keyboard navigation
- Auto-focus: Appropriate (don't overuse)
- Validation timing: Consistent (on blur vs on submit)
Edge Cases & Error States
- Loading states: All async actions have loading feedback
- Empty states: Helpful empty states, not just blank space
- Error states: Clear error messages with recovery paths
- Success states: Confirmation of successful actions
- Long content: Handles very long names, descriptions, etc.
- No content: Handles missing data gracefully
- Offline: Appropriate offline handling (if applicable)
Responsiveness
- All breakpoints: Test mobile, tablet, desktop
- Touch targets: 44x44px minimum on touch devices
- Readable text: No text smaller than 14px on mobile
- No horizontal scroll: Content fits viewport
- Appropriate reflow: Content adapts logically
Performance
- Fast initial load: Optimize critical path
- No layout shift: Elements don't jump after load (CLS)
- Smooth interactions: No lag or jank
- Optimized images: Appropriate formats and sizes
- Lazy loading: Off-screen content loads lazily
Code Quality
- Remove console logs: No debug logging in production
- Remove commented code: Clean up dead code
- Remove unused imports: Clean up unused dependencies
- Consistent naming: Variables and functions follow conventions
- Type safety: No TypeScript
any or ignored errors
- Accessibility: Proper ARIA labels and semantic HTML
Polish Checklist
Go through systematically:
IMPORTANT: Polish is about details. Zoom in. Squint at it. Use it yourself. The little things add up.
NEVER:
- Polish before it's functionally complete
- Spend hours on polish if it ships in 30 minutes (triage)
- Introduce bugs while polishing (test thoroughly)
- Ignore systematic issues (if spacing is off everywhere, fix the system)
- Perfect one thing while leaving others rough (consistent quality level)
- Create new one-off components when design system equivalents exist
- Hard-code values that should use design tokens
Final Verification
Before marking as done:
- Use it yourself: Actually interact with the feature
- Test on real devices: Not just browser DevTools
- Ask someone else to review: Fresh eyes catch things
- Compare to design: Match intended design
- Check all states: Don't just test happy path
Clean Up
After polishing, ensure code quality:
- Replace custom implementations: If the design system provides a component you reimplemented, switch to the shared version.
- Remove orphaned code: Delete unused styles, components, or files made obsolete by polish.
- Consolidate tokens: If you introduced new values, check whether they should be tokens.
- Verify DRYness: Look for duplication introduced during polishing and consolidate.
Remember: You have impeccable attention to detail and exquisite taste. Polish until it feels effortless, looks intentional, and works flawlessly. Sweat the details - they matter.
1---2name: polish-33description: Performs a final quality pass fixing alignment, spacing, consistency, and micro-detail issues before shipping. Use when the user mentions polish, finishing touches, pre-launch review, something looks off, or wants to go from good to great.4---56## MANDATORY PREPARATION78Invoke /impeccable — it contains design principles, anti-patterns, and the **Context Gathering Protocol**. Follow the protocol before proceeding — if no design context exists yet, you MUST run /impeccable teach first. Additionally gather: quality bar (MVP vs flagship).910---1112Perform a meticulous final pass to catch all the small details that separate good work from great work. The difference between shipped and polished.1314## Design System Discovery1516Before polishing, understand the system you are polishing toward:17181. **Find the design system**: Search for design system documentation, component libraries, style guides, or token definitions. Study the core patterns: color tokens, spacing scale, typography styles, component API.192. **Note the conventions**: How are shared components imported? What spacing scale is used? Which colors come from tokens vs hard-coded values? What motion and interaction patterns are established?203. **Identify drift**: Where does the target feature deviate from the system? Hard-coded values that should be tokens, custom components that duplicate shared ones, spacing that doesn't match the scale.2122If a design system exists, polish should align the feature with it. If none exists, polish against the conventions visible in the codebase.2324## Pre-Polish Assessment2526Understand the current state and goals:27281. **Review completeness**:29 - Is it functionally complete?30 - Are there known issues to preserve (mark with TODOs)?31 - What's the quality bar? (MVP vs flagship feature?)32 - When does it ship? (How much time for polish?)33342. **Identify polish areas**:35 - Visual inconsistencies36 - Spacing and alignment issues37 - Interaction state gaps38 - Copy inconsistencies39 - Edge cases and error states40 - Loading and transition smoothness4142**CRITICAL**: Polish is the last step, not the first. Don't polish work that's not functionally complete.4344## Polish Systematically4546Work through these dimensions methodically:4748### Visual Alignment & Spacing4950- **Pixel-perfect alignment**: Everything lines up to grid51- **Consistent spacing**: All gaps use spacing scale (no random 13px gaps)52- **Optical alignment**: Adjust for visual weight (icons may need offset for optical centering)53- **Responsive consistency**: Spacing and alignment work at all breakpoints54- **Grid adherence**: Elements snap to baseline grid5556**Check**:5758- Enable grid overlay and verify alignment59- Check spacing with browser inspector60- Test at multiple viewport sizes61- Look for elements that "feel" off6263### Typography Refinement6465- **Hierarchy consistency**: Same elements use same sizes/weights throughout66- **Line length**: 45-75 characters for body text67- **Line height**: Appropriate for font size and context68- **Widows & orphans**: No single words on last line69- **Hyphenation**: Appropriate for language and column width70- **Kerning**: Adjust letter spacing where needed (especially headlines)71- **Font loading**: No FOUT/FOIT flashes7273### Color & Contrast7475- **Contrast ratios**: All text meets WCAG standards76- **Consistent token usage**: No hard-coded colors, all use design tokens77- **Theme consistency**: Works in all theme variants78- **Color meaning**: Same colors mean same things throughout79- **Accessible focus**: Focus indicators visible with sufficient contrast80- **Tinted neutrals**: No pure gray or pure black—add subtle color tint (0.01 chroma)81- **Gray on color**: Never put gray text on colored backgrounds—use a shade of that color or transparency8283### Interaction States8485Every interactive element needs all states:8687- **Default**: Resting state88- **Hover**: Subtle feedback (color, scale, shadow)89- **Focus**: Keyboard focus indicator (never remove without replacement)90- **Active**: Click/tap feedback91- **Disabled**: Clearly non-interactive92- **Loading**: Async action feedback93- **Error**: Validation or error state94- **Success**: Successful completion9596**Missing states create confusion and broken experiences**.9798### Micro-interactions & Transitions99100- **Smooth transitions**: All state changes animated appropriately (150-300ms)101- **Consistent easing**: Use ease-out-quart/quint/expo for natural deceleration. Never bounce or elastic—they feel dated.102- **No jank**: 60fps animations, only animate transform and opacity103- **Appropriate motion**: Motion serves purpose, not decoration104- **Reduced motion**: Respects `prefers-reduced-motion`105106### Content & Copy107108- **Consistent terminology**: Same things called same names throughout109- **Consistent capitalization**: Title Case vs Sentence case applied consistently110- **Grammar & spelling**: No typos111- **Appropriate length**: Not too wordy, not too terse112- **Punctuation consistency**: Periods on sentences, not on labels (unless all labels have them)113114### Icons & Images115116- **Consistent style**: All icons from same family or matching style117- **Appropriate sizing**: Icons sized consistently for context118- **Proper alignment**: Icons align with adjacent text optically119- **Alt text**: All images have descriptive alt text120- **Loading states**: Images don't cause layout shift, proper aspect ratios121- **Retina support**: 2x assets for high-DPI screens122123### Forms & Inputs124125- **Label consistency**: All inputs properly labeled126- **Required indicators**: Clear and consistent127- **Error messages**: Helpful and consistent128- **Tab order**: Logical keyboard navigation129- **Auto-focus**: Appropriate (don't overuse)130- **Validation timing**: Consistent (on blur vs on submit)131132### Edge Cases & Error States133134- **Loading states**: All async actions have loading feedback135- **Empty states**: Helpful empty states, not just blank space136- **Error states**: Clear error messages with recovery paths137- **Success states**: Confirmation of successful actions138- **Long content**: Handles very long names, descriptions, etc.139- **No content**: Handles missing data gracefully140- **Offline**: Appropriate offline handling (if applicable)141142### Responsiveness143144- **All breakpoints**: Test mobile, tablet, desktop145- **Touch targets**: 44x44px minimum on touch devices146- **Readable text**: No text smaller than 14px on mobile147- **No horizontal scroll**: Content fits viewport148- **Appropriate reflow**: Content adapts logically149150### Performance151152- **Fast initial load**: Optimize critical path153- **No layout shift**: Elements don't jump after load (CLS)154- **Smooth interactions**: No lag or jank155- **Optimized images**: Appropriate formats and sizes156- **Lazy loading**: Off-screen content loads lazily157158### Code Quality159160- **Remove console logs**: No debug logging in production161- **Remove commented code**: Clean up dead code162- **Remove unused imports**: Clean up unused dependencies163- **Consistent naming**: Variables and functions follow conventions164- **Type safety**: No TypeScript `any` or ignored errors165- **Accessibility**: Proper ARIA labels and semantic HTML166167## Polish Checklist168169Go through systematically:170171- [ ] Visual alignment perfect at all breakpoints172- [ ] Spacing uses design tokens consistently173- [ ] Typography hierarchy consistent174- [ ] All interactive states implemented175- [ ] All transitions smooth (60fps)176- [ ] Copy is consistent and polished177- [ ] Icons are consistent and properly sized178- [ ] All forms properly labeled and validated179- [ ] Error states are helpful180- [ ] Loading states are clear181- [ ] Empty states are welcoming182- [ ] Touch targets are 44x44px minimum183- [ ] Contrast ratios meet WCAG AA184- [ ] Keyboard navigation works185- [ ] Focus indicators visible186- [ ] No console errors or warnings187- [ ] No layout shift on load188- [ ] Works in all supported browsers189- [ ] Respects reduced motion preference190- [ ] Code is clean (no TODOs, console.logs, commented code)191192**IMPORTANT**: Polish is about details. Zoom in. Squint at it. Use it yourself. The little things add up.193194**NEVER**:195196- Polish before it's functionally complete197- Spend hours on polish if it ships in 30 minutes (triage)198- Introduce bugs while polishing (test thoroughly)199- Ignore systematic issues (if spacing is off everywhere, fix the system)200- Perfect one thing while leaving others rough (consistent quality level)201- Create new one-off components when design system equivalents exist202- Hard-code values that should use design tokens203204## Final Verification205206Before marking as done:207208- **Use it yourself**: Actually interact with the feature209- **Test on real devices**: Not just browser DevTools210- **Ask someone else to review**: Fresh eyes catch things211- **Compare to design**: Match intended design212- **Check all states**: Don't just test happy path213214## Clean Up215216After polishing, ensure code quality:217218- **Replace custom implementations**: If the design system provides a component you reimplemented, switch to the shared version.219- **Remove orphaned code**: Delete unused styles, components, or files made obsolete by polish.220- **Consolidate tokens**: If you introduced new values, check whether they should be tokens.221- **Verify DRYness**: Look for duplication introduced during polishing and consolidate.222223Remember: You have impeccable attention to detail and exquisite taste. Polish until it feels effortless, looks intentional, and works flawlessly. Sweat the details - they matter.