From 051f856113ab3b7be70fe7fca3dc185fb3540a0f Mon Sep 17 00:00:00 2001 From: Paul Bakaus Date: Sat, 11 Jul 2026 17:35:28 -0700 Subject: [PATCH] finish the mode migration: brand.md/product.md become redirect stubs Answering the obvious question the family-depth framing dodged: with modes derived per task, files named for the old two-register taxonomy had no architectural reason to exist. brand.md's surviving depth (lane test + inverse test, reflex-reject lanes, color discipline, layout moves, permissions) folds into new-work.md, where all of it belonged: it is new-identity Persuade/Experience guidance. product.md's content moves unchanged to operate.md, its true name. Both old files remain as one-line redirect stubs because register: brand|product in existing PRODUCT.md files and older links point there. All cross-references retargeted (SKILL.md modes intro, context.mjs REGISTER hint, live.md, typeset.md); 85 tests green. Co-Authored-By: Claude Fable 5 --- .agents/skills/impeccable/SKILL.md | 2 +- .agents/skills/impeccable/reference/brand.md | 43 +------------ .agents/skills/impeccable/reference/live.md | 6 +- .../skills/impeccable/reference/new-work.md | 10 +++ .../skills/impeccable/reference/operate.md | 60 ++++++++++++++++++ .../skills/impeccable/reference/product.md | 61 +------------------ .../skills/impeccable/reference/typeset.md | 2 +- .agents/skills/impeccable/scripts/context.mjs | 2 +- .claude/skills/impeccable/SKILL.md | 2 +- .claude/skills/impeccable/reference/brand.md | 43 +------------ .claude/skills/impeccable/reference/live.md | 6 +- .../skills/impeccable/reference/new-work.md | 10 +++ .../skills/impeccable/reference/operate.md | 60 ++++++++++++++++++ .../skills/impeccable/reference/product.md | 61 +------------------ .../skills/impeccable/reference/typeset.md | 2 +- .claude/skills/impeccable/scripts/context.mjs | 2 +- .cursor/skills/impeccable/SKILL.md | 2 +- .cursor/skills/impeccable/reference/brand.md | 43 +------------ .cursor/skills/impeccable/reference/live.md | 6 +- .../skills/impeccable/reference/new-work.md | 10 +++ .../skills/impeccable/reference/operate.md | 60 ++++++++++++++++++ .../skills/impeccable/reference/product.md | 61 +------------------ .../skills/impeccable/reference/typeset.md | 2 +- .cursor/skills/impeccable/scripts/context.mjs | 2 +- .gemini/skills/impeccable/SKILL.md | 2 +- .gemini/skills/impeccable/reference/brand.md | 43 +------------ .gemini/skills/impeccable/reference/live.md | 6 +- .../skills/impeccable/reference/new-work.md | 10 +++ .../skills/impeccable/reference/operate.md | 60 ++++++++++++++++++ .../skills/impeccable/reference/product.md | 61 +------------------ .../skills/impeccable/reference/typeset.md | 2 +- .gemini/skills/impeccable/scripts/context.mjs | 2 +- .github/skills/impeccable/SKILL.md | 2 +- .github/skills/impeccable/reference/brand.md | 43 +------------ .github/skills/impeccable/reference/live.md | 6 +- .../skills/impeccable/reference/new-work.md | 10 +++ .../skills/impeccable/reference/operate.md | 60 ++++++++++++++++++ .../skills/impeccable/reference/product.md | 61 +------------------ .../skills/impeccable/reference/typeset.md | 2 +- .github/skills/impeccable/scripts/context.mjs | 2 +- .kiro/skills/impeccable/SKILL.md | 2 +- .kiro/skills/impeccable/reference/brand.md | 43 +------------ .kiro/skills/impeccable/reference/live.md | 6 +- .kiro/skills/impeccable/reference/new-work.md | 10 +++ .kiro/skills/impeccable/reference/operate.md | 60 ++++++++++++++++++ .kiro/skills/impeccable/reference/product.md | 61 +------------------ .kiro/skills/impeccable/reference/typeset.md | 2 +- .kiro/skills/impeccable/scripts/context.mjs | 2 +- .opencode/skills/impeccable/SKILL.md | 2 +- .../skills/impeccable/reference/brand.md | 43 +------------ .opencode/skills/impeccable/reference/live.md | 6 +- .../skills/impeccable/reference/new-work.md | 10 +++ .../skills/impeccable/reference/operate.md | 60 ++++++++++++++++++ .../skills/impeccable/reference/product.md | 61 +------------------ .../skills/impeccable/reference/typeset.md | 2 +- .../skills/impeccable/scripts/context.mjs | 2 +- .pi/skills/impeccable/SKILL.md | 2 +- .pi/skills/impeccable/reference/brand.md | 43 +------------ .pi/skills/impeccable/reference/live.md | 6 +- .pi/skills/impeccable/reference/new-work.md | 10 +++ .pi/skills/impeccable/reference/operate.md | 60 ++++++++++++++++++ .pi/skills/impeccable/reference/product.md | 61 +------------------ .pi/skills/impeccable/reference/typeset.md | 2 +- .pi/skills/impeccable/scripts/context.mjs | 2 +- .qoder/skills/impeccable/SKILL.md | 2 +- .qoder/skills/impeccable/reference/brand.md | 43 +------------ .qoder/skills/impeccable/reference/live.md | 6 +- .../skills/impeccable/reference/new-work.md | 10 +++ .qoder/skills/impeccable/reference/operate.md | 60 ++++++++++++++++++ .qoder/skills/impeccable/reference/product.md | 61 +------------------ .qoder/skills/impeccable/reference/typeset.md | 2 +- .qoder/skills/impeccable/scripts/context.mjs | 2 +- .rovodev/skills/impeccable/SKILL.md | 2 +- .rovodev/skills/impeccable/reference/brand.md | 43 +------------ .rovodev/skills/impeccable/reference/live.md | 6 +- .../skills/impeccable/reference/new-work.md | 10 +++ .../skills/impeccable/reference/operate.md | 60 ++++++++++++++++++ .../skills/impeccable/reference/product.md | 61 +------------------ .../skills/impeccable/reference/typeset.md | 2 +- .../skills/impeccable/scripts/context.mjs | 2 +- .trae-cn/skills/impeccable/SKILL.md | 2 +- .trae-cn/skills/impeccable/reference/brand.md | 43 +------------ .trae-cn/skills/impeccable/reference/live.md | 6 +- .../skills/impeccable/reference/new-work.md | 10 +++ .../skills/impeccable/reference/operate.md | 60 ++++++++++++++++++ .../skills/impeccable/reference/product.md | 61 +------------------ .../skills/impeccable/reference/typeset.md | 2 +- .../skills/impeccable/scripts/context.mjs | 2 +- .trae/skills/impeccable/SKILL.md | 2 +- .trae/skills/impeccable/reference/brand.md | 43 +------------ .trae/skills/impeccable/reference/live.md | 6 +- .trae/skills/impeccable/reference/new-work.md | 10 +++ .trae/skills/impeccable/reference/operate.md | 60 ++++++++++++++++++ .trae/skills/impeccable/reference/product.md | 61 +------------------ .trae/skills/impeccable/reference/typeset.md | 2 +- .trae/skills/impeccable/scripts/context.mjs | 2 +- plugin/skills/impeccable/SKILL.md | 2 +- plugin/skills/impeccable/reference/brand.md | 43 +------------ plugin/skills/impeccable/reference/live.md | 6 +- .../skills/impeccable/reference/new-work.md | 10 +++ plugin/skills/impeccable/reference/operate.md | 60 ++++++++++++++++++ plugin/skills/impeccable/reference/product.md | 61 +------------------ plugin/skills/impeccable/reference/typeset.md | 2 +- plugin/skills/impeccable/scripts/context.mjs | 2 +- skill/SKILL.src.md | 2 +- skill/reference/brand.md | 43 +------------ skill/reference/live.md | 6 +- skill/reference/new-work.md | 10 +++ skill/reference/operate.md | 60 ++++++++++++++++++ skill/reference/product.md | 61 +------------------ skill/reference/typeset.md | 2 +- skill/scripts/context.mjs | 2 +- tests/context.test.mjs | 2 +- 113 files changed, 1121 insertions(+), 1485 deletions(-) create mode 100644 .agents/skills/impeccable/reference/operate.md create mode 100644 .claude/skills/impeccable/reference/operate.md create mode 100644 .cursor/skills/impeccable/reference/operate.md create mode 100644 .gemini/skills/impeccable/reference/operate.md create mode 100644 .github/skills/impeccable/reference/operate.md create mode 100644 .kiro/skills/impeccable/reference/operate.md create mode 100644 .opencode/skills/impeccable/reference/operate.md create mode 100644 .pi/skills/impeccable/reference/operate.md create mode 100644 .qoder/skills/impeccable/reference/operate.md create mode 100644 .rovodev/skills/impeccable/reference/operate.md create mode 100644 .trae-cn/skills/impeccable/reference/operate.md create mode 100644 .trae/skills/impeccable/reference/operate.md create mode 100644 plugin/skills/impeccable/reference/operate.md create mode 100644 skill/reference/operate.md diff --git a/.agents/skills/impeccable/SKILL.md b/.agents/skills/impeccable/SKILL.md index 8c54e6343..18446b698 100644 --- a/.agents/skills/impeccable/SKILL.md +++ b/.agents/skills/impeccable/SKILL.md @@ -41,7 +41,7 @@ Calibration for this provider: ## Registers -Name the visitor's mode before designing; the page's grammar follows from it, and most ruined pages are one mode wearing another mode's grammar. The brief and the surface decide the mode. PRODUCT.md's `register` field names the family (`brand` covers Persuade and Experience; `product` covers Operate and Read), and `reference/brand.md` / `reference/product.md` carry extended depth for the two families. +Name the visitor's mode before designing; the page's grammar follows from it, and most ruined pages are one mode wearing another mode's grammar. The brief and the surface decide the mode; PRODUCT.md's `register` field survives only as a family hint (`brand` covers Persuade and Experience, `product` covers Operate and Read). Depth beyond the paragraphs below: [reference/new-work.md](reference/new-work.md) when inventing identity, [reference/operate.md](reference/operate.md) for substantial Operate and Read work. **Persuade** (landing pages, marketing, campaigns; design IS the product). The deliverable is an impression that stops the scroll, earns the click, converts. Spans every genre (tech, luxury, consumer); don't collapse them into one look. Briefs that imply imagery must ship real, verified imagery; a colored rectangle where a photo belongs reads as incomplete. New Persuade surfaces take their typeface procedure and reject list from [reference/new-work.md](reference/new-work.md). diff --git a/.agents/skills/impeccable/reference/brand.md b/.agents/skills/impeccable/reference/brand.md index 01af65d27..0f0184c0d 100644 --- a/.agents/skills/impeccable/reference/brand.md +++ b/.agents/skills/impeccable/reference/brand.md @@ -1,42 +1,3 @@ -# Brand family depth (Persuade and Experience surfaces) +# Moved -When design IS the product: brand sites, landing pages, campaign pages, portfolios, long-form content, about pages. The essentials live in SKILL.md (modes, craft floor) and, for new identity work, in [new-work.md](new-work.md); this file is extended depth for substantial brand work. Rules stated in those files are not repeated here. - -The register spans every genre. A tech brand, a luxury hotel, a restaurant, a band's album page, an agency portfolio. They share a stance (*communicate, not transact*) and diverge wildly in aesthetic. Don't collapse them into one look. - -## The aesthetic-lane test - -Before committing to moves, name the lane. A type-foundry specimen page is one lane; minimal-cool tech is another; acid-maximalism is another. Don't drift into editorial-magazine aesthetics on a brief that isn't editorial; a hiking brand with italic drop caps has the wrong register within the register. - -Then the inverse test: in one sentence, describe what you're about to build the way a competitor would describe theirs. If that sentence fits the modal landing page in the category, restart. - -### Reflex-reject aesthetic lanes - -Currently saturated aesthetic families that have flooded brand surfaces. If a brief lands in one of these lanes without a register reason that *requires* it (a literal magazine, a literal terminal), it's the second-order training reflex: the trap one tier deeper than a reflex font pick. Look further. - -- **Editorial-typographic.** Display serif (often italic) + small mono labels + ruled separators + monochromatic restraint. The fingerprint: three rule-separated columns, an italic serif headline, lowercase track-spaced metadata, no imagery. - -(Entries land and leave this list as families saturate and fade.) - -The reflex-reject lists apply to **new design choices**. When the existing brand has already committed to a font or a lane as part of its identity, identity-preservation wins. - -## Color - -- Name a real reference before picking a strategy; unnamed ambition becomes beige. -- Palette IS voice. A calm brand and a restless brand should not share palette mechanics. -- Don't converge across projects. Each brand surface differentiates from the last. -- When a cultural-symbol palette is the obvious pull, reach past it. Let the cultural reading come from typography, imagery, and copy, not the palette. - -## Layout - -- Asymmetric compositions are one option. Break the grid intentionally for emphasis. -- Fluid spacing with `clamp()` that breathes on larger viewports. -- For image-led briefs (hotels, restaurants, magazines, photography), full-bleed hero imagery with overlaid menu and centered headline is a canonical move; let the photograph be the design. - -## Brand permissions - -Brand can afford things product can't. Take them. - -- Ambitious first-load motion. Reveals and typographic choreography that earn their place; one orchestrated page-load beats scattered micro-interactions, and some brands skip entrance motion entirely, which is also a voice. -- Single-purpose viewports. One dominant idea per fold, long scroll, deliberate pacing. -- Art direction per section. Different sections can have different visual worlds if the narrative demands it. Consistency of voice beats consistency of treatment. +The Persuade and Experience essentials are in SKILL.md; the depth for inventing new identity (typeface procedure, reject list and lanes, color discipline, layout moves, permissions) lives in [new-work.md](new-work.md). This stub remains because `PRODUCT.md` files with `register: brand` and older links point here. diff --git a/.agents/skills/impeccable/reference/live.md b/.agents/skills/impeccable/reference/live.md index bc1e3e9ea..87988e1b1 100644 --- a/.agents/skills/impeccable/reference/live.md +++ b/.agents/skills/impeccable/reference/live.md @@ -111,7 +111,7 @@ node .agents/skills/impeccable/scripts/live-insert.mjs --id EVENT_ID --count EVE - `--position` ← `event.insert.position` (`before` | `after`) - Anchor flags ← `event.insert.anchor` (same mapping as wrap: id, classes, tag, text) -The scaffold has **no** `data-impeccable-variant="original"`. Variants are net-new HTML+CSS inserted at `insertLine`. Load `brand.md` or `product.md` (freeform only, no action sub-command). Write all variants in one edit, then `--reply done`. +The scaffold has **no** `data-impeccable-variant="original"`. Variants are net-new HTML+CSS inserted at `insertLine`. For Operate/Read surfaces load `operate.md`; Persuade/Experience surfaces use SKILL.md's mode guidance plus `new-work.md` when the variant invents identity (freeform only, no action sub-command). Write all variants in one edit, then `--reply done`. For Svelte/SvelteKit targets, `live-insert.mjs` returns `previewMode: "svelte-component"` with `mode: "insert"`, `file` pointing at a temporary `node_modules/.impeccable-live//manifest.json`, `componentDir` pointing at the variant component files, and `sourceFile` pointing at the real `.svelte` route. Write each inserted variant as a real Svelte component (`v1.svelte`, `v2.svelte`, …) under `componentDir`. Insert variants must be non-empty net-new content with a single top-level root, no `data-impeccable-*` attributes, and CSS in each component's `