CHAPTER 01

Concepts

Ship the design once. Let an LLM maintain the content. Aftercare is the split that makes that safe.

01

The Problem

Agency Reality

Agencies rebuild the same marketing pattern for clients, then get pulled back for copy tweaks, FAQ answers, and page reorders. A CMS adds login theater and layout drift. Handing clients the full React theme invites breakage.

02

The Split

Three Layers
LayerOwnerWhat lives there
ThemeAgencyReact layout, sections, CSS, defineSection
ContentSite ownerName, nav, page copy, section props (TOON/JSON)
Agent surfaceGeneratedAGENTS.md, schemas, Cursor skills

The theme is locked after handoff. Content is the only mutable surface for maintenance.

03

Contracts

Source of Truth

Every section is a contract — one definition drives validation, render, and agent docs:

defineSection({
  type: "hero",
  description: "…",
  props: z.object({…}),
  component: Hero,
  example: { type: "hero", … },
  guidance?: "…",
})
  1. Validates content against the Zod schema
  2. Renders the matching React component at build time
  3. Syncs agent docs so an LLM knows allowed types and props

You do not maintain a separate CMS schema or a hand-written agent guide.

Build Output
Plain static HTML. No runtime CMS. Host the folder anywhere.
DIST/ · ONE HTML PER PAGE · PUBLIC ASSETS COPIED
04

Commands

Sync · Doctor · Build
CommandRole
syncRegenerate agent files from theme contracts
validate / doctorCheck content, routes, images, contracts
buildSync → doctor → static HTML
watchOn change: sync, validate, rebuild

Builds refuse to publish when doctor reports errors — broken props, duplicate routes, missing local images, and similar.

05

TOON

Prefer Dense

Content may be TOON (preferred) or JSON. TOON is denser — fewer tokens for LLM edits — while remaining human-readable. Validation does not care which format you use.