docs/MODULE-BRIEF.md

Module brief — template

Copy this into docs/briefs/<slug>.md and fill it out before asking for a new module. The brief + the referenced modules are the prompt; PATTERNS/CLAUDE.md canon applies without restating it (ModuleShell anatomy, semantic slots only, seed for accent moments, soft selects, Radix Button CTAs, data-dep-surface on painted surfaces).

## Module brief: <Name>Module

**Slug / tier / group / category**: <slug> · standard|advanced · core|features|shared · <Category>
**One-liner**: what it is, in the registry-blurb voice.
**Closest references**: e.g. "CollectionModule's rows, CtaRow footer like ProductModule."

### Anatomy (top → bottom)
- ModuleShell? (header title default: …)
- Media? (ratios allowed: …)
- Body: list / stack / grid of what
- CTA: label, Radix variant, what it does

### Content model (props)
| prop | type | sample value |
| --- | --- | --- |
| files | {name, size, locked}[] | [{name:'Stems.zip', size:'240MB', locked:true}] |

### Client-editable fields
| key | label | type (options) |
| --- | --- | --- |
(what lands in builder-kit/lib/fields.ts — text / toggle / select / aspect-ratio)

### States & interactions
Empty state, locked vs unlocked, expanded, playing, error — and which are host-driven
callbacks (onAction, onExpand…) vs internal state.

### Colour expectations
Anything beyond the standard slots? (Default: must pass all 3 profiles × light/dark ×
4 brands with zero module-specific colour code.)

### Figma
Link/screenshot if the layout is novel; omit if reference modules cover it.

### Out of scope
What v1 deliberately doesn't do.

Acceptance checklist (run before a module is "done")

  • Renders in all brands × colour profiles × appearances with no module-specific colour code
  • Surfaces painted with --module-surface carry data-dep-surface
  • Accent moments use the seed scale; everything else semantic slots or Radix steps
  • CTAs are Radix Buttons (CtaRow for full-width); selects/text fields soft
  • Fields schema wired (builder-kit/lib/fields.ts) + realistic SAMPLE_PROPS
  • Registered: modules index, builder-kit registry + renderers, build-module-docs mapping
  • pnpm build:docs regenerates cleanly; doc page (Demo/Source/Tokens/Fields) reads correctly