138 Commits
Author SHA1 Message Date
Hassan El MghariandGitHub 13ac0ec7e1 Merge pull request #57 from Nutlope/add-grid-theme-v2
Add Grid, the twenty-first theme
2026-08-06 09:19:18 -07:00
Youssef c20fc5dd09 Refine Grid before it lands: a marks kit, one plate, and a signal-ink axis
The theme that shipped in the first cut was quiet to a fault: outside
the hero, its pages fell back to ruled prose. This revision gives the
theme a constructive vocabulary and tightens the site integration
around it.

Theme (grid.md, rewritten):
- A marks kit: period square, 3px bar, register crosshair, quarter-disc,
  stepped bars, dot module, border arrows, 45-degree diagonal, and giant
  cropped numerals, all locked to the column tracks.
- The plate: at most one full-bleed flooded band per page as the poster
  moment, rails continuing across it.
- A signal-ink axis: one ink per page, signal red (default), ultramarine,
  or surface-only signal yellow; two pages in a run never share the ink.
- Section-object law: a band that is only prose has failed the theme.
- Asymmetric occupancy (prose capped at 6 of 12 columns) and structural
  whitespace; grid-snapped hover geometry and an optional ticker.

Site:
- grid-01 example replaced with signal, a Basel poster festival page
  built on the revised theme; thumb regenerated at the 1400-wide
  full-page convention (the first cut shipped a 1600x1000 viewport crop
  that broke the hover scroll).
- Grid tokens: serif slot resolves to the grotesk (the theme has no
  serif), doubled comment opener fixed, description updated.
- Landing: grid headings follow the theme's lowercase display voice;
  hero copy updated to the signal-ink language.
- main.js: grid added to THEME_GENRES (missing in the first cut).

Consistency sweep the first cut missed:
- custom-theme.md catalog lists still said 20 themes; now 21 with Grid.
- components.css banner comment still said 20 themes.
2026-08-06 16:40:03 +01:00
Youssef f5f4a2ceb0 Add Grid, the twenty-first theme
Swiss neo-grotesque systems design: a near-white cool sheet with the
twelve-column hairline grid painted behind the content rather than implied,
one heavy Archivo run lowercase and slammed left, and exactly one signal red
used as a geometric mark. It fills the editorial cluster's neo-grotesque slot,
which until now was serif-led on every one of its members.

Skill side: the theme spec, and the catalog count from twenty to twenty-one in
the four places SKILL.md states it.

Site side: the token block, the switcher entry, the twenty-first dropdown dot,
Archivo added to the font load, the Buro Grid example page with its thumbnail,
and an entry in the theme contact sheet.

Not added to scroll-demos.json on purpose. Grid's motion is near-zero by
design, no reveals and no parallax, so a scroll recording would be an empty
file advertising something the theme refuses to do.

