luckiest-co 1.0.13 → 1.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/package.json +1 -1
  4. package/skills/luckiest-design-website/ATTRIBUTION.md +38 -0
  5. package/skills/luckiest-design-website/CHANGELOG.md +104 -0
  6. package/skills/luckiest-design-website/LICENSE +21 -0
  7. package/skills/luckiest-design-website/SKILL.md +372 -0
  8. package/skills/luckiest-design-website/UPSTREAM-CHANGELOG.md +526 -0
  9. package/skills/luckiest-design-website/engine/scrollcraft.css +432 -0
  10. package/skills/luckiest-design-website/engine/scrollcraft.js +1167 -0
  11. package/skills/luckiest-design-website/evals/evals.json +33 -0
  12. package/skills/luckiest-design-website/references/assets.md +286 -0
  13. package/skills/luckiest-design-website/references/device-diag.html +214 -0
  14. package/skills/luckiest-design-website/references/devices.md +466 -0
  15. package/skills/luckiest-design-website/references/feel.md +277 -0
  16. package/skills/luckiest-design-website/references/registry-examples.md +305 -0
  17. package/skills/luckiest-design-website/references/taste.md +304 -0
  18. package/skills/luckiest-design-website/references/template.html +138 -0
  19. package/skills/luckiest-design-website/references/uniqueness.md +480 -0
  20. package/skills/luckiest-design-website/references/verify.md +381 -0
  21. package/skills/luckiest-design-website/references/worldflight.md +349 -0
  22. package/skills/luckiest-design-website/references/worlds.md +178 -0
  23. package/skills/luckiest-design-website/scripts/doctor.mjs +177 -0
  24. package/skills/luckiest-design-website/scripts/encode.sh +80 -0
  25. package/skills/luckiest-design-website/scripts/kie.mjs +202 -0
  26. package/skills/luckiest-design-website/scripts/serve.mjs +52 -0
  27. package/skills/luckiest-design-website/scripts/shoot.mjs +644 -0
  28. package/skills/luckiest-design-website/scripts/workspace.mjs +106 -0
  29. package/skills/luckiest-design-website/scripts/worldflight-assert.mjs +273 -0
  30. package/skills/luckiest-design-website/templates/FINGERPRINTS.md +65 -0
