skills/design-taste/SKILL.md
Universal visual quality skill for every Customware build. Encodes layout philosophy, hierarchy, restraint, rhythm, brand theming mechanics, the template contract, BrandMark rendering, archetype catalog, component recipes, and aesthetic anti-patterns. Read on every UI build. The first task agent (mitb-initial-agent) runs the vision pass once; this skill is the implementation contract that turns vision into a coherent app. Trigger signals: any UI build, improving visual quality, aesthetic balance, polished design, hierarchy, restraint, taste, component design, layout principles, premium feel, brand theming, template contract, light-mode default, BrandMark.
npx skillsauth add customware-ai/skills design-tasteInstall 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.
This skill is the visual quality bar for every build. It owns both the taste layer (foundations, archetypes, recipes, anti-patterns) and the mechanics layer (template contract, brand theming, BrandMark, light-mode mandate, header right cluster).
This skill is read by:
The first task is special — it sets the design language. Every task after that respects it. Both modes use design-taste; only the first build uses it to establish the system, and every later build uses it to extend the system.
The reference files are short and necessary. Do not skim, do not partial-read with head, do not skip:
references/archetypes.md — full archetype catalog, token sets, reference apps, typography pairingsreferences/components.md — exact recipes for every common componentreferences/anti-patterns.md — failure modes to scan for during and before completionreferences/mechanics.md — template contract, brand theming, BrandMark, light-mode mandate, header rulesIf any of these is unread when you start writing tokens, your output will drift from the system. The previous build (dental scheduler, April 2026) only read SKILL.md and partial archetypes.md and produced generic-dashboard output. Read all four references in full.
These principles describe the qualities the build should have. They're abstract on their own; the system, patterns, and recipes that follow are how each principle gets implemented.
Most app screens are NOT centered hero pages. Content aligns left, scans top-to-bottom, with the focal element occupying the upper third or upper-left of the main content area. Asymmetric balance — a heavy element offset by a lighter cluster of supporting elements — reads as more sophisticated than centered symmetry, which is reserved for empty states, error pages, and onboarding.
A balanced layout has:
Hierarchy is how the user knows what to look at first, second, third. It's built from four levers — size, weight, color, spacing — and the rule is to use ONE, occasionally two, never four at once.
When two elements need to feel different in importance, change ONE lever — usually size or weight. Don't change all four. Visual noise comes from over-differentiation.
Restraint is the signature of premium design. AI defaults toward the opposite — using brand colors everywhere, adding gradients, layering shadows, multiplying decorative elements. Each individually feels like "more polish"; together they feel like a discount template.
The single most important restraint rule: the brand or accent color appears in roughly 8-10% of pixels — no more. Primary buttons, the active state border, the score badge fill, maybe one or two focal accents. Body text is foreground. Icons are foreground or muted. Most surfaces are neutral.
Other restraint rules:
Restraint produces calm. Calm is what makes the user trust the app.
Rhythm is the consistent spacing and sizing pattern that makes the app feel like one designer made it. It comes from using a defined scale — radius scale, spacing scale, type scale — and never improvising values.
Rhythm is invisible when present and obvious when absent. It's what separates "looks fine" from "feels right."
This is the principle most often violated by AI builds. Cards are not the default layout primitive. They are an exception used when content needs emphasis, separation, repetition, or framing.
Default to inline content in the page body:
Use cards only when:
A page that stacks one card after another for no reason — KPI card, today card, list card, secondary list card — is the dashboard reflex, and it's almost always wrong. Real apps inline most content and reserve cards for moments that actually need framing.
The principles in Section A describe what the build should feel like. This section describes the mechanics.
Every build follows this order:
app.css — colors, typography, radius, borders, elevation, spacingThis single ordering eliminates the most common AI design failures: invented colors, mixed radii, accidental new type sizes, ad-hoc status colors. The constraint produces coherence; the coherence produces taste.
An archetype is a complete preset for the visual language — palette flavor, typography pairing, radius scale, elevation style. All archetypes share the same structural shape; they differ only in values.
Do not invent a new archetype mid-build.
For the full archetype catalog and encoded token sets, read references/archetypes.md in full before writing the token block.
The dashboard layout (sidebar + KPI cards + content cards) is overused and almost always wrong unless the app is genuinely a dashboard tool. Most apps have a primary product surface — and that surface should be the focal element, not buried below KPI cards.
Common product surfaces by app type:
When the product has a clear primary surface, that surface gets the page. Supporting context (counts, filters, related items) goes in narrow side panels or collapses into the surface itself. KPIs go above only when the user actually monitors them — not as decoration.
For full layout patterns (focal, surface-first, list-detail, form, reading, board, single-column), see references/components.md.
Default. Resting appearance. Hover. Subtle change signaling interactivity — slight background tint, slight border darken. Never a dramatic visual jump. Cursor changes to pointer. Active / pressed. Slightly more pronounced than hover; signals the click is registering. Disabled. Reduced opacity (60-70%), no hover effect, no cursor change. The user should immediately understand "this is here but currently unavailable."
Default. Content rendered. Empty. Never blank. Title ("No appointments yet"), description ("Book the first one to get started"), action button when applicable. Loading. Skeletons matching the actual content shape, not generic spinners. A row skeleton is a tinted rectangle the size of a row. Error. Constructive, never dead-end. Title ("Couldn't load appointments"), description ("Check your connection and try again"), action ("Retry"). Never a raw error message.
--primary with 2px offset)If a transition is noticeable as a transition, it's too long. Aim for "I didn't notice it but the app felt good."
Components consume the active token set. Same recipes across all archetypes; different tokens; different visual results; always coherent.
For exact specs of all 16+ component recipes — Primary/Secondary/Tertiary Buttons, Chips, Status Badges, Rows (default/hover/selected), Cards (when appropriate), Toggles, Form Inputs, Section Headers, Empty States, Toasts, Loading Skeletons, plus the layout pattern catalog — see references/components.md.
Read this reference whenever building any UI component or composing a screen layout.
The 18+ failures that show up in 90% of one-shot AI builds — including the dashboard reflex, card-heavy compositions, generic SaaS purple, decorative gradients, mixed radii, fifth type sizes, invented status colors, and brand-color overuse.
See references/anti-patterns.md. Read at the start of the build to internalize and again before completion as a verification scan.
The non-optional mechanics inherited from the deprecated frontend-design skill: template contract, brand theming CSS variable mapping, BrandMark component pattern with onError fallback, light-mode-in-both-places mandate, header right cluster (role switcher + theme toggle + user menu), currency formatting, scope boundaries.
These rules are mandatory. Skipping any of them is a failed build even when tokens and components are perfect.
See references/mechanics.md. Read before writing the token block AND before building the layout shell.
The agent MUST follow this order. Do not start building components before the token block is complete.
app.css: /* design-taste archetype: Wellness & Health */references/components.md.app.css. All token categories declared as CSS variables under :root. No exceptions. No "I'll add elevation later." Use references/mechanics.md for the brand theming variable mapping.app.css AND the JavaScript ThemeProvider default. Failure to do this means the app ships in dark mode regardless of tokens. Most-skipped step.--surface-stage for the page background, --surface-navigation for the sidebar. Header gets the BrandMark + company name on the left and the right cluster on the right. NO hardcoded colors anywhere — every value comes from a token.references/components.md exactly. Inline content into the page body before reaching for cards.references/anti-patterns.md. Walk each item. Fix any violations.Before completion, run through this checklist:
app.css. No hardcoded hex values anywhere except inside the token block.app.css AND ThemeProvider default. App ships in light mode.accent → --primary; dark (lightened) → --sidebar; light → --background. Per references/mechanics.md.<img> tags.references/anti-patterns.md checked. No violations.references/mechanics.md. design-taste is now the single source of truth for visual mechanics + taste.references/archetypes.md). Each archetype names 2-3 real apps as North Stars and may declare an optional display font pairing.head -150 on archetypes.md) lose critical information.| Skill | Reads when | What it provides |
|---|---|---|
| design-taste | Always | Visual quality + mechanics — foundations, archetypes, recipes, anti-patterns, template contract, brand theming, BrandMark, light-mode mandate |
| domain-context | Always | Business terminology, entities, statuses, stakeholders |
| cpq-builder | When task is CPQ-shaped | CPQ-specific section structure, quote document, RBAC patterns |
| trades-builder | When task is trades-shaped | Trades-specific section structure, job summary, payment flow |
| crm-builder | When task is CRM-shaped | Entity model, pipeline view, list/detail patterns |
| erp-builder | When task is ERP-shaped | Inventory model, purchase order flow |
design-taste and domain-context are read on every build. Verticals are additive when one fits. For builds with no vertical, design-taste + domain-context are sufficient — there is no Generic Layout Fallback; the chosen archetype IS the design system.
development
Strict execution instructions for product tasks, app implementation tasks, bugfixes, verification tasks, and full-stack coding tasks. Use when Codex must work through ordered phases that start with mandatory task-workflow artifact reset before any source inspection or edit, then codebase research, implementation passes, scored gates, interactive Playwright verification, E2E coverage, and final signoff.
development
Strict execution instructions for Builder-style product tasks, app implementation tasks, bugfixes, verification tasks, and full-stack coding tasks. Use when Codex must work through ordered phases that start with mandatory task-workflow artifact reset before any source inspection or edit, then codebase research, implementation passes, scored gates, interactive Playwright verification, E2E coverage, and final signoff.
development
This skill is strict implementation instruction, not advisory reference text. The skill treats the HTML as discovery-only input, forces interactive Playwright route/state capture, then moves through scored gates for source acceptance, implementation planning, authored UI reproduction, implementation integrity, visual verification, and adversarial proof before signoff.
development
Use this skill for Customware existing-project migration tasks that move uploaded customer apps from other builders into the standard Customware stack while preserving the source product's routes, workflows, UI, UX, and styling with no intentional user-facing changes while replacing only the runtime foundation. This skill covers both `Migration build` and `Migration verify` and includes self-grading quality gates that must pass before the task can complete.