README carries the new count only, no new section.
2026-08-06 16:32:20 +01:00
YoussefandGitHub 0a0f706bc0 Merge pull request #27 from Mavi9412/fix/nav-archetype-range-docs
Fix stale nav archetype range in SKILL.md and macrostructures.md
2026-08-04 16:23:10 +01:00
Ameer Muavia 2e1b9baaed Fix nav archetype range in SKILL.md and macrostructures.md
Both files stated the nav archetype range as N1-N9, but the catalog
has grown to 14 archetypes (N1a-N13), as SKILL.md's own Step 2
already documents. The stale range undersold 5 of the 14 valid
options to anything reading these two lines.
2026-07-15 19:22:45 +05:00
Hassan El MghariandGitHub aeb42fb354 Merge pull request #18 from Nutlope/fix/existing-stylesheet-merge
Append to an existing global stylesheet instead of overwriting it
2026-06-04 16:42:42 -04:00
Hassan El MghariandGitHub 2cd53ce4d3 Merge pull request #17 from Nutlope/fix-v1.1-count-consistency
fix: reconcile slop-test gate count (58) and stale N1 nav refs
2026-06-04 16:42:02 -04:00
Youssef 58517f0f18 Append to an existing global stylesheet instead of overwriting it
When Hallmark builds into a project that already has an entry stylesheet
(e.g. app/globals.css, src/index.css), treat it as append-only: keep the
existing @tailwind / @import "tailwindcss" directives and the project's own
tokens, add the Hallmark layer below them, and keep any new @import at the
top. Overwriting it was silently dropping the framework's CSS entry
directives and the user's tokens, which left the whole app unstyled.
2026-06-04 15:35:14 +01:00
Youssef df5498f7f6 README: show Mend Assembly in the Custom section, move Ferns & Fathom to the gallery 2026-06-03 19:06:34 +01:00
Youssef cb300693ed README Custom section: two hero shots side by side, shorter copy
Swapped the single full-page custom-04 screenshot for two hero-only shots side
by side, the Cascadia Nightjar sleeper ticket and the Ferns and Fathom
periodic-table tea menu, so the section shows the range without dumping a whole
page. Trimmed the Custom blurb down to the essentials.
2026-06-03 18:54:02 +01:00
Hassan El MghariandClaude Opus 4.8 627f5d2d51 fix: reconcile slop-test gate count (58) and stale N1 nav refs
Fast-follow to v1.1 (#16). Three consistency fixes:

- Gate count: the slop test has 58 numbered gates (1–57 plus 38a, the
  italic-headers gate added in v1.1), but the header, pre-emit note, load
  guidance, and every "57 / 57" preview stamp still said 57. Counting 38a
  as the 58th gate avoids cascade-renumbering 39–57 and all their
  cross-references. Updated SKILL.md, slop-test.md, preview-examples.md,
  and redesign.md. Genuine gate number 57 and the 50–57 ranges untouched.
- Gate 42 (Nav fingerprint) still referenced the pre-rename "N1" and an
  outdated rotation set; updated to N1a and the current N1b–N13 catalogue.
- editorial.md "Acceptable also" N1 → N1a.
- .gitignore comment listed the tracked featured Hum build as hum-02; the
  tracked build is hum-07 (hum-02 is ignored).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 13:27:03 -04:00
Hassan El MghariandGitHub ca507aae2a Merge pull request #16 from Nutlope/v1.1-themes-and-custom
v1.1: four new themes, the Custom route, and a copy pass
2026-06-03 13:24:25 -04:00
Youssef 02a3a1dfad New OG image and a refreshed README example gallery
Swapped in the new Open Graph image (2400x1260), keeping the OG-hallmark.png
filename so the meta tags, the README banner, and the deployed URL all stay
valid; updated the height meta to match.

Refreshed the "Different briefs, different shapes" gallery to the worked
examples we actually ship now: the four new themes (Bubble, Distil, Cold Snap,
Cinder), the Custom and newly generated pages (Mend Assembly, Hollowback Apiary,
Off-Register, Press Quaternary), and four originals (Tally, Wayfare, NAJM,
Hyperlane). Dropped the retired examples, reworded the intro, and added eight
new hero shots.
2026-06-03 17:02:02 +01:00
Youssef ae2f83e55d Lead with Hum, fix theme-picker number contrast, reorder worked examples
Theme picker: Hum is now theme 01, with the rest renumbered 02-20. The ordinal
reads off the registry index, so switching, cycling, and the "NN / 20" readout
all stay correct.

Theme numbers: each picker swatch now carries an explicit number colour that
contrasts with its own background, instead of inheriting the active theme's ink.
Dark swatches (Midnight, Terminal, Manifesto, Aurora, Lumen) get a light number
rather than a near-invisible dark one. All twenty clear AA (min 10:1).

Worked Examples: moved the first three carousel cards (Cobalt, Carnival, Lumen)
to the end so the page leads with Hum.

Bumped the asset cache-bust.
2026-06-03 16:19:09 +01:00
Youssef 7a890a365d Carnival rework, sharper anti-slop guards, and three new worked examples
Carnival: fixed the three palette drops whose second accent failed contrast,
tightened the display tracking, and added section-rhythm, alignment, and
drop-selection guidance so the theme lands well-aligned and readable by
default. Lightened and tightened the Carnival headers on the landing.

Anti-slop guards (skill references): heading-to-body alignment coherence as a
principle rather than a rigid rule; centered overlays and command palettes must
center via their container; and a hero headline is never only a number, a lead
figure always pairs with words.

Worked Examples: added three generated pages to the landing carousel, a
small-batch honey farm, a risograph print fair, and an experimental type
studio, after fixing their nav centering and section alignment.

Media: removed the Soroe example card along with the unused scroll-videos,
poster stills, and orphaned thumbnails it left behind, and bumped the asset
cache-bust so the restyled CSS reloads.
2026-06-03 15:27:32 +01:00
Youssef 72f3dc052e Worked examples: full-page image hover-scroll on every card; bump to v1.1
Replace the carousel's inconsistent scroll-videos with one CSS image hover-scroll
across all twelve cards. Each thumb is a tall full-page screenshot that pans top
to bottom on hover, with a per-card duration scaled to page height so they all
move at the same brisk, readable pace; captured Retina-sharp at 1400px wide.
Touch and reduced-motion get a static crop. Drop the Slow Pour card.

Bump the version to v1.1 on the landing (banner + footer), package.json, SKILL.md,
and the preview-block examples.
2026-06-02 20:20:23 +01:00
Youssef 7d870f70ec Worked examples: scroll-on-hover for the new cards, plus README + link polish
Give the five image cards (the four new themes and the Mend Assembly) a
hover-scroll: each thumb is now a tall full-page screenshot, and CSS pans
object-position top to bottom on hover so the page scrolls itself. No video,
no JS, GPU-light; touch and reduced-motion get a static top crop. Cache-bust
the regenerated thumbs.

Trim the README Custom section to the single Mend Assembly feature (matching
the landing) and de-dash the whole README. Fix three pre-existing dead doc
links in the component cookbook (floating-nav, custom-craft, hero-enrichment
were linked without the ../ that reaches the references root).
2026-06-02 19:16:07 +01:00
Youssef 455c2654bd Worked examples: feature Bubble for Hum and trim the custom showcase
Swap the Hum carousel card from Sprout (hum-02) to Bubble (hum-07), the
guided sourdough Narrative Workflow build. Keep only one custom example in
the showcase, the Mend Assembly repair-cafe poster; the other bespoke pages
stay in the repo but off the landing. Untrack hum-02 so only featured builds
ship, refresh the scroll-demos manifest, and bump the cache version.
2026-06-02 18:54:33 +01:00
Youssef a5593bbca1 Slop test · consolidate 70 gates → 57 (merge redundant) and resync every reference
Merge the clear duplicates (gradient text into the gradient gate, macrostructure-
repeat into the structural-fingerprint gate, the overflow-x:clip mandate into the
horizontal-scroll gate, emoji-icon into the icon-libraries gate), collapse the five
contrast gates to two, the five input-state gates to one, and the four hero gates to
two. No coverage lost. Renumber 1–57 and update every gate-number and gate-total
reference across SKILL.md, the reference docs, the landing copy, and the example builds.
2026-06-02 18:34:47 +01:00
Youssef 31f58c56df Hum · lead the default hero with "Make your AI agent a designer." 2026-06-02 18:08:44 +01:00
Youssef bd9e9ab859 v1.1 — four new themes, the Custom route, and a full copy pass
Adds Carnival, Lumen, Hum, and Cobalt to the catalogue (now 20 themes),
each with its own tokens block, hero archetype, landing copy, and spec doc.

Introduces Custom as a first-class route: when a brief carries real
creative intent, Hallmark designs the whole page from first principles —
palette, type, and structure — rather than recolouring a catalogue theme.
Ships five worked custom examples and a README section.

Rewrites the per-theme landing copy and reconciles every catalogue count
across the site and the skill (20 themes · 21 macrostructures · 50
component archetypes · 70 slop-test gates). Drops the last competitor
references from the CSS comments, fixes the genre rosters, and ignores
the local example explorations so only the featured builds ship.
2026-06-02 17:50:31 +01:00
Hassan El MghariandGitHub 39fe438bf9 Merge pull request #11 from Nutlope/fix-install-bloat 2026-05-26 09:33:45 -04:00
Youssef 3ec0173896 Install · scope the skill to skills/hallmark/ (fixes #9)
The skills CLI copies everything under the directory containing SKILL.md.
With SKILL.md at the repo root, installs were pulling in docs/, site/,
package.json, README, ROADMAP, vercel.json, LICENSE. Moving the skill
into skills/hallmark/ scopes the install to just SKILL.md + references/.

The CLI's priority search hits skills/ first, so `npx skills add
nutlope/hallmark` is unchanged. Updated README install paths,
package.json (entry/references/files), and the internal links that
crossed the new boundary.
2026-05-26 12:07:51 +01:00
Riccardo Giorato 9aba10e518 feat: enhance remote URL safety checks and documentation 2026-05-20 21:58:53 +02:00
Hassan El MghariandGitHub 2fec50f4dd Merge pull request #7 from Nutlope/trim-readme-roadmap
Docs · shorten README and ROADMAP
2026-05-20 11:45:15 -04:00
Youssef 9fc2369e09 OG · swap to new readme/social card art
New 2400×1356 artwork replaces the previous 4800×2520 image.
Meta width/height tags updated to match.
2026-05-20 16:26:02 +01:00
Youssef a0a02cae7f Study · drop the refuse-competitor-pages clause
Remove the "refuses competitor pages" policy from the study verb.
Touches the verb summary in README and SKILL.md, both refusal tables
in study.md, the URL refuse list, the schema's refusal enum, the
emission-attestation parenthetical, and the worked examples plus the
test fixtures.

Paid-template refusal and the signature-work soft-refusal stay —
those carry real copyright weight.
2026-05-20 14:40:52 +01:00
Youssef a569532759 Roadmap · refine Next items
Add a brand-first flow as the lead Next item — from a short product
description, Hallmark generates a complete brand (palette, type, voice,
Nanobanana imagery) into a design.md, then builds the whole site
against it.

Rewrite the data-viz item as "Charts reference for analytics pages" —
names the actual AI tells (rainbow palettes, 3D donuts, dual-axis
spaghetti) and what the new reference file would do.

Fold the proposed hallmark extract verb into study as a third input
mode (codebase path, alongside screenshot and URL). Same verb, same
design.md output, no new surface area.

Drop the Won't-do section.
2026-05-20 13:56:29 +01:00
Youssef bb2411fae3 Docs · shorten README and ROADMAP
README: 147 → 81 lines. Drop the comparison table, the long
"What's distinct" bullet list, the references/ inventory, the
v1.0.0 release-note blockquote, and the duplicate Update section.
Keep the verb table, the example grid, and install paths.

ROADMAP: 201 → 50 lines. Fold the Status/Build/Why-it-matters
tri-headers into one or two sentences per item. Drop the stale
"What's already shipped" list, the "Measurement" section, and
the duplicate Deferred entry. Keep the Won't-do list — that's
where the discipline lives.
2026-05-20 13:43:04 +01:00
Hassan El MghariandGitHub dcd6ac64b4 Merge pull request #6 from Nutlope/fix-aggresive-redesign
Fix redesign that was too aggressive & build some guardrails in there
2026-05-19 18:13:45 -04:00
Hassan El Mghari 8eed815bd9 wip 2026-05-19 18:12:33 -04:00
YoussefandGitHub c494f3998e Merge pull request #5 from Nutlope/update-skill-description
Refine and condense SKILL.md description
2026-05-19 23:09:28 +01:00
Youssef 3c343632b5 Refine and condense SKILL.md description 2026-05-19 23:08:34 +01:00
Hassan El MghariandGitHub 6d42491c6a Merge pull request #2 from JaySmith502/fix/skill-md-yaml-frontmatter
Fix: quote SKILL.md description so YAML frontmatter parses (npx skills add fails)
2026-05-19 17:42:27 -04:00
JaySmith502andWOZCODE 75b5bfa752 Fix · quote SKILL.md description so YAML frontmatter parses
The description was an unquoted YAML plain scalar containing multiple
colon-space sequences ("Four verbs: ", "Fires when ANY: ", "Does NOT
fire on: ", "Decisive signal: "). YAML reads ': ' inside a plain
scalar as a nested mapping, so strict parsers abort with 'mapping
values are not allowed here'. The skills CLI parses this frontmatter
during 'npx skills add', so install failed.

Wrapped the value in double quotes (no internal " or backslash, so
this is lossless and stays one line). Frontmatter now parses; name,
description, and version keys intact.

Co-Authored-By: WOZCODE <contact@withwoz.com>
2026-05-19 15:23:26 -04:00
Youssef fc38eb7a80 Site · add Plausible analytics snippet to head 2026-05-19 19:49:36 +01:00
Youssef 4051c22776 Codex · trim SKILL.md description under 1024-char limit + document install path
Codex enforces a 1024-char cap on the frontmatter description; ours was 1813,
causing "invalid description: exceeds maximum length of 1024 characters" on
load. Rewrote to 927 chars, lossless on routing signals — all five fire
triggers, all three don't-fire conditions, and the decisive heuristic are
preserved. Stripped duplicate verb listings, parenthetical examples on each
trigger, and padding prose.

README + site install panes now document `~/.codex/skills/hallmark/` (personal)
and `.codex/skills/hallmark/` (project-scoped) for Codex, replacing the prior
"manual / git clone" placeholder.
2026-05-19 19:43:21 +01:00
Youssef 38f1885c97 Site · tighten banner picker↔shuffle gap to match Install↔Star + link "Together AI" in footer 2026-05-19 19:08:44 +01:00
Youssef 0757b51936 Fix · star counter shows live count + stale-while-revalidate 2026-05-19 18:51:58 +01:00
Youssef b54381fa02 Docs · add Updating section to README 2026-05-19 17:07:03 +01:00
Youssef 9f9cf0dbd5 Site · point at www.usehallmark.com + fade page in once web fonts resolve 2026-05-19 16:07:34 +01:00
Hassan El MghariandGitHub 7870c1a959 Update README.md 2026-05-19 08:05:33 -07:00
YoussefandGitHub d58600dd63 Update README.md 2026-05-19 14:46:21 +01:00
Youssef f39d30740e Fix · gate 66 + eyebrow rule bind on content shape, not class name; not bypassable by parity instructions
A subagent generating a Hallmark page with explicit "preserve structural parity with this reference build" instructions inherited the banned tag-left / header-right pattern (`.workbench__head` with `grid-template-columns: minmax(0, 0.4fr) minmax(0, 1fr)` and three `01 · The tour`-style eyebrows) from a launch-day reference that pre-dated gates 66/67/68/69. Gate 66 didn't catch it because the wrapper used `.workbench__head` rather than the canonical `.section__head` named in the original wording.

Two fixes:

1. **gate 66 (slop-test.md) — bind on content shape, not class.** The rule now reads "any <header>, <div>, or <section> wrapper — regardless of class name (.section__head, .workbench__head, .pricing__head, .catches__head, .foo__intro, anything macrostructure- or section-specific) — that contains both an eyebrow/label/number/kicker element AND a heading element MUST resolve to single-column layout." Class-name allowlists are out; the rule binds wherever the *shape* appears.

2. **Both rules (gate 66 + anti-patterns.md "Eyebrow on every section") — explicitly non-bypassable by parity instructions.** New clause in both: instructions to "preserve structural parity", "mirror this reference build", or "match the prior build" do NOT exempt the new build from the rule. If the reference ships the banned pattern, silently flatten it in the new build — the rules win over parity. Reference builds often pre-date these gates; the gates are authoritative.

No content/scope change beyond hardening the wording. Local Hallmark mirror updated.
2026-05-19 14:00:22 +01:00
Youssef 42e5db6441 Chore · gitignore skills-lock.json and .agents/ — 'skills add' artifacts, not skill source 2026-05-19 12:19:49 +01:00
Youssef 899d846196 Fix · escape YAML-breaking colon in SKILL.md frontmatter + gitignore ephemera
The skills CLI's frontmatter parser rejected SKILL.md with "Nested mappings are not allowed in compact mappings" because the description contained " ANY of: (1) " — the colon-space sequence inside an unquoted YAML scalar made the parser think it had hit a nested key/value pair. End result: 'npx skills add nutlope/hallmark' cloned successfully but then bailed with "No skills found. Skills require a SKILL.md with name and description."

Fix: rephrase "Fires when ANY of:" → "Fires when ANY of these match —". Single character semantic — colon→em-dash. Frontmatter now parses cleanly under js-yaml. No content semantics change.

Also tightened the repo to what actually helps the skill or a future user — per the new instruction. Added to .gitignore + git rm --cached:
- .hallmark/                — runtime state from my dogfooding runs, has no business being committed
- site/_launch-comparison/  — one-off launch-day comparison artifact (Hallmark / Impeccable / no-skills); not linked from the marketing site, README, or anywhere else

Working-directory copies preserved (rm --cached, not rm). docs/talk-slides.md left in place — it's user-authored content, not mine to remove.
2026-05-19 12:18:24 +01:00
Youssef aedca8cb03 Refactor · move SKILL.md + references/ to repo root so 'npx skills add nutlope/hallmark' works
The published install command in the README — npx skills add nutlope/hallmark — was failing for users because the skills CLI looks for SKILL.md at the repo root, not at skill/SKILL.md where Hallmark kept it. The clone succeeded but the CLI reported "No skills found." Manual cp was the only working install path.

Flattened the layout:
- skill/SKILL.md            → SKILL.md
- skill/references/         → references/
- (skill/ directory removed; was empty after moves)

git mv preserved rename history for all 76+ files (SKILL.md + 28 reference files + 21 macrostructures + 46 components + 7 verb/genre subfolders).

Updated every cross-reference (36 occurrences across 9 files):
- README.md — 4 links (SKILL.md + references/ + the install snippet still reads the same)
- ROADMAP.md — 4 links to reference files
- package.json — "files" field + "skill" entry/references paths
- site/js/main.js — 3 source comments
- references/design-md.md — one broken link (was pointing skill/references/export-formats.md from inside references/ — now just export-formats.md as a sibling)
- site/_tests/verbs/study/notes.md, diagnosis.md and verbs/audit/audit-report.md, custom/README.md — test-artifact relative paths shortened by one segment (e.g. ../../../skill/SKILL.md → ../../../SKILL.md)

No skill content changes. After this lands, 'npx skills add nutlope/hallmark' should clone + install correctly without any manual cp fallback.
2026-05-19 12:12:45 +01:00
Youssef db1072fe32 Docs · fresh hero screenshots in README, study URL example on landing page, roadmap priorities
- docs/screenshots/hero-*.jpg: 8 fresh hero-only captures of each worked example (1440×900 via Chrome headless on the local dev server). Replaces the mid-video stills in _tests/_thumbs/*-still.jpg which had video-player overlay and cropped headlines. Each is unique — no duplicates. README "Different briefs, different shapes" section now uses these and each thumbnail is a clickable link to the live deployed example.
- site/index.html: the Study verb's brief-pill swapped from "/hallmark study this landing page" to "/hallmark study together.ai · or paste a screenshot" so URL mode is visually concrete next to the lede that already names both modes. One-line change.
- ROADMAP.md: new "Now — actively working on" section at the top. N.1 covers tightening the existing 22 themes + adding 4–6 new distinct ones + lowering the bar to route to custom. N.2 covers first-class Nanobanana image generation + a new image-led theme (working title: Plate) + token discipline for generated stills.
2026-05-18 16:54:59 +01:00
Youssef 1552cd2b21 Fix · /hallmark slash-picker description leads with what the skill does
The frontmatter description opened with "Use this skill when ANY of these fire" — agent-facing trigger logic. Users typing /hall in the slash picker saw the truncated preview as "Use this skill when ANY of these fire — (1) the user names one of Hallmark's explicit verbs..." which says nothing about what Hallmark actually does.

Prepended a one-line user-facing summary so the picker preview reads as: "Anti-AI-slop design skill — generate distinctive landing pages, audit existing UIs, redesign templated pages, or study an admired URL / screenshot to extract its DNA." plus a usage hint with the four verbs. The full 5-condition trigger logic stays underneath unchanged so Claude's auto-fire behaviour is preserved.
2026-05-18 16:43:14 +01:00
Youssef 9f907ad38e Marketing · make Worked-examples cards clickable, open in new tab
Each .ex-card div is now an <a target="_blank" rel="noopener"> wrapping the same content. The hover-play video, prompt line, and .ex-card styles all work unchanged (the class already had color: inherit + focus-visible). Added one CSS line — text-decoration: none on .ex-card — so the <a> doesn't underline the card.

Linked destinations:
- examples/tally/        — SaaS, modern-minimal (from /Users/youssef/test-hallmark-9)
- examples/wayfare/      — travel booking, atmospheric (from test-hallmark-12)
- _tests/09-slow-pour/   — small-batch coffee subscription (already in site)
- examples/bananastudio/ — creative studio with playful motion (from test-hallmark-6)
- _tests/06-anya-portfolio/ — software architect personal site (already in site)
- examples/najm/         — Moroccan fashion (from test-hallmark-7)
- _tests/11-soroe-ceramics/ — small ceramics studio (already in site)
- examples/hyperlane/    — developer infrastructure (from test-hallmark-15)

site/examples/ adds ~308 KB total across the 5 copied projects. The other 3 already live under site/_tests/ so no copying needed for them.
2026-05-18 16:23:29 +01:00