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 → footer template
  • CSS macrostructure stamps that match .hallmark/log.json entries 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');
}

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 top offset 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.


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:

  1. Load the previous macrostructure from .hallmark/log.json
  2. Traverse the generated DOM/CSS for pattern signatures
  3. Compare against forbidden fingerprints and token discipline rules
  4. 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.json tracking
  • 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:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →