Files

15 KiB
Raw Permalink Blame History

Capability menu — what HyperFrames can bring to a video

One list, three readers. The pitch round (pitch-round.md) speaks it before anyone reads it as a menu: each pitch names the capability or two its concept rides, phrased from the middle column — the rows experienced inside concepts, which is how most users first learn what they're allowed to want. The intent layer (/hyperframes → references/intent-interview.md, step 7) recommends from it — one or two rows the confirmed concept specifically calls for and the chosen pitch didn't already name, with the route-filtered slice shown when the user asks what else is possible. /general-video in companion mode uses the same list as its execution map — as its trigger list: each row's plain-language line is also the moment to offer it, when the conversation touches what the row does — and as each pass's upgrade channel: a plan, sketch, or build checkpoint may carry one or two traced offers pointed at material the user is looking at.

Borrowing rule. Capabilities marked with a home workflow live in that workflow's skill directory, and workflow skills install lazily. Before reaching across, run npx hyperframes skills update <that-workflow> with the bare name. Resolve the installed skill directory, invoke its script by absolute path, and pass the project root explicitly when the script accepts one. Keep the working directory at the project root. Never assume a sibling-relative path such as ../media-use or ../music-to-video; the project may live anywhere.

Each row's last column reads home → entry → what you get: the owning skill, the exact doc or command to start from, and the artifact that comes back.

Capability Say it to the user as… Home → entry → what you get
Design spec (frame.md) — one file that locks palette, type, and layout feel; every frame obeys it (the video-first sibling of a web design.md) "a design system for the video — colors and typography stay consistent" /hyperframes-creative → references/design-spec.md (what a spec is + resolution order); presets: frame-presets/<name>/ (always installed — browsing needs no borrow); applying machinery build-frame.mjs (home: /faceless-explainer, /product-launch-video) → frame.md at the project root. How to ask: § The design ask below
Website capture — headless-Chrome crawl of a real site: screenshots, brand tokens, assets "I can capture your site and build from its real look" CLI → npx hyperframes capture <URL> -o ./capture → capture/ (screenshots, extracted tokens/text/assets); doctrine: /product-launch-video
Beat analysis & audio-reactive motion — a deterministic beat / energy map of a track; cuts land on the grid, elements pulse with the music "if there's music, I can cut the video to its beat — and make elements move with it" grid: /music-to-video → scripts/analyze-beatgrid.py → audiomap.json (beats, energy, sections); element reaction: /hyperframes-creative → references/audio-reactive.md + scripts/extract-audio-data.py
Motion blueprints — proven scene shapes (reveals, counters, charts, dioramas) picked per beat "each scene gets a proven motion treatment, not improvised movement" /hyperframes-animation → blueprints-index.md + rules-index.md → per-beat blueprint: ids the build reads
Voice, music, SFX, images, logos, media treatments — resolved media plus source-aware color, effects, privacy, reveals, and justified overlays "narration, music, sound effects, real assets — and footage polished or stylized to fit the story" /media-use → deterministic resolve/operate tools plus references/media-treatments.md; shader pixels persist through hyperframes media-treatment, optional overlays come from Registry, and finite motion uses the host GSAP timeline
Generative video — an AI presenter delivers the script; a still photo becomes a talking clip; a finished video gets dubbed into another language "an AI presenter can read your script on camera; I can animate a photo into a talking clip, or dub the video" /media-use → references/operations.md § Generate: video (heygen video create / video-translate; OAuth free allowance where eligible) → an mp4 clip adopted into assets/ + manifest record
Transcription & captions — word-timed transcripts; styled caption skins on the finished video "accurate captions, styled to match" /media-use → scripts/transcribe.mjs → word-timed transcript; caption machinery captions.mjs (home: /faceless-explainer) → the caption track
Cut footage by its transcript — trim a clip by choosing sentences, not timecodes "I can trim your clip by picking the sentences to keep" /media-use → scripts/transcript-cut.mjs → the trimmed clip + updated transcript
Designed overlays on user footage — kinetic titles, lower-thirds, data callouts synced to what's said "your own clip can carry designed titles and info bars, timed to the speech" the whole ask = the /talking-head-recut route — route there, don't rebuild it; one scene inside a bigger piece = /hyperframes-animation lower-third / callout blueprints + /talking-head-recut's safe-zone thinking → overlay comps on the footage track
Real map scenes — a genuine basemap with located pins, routes, or a flight path "for places and journeys — a real map, not a drawing of one" /motion-graphics → grounding/locate.mjs (geocode) + categories/maps/ (incl. bake-basemap.mjs) → a deterministic baked basemap + located pins
Figma import — assets, brand tokens, components, storyboard frames read as motion states "if the design lives in Figma, I can build from it directly" /figma → REST/CLI import (+ MCP for Motion/shaders) → sanitized SVGs, var()-bound brand tokens, frames-as-states
Registry blocks — 50+ installable scene compositions (data charts, device mockups, quote cards…) "ready-made scenes we can drop in and restyle" /hyperframes-registry → npx hyperframes add <block> → an installed sub-composition (wiring: references/wiring-blocks.md)
Scene transitions — cuts, crossfades, wipes, WebGL shader transitions between scenes "how one scene hands off to the next — up to full shader wipes" /hyperframes-animation → transitions/overview.md then transitions/catalog.md; assembly transitions.mjs (home: /faceless-explainer) → injected handoffs in the index
User media on the timeline — the user's own images / clips staged and woven into frames "your own footage, screenshots, or photos placed into the video" staging stage-assets.mjs (home: /music-to-video, /product-launch-video); adoption: /media-use --adopt → files in assets/ + manifest records
Publish to a stable link — the finished piece on a private-by-default hosted URL; re-publishing updates the same link "when it's done I can publish it to a stable link — private by default, or public when you ask" /hyperframes-cli → references/preview-render.md (npx hyperframes publish) → a stable hosted URL with explicit visibility

