landing-page-art-direction
Sameness is a time-of-first-choice failure, not a memory failure. Every
AI-generated page that "looks the same" made the same unexamined defaults in
its first minute: centered hero, Inter, indigo accent, three equal cards. This
skill forces one explicit, named direction choice before any code, writes
it down, and keeps variety across projects — without ever restyling a shipped
page.
When to use / when NOT to use
Use at the start of a landing-page build, when output looks generic /
AI-generated / like every other site, or when successive projects converge on
one look.
Not for: tokens, palette values, DESIGN.md structure and enforcement gates
(visual-design-system — it consumes the direction chosen here), section
sequencing (landing-page-structure), the words (landing-page-copywriting),
building components (nextjs-landing-page), animation implementation
(scroll-motion), or mechanical rule enforcement (ux-guardrails).
Workflow
- Design Read (one line, before anything visual). Subject, audience, and
the page's single job — e.g. "monitoring tool for SREs who distrust
marketing; job: get a docs click". If the brief doesn't say, decide and
state it. Every later choice must be justifiable from this line.
- Commit on the four axes (menu + definitions:
references/direction-axes.md):
- Macrostructure — the page's compositional shape (split studio,
long document, stat-led, editorial column, bento…), chosen first; it
constrains everything else.
- Type personality — the pairing's voice (geometric-neutral,
grotesk-technical, serif-editorial, mono-utilitarian…).
- Palette family — temperature + neutrals + the one accent
(see the rotation table; never default to indigo-on-white or cream+brass).
- Motion character — none / restrained / expressive, with budgets.
- Name the rejected default. One sentence: "Rejecting: centered hero +
Inter + purple gradient + three-card grid." Naming the default is what
prevents drifting back into it; a direction defined only positively erodes
under iteration.
- Write the commitment into DESIGN.md as a short "Direction" block
(direction name, the four axes, the rejected default, one signature
element), then hand off to
visual-design-system to turn it into tokens
and budgets. The commitment is per-project and permanent: later edits obey
it; only an explicit user-requested redesign reopens it.
- Execute with restraint. One signature element carries the
distinctiveness (a typographic hero, an unexpected macrostructure, one
bold color move); everything else stays quiet and disciplined. Distinctive
≠ decorated: asking a model to "be more distinctive" ratchets it toward
the mean — change axes, don't add effects.
- Modern-minimalist is the default direction when the brief is quiet —
executed with numbers, not vibes:
references/modern-minimal.md (spacing
rhythm, type scale and contrast pairing, single accent, depth mechanisms
that keep minimal from reading as empty).
- Across projects, rotate. Keep an optional design log
(
references/direction-axes.md#design-log) of past directions; a new
project must differ from the last three on macrostructure plus at least one
other axis, and the comparison is stated in text before coding. Never
applied to edits of an existing page.
Output spec
A stated Design Read; a named direction with all four axes; the rejected
default named; a Direction block written into DESIGN.md before any component
code; for new projects in a multi-project workspace, a one-line rotation
statement referencing the log.
Gotchas
- Never rotate within a project. A landing page is one brand living for
months; forced variety inside it is churn, not craft. Rotation is for the
next project.
- Minimal needs scaffolding. "Clean and simple" without numbers produces
empty flat pages; precision (spacing rhythm, type contrast, one accent,
deliberate texture) is what reads as premium.
- Don't ban yourself into a new monoculture. The rejected-default list is
per-project, derived from the brief — a fixed universal ban list just
converges on a different same look. If the brand genuinely wants purple,
purple wins.
- Editorial-bold is not the only escape from generic. Restraint is a
direction, not a failure to choose one.
- Naming vivid looks to avoid can prime them — state the rejected default
once in DESIGN.md, then stop repeating it in prompts.
References
references/direction-axes.md — the four axes with menus (macrostructures,
type personalities, palette families with rotation, motion characters) and
the cross-project design-log convention.
references/modern-minimal.md — the numeric modern-minimalist spec:
budgets, OKLCH token skeleton, anti-boring mechanisms, motion numbers.
1---2name: landing-page-art-direction3description: Commits a landing page to a distinctive named art direction before code - macrostructure, type personality, palette family, motion character - rejecting the AI-default look, with a numeric modern-minimalist spec. Use when a page looks generic or AI-generated, all pages look the same, or to pick a visual direction, style, or vibe. Not for design tokens, section order, copy, or animation code.4---56# landing-page-art-direction78Sameness is a time-of-first-choice failure, not a memory failure. Every9AI-generated page that "looks the same" made the same unexamined defaults in10its first minute: centered hero, Inter, indigo accent, three equal cards. This11skill forces one explicit, named direction choice **before any code**, writes12it down, and keeps variety across projects — without ever restyling a shipped13page.1415## When to use / when NOT to use1617Use at the start of a landing-page build, when output looks generic /18AI-generated / like every other site, or when successive projects converge on19one look.2021Not for: tokens, palette values, DESIGN.md structure and enforcement gates22(`visual-design-system` — it consumes the direction chosen here), section23sequencing (`landing-page-structure`), the words (`landing-page-copywriting`),24building components (`nextjs-landing-page`), animation implementation25(`scroll-motion`), or mechanical rule enforcement (`ux-guardrails`).2627## Workflow28291. **Design Read (one line, before anything visual).** Subject, audience, and30 the page's single job — e.g. "monitoring tool for SREs who distrust31 marketing; job: get a docs click". If the brief doesn't say, decide and32 state it. Every later choice must be justifiable from this line.332. **Commit on the four axes** (menu + definitions:34 `references/direction-axes.md`):35 - **Macrostructure** — the page's compositional shape (split studio,36 long document, stat-led, editorial column, bento…), chosen first; it37 constrains everything else.38 - **Type personality** — the pairing's voice (geometric-neutral,39 grotesk-technical, serif-editorial, mono-utilitarian…).40 - **Palette family** — temperature + neutrals + the one accent41 (see the rotation table; never default to indigo-on-white or cream+brass).42 - **Motion character** — none / restrained / expressive, with budgets.433. **Name the rejected default.** One sentence: "Rejecting: centered hero +44 Inter + purple gradient + three-card grid." Naming the default is what45 prevents drifting back into it; a direction defined only positively erodes46 under iteration.474. **Write the commitment into DESIGN.md** as a short "Direction" block48 (direction name, the four axes, the rejected default, one signature49 element), then hand off to `visual-design-system` to turn it into tokens50 and budgets. The commitment is per-project and permanent: later edits obey51 it; only an explicit user-requested redesign reopens it.525. **Execute with restraint.** One signature element carries the53 distinctiveness (a typographic hero, an unexpected macrostructure, one54 bold color move); everything else stays quiet and disciplined. Distinctive55 ≠ decorated: asking a model to "be more distinctive" ratchets it *toward*56 the mean — change axes, don't add effects.576. **Modern-minimalist is the default direction when the brief is quiet** —58 executed with numbers, not vibes: `references/modern-minimal.md` (spacing59 rhythm, type scale and contrast pairing, single accent, depth mechanisms60 that keep minimal from reading as empty).617. **Across projects, rotate.** Keep an optional design log62 (`references/direction-axes.md#design-log`) of past directions; a new63 project must differ from the last three on macrostructure plus at least one64 other axis, and the comparison is stated in text before coding. Never65 applied to edits of an existing page.6667## Output spec6869A stated Design Read; a named direction with all four axes; the rejected70default named; a Direction block written into DESIGN.md before any component71code; for new projects in a multi-project workspace, a one-line rotation72statement referencing the log.7374## Gotchas7576- **Never rotate within a project.** A landing page is one brand living for77 months; forced variety inside it is churn, not craft. Rotation is for the78 *next* project.79- **Minimal needs scaffolding.** "Clean and simple" without numbers produces80 empty flat pages; precision (spacing rhythm, type contrast, one accent,81 deliberate texture) is what reads as premium.82- **Don't ban yourself into a new monoculture.** The rejected-default list is83 per-project, derived from the brief — a fixed universal ban list just84 converges on a different same look. If the brand genuinely wants purple,85 purple wins.86- **Editorial-bold is not the only escape from generic.** Restraint is a87 direction, not a failure to choose one.88- Naming vivid looks to avoid can *prime* them — state the rejected default89 once in DESIGN.md, then stop repeating it in prompts.9091## References9293- `references/direction-axes.md` — the four axes with menus (macrostructures,94 type personalities, palette families with rotation, motion characters) and95 the cross-project design-log convention.96- `references/modern-minimal.md` — the numeric modern-minimalist spec:97 budgets, OKLCH token skeleton, anti-boring mechanisms, motion numbers.