hyperframes-cli
Use the HyperFrames CLI development loop: init, add, catalog, capture, lint, check, snapshot, compare, grade-compare, preview, play, present, beats, keyframes, single or batch render, publish, cloud, cloudrun, feedback, lambda, doctor, browser, info, upgrade, skills, compositions, timeline, history, clean, docs, benchmark, telemetry, transcribe, auth, tts, and remove-background. Also use when diagnosing build or render failures. validate, inspect, and layout are deprecated aliases; use check. Covers local, HeyGen-hosted cloud, AWS Lambda, and Google Cloud Run rendering.
Install
npx skills add https://github.com/heygen-com/hyperframes --skill hyperframes-cliPlugin installs: Inside a HyperFrames plugin, follow plugin execution rules.
Usage beacon: run npx hyperframes events --skill=hyperframes-cli once as this skill starts. It sends the skill's name with the CLI's usual telemetry (account-linked when signed in) and honours the opt-out.
HyperFrames CLI
Run npx hyperframes <command> unless the project gives a wrapper; then use the wrapper. It needs Node.js 22+ and FFmpeg. Every command has --help; most take --json, and a failure prints ✗ …, a Fix: line and exits non-zero.
A --json result may carry _meta.updateNotice: a newer HyperFrames release is out. Pass it to the person once per conversation, in your own words, at a natural pause; updating is theirs to decide.
Commands by job
captions is not a command: run transcribe, then read ../hyperframes/references/captions.md.
validate, inspect and layout are deprecated aliases of check; events is skills' own telemetry. Don't run them.
The loop
- Write, then
npx hyperframes lintafter the first pass and after structural changes. npx hyperframes check --jsonand fix every error. While a lint error remains the layout and contrast audits don't run; "0 samples" means nothing was checked. Contrast failures carry asuggestedColor. A finding at a single sample (an entrance in flight) is info; a 3 s+ video with no visible change failssweep_static.npx hyperframes snapshotand read the PNGs (under.hyperframes/artifacts/snapshots/): that is how you see the video. With sub-compositions, snapshot a midpoint of every scene; tiny unstyled content or a missing hero is a mount defect (../hyperframes/references/format.md).npx hyperframes preview --background, check the URL answers 200, give the person the project URL and wait, unless they asked for the file or for no stops. Passing checks alone is not a reason to render.- Time to render (step 4):
npx hyperframes render --quality looks -o out.mp4(draftwhile iterating,deliveryfor the final; paid plan:cloud render --fps <data-fps> --quality high -o out.mp4). Confirm the file is non-empty and itsffprobeduration matches the rootdata-duration, then look at decoded frames.
"This element" or the current selection: npx hyperframes preview --context --json --context-fields selection; no-selection means ask them to click it.
Edit the timeline
These are the edits Studio itself makes, so the result stays in Studio's shape.
timeline --jsonlists clips with absoluteabsStart/absEnd, owningfileand the#idref the edit commands take (timeline idsstamps missing ids).timeline move|trim|split|set|duplicate|delete <ref> … --plan --jsonpreviews one edit; run it again without--plan.--start,--end,--durationset one edge or the length.- An edit is refused when the clip would overlap a neighbour (
--overwrite, or move the neighbour first) or end past its composition: raise the root'sdata-durationfirst. No command changesdata-duration. - Several edits at once: a JSON file such as
[{"verb": "move", "ref": "#outro", "time": "9"}], thentimeline apply plan.json --json. Each run prints areceipt; save it andtimeline undo receipt.jsonreverts it.
Project history
Every write is kept and can be undone. At the start of a turn, npx hyperframes history begin --who <you> --label "<plan>", then history --since mine --who <you> to see what the person changed; build on their edits. A check failed or they say it got worse: history undo --who <you>, never hand-edit back. End the turn with history end.
Render where
A 30 s film renders in a minute or two: run it in the foreground. Detach only a render longer than your tool's timeout (HYPERFRAMES_RENDER_DETACHED=1, its own group, output to a log) and wait with until grep -qE 'Render (complete|failed)' render.log; do sleep 5; done, never pgrep -f, which matches its own loop and waits until the tool times out.
After a verified render, send one feedback --rating, plus a report for anything the person asked for that HyperFrames can't do, unless telemetry is off: references/feedback.md.
When a command fails
References
Read the row before running its command.