diff --git a/ROADMAP.md b/ROADMAP.md index c3e7539..d998459 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -165,7 +165,6 @@ For reference. Everything below is in current `0.4.0`. - ✓ Custom-craft canon: pure CSS art, hand-built SVG, declarative animation, View Transitions, Three.js when justified - ✓ Asset-source catalogue: Lucide / Phosphor / Heroicons (icons), Simple Icons / SVGL (logos), Nanobanana 2 / Recraft V4 (generated illustration), Storyset / Humaaans (library), Mixkit / Coverr (video), Unsplash / Nappy (photography) - ✓ Working install path: `cp skill/* ~/.claude/skills/hallmark/` -- ✓ Two test specimens: bakery (`site/_example-bakery/`) and command palette (`site/_example-cmdk/`) - ✓ Slop test 33 questions: visual (8), structural (2), microinteractions (10), variety (3), implementation (6), hero enrichment (4) - ✓ View Transitions on theme switch, with reduced-motion fallback - ✓ Copy-to-clipboard with silent success on install code blocks diff --git a/docs/img/theme-brutal.png b/docs/img/theme-brutal.png deleted file mode 100644 index 546d1fa..0000000 Binary files a/docs/img/theme-brutal.png and /dev/null differ diff --git a/docs/img/theme-newsprint.png b/docs/img/theme-newsprint.png deleted file mode 100644 index 9362292..0000000 Binary files a/docs/img/theme-newsprint.png and /dev/null differ diff --git a/docs/img/theme-specimen.png b/docs/img/theme-specimen.png deleted file mode 100644 index 2220edd..0000000 Binary files a/docs/img/theme-specimen.png and /dev/null differ diff --git a/docs/img/theme-studio.png b/docs/img/theme-studio.png deleted file mode 100644 index 71ff99f..0000000 Binary files a/docs/img/theme-studio.png and /dev/null differ diff --git a/site/_example-bakery/index.html b/site/_example-bakery/index.html deleted file mode 100644 index 8d96666..0000000 --- a/site/_example-bakery/index.html +++ /dev/null @@ -1,764 +0,0 @@ - - - - - - - Marlow Street Bread — opening 8 May - - - - - - - - - - -
- - - - - -
-
-

- - Opening · 8 May 2026 -

-

- Bread, when it’s ready. -

-

- A naturally leavened loaf, made with local flour and a thirty-six hour ferment. A few of them, baked daily. When they’re gone, we close. -

-
- -
- - -
- -
-

- A short list, done properly. -

-
    -
  • - 01 - Country - Stone-milled wheat, a little rye, a long cold ferment. Our everyday loaf. - Daily -
  • -
  • - 02 - Seeded - Pumpkin, sesame, poppy. The country base with a denser crumb. - Daily -
  • -
  • - 03 - Miche - A broad round, 1.4 kg. Keeps four days on the counter, longer under cloth. - Fri & Sat -
  • -
  • - 04 - Rye - Seventy percent rye, caraway, a little molasses. Dense, dark, patient. - Thursdays -
  • -
-

- We bake in small numbers because we’d rather bake four loaves well than forty in a hurry. If a loaf is sold out by ten, that’s how it goes. -

-
-
- - -
- -

- “Good bread is mostly time — a long fermentation, a patient oven, and flour that wasn’t rushed.” - — from the opening letter -

-
- - -
- -
-

- Milled in Paxton, grown twenty-three miles away. -

-

- Our flour is stone-milled at the Paxton mill, north of town. The wheat comes from two farms — Linnea Berg’s in the valley and the Holdfast Co-op on the ridge. We work with what they grow, when they grow it, which means the flour shifts a little with the seasons. We think that’s a feature. -

-
-
- - -
- -
-

- Marlow Street, off Fifth. -

-
-
Address
137 Marlow Street
-
Opening
8 May 2026, 8 a.m.
-
Hours
Tuesday — Saturday, 8 a.m. until sold out (usually by 1 p.m.)
-
Closed
Sunday & Monday
-
-
-
- - -
- - -
- - - - -
- - - - diff --git a/site/_example-cmdk/index.html b/site/_example-cmdk/index.html deleted file mode 100644 index 9badf59..0000000 --- a/site/_example-cmdk/index.html +++ /dev/null @@ -1,886 +0,0 @@ - - - - - - - Lectern — a personal library - - - - - - - - - - -
- -
-

- Lectern - -

-

A personal library

