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.
Hallmark
A design skill for Claude Code, Cursor, and Codex that refuses to look AI-generated.
Live demo → · twenty-one themes · four verbs · press T to cycle.
Made by Together AI.
Hallmark picks a macrostructure for the brief, dresses it in one of twenty-one themes, runs fifty-seven slop-test gates plus a pre-emit self-critique, and refuses the on-distribution defaults every LLM was trained into. Two pages by Hallmark for two different briefs feel like different sites, not colour-swaps of the same template.
Four verbs
| Verb | What it does |
|---|---|
| (default) | Build new UI. Picks a macrostructure, applies the rule-set, runs the slop test before handing back. |
hallmark audit <target> |
Score existing code against the anti-patterns. Punch list, no edits. |
hallmark redesign <target> |
Throw out the structure, keep copy + IA + brand, rebuild with a different fingerprint. |
hallmark study <screenshot | URL> |
Extract the DNA from a design you admire: macrostructure, type-pairing, colour anchor. Refuses pixel-clones and paid templates. Optionally emits a portable design.md for handoff to other AI tools. |
Different briefs, different shapes
Each generated from a different brief. The skill picks the theme, structure, and craft to fit each one, not from a template.
Each page is self-contained HTML + CSS, stamped with its macrostructure in the CSS comment. Browse the full set at usehallmark.com or under site/_tests/.
Custom NEW
When a brief carries creative intent that no catalog theme fits, Hallmark switches to Custom and designs the page from scratch: a made-to-measure palette, type, and layout. Same 57 slop-test gates, no template underneath.
![]() |
![]() |
| The Cascadia Nightjar Sleeper-train ticket · Custom |
The Mend Assembly Repair-café broadsheet · Custom |
It stays a quiet branch; vanilla briefs never see it. The protocol lives in custom-theme.md.
Install
npx skills add nutlope/hallmark
Re-run any time to update. Or copy SKILL.md + references/ into:
- Claude Code:
~/.claude/skills/hallmark/ - Cursor:
.cursor/rules/hallmark.mdc(body ofSKILL.md, no frontmatter) - Codex:
~/.codex/skills/hallmark/(personal) or.codex/skills/hallmark/(project-scoped)
The rule-set lives in SKILL.md and references/. Worked examples in docs/recipes.md and docs/study-examples.md.
Licence
MIT. Use it, fork it, ship it.














