Skip to main content

design-quality

Use for ANY work that changes how a UI looks: a new app/site/screen, a theme or redesign, a new logo or app icon, a new component, or even a small UI fix inside an existing product (player, reader, dashboard). Two modes: PRESERVE (editing an existing product — keep its design system intact, prove nothing else changed with before/after visual diff) and CREATE (new design or explicit redesign — 2026 product-level quality, no generic "AI slop" look). Includes an anti-slop list and a scored self-critique.

Source facts

Repository
vanaedynak/proofkit
Last source activity
November 5, 2026 at 11:12
Detected SKILL.md language
English
Stars
0
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
design-quality
description
Use for ANY work that changes how a UI looks: a new app/site/screen, a theme or redesign, a new logo or app icon, a new component, or even a small UI fix inside an existing product (player, reader, dashboard). Two modes: PRESERVE (editing an existing product — keep its design system intact, prove nothing else changed with before/after visual diff) and CREATE (new design or explicit redesign — 2026 product-level quality, no generic "AI slop" look). Includes an anti-slop list and a scored self-critique.
# design-quality — look like a real 2026 product, never break an existing design The user cares about design more than anything. An ugly or generic result, or an existing design that got damaged by a "fix", is a failed task even if everything works. ## First: which mode? - **PRESERVE** — the project already has a UI and the task is a fix, a feature or a tweak. Default for any existing project. Even if you would design it differently, you match what is there. - **CREATE** — new product, or the user explicitly asks for a new design/theme/redesign/"make it beautiful". Only then may you introduce a new visual language. ## PRESERVE mode (existing product) 1. **Learn the design system before touching UI.** Find and read: CSS variables / theme files / Tailwind config / palette files, the 2–3 components closest to what you will build (buttons, cards, sheets, lists). Write 3–5 lines in your notes: colors (tokens), font + sizes, radius, spacing, shadow/border style, motion. Reuse those tokens and components — never hard-code new colors, fonts, radii or shadows next to existing ones. 2. **Baseline screenshots BEFORE editing** of the screens you will touch plus 1–2 neighbouring screens: `node <proof-verify>/scripts/ui_probe.mjs --url <dev-url> --freeze --out .proof/before [--steps nav.json]` 3. Make the change. Touch only what the request needs: no restyling, renaming, reordering, "while I'm here" improvements, new hotkeys or new settings that were not asked for. 4. **After screenshots + diff**: `ui_probe.mjs ... --freeze --out .proof/after` then `node <proof-verify>/scripts/visual_diff.mjs .proof/before .proof/after` Use the SAME steps file and the SAME test data for before and after, so file names match (the diff compares files with equal names; content that only moved down/up is ignored automatically). Open every `-diff.png`. Every red area must be the intended change. Anything else changed → revert that part. Put the diff summary in the report — "diff: yes" without `-diff.png` files is not evidence. 5. New element (button, panel, badge)? It must look like it shipped with the product: same tokens, same component, same icon set and stroke width, same spacing rhythm. Compare it side by side with its neighbours in the screenshot. ## CREATE mode (new design / redesign) 0. **Directions before code.** Make 2–3 clearly different directions for ONE key screen first — as a static HTML mockup or an image from your image tool — screenshot them side by side, score them with the self-critique table, and pick the best (or show them to the user with `ask_question` when the choice is a matter of taste, e.g. a new theme or logo). Changing a mockup costs a minute; changing a theme across 30 screens costs an hour. 1. **Direction in 5 lines** (in `.proof/checklist.md`): who uses it and in what mood; 2–3 concrete current references to emulate *for specific qualities* (e.g. "Apple TV app — poster rows & focus states; Linear — density & restraint; Arc/Raycast — command UX; Spotify 2025 — now-playing view; Crunchyroll — anime catalog"); palette; type; signature detail (the one thing people remember). 2. **Tokens first** (CSS variables): background, surface 1–3, border, text primary/secondary/muted, ONE accent (+ hover/pressed), success/warn/danger. Build neutrals as a ramp (OKLCH is ideal) with real contrast (body text ≥ 4.5:1). Type scale with 5–6 steps (e.g. 12/14/16/20/28/40), 1 family (2 max), weights 400/500/600. Spacing on a 4 px grid (4/8/12/16/24/32/48). One radius family (e.g. 8 for controls, 12–16 for cards). Elevation by subtle borders + soft large shadows, not glow. 3. **Content first**: real-looking content for the domain (posters/artwork, proper titles, durations, avatars) — generated with your image tool or SVG when needed, never grey boxes or lorem ipsum. 4. **Every interactive element has states**: hover, pressed, focus-visible ring, disabled, loading; lists have empty and error states; motion 150–250 ms ease-out (springs for sheets), respects `prefers-reduced-motion`. 5. **Layout**: one dominant element per screen, clear hierarchy, generous but consistent spacing, content aligned to a grid; on iPad/phone — native-feeling: safe areas, ≥ 44 px touch targets, bottom/edge-reachable controls, no hover-only actions. ## Themes and redesigns of an existing app — check EVERY screen A theme touches every screen, so checking the 2–3 you edited is not enough: 1. Take the screen list from the project map (routes + how to get past login/guest screens). 2. Before changing anything: `node <proof-verify>/scripts/route_tour.mjs --url <dev-url> --routes .proof/routes.txt [--hash] [--setup setup.json] --viewports 1440x900,ipad,375x812 --freeze --out .proof/tour/before` (run it twice: screens that differ between the two runs show live data — judge those by eye). 3. After: same command with `--out .proof/tour/after`, then `visual_diff.mjs .proof/tour/before .proof/tour/after`. Open the diffs of every screen: the new theme must be applied everywhere consistently — no screen left in the old colours, no unreadable text, no broken layout. 4. `ui_probe.mjs` reports `low-contrast` text. In an existing product only contrast problems YOUR change introduced count (compare with the before run); do not recolour the brand's existing elements unless the task is to change the theme. ## Icons and logos An icon is seen at 16–64 px far more often than at 1024 px. 1. Make 3–4 genuinely different candidates (SVG by hand for geometric marks, or your image tool), each one simple: one bold silhouette, ≤ 3 colours, no thin lines, no small text, works without its glow. 2. Check each: `node <proof-verify>/scripts/icon_check.mjs candidate.svg --label v1` — open every sheet: recognisable at 16 and 32 px? visible on dark AND light? holds up next to other icons on the iPad home screen? Fix or drop candidates that fail, pick the best, say why. 3. Export everything: `icon_check.mjs final.svg --export <dir> --ios-bg <brand background>` → `.ico` for Windows/Electron, `AppIcon-1024.png` (opaque, square full-bleed — iOS applies its own rounded mask), `apple-touch-icon.png`, favicon, maskable PWA icon, PNG sizes. 4. Wire it into EVERY place the project uses (find them: `rg -n "icon|favicon|apple-touch" --glob "!node_modules"`): favicon/manifest in `public/`, Electron build icon, Capacitor/iOS asset catalog, in-app logo components, splash screens. Old icon files left in some place = the user still sees the old icon there. ## Anti-slop list — never ship these (they scream "AI made this") - Purple→blue/pink gradients as the default identity; gradient text on headings; neon glow on everything; glassmorphism on every surface. - Emoji used as icons in a polished UI (use one SVG icon set, e.g. Lucide, consistent stroke). - The generic template: centered hero + "3 feature cards with icons" + gradient button, unless asked. - Everything rounded-2xl with the same shadow; borders AND shadows AND gradients on one card. - Sidebar of plain text tabs with square grey tiles; dashboards of identical cards. - Fake stats/testimonials/users ("10k+ happy users", "John D."), lorem ipsum, placeholder posters. - Random accent colors per section; more than one accent; low-contrast grey-on-grey text. - Huge empty areas or the opposite: everything crammed with no hierarchy. - Default browser controls (raw `<input type=range>`, default select) in a styled product. - Inconsistent icon sizes, misaligned baselines, text touching edges, uneven gaps. ## Self-critique (required before reporting) — score from screenshots, 1–5 each | criterion | question | |---|---| | Hierarchy | Is it obvious in 1 second what matters most on each screen? | | Typography | Clear scale, comfortable line length/height, no orphan sizes? | | Spacing & alignment | Consistent rhythm, everything on a grid, nothing touching? | | Color restraint | Neutrals + one accent, real contrast, no slop gradients? | | Consistency | Same components/icons/radii everywhere; new parts match old ones? | | States & motion | Hover/focus/pressed/empty/loading present and smooth? | | Content realism | Looks like a real product with real content? | | Originality | Would a designer call it generic AI output? (5 = clearly designed) | Any score below 4 → fix and re-screenshot. Put the table (with one-line reasons) in the report. In PRESERVE mode, add: "Visual diff: only intended areas changed — yes/no".
View on GitHub