Communitygithub.com

oliverhees/hermes-motion-pack

Step 4 of motion-pack. Builds the HyperFrames project from STORYBOARD.md and STYLE.md — one HTML scene per beat with GSAP choreography, deterministic timing, real assets, then lint → draft render. Use after mp-storyboard, or when the user says "bau das", "build", "render", "Szene ändern", "HyperFrames", "GSAP", "animiere".

¿Qué es hermes-motion-pack?

hermes-motion-pack is a Cursor agent skill that step 4 of motion-pack. Builds the HyperFrames project from STORYBOARD.md and STYLE.md — one HTML scene per beat with GSAP choreography, deterministic timing, real assets, then lint → draft render. Use after mp-storyboard, or when the user says "bau das", "build", "render", "Szene ändern", "HyperFrames", "GSAP", "animiere".

Compatible con~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/oliverhees/hermes-motion-pack/tree/HEAD/skills/mp-build

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

mp-build — write scenes as code

Prerequisite: the official HyperFrames skill knows the composition format (data-composition-id, timelines, tracks). Install it once: hermes skills install official/creative/hyperframes, or run npx hyperframes init (it installs its skills into the project). Read that skill for the file format; read this skill for how to make it look premium. When unsure about an API detail, run npx hyperframes docs or read https://hyperframes.heygen.com/llms.txt — never invent attributes.

Steps

  1. bash <skill-dir>/scripts/init_project.sh <project-dir> <w> <h> <fps> <duration> → scaffolds via npx hyperframes init --non-interactive, adds /scenes, /assets, /fonts, /audio, /out.
  2. Assets first: logo SVG, fonts (self-host; Google Fonts via fonts/ folder), screenshots or npx hyperframes capture <url>. No external URLs at render time.
  3. Build the shared design system: scenes/_ds.css from STYLE.md (CSS variables for colours, type scale, easings, safe area). Every scene imports it.
  4. For each storyboard beat write one scene (HTML + a GSAP timeline). Use the state list literally: set start state → tween to end state → exit. See references/motion-rules.md and references/gsap-cookbook.md.
  5. Compose scenes on the master timeline with the storyboard timestamps. Transitions from references/transitions.md.
  6. npx hyperframes lint → fix every error. Then npx hyperframes render --quality draft --output out/draft.mp4.
  7. Hand off to mp-audio (or straight to mp-critique if silent).

Non-negotiables while writing scenes

  • Time is a function: everything derives from the composition clock, nothing from setTimeout, Date.now() or unseeded Math.random(). Seed randomness with a fixed number.
  • GSAP timelines are built once, paused, and seeked by the player. Never play on load.
  • Text is real text (fonts loaded), never rasterised. font-display: block.
  • One hero per scene. Supporting elements enter after the hero, smaller, dimmer.
  • No default eases. Use the easings in _ds.css (--ease-enter: back.out(1.6) etc.).
  • Exits are designed. Every element leaves before the next scene's hero enters, or the transition covers it.
  • Safe areas from STYLE.md. 9:16: nothing important in the bottom 20 % (platform UI) or top 10 %.
  • Idle motion in holds: breathing scale ±1 %, slow parallax, blinking cursor — never a frozen frame > 0.8 s.
  • Keep each scene file < 250 lines. Shared components go to scenes/_components.js.

Composition format (verified against npx hyperframes init scaffold)

  • Root: <div id="root" data-composition-id="main" data-start="0" data-duration="30" data-width="1920" data-height="1080">. Set html, body { width: 1920px; height: 1080px } and the viewport meta to the same size.
  • Clips (anything that appears for a time span): class="clip" data-start="<s>" data-duration="<s>" data-track-index="<n>". Tracks on the same index must not overlap (lint catches it).
  • Timelines: const tl = gsap.timeline({ paused: true }); ... window.__timelines["main"] = tl; tl.seek(0); — the renderer seeks, never plays.
  • GSAP is loaded by the scaffold ([email protected] from jsDelivr); fonts, images, audio must be local files under assets/ / fonts/ / audio/.
  • Scenes = one .clip wrapper per beat on track 0 (data-start = beat start, data-duration = beat length) with its own elements inside; animate them on the master timeline at absolute times. Keep each beat's markup in a clearly commented section (or in scenes/sNN-*.html fragments that scripts/assemble.sh concatenates into index.html). Nested data-composition-id blocks and catalog blocks: follow the installed HyperFrames skill.

Scene section skeleton

<!-- ===== s02 · 2.5–6.0 s · canvas appears, first stroke draws ===== -->
<div class="clip scene" id="s02" data-start="2.5" data-duration="3.5" data-track-index="0">
  <div class="canvas" id="cv"></div>
  <svg class="stroke" viewBox="0 0 800 400"><path id="p1" d="M..." /></svg>
</div>
// in the master timeline, absolute times = beat start + offset
const len = document.getElementById('p1').getTotalLength();
gsap.set('#p1', { strokeDasharray: len, strokeDashoffset: len });
tl.fromTo('#cv', { scale: .9, opacity: 0 }, { scale: 1, opacity: 1, duration: .6, ease: 'expo.out' }, 2.5)
  .to('#p1', { strokeDashoffset: 0, duration: 1.1, ease: 'power2.inOut' }, 2.85)
  .to('#s02', { opacity: 0, y: -40, duration: .3, ease: 'power2.in' }, 5.7); // designed exit

