Hallmark (GitHub Repo)
Together AI released Hallmark, an open-source design tool that prevents AI-generated code from looking machine-made by enforcing strict visual and functional constraints.
Deep dive
- Design Constraint Logic: The tool uses 'Floor' and 'Reflex' gates to reject designs with poor accessibility, broken layouts, or generic filler content.
- Theme-Based Generation: It forces models to pick from fifty predefined visual themes rather than generating unique, often inconsistent, CSS from scratch.
- Real Data Usage: The tool captures actual screenshots and metadata from your project rather than inventing placeholder text or random imagery.
- Slop Linting: The
sloplintutility tests pages across eight widths and uses a secondary AI agent to audit designs for common UI 'tells' like misaligned headers or empty frames. - Self-Contained Output: Every generated page is bundled as a single, self-contained HTML/CSS file with a comment audit trail of design decisions.
Decoder
- Slop: A pejorative term for low-quality, mass-produced digital content or code generated by AI models that lacks craftsmanship or genuine utility.
- Linting: The process of running a program to analyze code for potential errors, stylistic inconsistencies, or violations of project-specific standards.
Original article
Hallmark
A design skill for Claude Code, Codex, Cursor and OpenCode that refuses to look AI-generated.
Made by Together AI.
Hallmark holds a hard floor and then gets out of the way. It deals three themes from a catalog of fifty materials, builds the page around what the visitor came to do, and lints the result in a real browser against the tells that read as machine-made: the eyebrow above every heading, tracked-capital labels, one coloured word in a headline, a page of empty frames or nothing but photographs, a hero that misses its screen, an email sign-up at the end of every page, a form that says thanks without sending anything. A fresh-context reviewer gets the last word.
The gates come in tiers. The Floor never ships (contrast, focus, reduced motion, invented facts, a broken phone layout). Reflex gates are the defaults a model falls into; a build with a reason may overrule one on the record. Finish checks are craft detail that never blocks a ship.
New in v2
- Fifty themes. Each is a material (paper, type, colour, surfaces, its own components and texture) with a picture of a finished page, and the build lays out its own page in it.
- Built from the job. A booking page books, a shop sells, a newsletter subscribes: the action sits where the category puts it, and the page ends on it.
- Custom. Ask for a custom page and Hallmark designs from your prompt alone, under the same rules and checks.
- Your real product. Point it at a URL, a dev server or an app and it captures the screenshots itself.
- Real photographs. 755 openly licensed photos, picked per subject and credited on the page.
- Redesign and audit.
/hallmark redesign <path>rebuilds a page and keeps its content and wiring;/hallmark audit <path>only reports.
Themes
Ten of the fifty. A theme is a material, not a plan: it never says what a page contains or in what order, so two prompts in one theme make two different pages. Each is one file of at most 8 KB in references/themes/ with a picture beside it; a build reads exactly one.
Custom
Say custom and Hallmark drops the themes: no plan, no components, no palette recipe, only the floor, the gates and a short direction in direction.md to find one idea that only this client has and let it run the page.
How a build runs
- Pre-flight reads the project (fonts, palette, framework, a locked
design.md) and asks once for the material: photos, screenshots, real numbers. Nothing is invented. scripts/theme.mjs dealoffers three themes that fit the prompt and clear the log;drawdeals the page's anatomy from its job.- The hero is built alone, rendered and reviewed cold before the rest of the page exists.
scripts/sloplint.mjs --renderchecks the page at eight widths, then a subagent reviews it with fresh eyes.
Each page is self-contained HTML and CSS, stamped in its first CSS comment with the decisions it took.
Redesign
Hallmark never starts on a design that already exists unless you name it:
/hallmark redesign ./src/app
/hallmark audit ./index.html
A full redesign keeps the content and the wiring and changes the system and the layout; say keep the layout for a restyle or polish for only the tells. sloplint --before records every link, field, handler and heading first, sloplint --kept fails the redesign if one went missing, and the handoff is a side-by-side before and after.
Install
npx skills add nutlope/hallmark -g
-g installs for every project; leave it off to install into the current one. Needs Node 18 or later. The browser checks (sloplint --render, screenshots) also need npm i -g puppeteer-core and Chrome; without them the static checks still run.
| Harness | Lands in | Invoke |
|---|---|---|
| Claude Code | ~/.claude/skills/hallmark |
/hallmark <prompt> or describe a new build |
| Codex CLI | ~/.agents/skills/hallmark |
$hallmark <prompt> or describe a new build |
| Cursor | finds the copies above | /hallmark <prompt> or describe a new build |
| OpenCode | finds the copies above | /hallmark <prompt> or describe a new build |
- One harness only:
npx skills add nutlope/hallmark -g --agent claude-code(orcodex,opencode,cursor,github-copilot). - As a Claude Code plugin:
/plugin marketplace add nutlope/hallmark, then/plugin install hallmark@hallmark(invoked as/hallmark:hallmark). - From a clone:
node skills/hallmark/scripts/install.mjsvalidates every theme and reference before it copies;install-hook.mjsadds an edit-time Floor check to Claude Code. - Lint any page:
node skills/hallmark/scripts/sloplint.mjs <file-or-dir> --render. - If it does not fire on its own, name it: use hallmark to build ....
Licence
MIT. Use it, fork it, ship it.
The photo library (skills/hallmark/scripts/photos.json) lists photographs hosted on Wikimedia Commons and holds no image files. Each keeps its own licence (CC0, public domain, CC BY or CC BY-SA), and Hallmark credits every one it uses on the page. It does not use stock sites (Unsplash, Pexels, Pixabay), whose terms bar AI tools from picking their images.
Fresh dev news, AI-digested daily. Never miss a trend at devoured.fyi