Offer, don't unload: the intent layer recommends the one or two rows the confirmed concept itself calls for, states each as one plain-language line traced to the brief, and asks once — the route-filtered slice on request, the full table for the companion.

The design ask — have it, pick it, or leave it

The design-spec row is a three-state question, not an explainer (what a spec is stays in design-spec.md):

  • They have one. Brand guidelines, a frame.md, a design.md — note the path in BRIEF.md § Assets; the workflow reads it as brand truth (resolution order: /hyperframes-creative → references/design-spec.md).
  • They don't, but the look matters — show, don't name. Pick 2–3 shipped presets whose look fits the content, tone, and audience (browse /hyperframes-creative → frame-presets/), and open each one's frame-presets/<name>/frame-showcase.html in the browser so the user picks by eye, never from a list of names. The choice lands in BRIEF.md as style_preset — a remembered preference key, so next run it's the recommended answer with a receipt. On a route that captures a real site, say the honest line as the showcases open: a showcase wears the preset's own palette, and the site's brand colors and fonts will be remixed onto whichever preset wins — the pick is the layout bones, not the colors — and offer the alternative of deferring the pick until after capture, when the look can be judged with the real brand in hand (a declared deferred ask; the sketch pass shows the remixed truth either way, before anything expensive is built).
  • They don't care — or nothing shipped fits. Don't care: no further questions; the workflow's design step decides and says why. Nothing fits: announce the design picker as a deferred ask — the workflow's design step generates mood boards contextual to their content to choose from (/hyperframes-creative → references/design-picker.md); it needs a project and a generation pass, so it never runs inside the intent conversation.

Genre lenses — the shipped workflows' taste, borrowable

The narrative workflows carry genre-tuned design references — story-design.md (narrative archetypes and beats), visual-design.md (the genre's look), motion-language.md + cut-catalog.md (motion and cut doctrine). When a companion or freeform piece resembles a genre, read that workflow's lens before planning or building in it (borrowing rule above):

The piece resembles… Borrow from
a product promo / launch / site showcase /product-launch-video → references/
a topic / mechanism / concept explainer /faceless-explainer → references/
a code-change walkthrough /pr-to-video → references/ (+ code-vocabulary.md for code frames)

motion-language.md and cut-catalog.md are near-identical across the three — take them from the genre you already resembled, or /faceless-explainer's as the neutral default. Borrow the shape and the taste, never the machinery: their scripts and directory rules belong to their pipelines; the generic back half of any build lives in hyperframes-core/references/production-loop.md.