skills/polish/SKILL.md
Pre-ship visual refinement pass. Checks spacing, state completeness, contrast, typography, and motion quality. Use when asked to "polish this", "clean up the UI", "final pass", or before shipping any UI feature.
npx skillsauth add howells/arc polishInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
<tool_restrictions>
AskUserQuestion — REQUIRED for all user decisions (approval to apply fixes). Never ask questions as plain text. Keep context before the question to 2-3 sentences max.EnterPlanMode — BANNED. Execute phases below directly.ExitPlanMode — BANNED. You are never in plan mode.
</tool_restrictions>Pre-ship visual refinement. The last step before shipping, not the first.
Announce at start: "I'm using the polish skill for a final visual quality pass."
<important> **This skill is user-interactive. Do NOT spawn agents.** Polish requires visual inspection and judgment — it's collaborative, not delegated. **Polish is the last step, not the first.** Don't begin until functionality is complete. </important><required_reading> Read ALL of these using the Read tool:
rules/interface/spacing.md — Spacing scale and philosophyrules/interface/colors.md — Color rules, contrast, OKLCHrules/interface/typography.md — Type hierarchy and OpenTyperules/interface/interactions.md — Eight interactive statesrules/interface/animation.md — Motion rulesreferences/frontend-design.md — Design review checklistreferences/typography-opentype.md — OpenType features, tabular-nums, kerning, text-wrapreferences/touch-targets.md — Hit target expansion, pseudo-element technique, mobile targetsreferences/ux-laws.md — Fitts's Law (target sizing), Gestalt (spacing/grouping), Doherty (timing)references/prefetch-patterns.md — Trajectory prefetching, hit slop zones (when reviewing navigation UX)
</required_reading>Screenshot current state. Prefer Chrome MCP in Claude Code. Outside Claude, prefer agent-browser, then Playwright if needed:
1. mcp__claude-in-chrome__tabs_context_mcp
2. mcp__claude-in-chrome__navigate to the feature URL
3. mcp__claude-in-chrome__computer action=screenshot (desktop)
4. mcp__claude-in-chrome__resize_window width=375 height=812
5. mcp__claude-in-chrome__computer action=screenshot (mobile)
6. mcp__claude-in-chrome__resize_window width=1440 height=900
If no browser tool is available, ask the user to provide the component/page path or screenshots and review code directly.
Work through each dimension. Report findings as you go.
Check all spacing against the 4px scale (Tailwind's built-in: 1=4px, 2=8px, 3=12px, 4=16px, 6=24px, 8=32px):
p-4 md:p-6 lg:p-8 or similar)p-4 for compact, p-6 standard)gap-* not margin hackspx-4 py-2 minimum standard)margin-bottom creates hierarchy (heading closer to its body than to content above)p-[13px])max-w-prose for body text)For every interactive element, verify all 8 states:
| State | Check | Common Tailwind |
|-------|-------|----------------|
| Default | Base styling present | — |
| Hover | Subtle feedback (gated to hover:hover) | hover:bg-gray-100 |
| Focus | Visible ring for keyboard | focus-visible:ring-2 |
| Active | Press feedback | active:scale-[0.97] |
| Disabled | Reduced opacity, no pointer | disabled:opacity-50 disabled:pointer-events-none |
| Loading | Spinner or skeleton | aria-busy="true" |
| Error | Red border, message | aria-invalid:border-red-500 |
| Success | Confirmation feedback | — |
antialiased on bodytext-base)text-balance on headings, text-pretty on bodytabular-nums on data tables, prices, timersease-out (not ease-in)prefers-reduced-motion respectedtransform and opacity animated (no width, height, top)Present findings grouped by severity:
For each finding: state what's wrong, show the current Tailwind classes, show the fix (new Tailwind classes), then ask for approval before applying:
AskUserQuestion:
question: "Apply this fix?"
header: "Polish Fix"
options:
- label: "Apply"
description: "Apply this fix now"
- label: "Skip"
description: "Skip this fix and move to the next finding"
- label: "Apply all"
description: "Apply this and all remaining fixes without asking"
If the user selects "Apply all", apply all remaining fixes without further prompts.
After all fixes, screenshot again:
1. mcp__claude-in-chrome__computer action=screenshot (desktop)
2. mcp__claude-in-chrome__resize_window width=375 height=812
3. mcp__claude-in-chrome__computer action=screenshot (mobile)
Compare before/after. Confirm improvements with user.
Run the Design Review Checklist from frontend-design.md:
"Zoom in. Squint at it. Use it yourself."
<arc_log>
After completing this skill, append to the activity log.
See: references/arc-log.md
Entry: /arc:polish — [Component/page] polished ([key changes])
</arc_log>
<success_criteria> Polish is complete when:
development
Go-live and shareability checklist covering the basics needed to make a project visitable, shareable, and ready for a first real audience. Use when asked to "launch", "go live", "make this shareable", "get this ready to show people", or prepare a project for a public URL.
development
Discover architectural friction and propose structural refactors with competing interface options. Focuses on deepening shallow modules, extracting grouped concerns into packages/modules, breaking up god files, reducing duplication, and improving testability. Use when asked to "improve the architecture", "find refactoring opportunities", "deepen modules", "consolidate coupling", "break up god components", "extract this into a package", "make this more testable", or "find architectural friction".
development
Create, review, or revise a concise project vision document that captures what a project is, who it is for, why it exists, success criteria, constraints, non-goals, and decision principles. Use when starting a new project, clarifying product direction, aligning a codebase for future agent work, defining a north star, or turning a vague idea into docs/vision.md.
tools
Use when starting any conversation - establishes Arc's skill routing, instruction priority, and bootstrap rules