greyboxing · git:20260722.b16c457 · 2026-07-22 · sha256 acf9b2ee80b9ac78

greyboxing git:20260722.b16c457A

Immutable. This exact content is served forever at /api/v1/blob/acf9b2ee80b9ac78.

---
name: greyboxing
description: >-
  Greybox a site's pages — layout, UX, motion on placeholder content — from
  an existing DESIGN.md. Use when the user wants to greybox, lay out, or
  build the pages of a site whose design system exists, or when the
  frontend-design pipeline reaches phase 2.
---

# Greyboxing

Build every page's structure, style, and motion on placeholder content — real content lands later, into a frame that already works.

Inputs, read at the start of every session: `DESIGN.md` (identity — never edited here) and `PAGES.md` (pipeline state — owned and updated here). The surface's dials (`DESIGN_VARIANCE`, `MOTION_INTENSITY`, `VISUAL_DENSITY`) gate every layout and motion decision.

Everything is **responsive, designed mobile-first**: build the narrow layout first, then widen through the breakpoints. Sole exception: features inherently bound to one platform. Shared chrome (header, footer, nav) has a **single source** — a component, custom element, or include consumed by every page, never duplicated per page.

## Prerequisites

| Tool / skill     | For                                                                    |
| ---------------- | ---------------------------------------------------------------------- |
| `prototype`      | switchable UI variants of signature-tier pages                         |
| `agent-browser` (or `playwright-cli`) | the visual protocol in [review.md](./review.md); when neither is available, the review degrades to code-level checks and the review report must say so |
| `grilling`       | the site-pass grill                                                    |

## Per-page loop

One page per fresh session, in `PAGES.md` order:

1. **Plan** — pull the page's key sections and tier from `PAGES.md`. Name the page's **signature element** (the one thing it will be remembered by — spend the boldness there, keep everything around it quiet; check `PAGES.md` that no other page already spends it). Write its **motion thesis** ([motion.md](./motion.md)). Declare the page's demoable **states** (empty, error, loading) and the query params that show them. Reach into [vocabulary.md](./vocabulary.md) for named patterns, and [3d-vfx.md](./3d-vfx.md) when the brief or dials call for 3D, video, scroll effects, or shaders.
2. **Variants** — *signature tier only*: invoke the `prototype` skill (UI branch) to generate several throwaway layout variants on the page's route, all consuming the theme source. The user picks the winner — a mix of variants is a valid pick. Utility tier skips this step.
3. **Build** — turn the plan (or winning variant) into the real page: layout, navigation, UX, and motion per the thesis; every style and motion value drawn from the theme source; every declared state reachable; placeholder content everywhere, passing the **Jane Doe test**.
4. **Review** — run the page through [review.md](./review.md): generic-default test, mechanical checklist, visual protocol, fix order. Fix before moving on. No tier skips this step.
5. **Record** — update the page's row in `PAGES.md`: status, signature element, motion thesis, state query params.

**Jane Doe test** — nothing smells fake: credible names, messy numbers like 47.2 %, plausible brand names, seeded real photos — so the review judges true proportions.

## Site pass

Once every page has passed, in its own session: run review.md's **site pass** across the whole set, then invoke the `grilling` skill on the cross-page result (signature spread, chrome, shared patterns). Record the outcome in `PAGES.md`.

**Done when:** every page in `PAGES.md` has passed the review, and the site pass — including its grill — has passed.