---
name: polish
description: The last ten percent, as a checklist. Favicons and social images, document titles, selection and scrollbar colours, focus rings, keyboard hints, tabular numbers, icon consistency, image dimensions, external link markers, anchor offsets, the 404 page, reduced motion and hover gating, tab title state, and the small fixes that separate a finished interface from a working one. Use when asked to polish, finish, ship, "make it feel done", or before a release.
---
# polish
Polish is not adding things. It is the list of things that are already wrong that nobody has looked at yet. Run it top to bottom; fix everything you find; do not skip an item because it seems small. Small is the point.
## Document and metadata
- [ ] `
` is specific per page: "Settings — App", not "App". Updates on client navigation.
- [ ] Title reflects state where useful: an unread count, an unsaved dot ("• Untitled").
- [ ] Favicon: SVG with a dark-mode variant via `prefers-color-scheme` inside the SVG, plus a 32px PNG fallback and a 180px apple-touch-icon.
- [ ] Open Graph and Twitter images exist, are 1200×630, and show the page's title in the site's type, not a generic logo.
- [ ] `theme-color` meta for both schemes so the browser chrome matches.
- [ ] `lang` on ``. `color-scheme` on the root.
- [ ] Canonical URLs; no duplicate content at `/page` and `/page/`.
- [ ] A 404 page in the app's frame, with a way back and a search if the app has one.
## Text
- [ ] Sentence case in every button, label, heading and menu item.
- [ ] No orphan words on titles: `text-wrap: balance`.
- [ ] Tabular numerals on every number in a column, counter, price, timestamp or shortcut.
- [ ] Real apostrophes and quotes (’ “ ”), en dashes for ranges, ellipsis character not three dots.
- [ ] Empty states, error messages and loading text are written, not placeholder.
- [ ] No "Lorem", no "TODO", no `console.log` in production.
- [ ] Dates are formatted for the locale, relative when recent ("4m ago"), with the absolute time on hover.
## Colour and surface
- [ ] `::selection` set to match the palette.
- [ ] Scrollbars themed: `scrollbar-width: thin; scrollbar-color`.
- [ ] Focus ring visible on every surface: test on the darkest and lightest backgrounds.
- [ ] Both themes reviewed on every screen. No `#fff` text on `#000`.
- [ ] No flash of the wrong theme on load.
- [ ] Form controls, `