diff --git a/skill/SKILL.md b/skill/SKILL.md index 5635d5c..dd0a358 100644 --- a/skill/SKILL.md +++ b/skill/SKILL.md @@ -319,10 +319,11 @@ Then the theme rotation, on the next line: The rotation block keeps the user inside the discipline without making them read the rules. Skip it and the user starts thinking the diversification is theatre. -### 2.6. Theme route — catalog or custom +### 2.6. Theme route — studied-DNA, catalog, or custom -By the time you reach this step, one of three things is true: +By the time you reach this step, one of four things is true: +0. **A `study` diagnosis was emitted earlier in this conversation and the user is asking to build from it** (phrases: *"build it"*, *"make it"*, *"use this DNA"*, *"build with this"* — immediately following the diagnosis) → theme route is **studied-DNA**. **Skip catalog/custom dispatch entirely.** The studied paper OKLCH, accent OKLCH, type roles (with named candidates), macrostructure, and nav/footer archetypes from the diagnosis become the locked system for this build. Diversification is suspended — you're following an external DNA, not rotating the catalog. The Step 6 stamp records `theme: studied-DNA (source: )` plus the actual OKLCH/font values inline. **If the user later pivots with phrases like *"use Linen instead"* / *"ignore the DNA"* / *"rotate to a different theme"*,** route back to the normal dispatch below and resume diversification. Continue to Step 3. 1. **The user named custom** (because they said so, or because Step 1's signal detection fired and they confirmed) → load [`references/custom-theme.md`](references/custom-theme.md), ask the **one** follow-up (vibe in 4–8 words + optional anchor colour), construct the OKLCH palette + free-font pairing, compute the three axis values (paper-band / display-style / accent-hue), then continue to Step 3. 2. **The user named catalog** (or implicitly accepted it by not naming custom) → pick one of the 22 named themes per the diversification rule above. Existing flow — continue to Step 3. 3. **Neither was discussed** (Step 1's signals didn't fire — vanilla brief) → default to **catalog**. Do not pause. Do not ask. Continue to Step 3. @@ -403,7 +404,7 @@ Before emitting any code, output a tight summary of what you're about to ship. T - **Enrichment** · none (typography only) - **Sections** · Hero · Logos · Stats · Features · Testimonials · Pricing · FAQ · CTA · Footer - **Motion** · counter · pricing-lift · pulse-once -- **Slop test** · 68 / 68 ✓ (run after Build) +- **Slop test** · 69 / 69 ✓ (run after Build) - **Diversification** · differs from Linen on display style + accent hue ``` @@ -414,7 +415,7 @@ Before emitting any code, output a tight summary of what you're about to ship. T 3. **Enrichment** — the chosen archetype + tier, or *none (typography only)*. 4. **Sections** — section names separated by ` · `, in DOM order. 5. **Motion** — microinteraction primitives separated by ` · `, or *none — typography only*. Always under three primitives per the [`microinteractions.md`](references/microinteractions.md) hard rules. -6. **Slop test** — `68 / 68 ✓` if all gates pass, or `N / 68 — fails: ` if any are open. Run the slop test BEFORE writing this row; the slop test is Step 7. +6. **Slop test** — `69 / 69 ✓` if all gates pass, or `N / 69 — fails: ` if any are open. Run the slop test BEFORE writing this row; the slop test is Step 7. 7. **Diversification** *(optional, only when `.hallmark/log.json` has prior entries)* — what axes differ vs the previous run. **Then one quiet CTA line, italicised, after the bullets:** @@ -445,7 +446,7 @@ Always: - Include `:focus-visible` with a visible ring at ≥3:1 contrast. **Never animate the ring's appearance** — it must show instantly on focus. - For each interaction in the output (button, input, modal, toast, drag, copy, etc.), apply the recipe in [`microinteractions.md`](references/microinteractions.md). Pick *silent success* over celebratory toasts. Pick *optimistic update + Undo* over confirmation dialogs. Pick *delay 800ms* on hover tooltips and *0ms* on focus tooltips. - Cut motion before adding it. Most pages have too much, not too little. If removing an animation wouldn't lose the user information, remove it. -- **Stamp the output.** The first non-empty line of the produced CSS file (or the top of `