Stage 2: Design
Goal: the owner has approved a look they have seen on a phone and a laptop. It is written as tokens, so it can become a WordPress skin by copying, and be replaced later without losing features.
Steps
- Direction. Fill the project's
docs/DESIGN_DIRECTION.md: north star, audience, what we must not look like (competitors, templates), and the non-negotiables. Offer two or three directions at most, as small mood boards or hero mockups, not full sites. - Prototype in
static/. Plain HTML and CSS.css/tokens.cssuses the same names as the theme'sskins/default/tokens.css. Components use tokens only. Real structure (header, hero, cards, form, footer), placeholder copy, no prices and no policy text. - Accessibility from the start:
- contrast ≥ 4.5:1 for text;
- visible focus;
- one H1;
- a skip link;
- keyboard paths;
prefers-reduced-motionrespected. Check the prototype with axe (browser extension) before showing it.
- Owner review. Screenshots of every page at phone (375 px) and laptop (1440 px) widths. Record the
approval date in
DESIGN_DIRECTION.mdand save the screenshots indocs/design/. - Fonts: self-host
.woff2files, subset to the needed languages, check the licence, and preload the one or two first-screen faces (name them*-preload.woff2). No Google Fonts requests anywhere. - Port to WordPress (
references/design-system.md):- copy the tokens into the skin;
- move component CSS into
skin.css; - lay out templates with the core's render functions;
- add skin part overrides only where the markup must differ. The look changes; the core's data and markup contracts don't.
- Later redesigns are new skins: copy
skins/defaulttoskins/<name>, change tokens, preview with?skin=<name>(admins), and switch with the<prefix>_skinoption once approved.
Gate (tick in SITE_STATUS.md)
-
DESIGN_DIRECTION.mdwritten; owner approval recorded with screenshots - Tokens defined; components use tokens only
- Fonts self-hosted; 0 requests to Google Fonts
Lessons
- The locked design changed when the business partner sent his own redesign. Because the look was a skin, the switch kept every feature. Build every design as a skin, even the first one.
- Don't copy a competitor's palette, type pairing or layout. Owners notice, and visitors don't remember you.
- A test-only skin (
dev-*) for trying ideas never shows on production. - If the
frontend-designordesign-motion-principlesskills are installed, use them for direction and motion.