docs: Prompt Guide as a novice-to-capstone arc + text corrections from validation - #2109
Conversation
40d3095 to
745168e
Compare
745168e to
6fba438
Compare
Documentation-only updates surfaced by the prompt-guide validation campaign. The behavior fixes from the same campaign are in a separate PR (pipeline fixes); Tier 3 block bugs are tracked in #2107. - hyperframes-core SKILL.md: new "First-pass lint gotchas" subsection — the root composition element must carry data-start="0" (root_composition_missing_data_start), and initial states belong in gsap.fromTo, never a CSS transform paired with a GSAP tween on the same property (gsap_css_transform_conflict). Both were guaranteed first-build lint failures for agents writing compositions cold. - media-use SKILL.md: "Weak local-model defaults" row corrected — local Kokoro TTS is the free default with HeyGen as the paid upsell (was described backwards), and bg-removal runs via the hyperframes CLI. - docs/concepts/compositions.mdx: document that data-composition-src paths resolve relative to the project root, not the referencing file. - gsap-transforms-and-perf.md: runtime-created SVG (createElementNS) has no reliable center pivot — draw geometry at local (0,0) inside a positioning <g> so scale/rotation pivot on the shape's middle. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Splits guides/prompting into a Prompt Guide nav group (overview + Fundamentals + Making it look good, 11 pages) with a redirect from the old URL. Applies research-validated upgrades: beat content formula, before/after prompt rewrites with engine rationale, single-variable iteration moves, absolute-target calibration, camera/depth/pacing vocabulary, prerequisites gate. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adds 18 pages completing the Prompt Guide expansion (phases 2-4): six video-type pages seeded by the verified example prompts, and twelve feature pages giving prompting guidance for surfaces the docs implied but never covered (transitions, caption styles, overlays, code blocks, data/maps, VFX, rendering/output, editing existing videos, media/audio, variables, runtimes/3D, design systems). All block/component/skill names grounded against the catalog and skills; render pairing deferred. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Runs validation builds for the primary prompt on every new feature page (all pass lint/validate/render) and applies the fixes they surfaced: lower-third exit-length note, block-adaptation framing on the anatomy technique slot, code-typing per-character wording, caption-component demo-content note, map determinism/merge-at-source notes, device-mockup demo-UI expectation, variables img clarification. Embeds 29 unedited renders next to their prompts (HeyGenVerse-hosted), including a default-vs-overridden pair demonstrating variables. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Moves all 28 example/validation renders to the docs' canonical media host (s3://heygen-public via scripts/upload-docs-images.sh) and points every embed at static.heygen.ai instead of HeyGenVerse asset URLs. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…eness Five-way review of the section against docs.json, catalog pages, and skills. Fixes: stale /hyperframes-media skill row (real name /media-use) plus missing music-to-video and slideshow workflow rows; caption identity misattributions (keynote/documentary are scene-embedded, stomp carries no rail); prompts violating the guide's own ambient-idle rule; grounded keying rationale (u2net_human_seg); broken forward references; nested-backtick code spans; brand casing and frontmatter dash consistency throughout. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ked specs, measured motion Validates 16 more published prompts end-to-end (variants across every video type, caption styles, overlays with proven alpha, code diff and highlight, edit verbs against the real attribute map, a generated-avatar talking-head through embedded-captions, a presented slideshow deck) and fixes every prompt flaw the builds surfaced. Adds keyword-to-render grids for the easing, camera, and marker vocabulary; two more worked visual specs with renders; a measured before/after pair proving the motion grammar (frozen frames vs all-alive, 211KB vs 2.5MB); before/ after render pairs on editing and generated-artwork pages; and proof renders on the overview. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
b4005a7 to
2f958d1
Compare
…th zero prompting coverage Every other creation workflow gets either a dedicated page or an explicit routing/contrast section inside a related one (website-to- video inside product-launch.mdx, slideshow inside music-and- slideshows.mdx). /remotion-to-hyperframes had neither — its only mention anywhere in the 29-page guide was one line in overview.mdx's install table. Covers what to hand the agent (the exact source file, since a Remotion project can register several Compositions), the one-way/no-reverse- export scope, the lint-blocker categories that make the skill refuse rather than approximate (useState/useEffect state machines, third- party UI kits), and why SSIM validation against the Remotion original is part of the deliverable, not optional. Added to the "By video type" nav group in docs.json. Co-Authored-By: Claude Opus <noreply@anthropic.com>
…made-but-deterministic feel Learned from a strong example prompt (not reused verbatim — different subject, same technique): a stop-motion/hand-animated look wants irregular timing, but true unseeded randomness breaks HyperFrames' determinism guarantee (same seek must always render the same frame). The correct pattern is a PRNG seeded once at composition start, stepping elements between held positions rather than tweening continuously — distinct from rule 1's continuous ambient idle, which is a different tool for a different texture. Kept separate from "The grammar, measured" (rules 1-6, empirically videoed) since there's no rendered proof for rule 7 yet — the new section and example are illustrative, not claimed as verified. Co-Authored-By: Claude Opus <noreply@anthropic.com>
…licts Two real conflicts: - docs/guides/prompting.mdx: modify/delete. This branch already deleted it (383dd35, replaced by the docs/prompting/* multi-page structure); main separately fixed one line in the old file (cf7c1d7: lint+validate -> the new consolidated `check` command). Kept the deletion — a redirect to /prompting/overview already exists in docs.json — and ported the same check-command fix forward into the two new-structure pages that still had the stale lint+validate phrasing (examples.mdx, rules-and-anti-patterns.mdx), so main's fix isn't lost. - skills-manifest.json: auto-generated, regenerated fresh via packages/cli/scripts/gen-skills-manifest.ts rather than hand-resolving the JSON conflict markers. Everything else auto-merged cleanly (no conflicts) — this pulls in main's independent work since the branch diverged (media-use v2, the check command consolidation, studio timeline updates, etc). Co-Authored-By: Claude Opus <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…+ changelog-video
…d spectacle beats
Replaces the generic card/chip/disc subjects with ones where the rule is unavoidable given the content: a payment sheet over a receipt, a split-flap departure board, and a render-farm corridor. Rules 5 and 6 in the grammar list were one-liners that under-said what their demos prove. Rule 5 now carries the mass claim, the follow-through lag, and the transforms-only caveat (a counter that overshoots renders a false value). Rule 6 credits occlusion over blur and prefers one foreground element. Section intro no longer endorses over-cranking; every movement in an applied half has to finish "this moves because...". Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Live telemetry panel, an isometric deploy pipeline wider than the frame, and a progressive edge rollout across twelve regions. In each, the rule follows from the content rather than being applied to it. Rule 2's demo carries the strongest evidence in the chapter: deleting the three stages the locked frame never shows and re-rendering leaves that half identical on all 180 frames. Rule 3 gains a rule-level distinction the rebuild surfaced — stagger what is happening, not what is merely present. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The old demo argued that a locked frame crops the story. The sharper claim is what a cut throws away: a move carries the spatial relationship between two shots, a cross-fade carries none. Five stages each get their own colour and the halves diverge on how the next colour arrives -- in place, or by travelling to it. 30-47% of pixels differ, against 3% for every version where the WITHOUT half moved the content. That 3% is the trap now documented in the rule: translating the scene and translating the camera are the same transform, so sliding content past a fixed frame is not a static comparison, it is the same shot rendered twice. Embed is cache-busted to -v2; docs images carry immutable year-long cache, so reusing the filename would serve returning visitors the old render. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
miga-heygen
left a comment
There was a problem hiding this comment.
PR #2109 Review: Prompt Guide as a novice-to-capstone arc + text corrections
Overview
A massive documentation restructure: 4423 additions, 302 deletions across 41 files. The old single-page guides/prompting.mdx (297 lines) is replaced by a 30-chapter novice-to-capstone arc under docs/prompting/ spanning 7 levels, plus text corrections from a validation campaign against the actual codebase.
This is the best documentation work I've reviewed in this repo. The motion chapter alone is a masterclass — eight rules taught through concrete before/after A/B comparisons with rendered video proofs, each rule demonstrated on a subject where the rule is unavoidable given the content ("a live feed that freezes reads as a broken connection"). The capstone film dissection traces every region back to the chapter that teaches its technique, and the vocabulary page ships rendered clips for every easing word, camera word, and marker mode. The whole arc is structurally verified: bridge chains, nav ordering, and validation builds all checked.
1. plans/ directory should not ship
Three plan files (872 lines) are internal agent-execution artifacts:
plans/prompt-guide-arc-plan.mdopens with "For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development" and contains worktree paths, branch names, and step-by-step checkbox lists.plans/prompt-guide-arc.mdandplans/prompt-guide-expansion.mdare the design specs these plans execute.
Direct precedent: commit 71e67e2f0 (same author) explicitly deleted a near-identical file (plans/hdr-followups.md) plus two notes/ files, with the message "notes/ and plans/ are working documents, not project docs." This PR reintroduces exactly the pattern that commit walked back.
Recommendation: drop these three files from the PR before merge.
2. Structural integrity — clean
Verified end-to-end:
- Nav structure: all 32
.mdxfiles have exactly onedocs.jsonentry, and vice versa. Nav ordering is strictly Level 1 → 7 → Appendix. - Redirect: old
/guides/prompting→/prompting/overviewviadocs.jsonredirects array. Old file deleted, old nav entry removed. - Bridge chain: all 31 exit bridges form a complete, unbroken sequence across all 32 pages — no breaks, no loops, no orphans. The chain matches
docs.jsonnav order line-for-line.rules-and-anti-patterns(terminal appendix) correctly has no exit bridge. - Entry bridges: every chapter except
overviewandcapstone(both open with a video hook, correct for their role as front door and grand finale) explicitly calls back to the immediately preceding chapter's concept.
Three exit-bridge title mismatches (non-blocking — plausibly deliberate shortenings for narrative flow):
| From page | Bridge text | Target's actual title: |
|---|---|---|
| overview | "Your first video" | "Product launch videos" |
| motion-graphics | "Prompt anatomy" | "Anatomy of a one-shot prompt" |
| remotion-migration | "Capstone" | "Capstone — every technique, one journey" |
3. Code-touching corrections — all verified accurate
root_composition_missing_data_start— exists atpackages/core/src/lint/rules/composition.ts:313-331, fires exactly as described. Sub-compositions correctly excluded.gsap_css_transform_conflict— exists atpackages/core/src/lint/rules/gsap.ts:458-545, correctly exempts.fromTo()/.from()calls. The doc's suggested fix matches the actualfixHint.data-composition-srcpath resolution — confirmed in both build paths (htmlBundler.tsandhtmlCompiler.ts): resolves againstprojectDir, not the referencing file.- SVG
createElementNSpivot — mechanism is real (verified in GSAP'sgetBBox()codepath), fix advice is sound. One wording note: "has no reliable center pivot" is stated as universal but the failure is conditional on zero/misreportedgetBBox()— consider softening to "may not resolve a center pivot reliably."
4. Stale rule count in motion.mdx
Frontmatter description says "Seven motion-grammar rules" but the content lists 8 rules and the body text says "The second applies the eight rules." The description should say "Eight." Same stale-reference pattern a prior commit (fix stale six-rules references to match the seven-rule grammar) already fixed once.
5. Stale /guides/prompting links in other docs
9 occurrences across 8 files still hardcode /guides/prompting (quickstart.mdx, copilot-cli.mdx, pipeline.mdx ×2, mcp.mdx, open-design.mdx, antigravity.mdx, claude-design.mdx, video-editor-cheatsheet.mdx). The redirect keeps them functional, but they should point directly to /prompting/overview (or the more specific new sub-page) rather than relying on a permanent redirect. Not blocking.
6. Missing trailing newline in docs.json
Minor formatting nit — the new version ends without \n.
Verdict
Approve — with the plans/ directory removed. The content quality is outstanding. Structural integrity verified end-to-end: bridge chain complete, nav ordering correct, redirect in place, all code-referencing claims verified against source. 40 CI checks pass.
— Miga
james-russo-rames-d-jusso
left a comment
There was a problem hiding this comment.
Reviewed at 8fb1482e7. Substantial doc restructure — 30 new prompting chapters, 3 skill/doc corrections, bridge-chain intact end-to-end (I re-verified: 31 exit bridges, every target = the next nav page, zero mismatches). Factual claims against the code hold up across the ~12 primitives / lint codes / runtime globals / PR-fix references I spot-checked (all 8 new lint rule codes in rules-and-anti-patterns.mdx map cleanly to packages/lint/src/rules/gsap.ts; the data-var-src/data-var-text allowlist matches packages/core/src/runtime/applyVariableBindings.ts; the HEVC-proxy toggles, data-composition-src resolution rule, and the #2553/#2599 fix-PR citations all reconcile with the actual code and PR history).
What I did find, mostly in the "does the guide agree with itself and with what's outside the diff" space:
Concerns
In-diff — please reconcile before merge
-
docs/prompting/motion.mdx:3— the frontmatter description still reads "Seven motion-grammar rules", but the body defines eight numbered rules (1-8, line 42 for the last title) and the "eight rules" phrase appears three separate times in the body (lines 162 / 168 / 174). Confirmed still present at8fb1482e7; today's Rule 2 rewrite didn't touch it. Flip "Seven" → "Eight" in the frontmatter. -
docs/prompting/capstone.mdx— internal timing drift inside a chapter that explicitly asserts "nothing paraphrased or trimmed" about the prompt block:- line 7 says "~62 seconds"
- line 27 (inside the "verbatim" prompt) says "~60-second"
- line 68 (inside the "verbatim" prompt) says "Render (56-60s)" — final region ends at 60s
- line 96 (the walking-the-prompt table) says "Render (0:56-1:02)" — same region, 6 seconds long
- line 104 says "all 62 seconds"
Either the prompt is 60s (drop the extra 2s from the summary line and the table) or it's 62s (extend the "Render" region to
56-62sin the prompt itself). Also flags the PR body's own "7 frames, ~48s" summary vs what the chapter actually documents: nine regions, ~60-62s. Recommend updating the PR body once the timeline resolves. -
plans/prompt-guide-arc-plan.md(+508 lines) — reads as an actionable task-list, not a design record. NoStatus: implementedheader at the top; the tasks are still- [ ]unchecked; it references paths that only exist on Vance's box (~/src/wt/hyperframes/prompt-guide, lines 13/35/48/62/472) and contains commands aimed at this PR's coordinator (gh pr edit 2109steps under Task 13). Aligned with[[feedback_aspirational_planning_doc_drift]]— a future contributor stumbling intoplans/will treat this as a live plan and either try to execute it or edit it. Suggest either (a) drop from this PR, or (b) add aStatus: implemented 2026-07-22 — historical only, do not followheader at line 1 and strip the~/src/*local paths + thegh pr edit 2109block. -
plans/prompt-guide-expansion.md(+266 lines) — same class of concern, worse in one respect: the nav proposal inside it (Fundamentals / Making it look good / By video type / By feature, lines 20-54) directly contradicts what shipped (Level 1 - Your first video ... Level 7 - Capstone). It also names rules ("never 'holds motionless'", line 82) that don't appear inrules-and-anti-patterns.mdx. Onlyprompt-guide-arc.md(line 3) mentions this doc's structure is superseded, and that supersession is invisible if a reader opens this file directly. Either add a leadingStatus: superseded by prompt-guide-arc.md and by the shipped nav in docs/docs.jsonheader, or drop.plans/prompt-guide-arc.md(+98 lines) is the exception — it hasStatus: implemented 2026-07-22at line 3, so it's the closest of the three to an actual design record. Could stay; the other two are the risky ones.
Out-of-diff — orphaned references to the old prompt guide
The PR deletes docs/guides/prompting.mdx and adds a /guides/prompting → /prompting/overview redirect (docs/docs.json:493-498). The redirect prevents 404s, but eleven callers still point at the old slug and get sent to the generic overview instead of the topical new chapter their anchor text implies:
packages/cli/src/commands/init.ts:963— user-visible: after scaffolding a new project, the CLI printsMore patterns: hyperframes.heygen.com/guides/prompting. Every fresh install advertises the deleted path.docs/quickstart.mdx:66docs/guides/pipeline.mdx:144(/media-use→ should point at/prompting/media-and-audio)docs/guides/pipeline.mdx:156(two skill mentions conflating/hyperframes-coreand/hyperframes-animationat one landing page)docs/guides/pipeline.mdx:212— Cardhrefdocs/guides/{open-design,claude-design,mcp,copilot-cli,antigravity,video-editor-cheatsheet}.mdx— Cardhrefs(six more)
The init.ts one is the highest-impact — it's the terminal string every new user hits. Suggest fixing at least that one in this PR; the seven Card hrefs can roll into a follow-up sweep.
Coverage gaps worth surfacing
The guide reads authoritative — a reader who works through it and then hits an author-facing feature that isn't covered will assume the guide has told them everything they need. The three biggest missing surfaces:
- Color grading (
packages/parsers/src/colorGradingContract.ts— 13 top-level keys: wheels, curves, hueCurves, up-to-four secondaries, LUT, effects likeasciiStyle/bloom/monoScreenShape, plus adjust keys exposure/contrast/temperature/tint/vibrance/saturation). Also has a dedicatedskills/media-use/references/grading.md. The guide's only "grade" mentions are two prose lines telling users not to grade footage. An author asking for "cinematic film grade" or "add a LUT" has zero vocabulary for this pipeline. This is the largest hole. hyperframes doctor/browser/ env-setup (packages/cli/src/commands/{doctor,browser}.ts,skills/hyperframes-cli/references/doctor-browser.md). Zero mentions across all 32 chapters. Authors hitting the WebGPU caveat invfx-and-liquid-glass.mdx:42-46are given no diagnostic path.- Introspection commands (
snapshot/inspect/info/catalogunderpackages/cli/src/commands/). Author debugging "why is my sub-composition blank" has no mapped verb — the CLI skill treatshyperframes snapshot --at <t>as required for sub-composition smoke tests but the guide never mentions any of these.
Also thin but real: hyperframes publish/present (missing terminal step; overview.mdx teaches render as terminal), --docker / --strict reproducible-render semantics (rendering-and-output.mdx doesn't touch them), Studio-directed selection edits (preview --context --json → paste hfId into prompt — invisible in editing-existing-videos.mdx), and audio-reactive animation (thin four-row table in vocabulary.mdx:122-138 for a feature that has its own lint rule + hyperframes beats command).
Storyboards vocabulary framing
docs/prompting/storyboards.mdx:16 says the chapter teaches "the vocabulary that turns 'storyboard' from a loose word into a plan the build can execute in one pass", and lines 40-64 name "One breather" and "The callback" as parts of the plan, with a per-frame template using type / persuasion / beat / focal / roles at lines 49-54. The real StoryboardFrame / StoryboardGlobals schema in packages/core/src/storyboard/types.ts:36-80 has message / arc / audience / format at the global level and scene / voiceover / transition_in / duration per frame — no beat, persuasion, breather, or callback fields. So the chapter is teaching a narrative-writing discipline, not documenting the parser's schema — that's fine as pedagogy, but the framing reads as though a lint rule might check for a breather. One clarifier sentence at the top ("These are the words we use when writing the plan; the parser's schema is a smaller machine-readable subset — see packages/core/src/storyboard/types.ts for the fields the build actually reads.") would close the gap.
Nits
docs/prompting/rules-and-anti-patterns.mdx:6— "the same eight rules" / line 26 "the linter added eight more rules". The mdx table has 8 new lint codes across 7 coded rows (one seek-order rule is cross-tagged with two codes), plus one uncoded row. Reader-facing "eight" is fine if it means "coded rules"; may want to clarify since the table shows nine rows.docs/prompting/specification-dial.mdx(19 lines) — this is the keystone Level 2 chapter thatvisual-specs.mdx:6refers back to as "the dial's third setting". Three bullets + a "Next" pointer feels light for the axis the arc is built around; no side-by-side of the three settings (mood vs tokens vs full spec) on the same prompt.docs/prompting/generated-artwork.mdx(39 lines) — light on how the generated image asset lands in the composition (path handling,<img>vs texture) and on iterating the image prompt.docs/prompting/iterating.mdx(56 lines) — no mention ofhyperframes compare(real command atpackages/cli/src/commands/compare.ts), which is the obvious "compare against previous render" hook.docs/prompting/capstone.mdx— the chapter is linked from eleven sibling chapters as "Level 7 film" but the chapter itself (title/descriptionat lines 2-3) never introduces itself as "Level 7". Minor coordination gap.docs/docs.json— final hunk in the diff shows\ No newline at end of file; every prior version ended with a newline. Mechanical.- No changelog / release-notes marker in the PR.
docs/changelog.mdxhas a## Docs & Examplessection per release (e.g. v0.7.78 line 30 credits1a2c30a79for docs work). Convention appears to be "roll into next release cut," so this may resolve at release time — worth a follow-up line so the nextbun run changelog:draftremembers it.
Questions
- Are
plans/prompt-guide-arc-plan.mdandplans/prompt-guide-expansion.mdintended as historical artifacts or is the plan to keep one/both live? If historical, could you add theStatus:headers noted above or drop them from this PR? - The 11 stale
/guides/promptingreferences — planned follow-up sweep in a separate PR, or would you rather fold at least thepackages/cli/src/commands/init.ts:963fix into this one so no shipped CLI advertises a redirected path? - Color-grading absence — is that a scoped-out gap (already handled by the media-use skill and intentionally not surfaced in the prompt arc), or worth a Level 4 or Level 5 chapter in a follow-up?
- Storyboards vocabulary framing — is the "narrative discipline as vocabulary" framing intentional, or would a one-sentence clarifier that these are prompt-plan words (not
STORYBOARD.mdschema fields) fit the pedagogy you had in mind?
What I didn't verify
- The 68 embedded S3 URLs (PR body says all 200 / video/mp4; trusting that).
- Each of the 14 HEVC-proxy PRs #2585-#2598 individually — spot-checked #2585 (shared FFmpeg resolver) and the aggregate
hevc_preview_codeclint code +--no-proxyCLI flags +.transcode-cache/behavior, all consistent with the chapter. - The four fresh-builder-agent renders (
changelog-video,proxy-footage,storyboard-mini, capstone default + re-skin). Trusting Vance's e2e testing here. enumvariable options shape (docs show{"value":..,"label":..}; parser atpackages/parsers/src/compositionVariables.ts:54only validatesArray.isArray(options)— Studio's picker may or may not support the object form, worth a spot-check).- The Lambda-HDR unavailability claim at
docs/prompting/rendering-and-output.mdx:80— I couldn't find a corresponding guard inpackages/aws-lambda/.
|
Addressed the actionable review feedback from @miga-heygen and @james-russo-rames-d-jusso in Resolved
I also checked the review’s two explicitly unverified implementation claims: enum option objects are supported by the declared parser type, Studio form, and runtime validation; distributed/Lambda HDR is explicitly rejected by the producer path and covered by tests. No additional correction was needed for either. Deliberately not expanded hereThe broader coverage ideas (color grading, doctor/browser setup, introspection commands, publish/present, Docker/strict rendering, Studio-directed edits, and deeper audio-reactive guidance) are useful follow-up topics, but they are additions rather than defects in this PR. Likewise, the 28 longer chapter introductions were explicitly left alone: changing that entry-bridge approach requires a guide-wide editorial decision, not a drive-by rewrite in this fix pass. Local verification passed: |
Summary
Two bodies of documentation work from the prompt-guide campaign:
1. Prompt Guide restructured as a novice-to-capstone arc
The 29-page reference manual (by-video-type / by-feature sections) is now a single novice-to-advanced
arc — no standalone reference sections survive ("full dissolve"). Every page becomes a chapter at the
level where the reader is ready for it, with an entry bridge ("you can already X — this adds Y") and
a literal exit bridge (
*Next: [Title](/slug) — clause.*) chaining straight into the next chapter.Bridge-chain integrity was verified end to end: all 30 chapters' exit bridges point at the actual next
page in nav order, zero mismatches.
talking-heads, music & slideshows, motion graphics), reframed as one-prompt first wins; adds a validated changelog-angle variant for
/pr-to-video, built against this repository’s own last-two-weeks digest.examplesbecomes thelevel-end gallery. Anatomy gains a note on the composition-structure mandate (feat(skills): add COMPOSITION_STRUCTURE to feedback repro packet + soft-warn lint #2599).
VFX, runtimes & 3D — reframed as additive capabilities layered onto earlier chapters.
the automatic HEVC/hostile-codec proxy subsystem (refactor(parsers): single shared FFmpeg/FFprobe binary resolver #2585–feat(media): alpha-capable authoring proxies #2598), validated with a real HEVC test
clip built into a picture-in-picture piece.
variables-no-longer-shadow-authored-CSS fix, fix(core): stop composition variables from shadowing authored CSS custom properties #2553), a brand-new Storyboards chapter (prompting
the plan instead of the scenes — arc, direction block, one breather, one callback, per-frame
negative list — validated with a real silent 3-frame build), editing, iterating, recreating
references, rendering & output, Remotion migration.
("Write HTML. Render video.") — nine regions, 62s, one long-form prompt that composes nearly every
technique the guide teaches (kinetic type, per-character code typing, a matched-motion transition,
real data-viz, a generated-artwork hybrid, a continuous camera-push montage, and a callback +
breather landing). The prompt is printed in full and dissected chapter-by-chapter. Exposes
ground/ink/productNameas composition variables and ships both the default render and a--variablesre-skin — including an honest note that one frame (a generated illustration) bakes its palette at
generation time and doesn't follow the CSS-driven override the other six frames do.
rules-and-anti-patternsbecomes the consolidated cheat sheet (existing rules linkback to where they're taught) plus 8 new lint-rule rows — seek-order safety, cold-seek visibility,
SVG draw-on — each grounded against the actual linter source (
packages/lint/src/rules/gsap.ts),phrased as prompt guidance.
New validation builds beyond the existing 64 embedded renders: the
/pr-to-videochangelog variant,proxy-footage,storyboard-mini, and the capstone film (default + re-skin) — each built exactly as written by afresh builder agent, passing
lint/check, rendered, and frame-verified before its page shipped.2. Text corrections from the validation campaign
data-start="0"; initial states viagsap.fromTo, never CSStransform+ tween on the same property.data-composition-srcresolves relative to the project root, not the referencing file.createElementNSSVG can use measured origins once attached and sized; use an explicitsvgOriginor local(0,0)geometry when measurement is unavailable.Behavior fixes from the same campaign are in #2110; Tier 3 block bugs tracked in #2107.
Test plan
/pr-to-videochangelog variant,proxy-footage,storyboard-mini, capstonedefault + re-skin) pass lint/check/render exactly as written by a fresh builder agent
docs.jsonparses; full nav walked and every exit bridge verified against the actual nextchapter in order (0 mismatches across all 30 chapters)
bun run format:checkandmintlify broken-linksboth cleanvisual frame extraction) against the render, not just the builder's own report
🤖 Generated with Claude Code