Render tips

  • Draft: --quality draft. Critique: standard. Final: --quality high --fps 30|60.
  • Stutter or crash → --workers 1. Fonts missing in render → self-host and preload.
  • Re-render only the affected seconds while iterating (render a single scene composition), full render at the end.

Files in this skill

  • references/gsap-cookbook.md
  • references/motion-rules.md
  • references/transitions.md
  • scripts/assemble.sh
  • scripts/init_project.sh

Individual skills in this repo

This repo contains 10 individual skills — each has its own dedicated page.

oliverhees/hermes-motion-pack

Studio-grade motion graphics and cinematic highlight videos built as code with HyperFrames (HTML + GSAP → MP4) plus ffmpeg edits of real or AI footage. ALWAYS use for any video, spot, reel, teaser, trailer, intro, logo sting, kinetic typography, product film, social clip, highlight/recap/aftermovie/montage, "mach mir ein Video", "Motion Graphics", "Werbespot", "Reel", "Cinematic", "Animation" — even if the user does not say HyperFrames. Interviews the user first, then chains mp-brief → mp-style → mp-storyboard → (mp-footage | mp-genclip) → mp-build / mp-highlight → mp-audio → mp-critique → mp-ship with approval gates.

oliverhees/hermes-motion-pack

Step 5 of motion-pack. Produces the audio layer — voice-over via ElevenLabs (API key only from the ELEVENLABS_API_KEY environment variable), music bed, SFX on hits, sidechain ducking and two-pass loudness normalisation (voice -16 LUFS, music 12 LU under, mix -14 LUFS, true peak -1 dBTP). Use after mp-build, or when the user mentions "Stimme", "Voice-over", "Musik", "Sound", "LUFS", "zu leise", "zu laut", "ElevenLabs".

oliverhees/hermes-motion-pack

Step 1 of motion-pack. Runs a short, tap-friendly interview (max 2 rounds × 3 questions) and writes BRIEF.md for a motion graphics video — goal, audience, hook, format, length, must-show, sources, audio wishes. Use whenever a video is requested and no BRIEF.md exists yet, or the user says "Briefing", "interview me", "was brauchst du von mir".

oliverhees/hermes-motion-pack

Step 6 of motion-pack. Makes the agent look at its own render — contact sheet, phone-size sheet, 12-frame strips around fast moments, loop-seam check, determinism check — then scores 8 criteria 1–10 as a harsh motion director, lists the 3 biggest problems with timestamps, and loops back to mp-build until every score is ≥ 8. Use after any render, or when the user says "sieht mid aus", "check das Video", "Kritik", "QC", "warum wirkt das billig".

oliverhees/hermes-motion-pack

Ingests the user's own footage (clips, gameplay, events, vlogs, screen recordings) for a highlight video — makes proxies, detects scene cuts, scores every second by motion, loudness and speech, transcribes, and writes SHOTLIST.json with the best candidate moments. Use when the user hands over video files/folders, says "aus meinem Material", "Footage", "beste Momente", "Highlights rausziehen", "schneid mir das zusammen", or before mp-highlight when real footage is the basis.

oliverhees/hermes-motion-pack

Generates AI video clips (Seedance, Veo, Kling via the kie.ai MCP server) and AI still frames (gpt-image, nano-banana) as the basis for cinematic highlight videos and trailers — shot-by-shot prompts from the storyboard, consistent look via reference frames and seeds, download, registration in SHOTLIST.json. Use when the user has no footage but wants cinematic shots, says "generier mir Clips", "KI-Video", "Seedance", "Veo", "B-Roll erzeugen", or when mp-highlight needs shots that do not exist.

oliverhees/hermes-motion-pack

Cuts cinematic highlight videos, trailers/teasers and event recaps from real footage (mp-footage), AI clips (mp-genclip) or pure code — beat-synced edit plan, speed ramps, cinematic grade (teal-amber, bleach, film grain, letterbox), kinetic titles, glitch and light-leak overlays, data overlays, all composited in HyperFrames on top of an ffmpeg base cut. Use for "Highlight-Video", "Cinematic", "Trailer", "Recap", "Aftermovie", "Best-of", "Montage", "auf den Beat schneiden", "episch".

oliverhees/hermes-motion-pack

Step 7 of motion-pack. Final render in every requested format (16:9, 9:16, 1:1, 4:5, GIF/WebM), writes DELIVERY.md (files, specs, loudness, sources, unverified claims, next steps), optionally packages the finished pipeline as a reusable skill so the next video is one sentence. Use when critique is green, or the user says "export", "final", "liefern", "alle Formate", "fertig machen".

oliverhees/hermes-motion-pack

Step 3 of motion-pack. Writes STORYBOARD.md — beats with timestamps, a state list per beat (what is on screen, where, what changes), voice lines, SFX hits and transitions — from BRIEF.md and STYLE.md. Use after mp-style, or when the user asks for "Storyboard", "Beats", "Ablauf", "Szenen", "timing".

oliverhees/hermes-motion-pack

Step 2 of motion-pack. Turns BRIEF.md into STYLE.md — a reference-driven design doc with palette, typography, motion language, sound character and a forbidden list. Offers 8 built-in style presets (clean-product, editorial-brutal, neo-glass, kinetic-type, hand-drawn, cinematic-dark, data-minimal, retro-print). Use when a video needs a look, the user says "Style", "Look", "Design", "wie soll es aussehen", or after mp-brief.

Skills relacionados