-
- -
- reading - read - queued -
- - - - - -
- - - - -
- -
- - - 31 -
- -
- -
- -
- navigate - open - esc close -
- -
-
- - - - diff --git a/site/_tests/_thumbs/01-tide.png b/site/_tests/_thumbs/01-tide.png deleted file mode 100644 index b6108d3..0000000 Binary files a/site/_tests/_thumbs/01-tide.png and /dev/null differ diff --git a/site/_tests/_thumbs/02-streampipe.png b/site/_tests/_thumbs/02-streampipe.png deleted file mode 100644 index 78387c7..0000000 Binary files a/site/_tests/_thumbs/02-streampipe.png and /dev/null differ diff --git a/site/_tests/_thumbs/03-maple.png b/site/_tests/_thumbs/03-maple.png deleted file mode 100644 index df49f31..0000000 Binary files a/site/_tests/_thumbs/03-maple.png and /dev/null differ diff --git a/site/_tests/_thumbs/04-meridian.png b/site/_tests/_thumbs/04-meridian.png deleted file mode 100644 index 32b7482..0000000 Binary files a/site/_tests/_thumbs/04-meridian.png and /dev/null differ diff --git a/site/_tests/_thumbs/05-tracejam.png b/site/_tests/_thumbs/05-tracejam.png deleted file mode 100644 index a08b93b..0000000 Binary files a/site/_tests/_thumbs/05-tracejam.png and /dev/null differ diff --git a/site/_tests/_thumbs/06-anya.png b/site/_tests/_thumbs/06-anya.png deleted file mode 100644 index 147b13f..0000000 Binary files a/site/_tests/_thumbs/06-anya.png and /dev/null differ diff --git a/site/_tests/_thumbs/07-foundry.png b/site/_tests/_thumbs/07-foundry.png deleted file mode 100644 index d7967a8..0000000 Binary files a/site/_tests/_thumbs/07-foundry.png and /dev/null differ diff --git a/site/_tests/_thumbs/08-cohort.png b/site/_tests/_thumbs/08-cohort.png deleted file mode 100644 index a776467..0000000 Binary files a/site/_tests/_thumbs/08-cohort.png and /dev/null differ diff --git a/site/_tests/_thumbs/audit-slop.png b/site/_tests/_thumbs/audit-slop.png deleted file mode 100644 index 13c7a0a..0000000 Binary files a/site/_tests/_thumbs/audit-slop.png and /dev/null differ diff --git a/site/_tests/_thumbs/crypto-example.mp4 b/site/_tests/_thumbs/crypto-example.mp4 deleted file mode 100644 index 51be751..0000000 Binary files a/site/_tests/_thumbs/crypto-example.mp4 and /dev/null differ diff --git a/site/_tests/_thumbs/hero-najm.jpg b/site/_tests/_thumbs/hero-najm.jpg deleted file mode 100644 index d9477b3..0000000 Binary files a/site/_tests/_thumbs/hero-najm.jpg and /dev/null differ diff --git a/site/_tests/_thumbs/hero-nexus.jpg b/site/_tests/_thumbs/hero-nexus.jpg deleted file mode 100644 index 5d89a05..0000000 Binary files a/site/_tests/_thumbs/hero-nexus.jpg and /dev/null differ diff --git a/site/_tests/_thumbs/hero-static-hour.jpg b/site/_tests/_thumbs/hero-static-hour.jpg deleted file mode 100644 index 402258d..0000000 Binary files a/site/_tests/_thumbs/hero-static-hour.jpg and /dev/null differ diff --git a/site/_tests/_thumbs/hero-tally-hero.jpg b/site/_tests/_thumbs/hero-tally-hero.jpg deleted file mode 100644 index 2c210e2..0000000 Binary files a/site/_tests/_thumbs/hero-tally-hero.jpg and /dev/null differ diff --git a/site/_tests/_thumbs/hero-tally-process.jpg b/site/_tests/_thumbs/hero-tally-process.jpg deleted file mode 100644 index b204bb4..0000000 Binary files a/site/_tests/_thumbs/hero-tally-process.jpg and /dev/null differ diff --git a/site/_tests/_thumbs/verb-audit.png b/site/_tests/_thumbs/verb-audit.png deleted file mode 100644 index 13a0a59..0000000 Binary files a/site/_tests/_thumbs/verb-audit.png and /dev/null differ diff --git a/site/_tests/_thumbs/verb-redesign.png b/site/_tests/_thumbs/verb-redesign.png deleted file mode 100644 index 284360e..0000000 Binary files a/site/_tests/_thumbs/verb-redesign.png and /dev/null differ diff --git a/site/_tests/_thumbs/verb-refine.png b/site/_tests/_thumbs/verb-refine.png deleted file mode 100644 index a07a16f..0000000 Binary files a/site/_tests/_thumbs/verb-refine.png and /dev/null differ diff --git a/site/_tests/_thumbs/verb-study.png b/site/_tests/_thumbs/verb-study.png deleted file mode 100644 index 0523934..0000000 Binary files a/site/_tests/_thumbs/verb-study.png and /dev/null differ diff --git a/site/_tests/verbs/README.md b/site/_tests/verbs/README.md index 671a098..7b70cb1 100644 --- a/site/_tests/verbs/README.md +++ b/site/_tests/verbs/README.md @@ -5,14 +5,13 @@ Each verb demonstrated on a tiny, realistic input. Folders contain the input, th | Verb | Folder | Input | What the verb does | | --- | --- | --- | --- | | `audit` | [`audit/`](audit/) | An AI-templated landing fragment | Read it, score against the anti-pattern list, return a ranked punch list. **Does not edit.** | -| `refine` | [`refine/`](refine/) | A structurally-OK landing with bad colour / spacing / easings | Apply the ruleset with the smallest possible diff. **Does not redesign.** | | `redesign` | [`redesign/`](redesign/) | A page with the AI structural template (centered hero · 3 cards · CTA · footer) | Throw out the structure, rebuild with a different fingerprint. **Preserves copy + IA.** | | `study` | [`study/`](study/) | A described screenshot of a Pentagram-style portfolio | Extract DNA — macrostructure, archetypes, type-pairing role, accent — return a diagnosis report, then rebuild user content with that DNA. **Never copies pixels.** | Each folder holds: - **`input.html`** (or `input-description.md` for `study`) — what the user paste / attach. -- **`output.*`** — what the verb produces. For `audit` and `study`, this is a Markdown report. For `refine` and `redesign`, this is a finished `index.html` + `style.css`. +- **`output.*`** — what the verb produces. For `audit` and `study`, this is a Markdown report. For `redesign`, this is a finished `index.html` + `style.css`. - **`notes.md`** — one page explaining what fired, what reference files loaded, and what the durable artifact is. -The four verb tests together exercise every load path in the skill that the eight default-flow tests don't. +The three verb tests together exercise every load path in the skill that the default-flow tests don't. diff --git a/site/_tests/verbs/refine/input.html b/site/_tests/verbs/refine/input.html deleted file mode 100644 index a754d50..0000000 --- a/site/_tests/verbs/refine/input.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - Codeline — changelog - - - -

