Overview
The mental model in one page — workspace, templates, sections, and the server-vs-client mapping.
Workspace → templates → sections
Section titled “Workspace → templates → sections”A workspace is the container: one kit version, one shared config. A template is the authored, submitted unit — a folder of sections plus a manifest and theme. A section is four reserved files in an otherwise free-form folder:
templates/<template>/sections/<section>/ Renderer.tsx schema.ts fill-spec.ts fixtures.tsEverything else in that folder — extra components, an island, helpers — is yours. See Adding templates and sections.
The four files
Section titled “The four files”| File | Declares | Reference |
|---|---|---|
schema.ts |
The slots and options the section has | schema-system.md |
fill-spec.ts |
How AI fills those slots | schema-system.md |
fixtures.ts |
Sample content for local preview | schema-system.md |
Renderer.tsx |
The markup | schema-system.md |
Slots, options, fill, fixtures
Section titled “Slots, options, fill, fixtures”A slot is editable content; an option is a behavior switch — see
the schema system for
the distinction and the closed vocabulary for the types.
Fill is how AI assigns slot values via fill-spec.ts’s decisions, covered
in schema-system.md.
Fixtures are the sample content a section previews against, sourced from the
kit’s golden scenarios by the fill-by-source rule — see
schema-system.md.
Server vs client — your Next.js instinct, mapped
Section titled “Server vs client — your Next.js instinct, mapped”A Renderer.tsx is a server component: a pure function of props, ships no
JS. Interactivity goes in a "use client" island, hydrated in the browser.
The directive is per file. See server vs client
for the precise rule and Islands for how to write one.
The author loop
Section titled “The author loop”For the write → preview → check cycle, see the author loop.