feat(x): real voice guide, slop ban, and caption craft for drafted content (#615)

* feat(x): real voice guide, slop ban, and caption craft for drafted content

Release posts and mention replies were drafted from a one-sentence voice
stub while the reasoning-backed Head-of-Marketing voice guide only reached
the off-by-default spotlight path. The drafting prompts now carry the full
voice rules, a banned AI-slop list, three style exemplars, hook-first
structure, and an under-240-char budget so the 280 clamp never truncates
mid-sentence.

An empty brand_voice now nudges the CEO exactly once (durable
system_settings marker) instead of silently shipping baseline voice forever.
A failed reply draft skips origination instead of shipping 'Thanks for the
mention!'. Video dev prompts and motion/README gain per-platform caption
templates (X: hook + specifics + outro; TikTok: hook + short lines + few
niche hashtags).

* docs(motion): reflow the new Captions section to satisfy the prose gate

---------

Co-authored-by: Renn F <rennf93@users.noreply.github.com>
This commit is contained in:
Renzo F
2026-07-20 20:59:55 +02:00
committed by GitHub
co-authored by Renn F
parent c8f55be904
commit 16fa018ace
6 changed files with 238 additions and 17 deletions
+8
View File
@@ -12,6 +12,14 @@ Compositions live under `compositions/<composition_id>/`. Each composition is on
4. Add `<your_clip>.test.js` (vitest) asserting the HTML-structure invariants — dimensions, props.js wiring, theme link, at least one `class="clip"` element, no CDN scripts. See `release-announcement.test.js` as a template.
5. `pnpm preview` (alias for `hyperframes preview <file>`) opens the local preview server; `pnpm lint` runs `hyperframes lint` over both orientations; `pnpm test` runs the smoke gate that CI runs.
## Captions
`propose_video`'s `x_caption`/`tiktok_caption` args (self-verified against each platform's limit in the tracked `captions.json` — see the release examples below) follow their own per-platform shape, not a shared template:
- **X** — a hook line naming the concrete capability, then 1-2 lines of specifics (real feature names/numbers beat adjectives), a short outro. No hashtag spam. Target well under 240 characters so the 280 limit never truncates mid-sentence.
- **TikTok** — hook + 2-3 short punchy lines + 3-5 relevant niche hashtags max (not generic `#tech #ai` filler).
- Same slop-ban as the "AI tells to avoid" design-bar rule below: no em dashes, no filler verbs ("Elevate", "Seamless", "Unleash").
## `release-announcement` — props shape
The composition reads `window.__PROPS__` (written into `props.js` by the sidecar at render time):