Codeline · changelog

-

A small dev-tools shop. Releases ship Tuesday mornings, twice a month.

- -
-

v0.7.4

- - -
- -
-

v0.7.3

- - -
- -
-

v0.7.2

- - -
- - - - diff --git a/site/_tests/verbs/refine/notes.md b/site/_tests/verbs/refine/notes.md deleted file mode 100644 index 801aa36..0000000 --- a/site/_tests/verbs/refine/notes.md +++ /dev/null @@ -1,49 +0,0 @@ -# `refine` verb · what changed and why - -## Input - -`input.html` — a 95-line single-file changelog page for a fictional dev-tools shop called Codeline. **The structure is correct** — a Long Document macrostructure with three release entries, a header, and a footer. The user is happy with the shape; they want it polished. - -## What `refine` does - -> *"Apply the ruleset to polish the target in place. Preserve layout structure. Smallest possible diff. No redesign."* - -The DOM is **identical**. The CSS rules are rewritten to use OKLCH tokens, named easings, the project's font stack, and the eight-states discipline. No element moved. No element added or removed. No `class` renamed (except where necessary). - -## Diff list — what changed and which reference file prompted it - -| Change | From | To | Reference | -| --- | --- | --- | --- | -| **1.** Replaced all hex / rgb colours with OKLCH tokens at `:root` | `#222`, `#777`, `#999`, `#444`, `#aaa`, `#eaeaea`, `#1aab30`, `#b08017`, `#b53d3d`, `#2050b8` | `--color-ink`, `--color-ink-soft`, `--color-rule`, `--color-accent`, etc. | [`color.md`](../../../skill/references/color.md) — palette in OKLCH, named tokens by role | -| **2.** Switched paper from pure `#fff` to a tinted near-white (`oklch(98% 0.005 240)`) | `background: #ffffff` | `background: var(--color-paper)` | [`color.md`](../../../skill/references/color.md) — never pure-white as a base | -| **3.** Replaced system font stack with a paired Geist + Geist Mono | `-apple-system, BlinkMacSystemFont, sans-serif` | Geist (display + body), Geist Mono (code) | [`typography.md`](../../../skill/references/typography.md) — display + body pairing, mono for code | -| **4.** Replaced `transition: all 250ms cubic-bezier(0.4, 0.0, 0.2, 1)` on links with explicit-property + named easing | `transition: all 250ms cubic-bezier(0.4, 0.0, 0.2, 1)` | `transition: text-decoration-color var(--dur-micro) var(--ease-out)` | [`microinteractions.md`](../../../skill/references/microinteractions.md) — never `all`; specify the property | -| **5.** Added a 4-pt spacing scale at `:root` (`--space-2xs` through `--space-2xl`) and replaced raw px values | `60px`, `30px`, `8px`, `50px`, `18px`, `17px` | `var(--space-2xl)`, `var(--space-md)`, `var(--space-2xs)`, etc. | [`layout-and-space.md`](../../../skill/references/layout-and-space.md) — 4-pt scale, semantic tokens | -| **6.** Added `:focus-visible` ring to all `` elements with `outline: 2px solid var(--color-accent); outline-offset: 3px;` | (missing) | added | [`interaction-and-states.md`](../../../skill/references/interaction-and-states.md) — eight states; gate 28 | -| **7.** Added `@media (prefers-reduced-motion: reduce)` block to disable transitions | (missing) | added | [`motion.md`](../../../skill/references/motion.md) — gate 29 | -| **8.** Switched typography on the `time` element to monospaced for tabular numerics | sans default | `font-family: var(--font-mono); font-variant-numeric: tabular-nums;` | [`typography.md`](../../../skill/references/typography.md) — mono for dates / data | -| **9.** Switched units to `rem`, fluid type via `clamp()` where appropriate | px throughout | rem + clamp | [`responsive.md`](../../../skill/references/responsive.md) — accessibility-first sizing | -| **10.** Added `html, body { overflow-x: clip; }` for layout-safety | (missing) | added | [`layout-and-space.md`](../../../skill/references/layout-and-space.md) § page-edge clipping; gate 36 | -| **11.** Stamped the file at the top of ` - - -

Codeline· changelog

-

A small dev-tools shop. Releases ship Tuesday mornings, twice a month.

- -
-

v0.7.4

- -
-
- -
-

v0.7.3

- - -
- -
-

v0.7.2

- - -
- - - - diff --git a/skill/_tests/nav-footer-variety/01-tide-podcast/index.html b/skill/_tests/nav-footer-variety/01-tide-podcast/index.html deleted file mode 100644 index 6a3f571..0000000 --- a/skill/_tests/nav-footer-variety/01-tide-podcast/index.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - -Tide — letters from the studio - - - - - - -
- -
-

A letter to the listeners · Sunday, 12 April

-

Dear Tide listener,

-

This is the fourth season. We've kept the format short on purpose — one host, one guest, one idea, forty minutes. The shape works. We'd rather record fewer episodes that earn their place than fill a feed.

-

If you've subscribed since season three, this letter is yours too. The archive is open, the whole forty-three episodes, no paywall, no ads inside the audio.

-

Yours,
— Tide

- -
- -
-

What's in this season.

-

Six conversations with people who've quietly shaped how we work — a typeface designer, a brewer, a high-school English teacher, a back-office accountant who runs a 15-person bakery, and two more we're still recording. Each episode opens with a letter — five paragraphs, written by hand the morning before — and closes with one question we'd like the next listener to bring to dinner.

-

We publish on the second Sunday of every month. The next letter is due on the eleventh.

-
- -
- - - - - diff --git a/skill/_tests/nav-footer-variety/02-streampipe-cli/index.html b/skill/_tests/nav-footer-variety/02-streampipe-cli/index.html deleted file mode 100644 index daee87a..0000000 --- a/skill/_tests/nav-footer-variety/02-streampipe-cli/index.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - -streampipe — open-source stream processing for the terminal - - - - - - -
- -
-

v2.4.0 · MIT · 12k stars

-

Stream processing for the terminal.

-

streampipe is a single-binary tool that runs SQL over Kafka, Redis Streams, NATS, and stdin. No daemon, no broker, no JVM. Composes with your existing UNIX pipeline.

-

Install

-
$brew install streampipe
-
- -
-

01 · Examples

-

Three lines that read a Kafka topic and emit JSON.

