When Does Hallmark Trigger a Custom Theme Fork vs. Defaulting to Catalog Themes?

Hallmark triggers a custom theme fork only when your brief contains at least one of five specific signals—an explicit request for customization, a named brand color, multi-attribute aesthetic descriptors, attached visual references, or a bespoke structural vision—otherwise it defaults automatically to one of the 20 catalog themes.

The Hallmark codebase implements a deliberate decision gate during its Design Flow (Step 1) that determines whether users enter the custom theme protocol or bypass it entirely. Understanding these trigger conditions helps designers craft briefs that intentionally route toward either path.

How the Theme Route Decision Works

The selection logic spans two layers: the brief analysis engine (documented in skills/hallmark/references/custom-theme.md) and the client-side theme controller (site/js/main.js). The former evaluates content signals; the latter executes the routing based on URL parameters and stored preferences.

When parsing a brief, Hallmark scans for presence of any trigger signal. If none are detected, the system proceeds silently to catalog theme selection. If any signal fires, Hallmark surfaces a single clarifying question to the user—making the final route explicitly opt-in rather than automatic.

The Five Trigger Signals That Activate the Custom Fork

Trigger Description Example
Explicit ask User directly requests customization "custom theme", "make it ours", "play around with colors and fonts"
Named brand colour Specific color anchor provided "#c0392b", "our terracotta", "brand red"
Multi-attribute aesthetic (≥3 adjectives) Vibe descriptors exceeding catalog range "moss, lichen, soft pink, herbal"
Brand-mood reference attached Visual color cues, swatches, Pantone chips Screenshot of moodboard (excluding screenshots routed to "study")
Singular structural vision Request for bespoke architecture "no theme / from scratch", unique page shape not in catalog macros

Critical threshold: Three or more aesthetic adjectives are required to trigger signal 3. A single descriptor like "modern-minimal" falls within catalog coverage and does not activate the fork.

Implementation in the Client-Side Controller

The site/js/main.js file handles the actual theme dispatch. It checks the theme URL parameter first, then falls back to localStorage, with "hum" as the default catalog theme:

// site/js/main.js – theme initialisation
const urlTheme = new URL(window.location.href).searchParams.get("theme");
const storedTheme = localStorage.getItem(STORAGE_KEY);
const initial = urlTheme || storedTheme || "hum";   // "hum" = default catalog theme

if (initial === "custom") {
  // Launch the custom-theme protocol (defined in custom-theme.md)
  startCustomThemeFlow();
} else {
  applyTheme(initial);   // regular catalog theme
}

This code demonstrates that the custom route requires explicit parameterization—even when trigger signals fire in the brief, the user must affirmatively select the custom path through the clarifying prompt.

Practical Examples: Trigger vs. No-Trigger Briefs

Brief That Triggers the Custom Fork (Named Brand Colour)

Build a landing page for "Oak & Ember" – a boutique furniture brand.
"Please use our brand colour #8B4513 as the accent and keep the rest of the design unique."

Analysis: The hex color #8B4513 activates signal 2 (named brand colour). Hallmark presents the clarifying question; user confirmation launches the custom-theme protocol.

Brief That Defaults to Catalog (No Trigger)

Create a product page for a SaaS tool.
Tone: modern-minimal, audience: developers, no special colour or structure requirements.

Analysis: Only one aesthetic adjective ("modern-minimal") is present. This falls within the 20 catalog themes' coverage. No trigger fires—Hallmark proceeds directly to catalog selection without surfacing the fork option.

The Clarifying Question Prompt

When signal detection succeeds, Hallmark generates context-aware wording similar to:

"This brief reads like a custom palette would fit better than the 20 named themes.
Want me to construct a custom OKLCH palette + free-font pairing tuned to <vibe summary>, or stay on the catalog for variety + speed?"

The user's response determines the final route:

  • "Yes" / positivestartCustomThemeFlow() executes
  • "No" / silenceapplyTheme(catalogTheme) with standard selection

Key Source Files Reference

File Purpose
skills/hallmark/references/custom-theme.md Authoritative protocol defining trigger signals, prompt templates, and custom-theme workflow
site/js/main.js Client-side theme controller handling theme parameter parsing and flow dispatch
README.md Overview of 20 catalog themes and "Custom NEW" feature documentation

Summary

  • Hallmark's custom theme fork requires active trigger detection in the brief analysis phase—no signal means automatic catalog default
  • Five distinct signals govern fork activation, with explicit color naming and multi-attribute aesthetics being the most common triggers
  • User confirmation is mandatory even when signals fire; the system never auto-routes to custom themes without opt-in
  • Single adjectives and generic descriptors stay within catalog coverage; specificity and volume of descriptors determine custom eligibility
  • URL parameter theme=custom directly invokes the protocol, bypassing brief analysis—useful for testing or direct linking

Frequently Asked Questions

What happens if I mention multiple colors but no hex codes?

Named brand colors (signal 2) accept descriptive anchors like "terracotta" or "our sage green"—hex codes are not required. Any specific color reference tied to brand identity triggers the fork offer.

Can I force the custom theme route without trigger signals?

Yes. Passing ?theme=custom in the URL directly sets initial === "custom" in site/js/main.js, invoking startCustomThemeFlow() regardless of brief content.

Why does Hallmark require three or more adjectives for aesthetic triggers?

The catalog's 20 themes cover common single-descriptor aesthetics (minimal, playful, corporate). Signal 3 specifically captures emergent vibes outside this taxonomy—requiring sufficient descriptor density to distinguish from catalog coverage.

Does attaching a screenshot always trigger the custom fork?

No. Screenshots are routed to the "study" workflow, not the custom-theme protocol. Only color-specific visual references (swatches, Pantone chips, moodboard fragments with explicit color focus) activate signal 4.

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 →