$npx -y skills add heygen-com/hyperframes --skill hyperframes-cliUse 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
| 1 | # HyperFrames CLI |
| 2 | |
| 3 | 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. |
| 4 | |
| 5 | ## Development loop |
| 6 | |
| 7 | 1. **Scaffold:** `npx hyperframes init <project>` or capture a site. In non-TTY mode, pass `--non-interactive --example=<name>`. |
| 8 | 2. **Author:** write the composition using `/hyperframes-core`. |
| 9 | 3. **Get fast feedback while editing:** run `npx hyperframes lint` after the first HTML pass and after structural changes. |
| 10 | 4. **Run the final gate:** run `npx hyperframes check`; it reruns lint before opening the browser. Do not prepend a redundant standalone lint invocation. Add `--snapshots` for annotated overview frames and finding crops. |
| 11 | 5. **Inspect sub-compositions:** when `index.html` mounts `data-composition-src`, capture midpoint snapshots and inspect each mounted scene. |
| 12 | 6. **Open the final Studio preview:** run `npx hyperframes preview`, hand the timeline project URL to the user, and ask whether to revise or render. |
| 13 | 7. **Render only after approval:** use draft quality for iteration and high quality for delivery. |
| 14 | 8. **Verify the output:** confirm the file exists, is non-empty, and has a plausible duration. |
| 15 | |
| 16 | ```bash |
| 17 | # Fast iteration check; repeat while authoring as needed. |
| 18 | npx hyperframes lint |
| 19 | |
| 20 | # Required final gate; includes lint. |
| 21 | npx hyperframes check |
| 22 | npx hyperframes preview |
| 23 | npx hyperframes render --quality high --output out.mp4 |
| 24 | test -s out.mp4 |
| 25 | ffprobe -v error -show_format out.mp4 |
| 26 | ``` |
| 27 | |
| 28 | `check` 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. |
| 29 | |
| 30 | ## Two different preview surfaces |
| 31 | |
| 32 | Do not confuse these states: |
| 33 | |
| 34 | | Surface | When it may open | Purpose | |
| 35 | | ------------------------- | ------------------------------------------------------ | --------------------------------------------------------------------------------- | |
| 36 | | Storyboard board | Before composition checks, only when `storyboard: yes` | Review plan cards and wireframe sketches. Open `?view=storyboard#project/<name>`. | |
| 37 | | Final composition preview | After `check` passes | Review the assembled timeline before render. Open `#project/<name>`. | |
| 38 | |
| 39 | The early board is not approval of the final video. Rendering always requires the final approval defined by `hyperframes-core/references/review-loop.md`. |
| 40 | |
| 41 | ## Sub-composition smoke test |
| 42 | |
| 43 | Static audits cannot catch every mount failure. When the project uses sub-compositions, capture at least one visible midpoint for each host slot: |
| 44 | |
| 45 | ```bash |
| 46 | npx hyperframes snapshot --at <t1>,<t2>,<t3> |
| 47 | ``` |
| 48 | |
| 49 | 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. |
| 50 | |
| 51 | ## Agent conventions |
| 52 | |
| 53 | - Prefer `--json` for agent and CI calls. Server-mode `render`, `preview`, and `play` do not provide ordinary JSON output; `preview --selection --json` and `preview --context --json` are query-mode exceptions. |
| 54 | - `doctor --json` always exits zero. Gate on its payload: |
| 55 | |
| 56 | ```bash |
| 57 | npx hyperframes doctor --json | jq -e '.ok' >/dev/null |
| 58 | ``` |
| 59 | |
| 60 | - Non-TTY mode is automatic. `init` requires `--example` there; use `--non-interactive` to force deterministic behavior on a TTY. |
| 61 | - Use one `HYPERFRAMES_RUN_ID` for all commands in the same verification loop. |
| 62 | - Use `--strict`, `--strict-all`, and `--strict-variables` when the corresponding warnings, variables, or CI conditions must gate the render. |
| 63 | - JSON paths redact the home directory as `$HOME`; do not try to reverse the redaction. |
| 64 | - When a hosted cloud project approaches or exceeds the 200 MB upload limit, use `cloud render --dry-run --json` and follow the `.hyperframesignore` investigation in `references/cloud.md`. Never ignore an asset merely because it is large. |
| 65 | - Never render merely because checks pass. Pause a |