-
$ streampipe \
-   --source kafka://localhost:9092/orders \
-   --sql "select customer, sum(total) as gross from orders group by customer" \
-   --sink stdout:json
-
- -
-

02 · Sources, sinks, formats

-

Reference

- - - - - - - - - - - -
FlagDescriptionExample
--sourceStream input. Accepts kafka://, redis://, nats://, file://, stdin.kafka://broker:9092/topic
--sinkStream output. Accepts the same protocols + stdout.stdout:json
--sqlSQL transformation. Standard select/where/group-by/join."select * where amount > 100"
--watermarkEvent-time watermark. Default: 30s.--watermark 60s
--checkpointPath for state. Required for stateful queries../state.db
-
- -
- - - - - diff --git a/skill/_tests/nav-footer-variety/03-nimbus-saas/index.html b/skill/_tests/nav-footer-variety/03-nimbus-saas/index.html deleted file mode 100644 index 520ad07..0000000 --- a/skill/_tests/nav-footer-variety/03-nimbus-saas/index.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - -Nimbus — atmospheric trading desk - - - - - - -
- -
- -
-

Spot · Margin · Perpetuals · Active in 84 markets

- $2.4B -

notional volume cleared in the last 24 hours, with a single API and one balance.

-

Nimbus is a non-custodial trading desk for the calm trader. Open positions in spot, margin, and perpetuals from one account. Trades clear in 380 ms p99. We don't run leveraged retail ads.

- See live markets → -
-
- -
-
-

380ms

-

order-to-fill, 99th percentile, last 7 days

-
-
-

84

-

spot + perpetual markets, audited monthly

-
-
-

0.02%

-

maker fee on the deepest tier, paid by inventory

-
-
- -
- - - - - - - diff --git a/skill/_tests/nav-footer-variety/04-marlow-photo/index.html b/skill/_tests/nav-footer-variety/04-marlow-photo/index.html deleted file mode 100644 index 9f501f7..0000000 --- a/skill/_tests/nav-footer-variety/04-marlow-photo/index.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - -Marlow & Co. — wedding photography - - - - - - -
- -
- -
-

Selected work · 2026 · Plate 04

-

Photographs that look like the day actually was.

-

A small studio for weddings, family portraits, and the quiet days after. Twelve commissions a year, photographed on film, scanned, printed, archived. We're booked into autumn 2026; the spring 2027 list opens in October.

-
-
- -
-
-
- Plate 04 · Anna & Sam · 12 April 2026 - Hasselblad 500CM · Portra 400 · Garden ceremony -
-
- -
-

A few of last year's commissions.

-
    -
  1. 01Anna & Sam — garden ceremony, TuscanyApril 2026
  2. -
  3. 02The Okonkwo family — winter portraitsFebruary 2026
  4. -
  5. 03Maya & Jonas — small civil ceremony, LisbonNovember 2025
  6. -
  7. 04Rivers — first-year archiveOngoing
  8. -
-
- -
- - - - - diff --git a/skill/_tests/nav-footer-variety/05-helix-b2b/index.html b/skill/_tests/nav-footer-variety/05-helix-b2b/index.html deleted file mode 100644 index a24b9f1..0000000 --- a/skill/_tests/nav-footer-variety/05-helix-b2b/index.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - -Helix — feature flags for grown-up teams - - - - - - -
- -
-

FEATURE FLAGS, GROWN UP.

-

Helix is a feature-flag service for teams who want fewer surprises. Type-safe SDKs, audit trails, deterministic targeting. Used by 1,200 engineering teams to ship without holding their breath.

- -
- -
-
- 99.97% - SDK uptime · last 90 days · measured externally -
-
-

Type-safe SDK · TypeScript, Go, Python, Ruby

-

Every flag is a typed export. No magic strings.

-
// flags.ts — generated from your dashboard
-import { flags } from "@helix/sdk";
-if (flags.checkout_redesign(user)) {
-  return <CheckoutV2 />;
-}
-
-
-

Deterministic targeting

-

Same input, same flag value — every time. Replayable, auditable, no drift.

-
-
-

Audit trail

-

Every flag change writes a row. Who, what, when, why — and the diff.

