Skip to content

Style: the product as an object, a type voice, launch films in chapters - #8

Open
mogheess wants to merge 1 commit into
Leonxlnx:mainfrom
mogheess:contrib/8-style-voice
Open

mogheess wants to merge 1 commit into
Leonxlnx:mainfrom
mogheess:contrib/8-style-voice

Conversation

@mogheess

@mogheess mogheess commented Oct 20, 2026 •

Copy link
Copy Markdown

Why

We ran side-by-side tests on 1.1.0: the same one-line brief, rendered by 1.1.0 and by a patched copy, then compared by eye. Typical prompt: "Make a launch video for Matty, a pocket personal AI assistant that can book flights, manage your calendar, handle your email and more."

1.1.0's films had a strong story and calm text. But they often read as zoomed screen recordings:

  • one document page filling the frame for about 10 s, with the camera crawling over it;
  • one stage colour throughout;
  • one plain sans, with lines parked above the UI;
  • one continuous story, even when a launch has several things to show.

Strong launch films do it differently:

  • they show the product as an object on a stage;
  • they change colour within the brand's palette;
  • they give type a voice;
  • they move in short chapters: a flash of text, the UI doing it, then the next.

The patched skill was preferred over 1.1.0 on the Matty brief. Earlier iterations on another brief (a legal assistant) fed in the sound and camera rules below.

What changes

  • The UI as an object on a stage. Windows, cards, phones and notifications sit at about 50–80% of the frame width on a designed stage. The working part is isolated at a readable size. A page filling the frame is allowed only as a 1–2 s macro.
    • This replaces the "70–92% FW, full-bleed" norm.
    • New tell E9 The screen recording.
    • product-ui.md §1, E1, E7 and craft-rules.md §6 are updated to match.
  • No canvas jumping. The camera never flies from spot to spot across one big page.
  • A new picture every 1–2 s. Never the same view of the same UI held past about 3 s.
  • A type voice. Statements own the frame on their own beat. One italic accent face is allowed for a payoff word, marked // cinetic:accent-face <family>.
    • lint-film.mjs accepts the marker like brand-supplied, and flags a marker with no family name.
    • New fixture: lint-fixtures/accent-face.tsx.
  • Colour by section, inside the brand's palette. The stage changes 2–4 times, only between the brand's own ink, paper and accent. Third-party apps shown in the UI keep their own colours, as content.
  • Launch films in chapters. A second launch arc beside the single story (concept-and-story.md §8, SKILL.md Step 1). Each chapter is a 1–3 word flash of text, then the UI doing it, then its result, all linked by one through-line. The deletion test now covers chapters.
  • Real or fictional UI. Intake asks for screenshots, a link or a Figma file when the product exists, and the film rebuilds those screens. Otherwise the agent designs a fictional UI that explains the function, using real platform conventions and believable third-party brands.
  • Sound (sound.md §1). The background is a real track or nothing. Never the synth band, and nothing sustained under the film besides the music: no generated drone, no looping effect bed. In testing, the agent picked "music": "synth" plus a generated hum, and the result sounded cheap next to a real track. Effects stay short and land on what you see.
  • Drawings. Drawn illustration is allowed only for the mark or a mascot, and it is optional (a wordmark or a simple geometric mark is often better); no drawn objects or scenes.

Nothing is removed apart from the full-bleed norm. The single-story arc, the fragment chains, earshot kits, the pace profiles and every gate stay as they are.

Tests

  • node skills/cinetic/scripts/test/lint-film.test.mjs: all pass, including the new accent-face.tsx fixture (italic=1 brand-supplied=1).
  • node skills/cinetic/scripts/test/scripts-docs.test.mjs: pass.
  • python3 skills/cinetic/scripts/test/bash32.test.py: pass.
  • python3 skills/cinetic/scripts/test/pick.test.py: pass.
  • Not run locally: grid-check.test.mjs, which needs the Remotion starter installed, and score.test.py. Neither area changed.

The evidence is small: a handful of films, judged by one viewer. The rules are written as defaults with escape hatches (a 1–2 s macro, mixing arcs), not hard bans, so they can be tuned with more briefs.

@mogheess
mogheess force-pushed the contrib/8-style-voice branch 2 times, most recently from 1ff5c1a to 76cb8ff Compare October 20, 2026 12:31
Side-by-side tests on the same short briefs (judged by eye) found films reading as
zoomed screen recordings: one page filling the frame, one stage colour, one plain
sans, one continuous story. This adds rules aimed at the look of strong launch films:

- the UI as an object on a designed stage (50-80% of the frame), a full-frame page
  only as a 1-2 s macro; new tell E9 "the screen recording"; no canvas jumping;
  a new picture every 1-2 s
- a type voice: statements own the frame; one italic accent face for payoff words,
  marked cinetic:accent-face (lint accepts it; fixture added)
- colour by section, only inside the brand's own palette
- launch films in chapters: a second arc beside the single story
- real UI rebuilt from screenshots/links when the product exists, otherwise a
  fictional UI designed to explain the function
- sound: a real track or nothing under the kit; character sounds stay short
- drawn illustration only for the mark or a mascot
@mogheess
mogheess force-pushed the contrib/8-style-voice branch from 76cb8ff to 5a91a76 Compare October 20, 2026 12:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant