Skip to main content

Starters and the harvest loop

Starters

Five ship with Cleya:

StarterShape
promo-heroHeadline-led product promo, one stat, CTA close. 16:9, 10s.
stat-storyDark stat-led story, 8s.
opener-cardShort title card, 5s.
feature-trioThree features, 12s.
story-vertical9:16, TikTok-safe, 8s.
cleya starters # list, with "when to reach for this"
cleya starters --name stat-story --copy-to ./work # scene + neutral brand into a directory

Every shipped starter is contract-tested: it must compile with zero errors and zero warnings against the neutral default brand, and must be token-clean. A change to the DSL that breaks a starter breaks the build — which is what makes "first render is right" more than a slogan.

Harvest — quality that compounds

When a bespoke job comes out well, promote it:

cleya harvest --scene work/promo.scene.json --brand brand.json \
--name book-flip-promo \
--when "Book-brand promo with flipping titles"

Harvest does four things:

  1. Measures first. Probe frames are rendered and run through the instruments. Alignment defects block the write (override with --force, findings on record); contrast findings warn.
  2. De-brands. Concrete colours are mapped back to $palette.* tokens — including gradients — so the shape is reusable under any brand. Token-clean scenes pass straight through.
  3. Derives structure. Copy slots and a beat map are detected automatically.
  4. Files it. Into your user library at ~/.cleya/starters (override with CLEYA_STARTERS_DIR), where starters and draft pick it up alongside the shipped set.

Shipped names are collision-protected, sources are tagged, and the default brand for a harvested starter is always the shipped neutral — so a harvested shape never leaks the brand it was built for.

The point of the loop: a harvested starter is a third draft wearing a first draft's timestamp. Quality lives in artifacts, not in per-session thinking.