- Skill ID
- heygen-com/hyperframes/hyperframes-cli
- Publisher
- heygen-com
- Repository
- hyperframes
- Installs
- 9,387
- Files
- 11
- Synced
- Sep 16, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
heygen-com/hyperframes/hyperframes-cliInstalls these files- references/beats.md
- references/cloud.md
- references/cloudrun.md
- references/compare-and-batch.md
- references/doctor-browser.md
- references/init-and-scaffold.md
- references/lambda.md
- references/lint-validate-inspect.md
- references/preview-render.md
- references/upgrade-info-misc.md
- SKILL.md
What this skill tells the agent
HyperFrames CLI
Run commands as npx hyperframes ... unless project instructions provide a wrapper. Obey the wrapper when present. The CLI requires Node.js 22 or newer and FFmpeg.
Development loop
- Scaffold:
npx hyperframes init <project>(centered blank). Or capture a site. Pass--example=<name>only to start from a named example. - Find the move: before authoring motion by hand, search for a primitive that already does it:
npx hyperframes catalog --query "reveal a headline one line at a time". Ask for the effect you want rather than the mechanism you have in mind. Install withnpx hyperframes add <name>(see/hyperframes-registry). Author by hand only once nothing fits. - Author: write the composition using
/hyperframes-core. - Get fast feedback while editing: run
npx hyperframes lintafter the first HTML pass and after structural changes. - Run the final gate: run
npx hyperframes check; it reruns lint before opening the browser. Do not prepend a redundant standalone lint invocation. Add--snapshotsfor annotated overview frames and finding crops. - Inspect sub-compositions: when
index.htmlmountsdata-composition-src, capture midpoint snapshots and inspect each mounted scene. - Open the final Studio preview: run
npx hyperframes preview --background, verify the URL returns HTTP 200, hand the timeline project URL to the user, and ask whether to revise or render. Keep it alive until review ends. - Render only after approval: use
--quality draftwhile iterating,--quality looksfor the first real encode (the CLI default), and--quality deliveryfor final delivery. - Verify the output: confirm the file exists and is non-empty. Read the render summary's second line (
beginframevsscreenshot, GPU, stage timings).screenshot+software gpuon Linux is the slow path.ffprobe -v error -show_format -show_streamsand compare duration (and fps if the brief set it) to the rootdata-duration.
Mandatory creator-edit cross-references
- Before authoring or diagnosing a zoom, punch-in/punch-out, reframe, camera move, or any keyframe motion, read
/hyperframes-keyframesfirst. - Before
hyperframes keyframes, read/hyperframes-keyframes; the command surfaces animation trajectories and does not diagnose clip cuts. - For a cut, trim, splice, reorder, or source timing edit, read
/hyperframes-coreand use its clip/timeline contract. - For fade-in/fade-out, crossfade, track gain, volume automation, ducking, voiceover carve, or FX on placed audio, read
/hyperframes-audio. Load core alongside it when clip placement or picture timing also changes. - Use
/media-useonly to source/generate media or preprocess a derived asset. Copy creator edit markup from/hyperframes-core→references/creator-editing-recipes.md.
# Fast iteration check; repeat while authoring as needed.
npx hyperframes lint
# Required final gate; includes lint.
npx hyperframes check
npx hyperframes preview --background
npx hyperframes render --quality looks --output out.mp4
test -s out.mp4
ffprobe -v error -show_format -show_streams out.mp4check runs lint first, then uses one browser session and one seek pass to audit runtime errors, failed requests, layout, *.motion.json assertions, and WCAG contrast. Persistent findings gate the exit code; transient entrance or exit findings are informational. Use --strict to gate warnings. validate, inspect, and layout remain aliases for compatibility but must not appear in new instructions or scripts.
Two different preview surfaces
Do not confuse these states:
| Surface | When it may open | Purpose |
|---|---|---|
| Storyboard board | Before composition checks, only when storyboard: yes | Review plan cards and wireframe sketches. Open ?view=storyboard#project/<name>. |
| Final composition preview | After check passes | Review the assembled timeline before render. Open #project/<name>. |
The early board is not approval of the final video. Rendering always requires the final approval defined by hyperframes/references/review-loop.md.
Sub-composition smoke test
Static audits cannot catch every mount failure. When the project uses sub-compositions, capture at least one visible midpoint for each host slot:
npx hyperframes snapshot --at <t1>,<t2>,<t3>Treat tiny unstyled content, canvas-sized icons, missing hero elements, or timeline-registration timeouts as render-blocking mount defects. See hyperframes-core/references/sub-compositions.md for the corresponding fixes.
Agent conventions
- Search the catalog before writing motion by hand.
npx hyperframes catalog --query "<the beat, in plain English>". Search is entirely local: there is no hosted tier, no account, and the query text is never sent anywhere. By default it ranks on vocabulary shared with the item's name, title and description, which misses any phrasing that does not reuse the catalog's own wording. Add--on-deviceto rank by meaning instead (see the offline tier below). - Query in English even when the video is not. Both tiers index an English catalog, so a query in another script produces no searchable terms and returns nothing. Describe the move in English; the on-screen copy stays in whatever language the video needs.
No searchable words in querymeans exactly this and is not a missing component, so do not report it as a catalog gap. - Read which tier answered; never infer it from results appearing. With
--jsonthe envelope carriesquery,tier(on-deviceorwords),tier_detail,dropped,unindexed,shown,totalandresults, plustop_scorewhen the answering tier produces one andwarningswhen a tier was asked for and could not run, or when a search returned nothing and a better tier is still waiting on someone's consent. A weak result onwordsis expected; the same result onon-deviceis a bug.top_scoreis on-device only and has no threshold behind it: the ranker returns the whole catalog in some order for every query, so read it as evidence rather than as a pass or fail. - `dropped` and `unindexed` are opposite skews between the registry and the on-device index, and rewording the query fixes neither.
droppedcounts ranked names this registry cannot install, so the strongest matches are the ones being lost.unindexedcounts registry moves the index cannot see at all, which no query can ever return. Refreshing the registry is not the answer to either: its manifest carries a 24h TTL and heals itself, while the vectors are a separately published artifact fetched into~/.hyperframes/catalog/. Re-running with--on-devicerefetches that index whenunindexedis above zero, so that is the remedy to hand the user. A pure over-coverage skew (droppedabove zero whileunindexedis zero) does not trigger the refetch; clearing~/.hyperframes/catalog/is the only way out of that one. Both counts are of names rather than of results, so either can exceedtotal.