-
-
-
"We replaced four years of if-statements with Helix in a week. The audit trail alone paid for it."
- — Maya Okonkwo · Staff Engineer, Ridgeline -
-
- -
- - - - - diff --git a/skill/_tests/nav-footer-variety/notes.md b/skill/_tests/nav-footer-variety/notes.md deleted file mode 100644 index a2b501d..0000000 --- a/skill/_tests/nav-footer-variety/notes.md +++ /dev/null @@ -1,44 +0,0 @@ -# Test pass — nav · footer · hero polish variety - -Five outputs, each generated by following the updated skill (`SKILL.md` flow + `component-cookbook.md` § Navigation / § Footers + `hero-enrichment.md` § Hero shape polish). Each tests a different combination of the new archetypes. - -## Variety matrix - -| # | Brief | Genre | Macrostructure | Nav | Footer | Hero polish | Theme | -| --- | --- | --- | --- | --- | --- | --- | --- | -| 01 | Tide — indie podcast | editorial | Letter | **N6** Newspaper masthead | **Ft6** Letter close | **HP4** Decorative-numeral (issue 04) | Salon | -| 02 | streampipe — CLI | modern-minimal/terminal | Workbench | **N8** Terminal command | **Ft4** Dense colophon | none (terminal allows no decoration) | Terminal | -| 03 | Nimbus — atmospheric SaaS | atmospheric | Stat-Led | **N5** Floating pill | **Ft5** Statement | **HP3** Cursor-spotlight | Bloom | -| 04 | Marlow & Co. — photography | editorial | Photographic | **N9** Edge-aligned minimal | **Ft7** Newsletter-first | **HP1** Vertical-rail | Atelier | -| 05 | Helix — B2B SaaS | modern-minimal | Bento Grid | **N7** Brutal slab | **Ft1** Mast-headed | **HP2** Marquee-overflow | Specimen-leaning | - -## Verification — does the skill produce variety? - -- [x] **Five different nav archetypes.** N5, N6, N7, N8, N9 — one each. No repeats. -- [x] **Five different footer archetypes.** Ft1, Ft4, Ft5, Ft6, Ft7 — one each. No repeats. -- [x] **Four different hero polish patterns.** HP1, HP2, HP3, HP4 — one each on the polish-enabled outputs. The Terminal output (02) deliberately ships *no* polish pattern, per the genre's decoration constraint. -- [x] **Gate 51 (AI nav fingerprint)** — none of the five outputs use the wordmark-left + 5-link-row + button-right pattern. Pass. -- [x] **Gate 52 (AI footer fingerprint)** — none use the 4-column + social-row + tiny-copyright pattern. Pass. -- [x] **Gate 53 (centred-everything hero)** — none stack eyebrow + title + lede + CTA all centred. Pass. -- [x] **Gate 54 (hero padding asymmetry)** — every hero pads bottom > top. Pass. -- [x] **Gate 55 (decorative-without-purpose)** — every decorative element has a semantic anchor: 01's "04" names issue 4, 02's cursor sits inside a typed command, 03's spotlight responds to interaction, 04's vertical rail names the studio + plate + year, 05 has no decoration. Pass. -- [x] **Terminal cursor constraint** (02) — the blinking caret appears only inside `
` install code blocks and the N8 nav prompt — never as standalone decoration. Pass.
-
-## Routing reads correctly
-
-Cross-checked each pick against the routing tables in `component-cookbook.md`:
-
-- **01 (editorial · Salon):** N6 is the genre default; Ft6 is in the "also OK" set. ✓
-- **02 (terminal · Terminal):** N8 is the genre default; Ft4 is the genre default. ✓
-- **03 (atmospheric · Bloom):** N5 is the genre default; Ft5 is the genre default. ✓
-- **04 (editorial · Atelier):** N9 is in the "also OK" set; Ft7 is in the "also OK" set. ✓ (Both are deliberate alternates rather than defaults — the brief leans atelier-quiet, which the routing allows.)
-- **05 (modern-minimal · Specimen-leaning):** N7 is *not* the modern-minimal default — it's a deliberate cross-genre pick. The N7 voice fits Helix's "FEATURE FLAGS, GROWN UP." brand voice better than the default N5. The skill allows this when justified; the rationale is in the stamp comment.
-
-The five outputs together demonstrate that:
-- Each genre's default routing is honoured when the brief is genre-pure.
-- Cross-genre picks are allowed when the brief justifies them, with the rationale stamped in the CSS comment.
-- Diversification across consecutive runs is preserved — N# and Ft# never repeat.
-
-## Stamps recorded
-
-Every output's CSS opens with a `/* Hallmark · ... */` comment that names: genre, macrostructure, theme, nav, footer, polish (or "none"), slop-test pass, contrast pass, and a one-line brief summary. The stamps are how future Hallmark runs will read each project's history and rotate.