Skills
Skill 21 of 22
Build a HyperFrames slideshow to present live - slides, fragment reveals, branching hotspots and presenter mode with speaker notes, served by hyperframes present - or turn an…
2 minutes · 529 words · 4 sections
Install
npx skills add heygen-com/hyperframes --skill slideshownpx skills add heygen-com/hyperframes/plugin marketplace add heygen-com/hyperframesThe first command installs just this skill, by the name in its SKILL.md; the second installs the whole repository.
Plugin installs: Inside a HyperFrames plugin, follow plugin execution rules (opens in a new tab).
Usage beacon: run npx hyperframes events --skill=slideshow once as this skill starts. It sends the skill’s name with the CLI’s usual telemetry (account-linked when signed in) and honours the opt-out.
A slideshow is a normal composition (the /hyperframes contract applies) plus one JSON island that says which scenes are slides and how they connect. The deliverable is a running deck, not an MP4.
data-composition-id, data-start, data-duration, data-label, data-width, data-height. There is no master root composition wrapping them.<body>, written in the HTML (never generated by script; present reads the file statically):<script type="application/hyperframes-slideshow+json">
{
"slides": [
{ "sceneId": "hook", "notes": "Pause on the number." },
{
"sceneId": "problem",
"fragments": [11.0, 15.0],
"hotspots": [
{
"id": "h1",
"label": "Where does $40B come from?",
"target": "market-detail",
"region": { "x": 55, "y": 60, "w": 40, "h": 20 }
}
]
}
],
"slideSequences": [
{ "id": "market-detail", "label": "Market sizing", "slides": [{ "sceneId": "mkt-math" }] }
]
}
</script>sceneId equals a scene’s data-composition-id (or give startTime/endTime). notes are presenter-only. ttsScript, ttsAudioUrl and ttsDurationMs are reserved and not wired yet.data-start, not offsets inside the slide) within the slide’s [start, end]. Navigation seeks, it never plays: each hold state must look right when the timeline is seeked straight to that time. A slide without fragments enters at a rest frame inside it.slideSequences, never in the main slides array. A hotspot’s target is a sequence id; region is a percentage box (omit it for a full-slide button). Back returns to the slide that held the hotspot.npx hyperframes catalog --query "<the visual, in English>" --json: it ranks the whole registry with nothing installed.object-fit: contain) and check all four edges for crops.<video>/<audio> needs data-start and data-duration (data-has-audio="true" when its sound plays), and no preload="none". Custom media chrome reads the native element’s events and currentTime, never its own timer.opacity: 0, visibility: hidden and pointer-events: none together, or an invisible layer swallows clicks.render keeps only the first scene and truncates silently. For stills, snapshot --at each slide.npx hyperframes check --json until it is clean. The slideshow rule checks that every sceneId resolves, every hotspot target exists, fragments sit inside their slide, and main-line slides don’t overlap.npx hyperframes present <project-dir> and hand over the URL it prints: “Click Present, or press P, to open the audience tab.”index.html should open as a working deck: <hyperframes-slideshow> around <hyperframes-player src="…">, with the raw composition in a subfolder if needed. The component owns Present (P), Prev/Next, the counter, global mute, fullscreen, swipe, hotspots, presenter notes (editable, kept per deck) and stopping media on slide exit. Don’t build your own versions of any of these.present needs workarounds: references/standalone-harness.md.Build a HyperFrames slideshow to present live - slides, fragment reveals, branching hotspots and presenter mode with speaker notes, served by `hyperframes present` - or turn an existing page into one. Use when the person wants a deck or presentation rather than a rendered video.
The verbatim description from this skill’s front matter — the string an agent matches on to decide whether to load it.
main, last pushed 8 November 2026.SKILL.md, not by matching a directory convention. 3 distinct layouts observed: .agents/skills/*/SKILL.md, registry/blocks/*/SKILL.md, skills/*/SKILL.md.h1 and no skipped levels:.claude-plugin/marketplace.json by HeyGen, declaring 2 plugins. It is read for editorial metadata only — never as the skill index, which is always the repository tree./heygen-com/hyperframes.md, and each skill at its own .md URL.1 file · 43 KB
Everything this skill ships beside its prose. All of it is set here, as a subchapter of skill 21.
Documentation the agent loads on demand, rather than up front.