hyperframes-core
Skill2 starsChanged 14 days agoApache-2.0View on GitHub
The HyperFrames composition contract — build one renderable project. Use for composition structure, the `data-*` timing attributes, `class="clip"`, tracks, sub-compositions, variables, framework-owned media playback, deterministic-render rules, and validation. Read before writing composition HTML.
We split this skill into the rules it gives an agent
12 rules. 1 is common, 1 is distinctive, and 10 are very specific to this project.
1
Common
Most of the 21 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
10
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 6
Plugin installs: Before setup or freshness commands, follow plugin execution rules when this skill is inside a HyperFrames plugin.
- Very specific: line 13
Do not add a scene-exit tl.set(..., {visibility:"hidden"}).
- Very specific: line 15
After render, read the summary's second line: beginframe vs screenshot, GPU mode, stage timings.
- Very specific: line 62
Never pair a CSS initial transform with a GSAP tween on the same property — the CSS value and the tween's start fight and lint rejects it …
- Very specific: line 63
Never put crossorigin on <video>/<audio>.
- Very specific: line 64
Never give a <video data-start> an ancestor that also carries data-start.
- Very specific: line 65
Every <audio> needs an id.
- Very specific: line 66
Never tween a .clip with autoAlpha or visibility — lint rejects it with gsap_animates_clip_element.
- Very specific: line 76
No render-time clocks / unseeded Math.random / network / input-state.
- Very specific: line 77
Never tween display, visibility, or autoAlpha on a .clip element.
- Common: line 85
Read the files first. Preserve unrelated timing, tracks, IDs, variables, media paths.
- Very specific: line 98
Use hyperframes-cli for command details
“Common” is measured: kept by at least 6 in 10 of the 21 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Plugin installs: Before setup or freshness commands, follow plugin execution rules when this skill is inside a HyperFrames plugin. Standalone installs keep the update instructions below.
HyperFrames Core
Agent pitfalls (read first):
- Center with flex/
inset, not CSStransform: translate(-50%,-50%)on a node you then GSAPx/y. Lint:gsap_css_transform_conflict. UsefromToorxPercent/yPercent. - Do not add a scene-exit
tl.set(..., {visibility:"hidden"}). The runtime already hides timed clips. Opacity fades on inner nodes (oropacityon.clip) are enough. Caption hard-kills are a different rule. window.__timelines["id"]must match the rootdata-composition-id.- After
render, read the summary's second line:beginframevsscreenshot, GPU mode, stage timings.screenshot+software gpuon Linux is the slow path.
HyperFrames renders video from HTML. A composition is an HTML file whose DOM declares timing with data-* attributes, whose animation runtime is seekable, and whose media playback is owned by the framework.
This skill is the technical contract — how to build one hyperframes project. The body below is the build guide; per-topic detail lives in references/ (index next), read on demand. Process docs (brief, storyboard, review, production, dispatch, frame-worker) live in /hyperframes → references/. Other concerns live in the sibling domain skills — hyperframes-animation, hyperframes-creative, media-use, hyperframes-cli, hyperframes-registry. The capability map in /hyperframes says what each one covers.
References
| File | Read it to… |
references/minimal-composition.md | start from the smallest renderable composition skeleton |
references/composition-patterns.md | choose monolithic vs modular; structure a modular index.html; pick a sub-comp archetype |
references/data-attributes.md | look up any data-* (root / clip / sub-comp host / legacy aliases); use class="clip" |
references/tracks-and-clips.md | understand what data-track-index does (and does not) control, z-index, time a clip relative to another; list every track and clip with npx hyperframes timeline |
references/creator-editing-recipes.md | copy truthful cut/trim/reorder/retime/freeze/camera/mask/crossfade/audio editing recipes and their limits |
references/sub-compositions.md | wire a sub-composition (host attrs, <template>, per-instance vars) and animate inside it |
references/variables-and-media.md | declare variables; place <video>/<audio>, set volume, trim |
references/determinism-rules.md | build a seekable timeline; determinism bans; layout / text fit |
references/full-screen-motion.md | author full-frame motion with shared backgrounds |
references/tailwind.md | work in a Tailwind v4 project (init --tailwind; runtime contract differs from Studio's v3) |
For animation runtime specifics (GSAP API, Lottie, Three.js, etc.) go to hyperframes-animation → adapters/<runtime>.md.
Building a composition
Two root forms (not interchangeable)
- Standalone (top-level
index.html): root<div data-composition-id="…">sits directly in<body>, no<template>wrapper. Wrapping a standalone root hides all content andlintrejects it (standalone_composition_wrapped_in_template, error). - Sub-composition (loaded via
data-composition-src): wrap the root in<template>. This is the shape to write: the loader also accepts a plain full document and falls back to its<body>, but the templated form is what the examples and tooling assume.
⚠ Transport rule: for a templated sub-composition the assembler drops the file's own
<head><style>/<script>(packages/core/src/compiler/compositionAssembly.ts, thehasTemplategate), so put<style>/<script>inside the template.<link>is hoisted either way. ⚠ Host-id convention: give the host slot, the inner template, and thewindow.__timelines["<id>"]key the same id. A different local id is supported (the assembler falls back to the first root in the file) but the mismatch is silent, so match them unless you have a reason not to.
File shape, host wiring, and the pre-render checklist → references/sub-compositions.md.
Root must be sized (silent layout bug)
The standalone root authors width/height: 100%. Canvas size is data-width/data-height. The runtime stamps those pixels onto the composition root. Do not hardcode 1920px/1080px on #root. Skeleton → references/minimal-composition.md.
One paused timeline
Each composition registers exactly one gsap.timeline({ paused: true }) at window.__timelines["<id>"] (key = root data-composition-id). Building it inside an async callback (document.fonts.ready) is supported; what matters is that you register only after the build completes. Render length is the root's data-duration, not the timeline's length: a timeline that runs past it is cut off, and one that ends early holds its last frame. Omit the root data-duration and the length is inferred instead (timeline, media window, or adapter). You do not need window.__timelines = window.__timelines || {}: the runtime creates the registry before your inline scripts run, and lint no longer asks for it. Don't manually nest sub-timelines into the host; the runtime auto-nests registered child timelines. Full contract (incl. non-GSAP runtimes) → references/determinism-rules.md + hyperframes-animation/adapters/.
First-pass lint gotchas (a guaranteed first build failure)
Rules that lint does catch, but only after the fact. Write them right the first time:
- Never pair a CSS initial
transformwith a GSAP tween on the same property — the CSS value and the tween's start fight andlintrejects it withgsap_css_transform_conflict. Set the initial state inside the tween withgsap.fromTo(el, { x: -40 }, { x: 0 })instead of a CSStransform: translateX(-40px). - Never put
crossoriginon<video>/<audio>.lintrejects it unconditionally withmedia_crossorigin_breaks_preview(error), including for canvas/WebGL/WebAudio readback. There is no suppression. - Never give a
<video data-start>an ancestor that also carriesdata-start.lintrejects it withvideo_nested_in_timed_element(error). Time the wrapper or the video, not both. - Every
<audio>needs anid.lintrejects it withmedia_missing_id, and an id-less<audio>is never picked up by the mixer, so the render is silent. - Never tween a
.clipwithautoAlphaorvisibility—lintrejects it withgsap_animates_clip_element. Animate a child instead. - A named CSS
font-familyneeds an in-file@font-faceto a shipped local file, orlintfiresfont_family_without_font_face. - Sub-composition
#rootuseswidth/height: 100%(orinset: 0), not hardcoded1920px/1080px. Canvas size isdata-width/data-height.
A lint error also switches off the layout and contrast audits: check then reports 0 sample(s) and 0/0 text checks, which reads like a clean file but means nothing ran. Clear lint errors before you trust those numbers.
Non-negotiable rules (silent bugs automated gates may miss)
Surfaced here; full rationale in the linked reference. Do not violate:
- No render-time clocks / unseeded
Math.random/ network / input-state;repeat: -1only under a finite rootdata-duration(export clips to it — otherwise use a finite count). →determinism-rules.md - Never tween
display,visibility, orautoAlphaon a.clipelement. The framework owns clip visibility, andlintrejects it (gsap_animates_clip_element). Animate a child instead. →determinism-rules.md - No
<br>in body text; transformed elements must be block-level + sized; pulsing absolute decoratives need peak clearance. →determinism-rules.md <video>/<audio>are found by a flat document query, so the framework seeks and decodes them at any nesting depth (including inside a sub-comp<template>or wrapper). One hard limit:linterrors if a<video data-start>sits inside another plain element that also hasdata-start, and the failure is real (wrong source frames, then the clip vanishes mid-slot), so put the timing on the wrapper or on the video, never both. Sub-composition hosts are exempt: media inside a sub-composition renders correctly. The other caveat is timelines, not placement: a sub-comp timeline can't animate host-root elements. →variables-and-media.md- Keep every
idunique across the assembled page (prefix sub-comp ids with the composition id,#<id>-hero) so your own#idCSS andgetElementByIdcalls resolve. Frame injection no longer depends on it: the compiler stamps a document-uniquedata-hf-render-idon everyvideo[src]/audio[src]/img[src]. Media that uses<source>children instead of asrcattribute is not stamped, so unique ids still matter there. →composition-patterns.md - A full-screen fill on the composition root is fine on a normal render. It is dropped only on the layered-composite path (HDR content, or a composition using shader transitions), where the engine forces every composition root transparent so the layer beneath shows through. If your composition uses shader transitions or HDR media, put the fill on a full-bleed child (
position:absolute; inset:0). →composition-patterns.md
Editing existing compositions
- Read the files first. Preserve unrelated timing, tracks, IDs, variables, media paths.
- To know what is on a project's timeline (tracks, clips, starts, ends, what plays), run
npx hyperframes timeline [--json]instead of readingindex.htmland every sub-composition file. - Match existing composition IDs and timeline keys.
- Adding a clip: set its
data-start/data-durationintentionally against the clips around it.data-track-indexis a Studio display lane, not a timing constraint, so it does not need to be free. - A clip that ends past the root
data-durationis cut off: extend the rootdata-durationto the clip's end in the same edit (lintwarnsclip_ends_past_root_duration). - A clip nested inside another timed element counts its
data-startfrom the composition, not from that element, and shows only while that element shows.timelinelists it under its parent and warnsnever visiblewhen the windows miss (lintreportsnested_clip_never_visible). data-hiddenon any composition element hides it in BOTH preview and render, overriding its time window; it is non-destructive/reversible and toggled by Studio's timeline eye icon.- Adding a sub-composition: verify its internal
data-composition-idbefore wiring the host.
Validation
Use hyperframes-cli for command details
npx hyperframes checkpasses (0 findings across lint, runtime, layout, motion, and contrast)- Projects with sub-compositions:
npx hyperframes snapshot --at <midpoints>and eyeball each frame npx hyperframes preview --backgroundfor review (the user can edit anything in Studio's timeline, and the server survives the invoking command)npx hyperframes renderonly after the user approves
Other versions25 projects use a version of this.
Word for word · 3
- tuan3w/herdr-mobile★ 17100% same
- taljeon/plzdo★ 9100% same
- vinayaksaxena1-maker/antigravity-disaster-recovery★ 0100% same
Edited · 21
- calesthio/OpenMontage★ 72k52% same
- EvovexAI/EvoFlow★ 43652% same
- duyet/clickhouse-monitoring★ 30352% same
- edenfunf/reelmimic★ 17299% same
- PinkR1ver/vibe-roast★ 4949% same
- Jakeschincariol/video-production-skills★ 1581% same
- EthanYoQ/Skill-hub★ 1181% same
- STARDUSTLC666/dsh-hyperframes★ 1199% same
- LinHao-city/StoryMind★ 1052% same
- Samin12/skills★ 850% same
11 more not listed
Wrote their own version · 1
- Rajveerx11/skills★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use hyperframes-studio, talking-head-recut and 7 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
eyaprakSkillhyperframes-studio
HyperFrames ile bir açılış hook'u (yatay 16:9 intro), dikey 9:16 Shorts ya da 16:9 animasyonlu slidedeck üretmek için hepsi bir arada studio. Ham konuşma klibini ve transcript'i (ya da bir konu/slide içeriğini) alır; koyu tema, tek marka rengi, self-hosted Manrope + JetBrains Mono fontlar ile bitmiş, oynatılabilir bir kompozisyon çıkarır (hook/shorts ayrıca 1080p/60fps MP4'e render edilir). Paket içinde tak-çalıştır starter template'ler gelir. ŞU DURUMLARDA MUTLAKA KULLAN, HyperFrames adı geçmese bile TETİKLE: hook oluştur, intro yap, video başına giriş, insanları hookta tutsun; shorts oluştur, dikey video, bu klibi shorts yap, reels; slidedeck oluştur, sunum yap, bu içeriği slide'la, yeni bir deck; ya da kullanıcı bir "-hook", "-shorts" veya "-slidedeck" klasörü açıp içine ham klip, transcript veya içerik koyduğunda. Başta AskUserQuestion ile hangi mod ve marka rengi sorulur, gerisi paketteki hazır starter'dan kurulur. Yalnızca bu üç HyperFrames video türü için kullan.
Also in 6 projects that use this
jaron-goh-centrSkilltalking-head-recut
Package an existing talking-head / interview / podcast video with timed, designed GRAPHIC OVERLAY cards — kinetic titles, lower-thirds, data callouts, quotes, side panels, picture-in-picture — synced to the transcript, on a 16:9 / 9:16 / 4:5 canvas of your choice; the clip plays untouched underneath. Trigger on "graphic overlays", "on-screen graphics", "package / dress up my video". Not plain subtitles (/embedded-captions). Unclear → /hyperframes.
Also in 8 projects that use this
EveryIncSkillproduct-launch-video
Build polished product launch videos in Remotion from brief → storyboard → render → multi-agent review → iterate. Designed for 15-30s social clips for product launches, feature demos, and before/after transformations. Triggers on: product video, launch video, demo video, remotion video, make a video for launch.
Also in 12 projects that use this
jaron-goh-centrSkillwebsite-to-video
Capture a general website/URL and turn it into a video OF the site — tour, showcase, or social clip built from captured screenshots and the site's own brand assets. Use for portfolio / blog / docs / landing-page showcases. Not a product launch or promo, even from a URL (/product-launch-video). Unclear → /hyperframes.
Also in 4 projects that use this
anton-abyzovSkillhyperframes-media
Asset preprocessing for HyperFrames compositions — text-to-speech narration (Kokoro), audio/video transcription (Whisper), and background removal for transparent overlays (u2net). Use when generating voiceover from text, transcribing speech for captions, removing the background from a video or image to use as a transparent overlay, choosing a TTS voice or whisper model, or chaining these (TTS → transcribe → captions). Each command downloads its own model on first run.
Also in 5 projects that use this
OpenAISkillfigma
Use the Figma MCP server to fetch design context, screenshots, variables, and assets from Figma, and to translate Figma nodes into production code. Trigger when a task involves Figma URLs, node IDs, design-to-code implementation, or Figma MCP setup and troubleshooting.
Also in 5 projects that use this
In this repository53 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- llms.txtllms.txt
- brand-onboardingSkill
- deep-agents-coreSkill
- deep-agents-memorySkill
- deep-agents-orchestrationSkill
- design-agent-customizeSkill
- design-agent-deploySkill
- design-agent-evalsSkill
- design-agent-onboardingSkill
- design-agent-troubleshootSkill
- design-agent-updateSkill
- langsmith-datasetSkill
- langsmith-evaluatorSkill
- managed-deep-agentsSkill
- release-checkSkill
- vendor-syncSkill
- brand-designSkill
- content-briefSkill
- data-vizSkill
- design-wikiSkill
- embedded-captionsSkill
- faceless-explainerSkill
- film-breakdownSkill
- general-videoSkill
- gif-editSkill
- hyperframes-animationSkill
- hyperframes-audioSkill
- hyperframes-cliSkill
- hyperframes-creativeSkill
- hyperframes-keyframesSkill
- hyperframes-registrySkill
- hyperframesSkill
- image-generationSkill
- image-opsSkill
- langsmith-traceSkill
- launch-filmSkill
- media-productionSkill
- media-useSkill
- motion-directionSkill
- motion-graphicsSkill
- music-to-videoSkill
- paper-designSkill
- pr-to-videoSkill
- reference-studySkill
- remotion-to-hyperframesSkill
- slideshowSkill
- soundSkill
- stillsSkill
- storyboardSkill
- thumbnailsSkill
- visual-verifySkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

