--- name: general-video description: > Author or edit a custom HyperFrames composition when no specialized workflow fits, or when BRIEF.md sets flow: companion. Use for longer or multi-scene pieces, brand and sizzle reels, montages, static loops, static title cards, footage remixes, and freeform builds. Use motion-graphics instead for a short unnarrated motion-first unit, including an animated title. Route fresh creation through hyperframes before using this skill. --- # General video Before relying on this workflow, run: ```bash npx hyperframes skills update general-video ``` A successful no-op means the skill is current. Surface an update failure instead of continuing from memory. ## 1. Apply cross-cutting source adapters - **Media:** For narration, transcripts, background removal, grades, or treatments/effects on footage, use the CLI's own commands (`hyperframes tts`, `transcribe`, `remove-background`, `grade-compare`, `media-treatment`; `hyperframes:hyperframes-cli`). Other audio, images, icons, and logos are files the user supplies. Vague footage feedback and named styles start from `npx hyperframes media-treatment --capabilities` before editing; do not improvise supported media effects with CSS/SVG/opacity. Before the first authenticated provider action, run `npx hyperframes auth status` and relay its output verbatim. If signed out, apply the gate in `../hyperframes/references/brief-contract.md`: collaborative waits for sign-in or an explicit offline choice; autonomous states the status and continues through an available offline provider. Surface a blocker when no offline provider can satisfy a required capability. Files the user supplies do not require an auth gate. - **Figma:** If any input is a `figma.com` URL, run `hyperframes:figma` first. Build from its exported assets, tokens, components, or storyboard frames. Do not use raw Figma connector calls because they skip SVG sanitization, media provenance, and brand-token binding. These adapters do not change the workflow selected by `hyperframes:hyperframes`. ## 2. Start from project state Apply the first matching row; do not evaluate lower state rows: | State | Action | | ---------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | | Specific edit | Make the edit, preserve existing project decisions, then rerun affected checks. Do not reopen discovery. | | `BRIEF.md` exists | Read it. If `workflow` names another workflow and `flow` is not `companion`, hand off. Ask no brief questions. | | No brief, but `hyperframes.json` or `STORYBOARD.md` exists | Resume from files. Backfill `BRIEF.md` only from known facts. | | Fresh creation | Run `hyperframes:hyperframes` and its intent layer. Return here only for `workflow: general-video` or `flow: companion`. | For a new project, choose a kebab-case directory name from the brief and scaffold before writing the brief: ```bash npx hyperframes init "videos/" --non-interactive --example=blank --skill=general-video ``` Then write `BRIEF.md` at the project root using `../hyperframes/references/brief-format.md`. In an existing project, the root is the directory containing `hyperframes.json`. ## 3. Interpret the run shape Use only the canonical terms from `../hyperframes/references/brief-contract.md`: | Field | Meaning | Effect | | -------------- | ------------------------------------- | ----------------------------------------------------------------------------------- | | `flow` | Who drives | `automation`: choose and execute the route. `companion`: co-create in conversation. | | `storyboard` | Plan, sketch, and review before build | `yes`: run plan and sketch review (`storyboard.html`). `no`: build without it. | | derived `mode` | How checkpoint gates behave | Follow the brief contract. Never ask the user to name a mode. | Do not invent synonyms for these states. An ongoing “just build it” signal is handled by the intent layer and arrives as `flow: automation`, `storyboard: no`. - For `flow: automation`, choose the route and state it in one line in the first progress update. - For a specific edit, make the edit without inventing a new route. For a hard cut, trim, splice, or reorder of existing footage, duplicate the same video source into multiple clip elements. On each copy, set the source range with `data-media-start` plus `data-duration`, then set authored placement/order with `data-start`. Separately authored audio follows the identical clip ranges and timing on matching `