@@ -0,0 +1,480 @@
1
+ # The structure axis
2
+
3
+ ## 1. The template trap
4
+
5
+ Four sites were built with this skill: a protein coffee brand, a personal brand,
6
+ a landscape design-build firm, and an agent observability product. Four
7
+ industries, four worlds, one light canvas and three dark. The owner looked at
8
+ them side by side and said they felt like a template. He was right, and the
9
+ evidence is in the files.
10
+
11
+ All four open with a full-bleed `scrub` under a fixed minimal top bar carrying a
12
+ wordmark and one CTA. All four anchor the hero headline in the lead corner with
13
+ a greet cue and kinetic lines. All four run a pinned type act where lines
14
+ crossfade. All four hand off to a flow section, pan a card rail with a
15
+ `data-sc-tilt="6"` on each card, and close on `data-sc-act="pin"` with
16
+ `data-sc-span="1.15"`, `data-sc-spotlight` on the stage and
17
+ `data-sc-magnet="0.26"` on the CTA. All four land between 13.6 and 13.8
18
+ viewport-heights across 6 or 7 acts with exactly one accent colour.
19
+
20
+ What actually varied was the order of the middle acts and the palette.
21
+
22
+ The device kit is an **aesthetic** axis. It changes how a page looks. It has no
23
+ opinion on what a page *is*, so every build reached for the same shape, because
24
+ the shape was never a decision anybody made.
25
+
26
+ > The world changes how a page LOOKS. The grammar changes what a page IS.
27
+ > A build that only changes world is a re-skin.
28
+
29
+ This file is the structure axis. Read it after the interview and before the
30
+ score table. It has three parts that are not optional: pick a **grammar**,
31
+ invent a **signature move**, and pass the **fingerprint gate**.
32
+
33
+ ---
34
+
35
+ ## 2. Page grammars
36
+
37
+ A grammar is the page's organising logic: what a section is, what the chrome is
38
+ for, how the visitor knows where they are, and what the ending is. Two pages in
39
+ the same grammar will feel related no matter how far apart their palettes are.
40
+ That is the whole finding above.
41
+
42
+ Each grammar below names what it **forbids**. The forbids are the point. They
43
+ are what stops a build drifting back to the filmic default halfway through,
44
+ which is what happens when a grammar is a preference instead of a constraint.
45
+
46
+ Pick one. Do not blend two: a chaptered page with a continuous world underneath
47
+ is a filmic one-shot with extra headings.
48
+
49
+ ---
50
+
51
+ ### 2.1 Filmic one-shot
52
+
53
+ The original skeleton, and now one choice among eight rather than the house
54
+ style.
55
+
56
+ **Fits:** a single linear argument with one emotional arc. Consumer products,
57
+ launches, anything where the visitor should feel carried rather than
58
+ navigating.
59
+
60
+ **The scroll feels like:** a film you are pushing through. Continuous, no seams,
61
+ each act handing off before the last has left.
62
+
63
+ **Forbids:** visible sequence (chapter numbers, an index, a progress readout);
64
+ hard cuts between grounds; any chrome that implies the page is a tool; more than
65
+ one entry point. If the visitor can jump, it is not one shot.
66
+
67
+ **Nav, hero, close:** fixed minimal bar, wordmark and one CTA. Full-bleed scrub
68
+ hero, corner-anchored kinetic headline on a greet cue. Pinned close with a
69
+ spotlight and a magnetic CTA.
70
+
71
+ **Leans on:** `scrub`, `pin`, `drift`, `kinetic`. **Bans:** nothing structural,
72
+ which is exactly why it is the default drift and why four builds landed here.
73
+
74
+ **Use it when the interview earns it, and say in the report why the other seven
75
+ did not fit.** This grammar now carries a burden of proof the others do not.
76
+
77
+ ---
78
+
79
+ ### 2.2 Chaptered editorial
80
+
81
+ The page is a printed feature. Chapters are the unit, not acts.
82
+
83
+ **Fits:** long-form substance. A method, a manifesto, a founder story, a
84
+ research-backed product, anything where the visitor should feel they read
85
+ something rather than watched something.
86
+
87
+ **The scroll feels like:** turning pages. Full-stop intertitles between
88
+ chapters, then dense asymmetric spreads. Hard cuts, not crossfades. Each chapter
89
+ lands on its own ground and stays there.
90
+
91
+ **Forbids:** `drift` as a continuous gradient (each chapter is a hard change of
92
+ ground, not an interpolation); the full-bleed scrub hero; pinned crossfade type
93
+ acts; a magnetic CTA; centred hero copy. Media never bleeds under type here, it
94
+ sits in its own column with a caption.
95
+
96
+ **Nav, hero, close:** no fixed bar. A folio in the margin, chapter number and
97
+ title, updating as chapters pass. The hero is a **title page**: type on the
98
+ paper ground, no media above the fold, the media starts in chapter one. The
99
+ close is a colophon or masthead plate, small type, the CTA set as a line of
100
+ running text rather than a button island.
101
+
102
+ **Leans on:** `flow` + `in`, `reveal` at chapter boundaries, `parallax` inside a
103
+ media column, `count` for real figures inside prose. **Bans:** `scrub` beyond
104
+ one chapter, `spotlight`, `magnet`.
105
+
106
+ ---
107
+
108
+ ### 2.3 Live surface
109
+
110
+ The page behaves like the product. Not a screenshot of it, and not a div-built
111
+ fake: the actual surface, running, with scroll driving its state.
112
+
113
+ **Fits:** software, tools, dashboards, editors, anything where the demo is the
114
+ argument. If the honest pitch is "watch what it does", this is the grammar.
115
+
116
+ **The scroll feels like:** operating something. Panels populate, a log fills, a
117
+ graph advances, a selection moves. The visitor is inside the thing.
118
+
119
+ **Forbids:** marketing chrome of any kind. No wordmark-plus-CTA bar, no scrims,
120
+ no full-bleed photography, no kinetic headline stacks, no hero claim laid over
121
+ footage. Copy lives in the surface's own idiom: labels, tooltips, empty states,
122
+ status lines, a help panel. A section heading in 6rem display type breaks this
123
+ grammar instantly.
124
+
125
+ **Nav, hero, close:** app chrome replaces nav. A sidebar, a tab strip, a status
126
+ bar, a breadcrumb, whatever the real product would have, and it is real enough
127
+ to be the navigation. The hero is the surface already in a state, not a title.
128
+ The close is an **actual input**: a command line, a field, a first-run step,
129
+ something the visitor puts a cursor in. A magnetic button is the wrong ending
130
+ for a page that spent its whole length being a tool.
131
+
132
+ **Leans on:** `pin` (the surface holds while state advances), `count` on real
133
+ telemetry, pointer devices where the real product would have them, and `--sc-p`
134
+ driven CSS for anything the kit does not cover. **Bans:** `scrub`, `kinetic`,
135
+ `spotlight`, `drift` past two stops.
136
+
137
+ **The honesty rule.** taste.md forbids fake dashboards and fake terminals, and
138
+ that rule is not suspended here. The surface has to be real markup running real
139
+ logic on real or clearly-labelled sample data. That labelled-sample escape is
140
+ how a concept product can still use this grammar: every panel is operable
141
+ markup computing its state from data arrays in the page, and the page says on
142
+ its face that the scenario is a demo. What stays banned is the painting of a
143
+ surface, an image or dummy divs posing as something that runs. If the panels
144
+ cannot actually compute, the grammar is unavailable. Pick another.
145
+
146
+ ---
147
+
148
+ ### 2.4 Continuous world
149
+
150
+ One canvas, fixed for the entire scroll, and the page travels through it.
151
+ Waypoints, not sections.
152
+
153
+ > **This grammar REQUIRES worldflight mode.** `data-sc-mode="worldflight"`, one
154
+ > fixed stage, one spacer, legs that crossfade. See references/worldflight.md.
155
+ >
156
+ > Building it out of pinned acts is not a lesser version of this grammar, it is
157
+ > a different and worse page, and it has already been tried. The owner's verdict
158
+ > on the act-based attempt: "awful... you're literally going from scrolling down
159
+ > to static page and then you start scrolling down again... weird clear page
160
+ > lines scrolling up... very cheap looking." Every one of those is the same
161
+ > defect. A pinned act is a block in the document; a document made of blocks has
162
+ > seams; and a world with seams is not a world. Do not reach for `scrub` acts
163
+ > here, however long you make the spans.
164
+
165
+ **Fits:** a journey with real geography. A supply chain, a process with physical
166
+ stages, a place, a build, anything where "where you are" is meaningful.
167
+
168
+ **The scroll feels like:** moving through a single space that never cuts. The
169
+ visitor never leaves the frame.
170
+
171
+ **Forbids:** section boundaries of any kind. No `sc-section` blocks, no acts at
172
+ all, no second stage, no `drift` steps (one continuous grade across the whole
173
+ travel, authored into the world, not interpolated between legs). Nothing may
174
+ scroll *over* the canvas: copy arrives inside it, at waypoints, in the fixed
175
+ copy layer. The only element in document flow is the spacer.
176
+
177
+ **Nav, hero, close:** the nav is a **map**. A waypoint list, a depth readout, a
178
+ position marker, and it is clickable, because a world you cannot skip around in
179
+ is a video. The hero is an establishing position inside the world, not a
180
+ separate title stage. The close is arrival at a place in the same canvas, and
181
+ the CTA is an object in that place.
182
+
183
+ **Leans on:** worldflight legs with `data-sc-linger`, copy windows against the
184
+ whole track, the `sc:waypoint` event driving a rail the page draws itself.
185
+ **Bans:** every act device, `flow`, `pan`, hard cuts, `src` swapping.
186
+
187
+ **This is the expensive one.** The chain warning in SKILL.md applies: a single
188
+ unbroken flight is the most fragile thing you can build, and the seam law in
189
+ worldflight.md section 6 is not optional. Choose this grammar only when the
190
+ brief is literally about travel through a place, and budget for the reroll.
191
+
192
+ ---
193
+
194
+ ### 2.5 Typographic poster
195
+
196
+ Type is the imagery. Media is minimal or entirely absent, and scale contrast
197
+ does every job that photography would have done.
198
+
199
+ **Fits:** a brand whose asset is a sentence. Manifestos, agencies with strong
200
+ verbal identity, launches with one claim, anything where a stock-looking image
201
+ would weaken the page rather than support it. Also the right answer when there
202
+ are no good assets and generating them would produce eight plausible, forgettable
203
+ frames.
204
+
205
+ **The scroll feels like:** words arriving at wildly different weights. A word at
206
+ 40vw, then a paragraph at 16px, then silence. Rhythm comes from scale, not
207
+ motion.
208
+
209
+ **Forbids:** photographic ground, `scrub`, scrims (nothing to scrim), cards of
210
+ any kind, and decorative motion. If a device is doing the work instead of the
211
+ typography, the grammar has already failed.
212
+
213
+ **Nav, hero, close:** the wordmark is set as part of the composition, at
214
+ composition scale, not as a 14px bar item. There may be no persistent nav at
215
+ all. The hero is a single word or one line at extreme scale, filling the
216
+ viewport, with a real `<h1>` behind it. The close inverts the whole page: the
217
+ smallest type on the site, the CTA as a plain underlined link, quiet after all
218
+ that volume.
219
+
220
+ **Leans on:** `kinetic` (this is the one grammar where character splitting can
221
+ be right), `pin` with scale driven from `--sc-p`, `reveal` as a wipe across
222
+ letterforms, `drift` doing heavy lifting because the ground is most of the
223
+ frame. **Bans:** `scrub`, `pan` rails of cards, `tilt`, `parallax` on text.
224
+
225
+ **The typography floor doubles here.** taste.md caps display at ~6rem outside a
226
+ hero moment. This grammar is one continuous hero moment, so the cap lifts, but
227
+ the tracking, measure and optical-correction rules tighten: at 40vw, default
228
+ tracking is a visible defect and one bad kern is the whole page.
229
+
230
+ ---
231
+
232
+ ### 2.6 Gallery / catalog
233
+
234
+ Objects in a walkable collection. Museum labels, not marketing copy.
235
+
236
+ **Fits:** a range. Products with variants, a portfolio, a menu, a materials
237
+ library, case studies, anything where the visitor's real question is "what are
238
+ the options" rather than "should I believe you".
239
+
240
+ **The scroll feels like:** walking a room. Lateral drift with vertical scroll,
241
+ objects entering and leaving at their own pace, each one labelled with fact
242
+ rather than pitch.
243
+
244
+ **Forbids:** the argument-shaped pinned type act; a single hero claim; scrim
245
+ copy over media; persuasion in the object labels. A label reads
246
+ `Cedar. Air-dried 18 months. Kiln-finished.` and not `Craftsmanship you can
247
+ feel.` Every object gets the same label schema, no exceptions, because the
248
+ schema is what makes it a collection instead of a grid.
249
+
250
+ **Nav, hero, close:** the nav is an **index of objects**, and it jumps. The hero
251
+ is object one, already in view, already labelled, with no separate title
252
+ treatment: the collection starts at the top of the page. The close is either the
253
+ last object or an inquiry plate typeset exactly like a label, so the ask reads
254
+ as part of the collection.
255
+
256
+ **Leans on:** `pan` as the spine rather than as one act, `reveal` per object,
257
+ `tilt` on objects the visitor would pick up, `count` for real specs. **Bans:**
258
+ `kinetic` headlines, `spotlight`, `magnet`, more than one `scrub`.
259
+
260
+ **The rail copy constraint from devices.md §3 becomes structural here**, not a
261
+ caveat. Labels are read cropped for most of their life, so the schema has to
262
+ survive being half-visible.
263
+
264
+ ---
265
+
266
+ ### 2.7 Split stage
267
+
268
+ Two columns held in tension for the whole page, resolved by scroll.
269
+
270
+ **Fits:** any argument with two sides. Before and after, cost and saving, manual
271
+ and automated, what you have and what you would have. The comparison is the
272
+ product.
273
+
274
+ **The scroll feels like:** watching a balance tip. Both halves are always
275
+ present, both move, and the page is going somewhere specific: the moment one
276
+ side wins.
277
+
278
+ **Forbids:** full-bleed anything before the resolve; centred copy; the
279
+ corner-anchored hero; a symmetric close. Neither column may be decorative, both
280
+ carry real content the whole way down. The instant one side becomes a caption
281
+ for the other, this collapses into a zigzag layout with extra steps.
282
+
283
+ **Nav, hero, close:** no bar. The **divider is the chrome**, and it carries the
284
+ labels for both sides plus the progress of the argument. The hero establishes
285
+ the split at 50/50 on the first screen, with both headlines readable at once, so
286
+ the visitor understands the format before they scroll. The close is the
287
+ **collapse**: the divider travels to one edge, one column takes the full width,
288
+ and the CTA lives in the winning column. That collapse is the ending, and it
289
+ should be the single most satisfying moment on the page.
290
+
291
+ **Leans on:** `pin` with divider position driven from `--sc-p`, `reveal` per
292
+ side, `count` for the comparison figures if they are real. **Bans:** `pan`,
293
+ `spotlight`, `magnet`, more than one `scrub`, `drift` (two grounds, one per
294
+ side, and they hold).
295
+
296
+ ---
297
+
298
+ ### 2.8 Rhythmic cutlist
299
+
300
+ Short hard-cut acts at speed. No pinning, no dwell, no crossfades.
301
+
302
+ **Fits:** energy brands. Streetwear, sport, events, music, drinks, youth
303
+ products, anything where the visitor should feel a pulse rather than follow an
304
+ argument.
305
+
306
+ **The scroll feels like:** a cut every second. Twelve to twenty short sections
307
+ rather than six long ones, each one landing whole and gone. Total page length
308
+ stays inside the 8 to 14 viewport-height budget precisely because nothing is
309
+ held.
310
+
311
+ **Forbids:** any act over ~1.4 viewport-heights; `data-sc-dwell` above 0.1;
312
+ `pin` entirely; overlapping cue windows; slow easing. This grammar is the exact
313
+ inverse of the filmic one-shot: where that one hides its seams, this one is
314
+ made of them.
315
+
316
+ **Nav, hero, close:** the bar is loud, not minimal. Full-width, high-contrast,
317
+ possibly a marquee, possibly the CTA at the same weight as the wordmark. The
318
+ hero is one screen that cuts to the next in under a viewport, so there is no
319
+ settling shot and no greet-and-hold. The close is abrupt: the last cut is the
320
+ CTA, at full bleed, no spotlight, no drift-down.
321
+
322
+ **Leans on:** `flow` + `in` at short stagger, `reveal` on nearly every section,
323
+ `count` if the figures are real, hard `drift` steps between adjacent grounds.
324
+ **Bans:** `pin`, `spotlight`, `magnet`, `dwell`, `parallax`.
325
+
326
+ **The taste floor still applies at speed.** Fast is not an excuse for a
327
+ 1.2 second entrance that the reader outruns. Cue windows here are short *and*
328
+ front-loaded, so a section is fully legible within the first third of its own
329
+ span.
330
+
331
+ **The peak problem, and how to resolve it.** This grammar bans `pin` and `dwell`
332
+ outright while feel.md insists the peak gets the most scroll room and the
333
+ biggest hold. Those pull in opposite directions, and the quiet failure is a
334
+ build that reaches for `pin` at its peak and still calls itself a cutlist.
335
+
336
+ **Hold in the fixed chrome layer, and keep every act short and unpinned.** The
337
+ loud bar this grammar already asks for is a persistent element that does not
338
+ belong to any act, so it can unfurl, run a long choreography and hold as long as
339
+ the peak needs while the acts underneath keep cutting at full speed. Drive it
340
+ from page scroll rather than from an act's `--sc-p`, since the whole point is
341
+ that it outlives the act it started in. The airfield build's departures board
342
+ runs its entire peak (unfurl, populate, cascade, reveal, hold, collapse) in
343
+ the chrome, with no pinned act anywhere on the page and nothing over 1.3vh.
344
+
345
+ The general form: **when a grammar bans the device your peak wants, move the
346
+ peak out of the act stack rather than breaking the grammar.** The bans are on
347
+ what the acts do, not on what the page can do.
348
+
349
+ ---
350
+
351
+ ## 3. The signature move
352
+
353
+ Every build must invent **one bespoke interaction that exists on that site
354
+ alone**. Not in the device kit, not in any prior build, not a parameter change.
355
+ Coded in the page, with `data-sc-*` attributes of your own naming or plain
356
+ inline JS reading `--sc-p`. The engine stays untouched, always.
357
+
358
+ This is the thing that makes a page memorable after the visitor closes the tab,
359
+ and it is the only part of a build that cannot be arrived at by following rules.
360
+
361
+ ### What counts
362
+
363
+ - **Scroll-as-playhead over a persistent trace rail.** A thin horizontal trace
364
+ fixed at the bottom edge, present the whole page, drawing a real waveform or
365
+ route or timeline. Scroll position is the playhead. Passing an act stamps a
366
+ marker on the trace that stays. By the footer the trace is a complete record
367
+ of what the visitor just went through, and it doubles as navigation.
368
+ - **A wordmark the pointer can pull apart.** The letters follow the cursor with
369
+ different masses, separate under a drag, and settle back into perfect lockup
370
+ when released. Only on the hero, only once, and the settle has to be exact.
371
+ - **A line drawing that builds itself.** An SVG technical illustration whose
372
+ `stroke-dashoffset` is driven from `--sc-p`, so scrolling literally draws the
373
+ object, then the dimension lines arrive, then the callouts. Pairs with the
374
+ technical-drawing world in worlds.md.
375
+ - **A running receipt.** A small fixed panel that accumulates a line every time
376
+ the visitor passes a claim, with real numbers, so the close arrives with a
377
+ totalled ledger of the argument they just read. Only works with real figures,
378
+ which is the check on it.
379
+ - **One control that regrades the whole page.** A time-of-day handle, a
380
+ temperature, a load level: one input, and every image, ground and accent on
381
+ the page shifts together. It has to affect everything at once or it is a
382
+ widget.
383
+
384
+ ### What does not count
385
+
386
+ - A recoloured spotlight. A spotlight at a different radius. Two spotlights.
387
+ - `data-sc-tilt="9"` instead of `6`. Any parameter change to any kit device.
388
+ - A different easing curve on kinetic lines.
389
+ - Five cards in the rail instead of three, or the rail scrolling the other way.
390
+ - A third `scrub` act. More of a device is not a new device.
391
+ - Something the engine already does, given a project-specific class name.
392
+
393
+ The test: **describe the move to someone who has seen the other builds. If they
394
+ cannot tell it apart from something the kit already does, it is not a signature
395
+ move.** Reaching for a kit parameter here is the same failure as reaching for
396
+ the filmic default in §2, one level down.
397
+
398
+ ---
399
+
400
+ ## 4. The fingerprint gate
401
+
402
+ The registry lives at `<workspace>/FINGERPRINTS.md`, where `<workspace>` is
403
+ whatever `node <skill>/scripts/workspace.mjs` prints. It is per-user and it
404
+ starts empty: the gate is about not repeating **yourself**, so your first build
405
+ has nothing to clear and every build after it does.
406
+
407
+ A worked twelve-row registry ships as `EXAMPLES.md` in the luckiest-design-website
408
+ repository. Read it to see what a filled table looks like and which shapes tend
409
+ to collide. It is illustration, not constraint: those are somebody else's
410
+ builds and they do not gate yours.
411
+
412
+ **Before building:** read it. Every row is a shape that is now taken.
413
+
414
+ **Before writing markup:** check the planned build against every existing row on
415
+ these six dimensions.
416
+
417
+ | # | Dimension | What it records |
418
+ |---|---|---|
419
+ | 1 | Grammar | Which of §2, or a named new one |
420
+ | 2 | Nav treatment | What the chrome is and what it is for |
421
+ | 3 | Hero device | What the first screen does |
422
+ | 4 | Act-sequence shape | The device order, act count, total viewport-heights |
423
+ | 5 | Close pattern | How the last screen behaves and what the CTA sits in |
424
+ | 6 | Signature move | The one bespoke interaction, in a phrase |
425
+
426
+ **The gate: a new build must differ from EVERY existing row on at least 4 of the
427
+ 6.** Not 4 of 6 on average across the table. Four against each row, individually.
428
+
429
+ Dimension 6 is free, because a signature move is unique by definition. So the
430
+ gate really asks for three more out of the remaining five, against each row, and
431
+ a build that changes only grammar and world will fail it.
432
+
433
+ **If the planned build fails the gate, change the plan, not the log.** Rewriting
434
+ a fingerprint row to make a new build fit is the one thing that makes this file
435
+ worthless. It is a record of what exists, not a description of what you wish
436
+ existed.
437
+
438
+ **After shipping:** append one row. Fill all six dimensions plus world and port.
439
+ Say plainly what it shares with prior rows, because the shared columns are what
440
+ the next build has to avoid.
441
+
442
+ ---
443
+
444
+ ## 5. Aesthetic range
445
+
446
+ Premium-minimal is a choice. It is not the costume this skill wears by default,
447
+ and four dark-or-paper pages with one accent each is what happens when nobody
448
+ decides otherwise.
449
+
450
+ The full range is available when the brand's vibe asks for it:
451
+
452
+ | Family | Reads as | Earned by |
453
+ |---|---|---|
454
+ | Brutalist | Blunt, structural, unstyled on purpose | Tools, infrastructure, anything anti-marketing |
455
+ | Maximalist | Dense, layered, loud, generous | Culture brands, events, food, anything abundant |
456
+ | Playful | Bouncy, coloured, informal | Kids, games, consumer apps, community |
457
+ | Retro | Specific to a decade, not vaguely nostalgic | Heritage brands, music, anything with a real lineage |
458
+ | Dense | Information-forward, small type, high count | Data products, catalogues, reference, finance |
459
+ | Editorial | Paper, folios, measure, restraint | Long-form substance |
460
+ | Premium-minimal | Quiet, dark, one accent, air | Luxury, and only when asked for |
461
+
462
+ Go where the interview points. If the human says "loud" and the page comes back
463
+ in charcoal with one accent, the interview was decorative.
464
+
465
+ **What does not flex:** the taste floor. Spacing scale and rhythm, type metrics
466
+ and measure, contrast ratios measured on the render, motion built from
467
+ `transform` and `opacity`, focus-visible on everything, reduced motion that
468
+ keeps meaning, real copy and real numbers. Every item in taste.md holds in every
469
+ aesthetic family.
470
+
471
+ A brutalist page still needs 4.5:1 body contrast. A maximalist page still needs a
472
+ spacing scale, and needs it more, because density without rhythm is just noise. A
473
+ playful page still cannot animate `top`. **The floor is what separates a chosen
474
+ aesthetic from a sloppy one**, and it is the reason range is safe to offer at
475
+ all.
476
+
477
+ Two specific traps stay banned in every family, because they are not aesthetics,
478
+ they are defaults with a look: the cream-and-brass artisan palette
479
+ (taste.md, Colour) and violet-to-blue AI gradients. Both are what a page reaches
480
+ for when nobody chose.