```bash
npx skills add heygen-com/hyperframes --all
```
@@ -82,7 +82,7 @@ Atomic capabilities the creation workflows compose against — pull one when you
| `/hyperframes-creative` | Non-animation creative direction — `frame.md` / `design.md`, palettes, typography, narration, beat planning, audio-reactive visuals, composition patterns. |
| `/hyperframes-media` | Audio + media — TTS voiceover, background music, sound effects, Whisper transcription, background removal, caption authoring (one shared audio engine). |
| `/media-use` | Resolve any media need (BGM, SFX, image, icon) into a frozen local file + ledger record. One verb (`resolve`) over the HeyGen catalog with manifest tracking. |
-| `/hyperframes-cli` | CLI dev loop — `init`, `lint`, `validate`, `inspect`, `preview`, `render`, `publish`, `doctor`, plus AWS Lambda cloud rendering (`lambda deploy / render / progress`). |
+| `/hyperframes-cli` | CLI dev loop — `init`, `lint`, `validate`, `inspect`, `preview`, `render`, `publish`, `doctor`, plus AWS Lambda cloud rendering (`lambda deploy / render / progress / destroy / policies`). |
| `/hyperframes-registry` | Install and wire registry blocks and components into compositions via `hyperframes add`. Authoring a new block or component to contribute upstream. |
| `/figma` | Import Figma assets, tokens, components, and storyboard sections → animatics (REST/CLI) plus Motion animations and shaders (MCP) into a composition. |
diff --git a/docs/guides/troubleshooting.mdx b/docs/guides/troubleshooting.mdx
index aa9007bb7..94f143f6c 100644
--- a/docs/guides/troubleshooting.mdx
+++ b/docs/guides/troubleshooting.mdx
@@ -13,7 +13,7 @@ If your issue is about a specific coding mistake (animations not working, video
```html index.html
+ data-width="1920" data-height="1080">
```
diff --git a/docs/guides/website-to-video.mdx b/docs/guides/website-to-video.mdx
index eaaac28f1..fd530f9fb 100644
--- a/docs/guides/website-to-video.mdx
+++ b/docs/guides/website-to-video.mdx
@@ -29,7 +29,7 @@ Give your AI agent a URL and a creative direction. It captures the site, extract
Create a 25-second product launch video from https://example.com. Bold, cinematic, dark theme energy.
```
- The agent loads the skill when they see a URL and a video request, and runs the full pipeline — capture, design, script, storyboard, voiceover, build, validate.
+ The agent loads the skill when they see a URL and a video request, and runs the full pipeline — capture, design, strategy & messaging, storyboard + script, voiceover, build, validate.
Agents also trigger this skill automatically when they see a URL and a video request.
@@ -65,12 +65,12 @@ The skill follows the [Hyperframes pipeline](/guides/pipeline): seven steps, eac
| Step | Output | What happens |
|------|--------|-------------|
| **Capture** | `capture/` | Extract screenshots, design tokens, fonts, assets, animations |
-| **Design** | `DESIGN.md` | Brand reference — colors, typography, do's and don'ts |
-| **Script** | `SCRIPT.md` | Narration text with hook, story, proof, CTA |
-| **Storyboard** | `STORYBOARD.md` | Per-beat creative direction — mood, assets, animations, transitions |
+| **Design** | `DESIGN.md` | Brand reference — colors, typography, component stylings, spacing, iteration guide |
+| **Strategy & Messaging** | — | Align on video type, style, the ONE message, and narrative arc |
+| **Storyboard + Script** | `STORYBOARD.md` + `SCRIPT.md` | Concept-first storyboard and narration script, written together |
| **VO + Timing** | `narration.wav` + `transcript.json` | TTS audio with word-level timestamps |
| **Build** | `compositions/*.html` | Animated HTML compositions, one per beat |
-| **Validate** | Snapshot PNGs | Visual verification before delivery |
+| **Validate** | Snapshot PNGs + lint/validate pass | Visual verification and runtime checks before delivery |
See [the pipeline guide](/guides/pipeline) for a detailed walkthrough of each step, the contents of every generated file, and how to iterate without re-running the whole pipeline. The structure is useful for any Hyperframes project, not just website captures.
@@ -81,11 +81,10 @@ The prompt determines the format. Include a duration and creative direction:
| Type | Duration | Example |
|------|----------|---------|
| Social ad | 10–15s | _"15-second Instagram reel. Energetic, fast cuts."_ |
-| Product launch | 20–30s | _"25-second product launch. Apple keynote energy."_ |
-| Product tour | 30–60s | _"45-second tour showing the top 3 features."_ |
-| Brand reel | 15–30s | _"20-second brand video. Celebrate the design."_ |
-| Feature announcement | 15–25s | _"Feature announcement highlighting the new AI agents."_ |
-| Teaser | 8–15s | _"10-second teaser. Super minimal. Just the hook."_ |
+| Product demo | 30–60s | _"45-second demo showing the top 3 features."_ |
+| Feature announcement | 15–30s | _"Feature announcement highlighting the new AI agents."_ |
+| Brand reel | 20–45s | _"30-second brand video. Celebrate the design."_ |
+| Launch teaser | 10–20s | _"12-second teaser. Super minimal. Just the hook."_ |
Creative direction matters more than format. _"Playful, hand-crafted feel"_ or _"dark, developer-focused, show code"_ shapes the storyboard and drives every visual decision the agent makes.
diff --git a/docs/packages/cli.mdx b/docs/packages/cli.mdx
index 2df790629..2d6363eb8 100644
--- a/docs/packages/cli.mdx
+++ b/docs/packages/cli.mdx
@@ -667,8 +667,10 @@ Word-level transcripts (whisper output) are grouped into readable caption cues o
| Flag | Values | Default | Description |
|------|--------|---------|-------------|
| `--output` | path | `renders/.mp4` | Output file path |
- | `--format` | mp4, webm, mov, png-sequence | mp4 | Output format (WebM/MOV render with transparency; png-sequence writes a directory of RGBA PNGs) |
- | `--fps` | 24, 30, 60 | 30 | Frames per second |
+ | `--composition, -c` | path | `index.html` | Render a specific composition file instead of `index.html` |
+ | `--format` | mp4, webm, mov, gif, png-sequence | mp4 | Output format (WebM/MOV render with transparency; gif for inline embeds; png-sequence writes a directory of RGBA PNGs) |
+ | `--fps` | 1-240 or rational (e.g. `30000/1001`) | 30 | Frames per second |
+ | `--gif-loop` | 0-65535 | 0 | GIF loop count (`0` = loop forever). Only applies with `--format gif` |
| `--quality` | draft, standard, high | standard | Encoding quality preset (drives CRF/bitrate) |
| `--crf` | 0-51 | — | Override encoder CRF (lower = higher quality). Mutually exclusive with `--video-bitrate` |
| `--video-bitrate` | e.g. `10M`, `5000k` | — | Target video bitrate. Mutually exclusive with `--crf` |
@@ -676,7 +678,7 @@ Word-level transcripts (whisper output) are grouped into readable caption cues o
| `--resolution` | landscape, portrait, landscape-4k, portrait-4k, square, square-4k (aliases: `1080p`, `4k`, `uhd`, `1080p-square`, `square-1080p`, `4k-square`) | — | Output resolution preset. Supersamples a smaller composition via Chrome `deviceScaleFactor` so the screenshot lands at the requested dimensions. Aspect ratio must match the composition; the scale must be an integer multiple. Not supported with `--hdr`. See [4K Rendering](/guides/4k-rendering) |
| `--hdr` | — | off | Force HDR output even if no HDR sources are detected. MP4 only. See [HDR Rendering](/guides/hdr) |
| `--sdr` | — | off | Force SDR output even if HDR sources are detected |
- | `--workers` | 1-8 | 4 | Parallel render workers |
+ | `--workers` | 1-24 or `auto` | auto | Parallel render workers (auto = CPU cores minus 2) |
| `--low-memory-mode` / `--no-low-memory-mode` | — | auto (≤ 8 GB RAM) | Force the low-memory safe render profile on or off. Safe mode pins to 1 worker, uses screenshot capture, and skips auto-worker calibration so the pipeline doesn't launch multiple concurrent Chrome instances on constrained machines. Auto-detection reads **host** RAM (`os.totalmem()`), not cgroup/container limits — containerised or serverless callers (incl. `--docker`) should set `PRODUCER_LOW_MEMORY_MODE` explicitly. Env fallback `PRODUCER_LOW_MEMORY_MODE`. |
| `--gpu` | — | off | GPU encoding (NVENC, VideoToolbox, AMF, VAAPI, QSV) |
| `--browser-gpu` / `--no-browser-gpu` | — | on locally, off in Docker | Use or opt out of host GPU acceleration for local Chrome/WebGL capture |
diff --git a/docs/packages/core.mdx b/docs/packages/core.mdx
index 1938d5848..f5f36a14c 100644
--- a/docs/packages/core.mdx
+++ b/docs/packages/core.mdx
@@ -62,11 +62,6 @@ import {
isTextElement,
isMediaElement,
isCompositionElement,
- isStringVariable,
- isNumberVariable,
- isColorVariable,
- isBooleanVariable,
- isEnumVariable,
} from '@hyperframes/core';
// Constants
@@ -183,18 +178,16 @@ const result = validateCompositionHtml(html);
```typescript
import {
- parseGsapScript,
serializeGsapAnimations,
- updateAnimationInScript,
- addAnimationToScript,
- removeAnimationFromScript,
- getAnimationsForElement,
+ getAnimationsForElementId,
validateCompositionGsap,
keyframesToGsapAnimations,
gsapAnimationsToKeyframes,
- SUPPORTED_PROPS, // animatable properties
- SUPPORTED_EASES, // available easing functions
} from '@hyperframes/core';
+
+// GSAP parsing, mutation, and constants live in @hyperframes/parsers:
+import { parseGsapScript, SUPPORTED_PROPS, SUPPORTED_EASES } from '@hyperframes/parsers/gsap-parser';
+import { updateAnimationInScript, addAnimationToScript, removeAnimationFromScript } from '@hyperframes/parsers/gsap-writer-acorn';
import type { GsapAnimation, GsapMethod, ParsedGsap } from '@hyperframes/core';
// Parse GSAP script into structured animations
@@ -258,7 +251,7 @@ import { lintHyperframeHtml, lintMediaUrls } from '@hyperframes/core/lint';
import type {
HyperframeLintResult,
HyperframeLintFinding,
- HyperframeLintSeverity, // "error" | "warning"
+ HyperframeLintSeverity, // "error" | "warning" | "info"
HyperframeLinterOptions,
} from '@hyperframes/core/lint';
diff --git a/docs/packages/engine.mdx b/docs/packages/engine.mdx
index 691be7939..4fa1edfb6 100644
--- a/docs/packages/engine.mdx
+++ b/docs/packages/engine.mdx
@@ -38,7 +38,7 @@ The engine implements a **seek-and-capture** loop that is fundamentally differen
Your HTML composition is loaded into a browser page. The Hyperframes runtime is injected to manage timeline seeking.