If you've asked an agent to "build a landing page" and gotten the same purple gradient, three identical feature cards, and a hero that says "Revolutionize your workflow" — you've seen the problem Hallmark targets. Nutlope/hallmark is an anti-AI-slop design skill for Claude Code, Cursor, and Codex: it encodes rules that refuse the on-distribution defaults every frontier model was trained on, then runs 57 slop-test gates before handing code back.
Made by Together AI, Hallmark reached 11.1k GitHub stars and 553 forks by July 2026. Live examples cycle at usehallmark.com — press T to swap themes. On explainx.ai, install from the Hallmark skill page (Cursor guide, agent matrix, and one-line CLI copy included).
TL;DR
| Item | Detail |
|---|---|
| Repo | github.com/Nutlope/hallmark · MIT license |
| Version | v1.1.0 on explainx.ai registry (20 catalog themes + Custom route) |
| Install (explainx.ai) | explainx.ai/skills/Nutlope/hallmark/hallmark |
| CLI | npx skills add https://github.com/Nutlope/hallmark --skill hallmark |
| Verbs | build (default) · audit · redesign · study |
| Gates | 57 slop-test checks + 6-axis pre-emit critique (Philosophy, Hierarchy, Execution, Specificity, Restraint, Variety) |
| Output | Self-contained HTML + CSS pages, or in-place edits respecting existing tokens |
Why another design skill?
Most agent UIs fail on structure, not just colour. Two briefs — a sourdough app and a record-label EP — should not share the same hero → three features → CTA → footer rhythm. Hallmark's differentiator (documented in references/structure.md) is macrostructure variety: it picks layout archetypes per brief, dresses them in one of twenty named themes (Hum, Cobalt, Carnival, Lumen, Garden, Riso, modern-minimal, atmospheric, etc.), and only falls back to Custom when the brief carries creative intent no catalog theme fits.
The skill draws from the consensus anti-slop field — Anthropic's frontend-design guidance, Claude cookbook aesthetics, and the 2026 "tactile rebellion" movement — but packages it as enforceable gates, not vibes.
Four verbs
| Verb | What it does |
|---|---|
| (default) | Build new UI. Pre-flight scan → genre → theme → macrostructure → slop test → emit. |
hallmark audit <target> | Score existing code against anti-patterns. Ranked punch list; no edits. |
hallmark redesign <target> | Throw out visual structure; preserve copy, IA, brand, routes. Rebuild fingerprint. |
hallmark study <screenshot | URL> | Extract DNA — macrostructure, type-pairing, colour anchor. Refuses pixel-clones and paid template URLs. Optional design.md handoff. |
If you paste a URL without a verb, Hallmark asks whether to study (extract DNA) or use it as a reference for a fresh build.
Disciplines that hold on every verb
These six rules apply to build, audit, redesign, and study alike:
- Pre-emit self-critique — Score 1–5 on six axes before shipping; anything below 3 triggers a revision pass. Stamp scores in a CSS comment.
- Honest copy — No fabricated metrics. Stat-led layouts need real numbers, labelled placeholders (
—), or a different macrostructure. - Locked tokens — After theme pick, every colour and
font-familymust reference named CSS variables. Inline OKLCH mid-render is forbidden. - No re-drawn chrome — Fake browser bars, phone bezels, and mock IDE windows are banned. Use real screenshots in
<figure>or omit chrome. - Mobile floor — Verified at 320 / 375 / 414 / 768 px: no horizontal scroll, no two-line button labels,
minmax(0, 1fr)on image grids. - Typography purity — Headings stay roman; italic display headers are treated as an AI tell.
Component-scope mode (single button, modal, card) skips page macrostructure but mandates all 8 interaction states with a .preview.html demo wrapper.
Pre-flight: read before you stomp
Before designing, Hallmark scans six signal sources in order:
design.mdat project root (locked system from a prior redesign)- Font stack (
next/font,@fontsource, TailwindfontFamily) - Palette (
:roottokens,tailwind.config, DTCG files) - Motion libraries (
framer-motion,gsap, etc.) - Spacing scale
- Framework (Next.js, Astro, Vue, vanilla)
Findings go to .hallmark/preflight.json for reuse. The block is the accountability line: here's what I noticed before I touched anything.
Install on explainx.ai (recommended)
The Hallmark skill listing on explainx.ai is the fastest path if you want agent-specific steps without digging through the repo:
- Open explainx.ai/skills/Nutlope/hallmark/hallmark
- Select your agent (Cursor, Claude Code, Codex, Windsurf, Cline, etc.)
- Run from your project root:
npx skills add https://github.com/Nutlope/hallmark --skill hallmark
- Select Cursor (or your agent) when the CLI prompts
- Verify:
.cursor/skills/hallmark/exists · restart Cursor · invoke via/hallmark
The registry page includes security notes (review SKILL.md source before production), use cases, and links to related design skills. Always review skill source — skills execute in your environment.
Manual paths (from README)
| Agent | Path |
|---|---|
| Claude Code | ~/.claude/skills/hallmark/ |
| Cursor | .cursor/skills/hallmark/ |
| Codex | ~/.codex/skills/hallmark/ or .codex/skills/hallmark/ (project) |
Copy SKILL.md + references/ from the repo, or re-run npx skills add to update.
What good output looks like
Hallmark's README gallery shows brief-specific shapes — not colour-swaps of one template:
| Example | Brief | Theme |
|---|---|---|
| Bubble | Guided sourdough app | Hum |
| Distil | Content-extraction API | Cobalt |
| Cold Snap | Record-label EP | Carnival |
| Tally | SaaS product page | modern-minimal |
| Wayfare | Travel booking | atmospheric |
| The Mend Assembly | Repair-café broadsheet | Custom |
Each page is self-contained HTML + CSS with macrostructure stamped in a CSS comment. Browse live at usehallmark.com or under site/_tests/ in the repo.
Hallmark vs detecting slop after the fact
Hallmark is generative guardrails — it stops slop at emit time. That's complementary to detection tools (classical ML classifiers, Pangram, browser extensions) that score text after publication. If you're fighting AI-written fanfic or blog spam, see explainx.ai's LLM text detection guide. If you're fighting visual sameness in agent-built UIs, Hallmark is the upstream fix.
The shadcn creativity debate and Thoughtworks zero-cost fallacy cover why cheap copying compresses lead time — Hallmark doesn't solve attribution, but it does raise the floor on what "shipped" looks like when you still care about craft.
Limits and honest trade-offs
- Closed-weight models still interpret rules — Hallmark is long; context limits and model drift can skip gates. Run
hallmark auditon output. - Existing codebases need pre-flight — Without
design.md, first run may conflict with hard-codedfont-family: Intervsnext/fontGeist. Hallmark flags conflicts; you confirm. - Component vs page ambiguity — "Design a pricing section" triggers a one-question disambiguation; default is component if you don't answer.
- Study mode can't judge rhythm from URL alone — URL fetch names exact fonts and colours but not spacing feel; screenshot fallback when auth-walled.
Related on explainx.ai
- Hallmark skill — install guide ← start here
- What are agent skills? Complete guide
- How to build your first agent skill
- Thin prompts, thick artifacts, thin skills — Thariq
- LLM text detection — classical ML SVM
- AI copying creativity — shadcn debate
- Team skills distribution — security-first
- Browse all skills
Official sources: Nutlope/hallmark on GitHub · usehallmark.com demos · Hallmark on explainx.ai skills
Hallmark version, star count, and theme catalog reflect the Nutlope/hallmark README and explainx.ai registry listing as of July 17, 2026. Re-run npx skills add to pull updates; verify SKILL.md before production installs.
