HyperFrames Core
HyperFrames rendert Video aus HTML. Eine Komposition ist eine HTML-Datei, deren DOM mit data-*-Attributen das Timing deklariert, deren Animationslaufzeit suchbar ist und deren Medienwiedergabe vom Framework gesteuert wird.
Dies ist der Kompositionsvertrag – wie man ein HyperFrames-Projekt erstellt. Der folgende Text ist der Bauleitfaden; Details zu einzelnen Themen finden sich in references/ (Index im nächsten Abschnitt) – bei Bedarf lesen. Weitere Belange befinden sich in benachbarten Abschnitten desselben Skills – ../cli (Entwicklungsloop) und ../registry (Blöcke/Komponenten installieren) – sowie in den benachbarten Design-Skills /hyperframes-motion (Animationsrezepte) und /hyperframes-design (Paletten, Typografie, Frame-Vorlagen). Die Fähigkeitslandkarte in ../SKILL.md sagt, was jeder Bereich abdeckt.
Referenzen
| Datei | Lies sie, um … |
|---|---|
references/minimal-composition.md | mit dem kleinstmöglichen renderbaren Kompositionsskelett zu beginnen |
references/composition-patterns.md | monolithisch vs. modular zu wählen; ein modulares index.html zu strukturieren; einen Sub-Kompositions-Archetyp zu wählen |
references/data-attributes.md | jedes data-* (Root / Clip / Sub-Kompositions-Host / Legacy-Aliase) nachzuschlagen; class="clip" zu verwenden |
references/tracks-and-clips.md | data-track-index auszuwählen, Überlappungen / z-index im selben Track zu handhaben, einen Clip relativ zu einem anderen zu timen |
references/sub-compositions.md | eine Sub-Komposition zu verdrahten (Host-Attribute, <template>, Instanzvariablen) und darin zu animieren |
references/variables-and-media.md | Variablen zu deklarieren; <video> für rein visuelle Wiedergabe zu platzieren |
references/determinism-rules.md | eine suchbare Timeline zu bauen; Determinismus-Verbote; die Allowlist animierbarer Eigenschaften; Layout / Textfit |
references/full-screen-motion.md | Vollbild-Bewegung mit gemeinsamen Hintergründen zu erstellen |
references/storyboard-format.md | einen STORYBOARD.md-Plan zu erstellen (+ das geparste Manifest) |
references/subagent-dispatch.md | Subagent-Dispatch-Verben (paralleles Fan-out / Hintergrund / Warten) auf deine Umgebung abzubilden |
references/tailwind.md | in einem Tailwind-v4-Projekt zu arbeiten (init --tailwind; der Laufzeitvertrag unterscheidet sich von Studio v3) |
Für Details zur Animationslaufzeit (GSAP-API, Lottie, Three.js usw.) siehe /hyperframes-motion → adapters/<runtime>.md.
Eine Komposition bauen
Zwei Grundformen (nicht austauschbar)
- Standalone (top-level
index.html) – root<div data-composition-id="…">sitzt direkt im<body>, kein<template>-Wrapper (ein Wrapper versteckt den gesamten Inhalt und unterbricht das Rendern). - Sub-Komposition (geladen via
data-composition-src) – root muss in<template>verpackt sein.
⚠ Transportregel: Die Laufzeit klont nur
<template>-Inhalte; alles außerhalb (inkl.<head>-Styles/Scripts) wird verworfen – platziere<style>/<script>innerhalb des Templates. ⚠ Host-ID-Regel: Diedata-composition-iddes Host-Slots muss exakt derdata-composition-iddes inneren Templates und demwindow.__timelines["<id>"]-Schlüssel entsprechen – kein-mount/-slot/-host-Suffix.
Dateiform, Host-Verdrahtung und die Pre-Render-Checkliste → references/sub-compositions.md.
Root muss dimensioniert sein (stiller Layout-Fehler)
Der Standalone-Root benötigt eine explizite Größenbox (width/height in px), und jeder Vorfahre bis zu einem height:100%-Element muss eine aufgelöste Höhe haben – andernfalls kollabiert ein Flex/100%-Kind auf ~0 und der Inhalt stapelt sich in der oberen linken Ecke. lint/validate/inspect fangen dies nicht. Skelett → references/minimal-composition.md.
Eine pausierte Timeline
Jede Komposition registriert genau eine gsap.timeline({ paused: true }) bei window.__timelines["<id>"] (Schlüssel = root data-composition-id), die synchron beim Seitenladen erstellt wird. Render-Dauer = root data-duration, nicht Timelinelänge. Verschachtle keine Sub-Timelines manuell im Host. Vollständiger Vertrag (inkl. Nicht-GSAP-Laufzeiten) → references/determinism-rules.md + /hyperframes-motion/adapters/.
Unverhandelbare Regeln (stille Fehler, die lint/validate/inspect nicht abfangen)
Hier aufgeführt; vollständige Begründung in der verlinkten Referenz. Nicht verletzen:
- Keine Laufzeit-Uhren / ungesätes
Math.random/ Netzwerk / Eingabezustand; keinrepeat: -1(endliche Anzahl verwenden). →determinism-rules.md - Nur die visuelle Eigenschaften-Allowlist animieren; niemals
display/visibility; keingsap.setauf Clips späterer Szenen. →determinism-rules.md - Kein
<br>im Fließtext; transformierte Elemente müssen block-level + dimensioniert sein; pulsierende absolute Dekorationen benötigen Spitzenabstand. →determinism-rules.md <video>muss ein direktes Kind des Host-Roots sein (niemals innerhalb eines Sub-Kompositions-<template>/Wrappers); das Framework besitzt die Wiedergabe. →variables-and-media.md- Jede
idmuss über die assemblierte Seite hinweg eindeutig sein; innerhalb einer Sub-Komposition IDs mit der Kompositions-ID präfixen (#<id>-hero). Doppelte<video>/<img>-IDs rendern leer – der Producer injiziert Frames pergetElementById, und dateiübergreifende Duplikate entgehenlint. →composition-patterns.md - Ein Vollbild-Szenenhintergrund gehört auf ein randfüllendes Kind (
position:absolute; inset:0), niemals auf den Kompositions-Root selbst – das Frame-Compositing des Producers kann dasbackgrounddes Root-Elements selbst entfernen (das Frame rendert schwarz), auch wenn die Vorschau/snapshotes korrekt anzeigen. →composition-patterns.md
Vorhandene Kompositionen bearbeiten
- Lies zuerst die Dateien. Erhalte unabhängige Timing-, Track-, ID-, Variablen- und Medienpfade.
- Verwende die vorhandenen Kompositions-IDs und Timeline-Schlüssel.
- Einen Clip hinzufügen: Wähle einen nicht überlappenden
data-track-indexoder passe umliegendes Timing absichtlich an. - Eine Sub-Komposition hinzufügen: Überprüfe ihre interne
data-composition-id, bevor du den Host verdrahtest.
Validierung
Führe das CLI-Gate aus (siehe ../cli/SKILL.md → Workflow + Minimum Completion Gate für die kanonische lint-/validate-/inspect-/snapshot-/preview-/render-Checkliste, einschließlich des visuellen Smoke-Tests, der für Sub-Kompositionsprojekte erforderlich ist).