ss-restyle · diff

git:20260716.3c5e387 to git:20260718.6aebe5f

22 added, 106 removed. Audit A to A.

---
name: ss-restyle
- description: Re-style a project to a named aesthetic — swiss, editorial, technical, warm-dtc, minimal-mono, brutalist-lite. A preset is a *coordinate* across the dial axes (radius + density + color + weight + motion) plus a font, accent family, and one signature move — applied coherently as a single identity, written to the lock, and re-gated. This is for mood words ("more editorial") that aren't one axis; for a single axis use /ss-dial.
- argument-hint: "<preset> — swiss | editorial | technical | warm-dtc | minimal-mono | brutalist-lite"
+ description: Apply one optional StyleSeed aesthetic profile without changing the selected output grammar, product job, or core design judgment.
+ argument-hint: "<profile> — swiss | editorial | technical | warm-dtc | minimal-mono | brutalist-lite | none"
allowed-tools: Read, Write, Edit, Grep, Glob, Bash
---
- # Re-style to a preset
-
- A mood word — "make it more editorial", "give it a Swiss feel" — is **not one axis**. It's a
- defined *position across several* (this radius **and** that density **and** that color
- temperature **and** that weight **and** that motion), tied together with a font and one
- signature move. Left to plain language, the model resolves it differently every time and half
- the axes drift. `/ss-restyle` pins the whole coordinate at once, **coherently**, and re-gates.
-
- Each preset below is a full identity, not a filter you stack on top of another. Applying two
- presets = the mixed-personality tell we ban. Pick one; it *replaces* the look.
-
- ## When NOT to use
-
- - Moving a single axis ("denser", "sharper", "more muted") → `/ss-dial`.
- - No `STYLESEED.md` yet → `/ss-build` / `/ss-setup` first (a restyle rewrites a lock; it needs one).
- - A brand with a fixed hex → keep the accent, use `/ss-dial` for feel; don't let a preset
- overwrite a real brand color (presets *suggest* an accent family — honor an existing lock's hue).
-
- ## The mechanic
-
- 1. **Read `STYLESEED.md`.** Keep anything the user has explicitly locked (a real brand hex, a
- required font) — a preset fills the *unopinionated* axes, it doesn't overrule a deliberate choice.
- 2. **Set the preset's coordinate** — apply each field below via the same coordinated token sets
- `/ss-dial` uses (radius mapping table, density ramp, color HSL + tint re-derive, weight ramp,
- motion seed), plus the font and elevation language. System-wide, every file — grep the tokens.
- 3. **Hold the modern floor (§CC-9d).** Distinctive must not read *dated*: white/fresh base, serif
- as seasoning (one display moment, never body), keep the air. A preset that turns into a beige
- serif brochure has failed, not succeeded.
- 4. **Rewrite the lock** — Skin/Mood/Accent/Font/Radius/**Elevation (enum value)**/**Density**/
- **Palette mode**/Motion/Type + a one-line `Signature move`, **and set `Preset: <name>`** — this field is the handshake the gate reads:
- `/ss-score` re-keys its deductions to the preset's language (v2.11), so brutalist borders or
- an editorial serif body are scored as the locked style, not as violations of the default skin.
- This is now the source of truth for every later prompt.
- 5. **Re-run the Quality Gate** (`/ss-score`, loop to ≥ 80 — it scores lock-relative, so the
- preset's own defining traits are legal). Report: preset applied, the coordinate, the score.
- A restyle that scores < 80 is fixed before presenting — a named look is no excuse for
- incoherence (mixed axes, missing states, contrast failures still fail under any preset).
-
- ---
-
- ## The presets (coordinate = radius · density · color · weight · motion)
-
- ### `swiss` — grid honesty, typographic confidence
- `sharp · compact · muted-cool · bold · calm`
- - **Font:** a neutral grotesk (Inter / Helvetica Now feel), tight tracking on display.
- - **Accent:** restrained — near-neutral, or a single strong signal (classic Swiss red `#D6291E`)
- used sparingly. One accent, lots of black/white/grey.
- - **Elevation:** flat — hairline borders and whitespace do the separating, not shadows.
- - **Signature:** a strong asymmetric grid, oversized left-aligned headline, generous but
- *structured* space. Numbers and labels align to the grid. No ornament.
-
- ### `editorial` — magazine, serif as seasoning
- `soft · airy · warm-muted · regular · calm`
- - **Font:** a serif display (Fraunces / Newsreader) for headlines **only**, Inter/neutral sans for body.
- - **Accent:** a warm muted ink — oxblood `#7B2D26`, forest `#2F4A3C`, or deep amber. Muted, not loud.
- - **Elevation:** subtle; content leads, chrome recedes.
- - **Signature:** one oversized serif headline moment, a wide reading measure (`max-w-2xl/3xl`),
- strong first-paragraph emphasis. **Modern floor:** white base, serif is the seasoning — body
- stays sans, don't tip into a paper-and-serif pamphlet (§CC-9d).
-
- ### `technical` — dark, dense, instrument-panel
- `sharp · dense · cool · regular · still` (dark-first)
- - **Font:** Geist / IBM Plex Sans; mono (Plex Mono / Geist Mono) for IDs, SHAs, timestamps, metrics.
- - **Accent:** one signal hue on dark — teal `#2DD4BF`, lime, or amber — used for state, not decoration.
- - **Elevation:** the **dark tonal ramp** — page < card < raised by surface lightness + hairline
- borders. No drop shadows.
- - **Signature:** high data density (dense dial), mono numerics with `tabular-nums`, tonal
- surfaces, minimal motion (still). Chrome scale: h1 22–24px, KPI 48–64px.
-
- ### `warm-dtc` — consumer, friendly, product-forward
- `pill · airy · warm-vivid · bold · lively`
- - **Font:** a rounded/friendly grotesk; large, confident.
- - **Accent:** warm and vivid — terracotta `#C14E24`, coral, or amber-brown. (Cool blues read
- corporate here — avoid.)
- - **Elevation:** subtle → layered; soft, inviting depth.
- - **Signature:** big product imagery, pill controls, generous space, `lively`/Spring micro-motion
- on CTAs. One warm accent; if it collides with the success green, resolve per the lock's
- `Semantic resolve`.
+ # Apply an aesthetic profile
- ### `minimal-mono` — whitespace and restraint
- `soft · airy · muted · light · calm`
- - **Font:** one neutral sans; weight and size do all the work (no second family).
- - **Accent:** near-monochrome — a single restrained accent used *rarely* (one CTA, one active state).
- - **Elevation:** flat → subtle; mostly hairlines and air.
- - **Signature:** dominant whitespace, light weights, a single small accent moment, one clear
- focal element. The discipline *is* the design — resist adding anything.
+ Read `PRODUCT-PRINCIPLES.md`, `RULESETS.md`, `PRESETS.md`, and `STYLESEED.md`. Profiles are
+ coordinated visual axes; output grammars organize attention, information, and action. Keep them
+ separate.
- ### `brutalist-lite` — raw, high-contrast, but still coherent
- `sharp · comfortable · vivid · bold · snap`
- - **Font:** a bold grotesk, oversized headlines; can go heavier than usual.
- - **Accent:** one loud hue against black/white. Still **one** accent — loud ≠ rainbow.
- - **Elevation:** flat with **hard 1–2px borders** as the personality (borders do separation here,
- which is allowed *as the deliberate style* — no soft shadows mixed in).
- - **Signature:** heavy borders, blocky high-contrast sections, snappy instant motion, exposed
- structure. **"lite" = still coherent:** one accent, one border weight, states and a11y intact,
- gate ≥ 80. Raw is the look; broken is not.
+ ## Workflow
- ---
+ 1. Validate that the lock has one output grammar. If not, run `/ss-setup` first.
+ 2. Select exactly one profile from `PRESETS.md`, or `none`. Never stack profiles.
+ 3. Apply its coordinated radius, density, type, palette temperature, elevation, motion,
+ composition accent, and signature move **inside the output grammar's allowed ranges**.
+ 4. Preserve deliberate brand values and required fonts when compatible. If incompatible, the
+ output grammar and core invariants win; explain the conflict.
+ 5. Update `Aesthetic profile` and affected bounded values in `STYLESEED.md`. Do not rewrite the
+ output grammar or a reference-compiled rule set.
+ 6. Run `/ss-score` to ≥80 and `/ss-verify` if renderable. Report the complete effective rule set,
+ not just the profile name.
## Rules
- - **One preset replaces the look — never stack two** (that's the mixed-personality tell). To
- nudge from a preset, use `/ss-dial` on a single axis afterward.
- - **Honor deliberate locks.** A real brand hex or a user-chosen font survives a restyle; the
- preset fills the rest. Say what you kept.
- - **System-wide.** Apply the coordinate across every file, not the screen in view.
- - **Modern floor always (§CC-9d).** Distinctive must not cost freshness — white/fresh base, serif
- as seasoning, keep the air. Dated ≠ distinctive.
- - **Persist + re-gate.** Rewrite `STYLESEED.md` to the new coordinate, then `/ss-score` to ≥ 80.
- Report the preset, the coordinate, and the score.
+ - A profile is optional appearance coordination, not a design-method exemption.
+ - `technical` profile does not turn a commerce page into an observability console.
+ - `editorial` profile does not justify unreadable serif body in a transaction workflow.
+ - `brutalist-lite` still requires coherent states, contrast, and one border language.
+ - Use `/ss-dial` for one-axis changes and `/ss-reference` for a new evidence-derived language.