mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-01 19:42:03 +00:00
5fceab9279496786a8d7de4d2b27ccf8af8a85c6
* fix(ci): publish CLI from temp copy to avoid workspace mutation Copy packages/cli to a temp directory before renaming to "hyperframes" for publish. Avoids corrupting the workspace if the job fails mid-way. Addresses review feedback on #47. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(ci): resolve leftover conflict markers in publish.yml Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(cli): add skills install command Adds `hyperframes skills install` to download and install HyperFrames and GSAP skills globally to ~/.claude/skills/. Also adds `hyperframes skills list` to show installed skills. - HyperFrames skills: bundled in CLI dist, copied from dist/skills/ - GSAP skills: cloned from github.com/greensock/gsap-skills - Cache: ~/.cache/hyperframes/gsap-skills/ (shallow clone, updated on install) - Handles overwriting existing skills (removes before copy) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor(cli): simplify skills to flat command `hyperframes skills` directly installs + shows summary. No subcommands needed — list was redundant since install already prints all installed skills. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(cli): scope skills summary to only HyperFrames and GSAP skills The summary now only lists skills installed by this command, grouped by source (HyperFrames vs GSAP), instead of listing everything in ~/.claude/skills/. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(cli): correct dev path for bundled skills directory Path needed 4 levels up from cli/src/commands/ to reach repo root, not 3. Was resolving to packages/.claude/skills/ instead of .claude/skills/. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(cli): support multiple AI coding tools for skills install Install to Claude Code, Gemini CLI, and Codex CLI by default. Use flags to target specific tools: hyperframes skills # claude + gemini + codex hyperframes skills --cursor # cursor only (project-level) hyperframes skills --claude # claude only Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(cli): move skills to repo root, support multi-CLI install - Move skills from .claude/skills/ to skills/ (tool-agnostic location) - Install to Claude Code, Gemini CLI, Codex CLI by default - Add --claude, --gemini, --codex, --cursor flags for targeting specific tools - Update build script to copy from skills/ instead of .claude/skills/ Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: add infographics skill for data visualization compositions Professional infographic design and animation patterns: - Typography hierarchy (hero stat, label, context) - Layout rules (grid-aligned, generous whitespace, 2-color max) - 5 infographic types: single stat, comparison, bar chart, progress, steps - Animation patterns: count-up, bar growth, entrance choreography, exits - Narration sync (stat appears when narrator says the number) - Design constraints (no gradients, no shadows, no clip art) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: add evals for infographics skill Three eval scenarios testing design quality and animation correctness: 1. Single stat — count-up animation synced to narration 2. Comparison — before/after reveal with visual hierarchy 3. Process steps — sequential reveal with dimming Each eval has PASS/FAIL criteria covering: composition structure, design rules (typography, layout, color), animation patterns (timing, easing, choreography), and anti-patterns. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor: remove infographics and transitions skills, add asset-management Removed skills that don't add value beyond model knowledge: - infographics: model already produces equivalent output without it - transitions: patterns are derivable from compose-video constraints Added: - asset-management: organize user-uploaded files into assets/ and fonts/ - Typography section in compose-video: min font sizes, font loading (Google Fonts + local @font-face), weight pairing, font-display:block - Assets section in compose-video: project structure with assets/ and fonts/ directories, path rules, CORS, "check before creating" rule Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor: consolidate skills to 3, split compose-video under 500 lines Removed skills that don't add value beyond model knowledge: - media: duplicates compose-video - social-media: platform safe areas are the only unique content - infographics: model produces equivalent output without it - transitions: patterns derivable from compose-video Remaining skills (3): - compose-video: core framework contract (452 lines, under 500 limit) - patterns.md: PiP, title card, slideshow examples (loaded on demand) - typography-and-assets.md: font loading, sizes, asset paths (on demand) - captions: tone-adaptive caption styling from script analysis - asset-management: organize uploaded files into project directories Rewrote captions skill to focus on style detection from transcript content (per-word styling, tone mapping) rather than mechanical rules. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(cli): create assets/ and fonts/ directories on init - scaffoldProject now creates assets/ and fonts/ directories - Video files are placed in assets/ instead of project root - Template __VIDEO_SRC__ placeholders resolve to assets/filename Aligns with the compose-video skill's project structure convention where user-provided media goes in assets/ and fonts in fonts/. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor(cli): fetch skills from GitHub repos instead of bundling Skills are now fetched directly from their source repos at runtime: - HyperFrames skills: github.com/heygen-com/hyperframes (skills/ dir) - GSAP skills: github.com/greensock/gsap-skills (skills/ dir) Both cached in ~/.cache/hyperframes/ and updated on each run. Removed skills bundling from build:copy step. Requires the hyperframes repo to be public for HyperFrames skills to install. GSAP skills work immediately (public repo). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(cli): install skills automatically during init After scaffolding a new project, `hyperframes init` now runs `hyperframes skills` to install HyperFrames and GSAP skills. Best-effort — if skill installation fails (no git, no network), project creation still succeeds. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(cli): show skills install feedback during init Added installAllSkills() export for programmatic use by init. Init now shows a spinner and result message: "11 AI skills installed (Claude Code, Gemini CLI, Codex CLI)" Falls back gracefully if git or network unavailable. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(cli): let users select which AI tools to install skills for Interactive init now shows a multi-select prompt: "Install AI coding skills for: Claude Code, Gemini CLI, Codex CLI, Cursor" Users can deselect tools they don't use or add Cursor (off by default). Non-interactive mode still installs to all default targets. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(cli): prevent git credential prompt from hanging skills install Set GIT_TERMINAL_PROMPT=0 so git clone/pull fails immediately on private repos instead of hanging for username/password input. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(cli): show skipped skill sources and accurate counts Skills install now reports which sources failed (e.g., private repo) and only counts skills that actually installed. Prompt text simplified to "Install skills for:". Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(cli): clean up skills command output - Skipped sources shown as dim text, not error with full command - Summary shows "Skipped: HyperFrames (repo not accessible)" - Outro says "ready" not "installed" - Shows "No skills installed" if everything failed Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(cli): clarify partial skill install in outro message When some sources fail, the outro now says which skills are ready and which are unavailable, instead of a misleading total count. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore: remove planning docs and test scaffolding Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore: remove eval projects and test examples Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore: remove remaining test project data Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(cli): use generic source names in skills install outro message Replace hardcoded "GSAP skills ready. HyperFrames skills unavailable." with a dynamic message listing which sources succeeded and which were skipped, so the message stays correct as sources change. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(cli): address review feedback on skills install - Lazy process.cwd() for Cursor target (getter, not module-load) - Track overwritten skills (logged in install output) - Add --skip-skills flag to init for agent-friendly non-interactive use - Guard both interactive and non-interactive paths with skipSkills Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(cli): remove assets/ and fonts/ directories from init Video files go to project root, not assets/. Removes assetsDir, fonts/ directory creation, and assets/ prefix from video path. Flat project root convention consistent with compose-video skill. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(cli): address review items 5, 6, 13 — execFileSync, resilient cache, clear counting - Replace all execSync with execFileSync for git commands (prevent injection) - On git pull failure, reuse stale cache if skills dir exists instead of nuking - Extract gitClone() helper for consistent clone calls - Use explicit counted flag instead of confusing target === targets[0] Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Hyperframes
Write HTML. Render video. Built for agents.
Hyperframes is an open-source video rendering framework that lets you create, preview, and render HTML-based video compositions — with first-class support for AI agents via MCP.
Why Hyperframes?
- HTML-native — AI agents already speak HTML. No React required.
- Frame Adapter pattern — bring your own animation runtime (GSAP, Lottie, CSS, Three.js).
- Deterministic rendering — same input = identical output. Built for automated pipelines.
- AI-first design — not a bolted-on afterthought.
Quick Start
npx hyperframes init my-video
cd my-video
npx hyperframes dev # preview in browser
npx hyperframes render # render to MP4
Requirements: Node.js >= 22, FFmpeg
How It Works
Define your video as HTML with data attributes:
<div id="stage" data-composition-id="my-video" data-start="0" data-width="1920" data-height="1080">
<video
id="clip-1"
data-start="0"
data-duration="5"
data-track="0"
src="intro.mp4"
muted
playsinline
></video>
<img id="overlay" data-start="2" data-duration="3" data-track="1" src="logo.png" />
<audio
id="bg-music"
data-start="0"
data-duration="9"
data-track="2"
data-volume="0.5"
src="music.wav"
></audio>
</div>
Preview instantly in the browser. Render to MP4 locally. Let AI agents compose videos using tools they already understand.
Packages
| Package | Description |
|---|---|
hyperframes |
CLI — create, preview, lint, and render compositions |
@hyperframes/core |
Types, parsers, generators, linter, runtime, frame adapters |
@hyperframes/engine |
Seekable page-to-video capture engine (Puppeteer + FFmpeg) |
@hyperframes/producer |
Full rendering pipeline (capture + encode + audio mix) |
@hyperframes/studio |
Browser-based composition editor UI |
Documentation
Full docs at hyperframes.heygen.com — includes guides, concepts, API reference, and package documentation.
Contributing
See CONTRIBUTING.md for guidelines on how to contribute.
License
See LICENSE for details.
Languages
TypeScript
86%
JavaScript
9.3%
CSS
4.1%
Shell
0.3%
Python
0.2%