What Anti-Patterns Does Hallmark's Slop Test Catch? A Complete Guide to the 58-Gate Checklist
Hallmark's slop test catches 58 structural, visual, and accessibility anti-patterns—including duplicate macrostructures, uniform section separation, default navigation fingerprints, and eyebrow-plus-heading grid layouts—to detect AI-generated "slop" in web pages.
The slop test is the quality gatekeeper in Nutlope/hallmark, a CLI tool that generates marketing pages from DNA studies. When Hallmark finishes generating a page, the slop test runs through a 58-gate checklist to validate that the output doesn't exhibit lazy, copy-pasted, or templated characteristics common to low-quality AI-generated content. The structural anti-patterns form a critical subset of these gates, ensuring each page has a unique macrostructure and visual hierarchy.
This guide breaks down every structural anti-pattern the slop test catches, with file references and detection logic from the source code.
The Structural Anti-Pattern Gates
The structural checks live in skills/hallmark/references/slop-test.md within the Structural section (lines 38–42) and related subsections covering navigation, footer, hero, and eyebrow patterns (lines 130–154). Below is the complete inventory of gates that specifically target structural slop.
Gate 8: Re-using a Disallowed Macrostructure
This gate prevents the most obvious structural sin: repeating the generic AI template or cloning a previous Hallmark output.
What it detects:
- The canonical
Hero → 3 features → CTA → footertemplate - CSS macrostructure stamps that match
.hallmark/log.jsonentries from prior runs
The test reads the macrostructure stamp from the previous generation and fails if the current page repeats it. This enforces structural variety across multiple Hallmark generations.
// From skills/hallmark/references/slop-test.md — detection logic
const log = readJson('.hallmark/log.json');
if (log.lastMacrostructure === currentMacrostructure) {
failGate(8, 'Duplicate macrostructure detected');
}
Gate 9: Uniform Section Separation
Pages with sections divided only by equal whitespace—no rules, color shifts, or ornamentation—fail this gate. The monotonous rhythm signals a copy-paste pattern rather than intentional design.
// Detection checks for visual distinction between sections
if (sections.every(s => s.separator === 'whitespace')) {
failGate(9, 'Sections only separated by equal whitespace');
}
Gates 42–45: Default Navigation, Footer, and Hero Fingerprints
These gates identify the "AI-default" layouts that models like to reuse:
| Gate | Pattern Detected |
|---|---|
| 42 | Default navigation: wordmark left, 4–5 inline links, button right |
| 43 | Default footer: multi-column link grid with subscribe form |
| 44–45 | Default hero: centered headline, subhead, CTA button stack |
Re-using these exact structures across pages is a structural tell that triggers failure. The test uses pattern matching against known canonical layouts.
// Gate 42: default nav fingerprint detection
if (isDefaultNav(navNode)) {
failGate(42, 'Default navigation layout used');
}
Gate 54: Eyebrow-Plus-Heading in Multi-Column Wrapper
This gate targets a specific templated pattern common in SaaS marketing: placing an eyebrow label and heading side-by-side in a grid.
The anti-pattern:
/* Fails gate 54 — forces "editorial-SaaS" fingerprint */
.grid-wrapper {
display: grid;
grid-template-columns: 1fr 2fr;
}
The correct pattern is a vertical stack: eyebrow above heading, preventing the templated layout. The slop test detects grid-template-columns usage when eyebrow and heading siblings exist.
Gate 55: All-Caps Display Heads with Tight Line-Height
While seemingly typographic, this gate addresses structural layout failure: when multi-line, all-caps headlines wrap without sufficient line-height (line-height < 1.1), letters collide visually. This flaw appears frequently in reused templates where token values aren't adjusted.
Gate 56: Multiple Sticky-at-Top-0 Elements
Overlapping sticky elements—such as a secondary sticky header beneath a sticky navigation bar—indicate layout copying without offset adjustment. The gate detects:
- Two or more elements with
position: sticky; top: 0 - Insufficient
topoffset values to prevent visual collision
Gate 57: Discarded DNA for Catalog Theme
The final structural integrity check ensures the macrostructure remains faithful to the studied DNA rather than falling back to a generic catalog theme. This prevents structural laziness where the generator ignores the reference site's actual architecture.
Related Structural Checks (Gates 40–41, 46–49)
Several gates in other sections have structural implications:
- Gates 40–41 (Contrast): Detect ink-on-ink and missing accent-ink token misuse, which creates structurally indistinguishable UI elements
- Gate 46 (Honest copy): Prevents fabricating metrics to fill predetermined stat-led macrostructures
- Gate 47 (Chrome): Blocks re-drawing browser/IDE chrome that already exists natively
- Gates 48–49 (Token discipline, responsive): Enforce structural compliance with the design system
These intersect with structural quality by preventing misuse of layout containers to compensate for other failures.
How the Slop Test Enforces These Checks
The test implementation follows a declarative pattern:
- Load the previous macrostructure from
.hallmark/log.json - Traverse the generated DOM/CSS for pattern signatures
- Compare against forbidden fingerprints and token discipline rules
- Fail with specific gate numbers and remediation hints
File paths for the complete specification:
| File | Purpose |
|---|---|
skills/hallmark/references/slop-test.md |
58-gate checklist with all detection criteria |
skills/hallmark/references/anti-patterns.md |
Extended explanations of structural anti-patterns |
.hallmark/log.json |
Persistence layer for macrostructure stamps (gate 8) |
SKILL.md |
DNA study and token discipline requirements (gates 48–57) |
Complete Structural Anti-Pattern Reference Table
| Gate | Anti-Pattern | Detection Method |
|---|---|---|
| 8 | Duplicate macrostructure | log.json comparison |
| 9 | Uniform whitespace separation | Section separator analysis |
| 42 | Default nav fingerprint | Node pattern matching |
| 43–45 | Default footer/hero fingerprints | Layout templating detection |
| 46 | Stat-led macrostructures | Content-structure mismatch |
| 47 | Re-drawn UI chrome | Chrome existence check |
| 54 | Eyebrow-heading grid wrapper | grid-template-columns + sibling analysis |
| 55 | Caps collision | text-transform: uppercase + line-height audit |
| 56 | Sticky element overlap | position: sticky count + offset validation |
| 57 | Catalog theme fallback | DNA structure fidelity check |
Summary
Hallmark's slop test catches structural anti-patterns through targeted gates that enforce:
- Unique macrostructures — Gate 8 prevents template repetition via
.hallmark/log.jsontracking - Visual rhythm variety — Gate 9 requires meaningful section separation beyond whitespace
- Fingerprint avoidance — Gates 42–45 block canonical AI-default layouts in nav, footer, and hero
- Grid discipline — Gate 54 eliminates eyebrow-heading side-by-side patterns
- Layout integrity — Gates 55–57 address collision, overlap, and DNA fidelity
These checks ensure every Hallmark-generated page demonstrates intentional structural design rather than templated slop. The complete specification lives in skills/hallmark/references/slop-test.md with implementation guidance in SKILL.md.
Frequently Asked Questions
What is the slop test in Hallmark?
The slop test is Hallmark's 58-gate quality validation system that runs after page generation. It checks visual, micro-interaction, accessibility, and structural quality to prevent AI-generated pages from exhibiting lazy, copy-pasted, or templated characteristics. Gates 8, 9, and 42–57 specifically target structural anti-patterns.
How does Hallmark detect duplicate macrostructures?
Gate 8 compares the current page's CSS macrostructure stamp against .hallmark/log.json, which stores the previous run's structure. If they match, or if the page uses the generic Hero → 3 features → CTA → footer template, the test fails and forces structural redesign.
Why does uniform section separation matter for structural quality?
Equal whitespace between sections creates a monotonous rhythm that signals copy-paste generation rather than intentional design. Gate 9 fails pages lacking rules, color shifts, or ornamentation between sections—visual distinctions that demonstrate human-level layout decisions.
What makes eyebrow-plus-heading grids an anti-pattern?
Placing eyebrow labels and headings side-by-side in grid-template-columns layouts produces a "editorial-SaaS" fingerprint common to generic templates. Gate 54 requires vertical stacking of these elements to break the templated appearance and enforce proper visual hierarchy.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →