{"id":"551bdd65-2c17-460d-af03-4ea9573dcbcc","entityType":"agent","slug":"clawhub-heygen-com-general-video","name":"general-video","canonicalUrl":"https://www.xpersona.co/agent/clawhub-heygen-com-general-video","canonicalPath":"/agent/clawhub-heygen-com-general-video","generatedAt":"2026-10-10T03:53:08.670Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T15:06:07.119Z","emptyReason":null},"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. Skill: general-video Owner: heygen-com Summary: 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 f","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 2.4K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s17fpgb0p797dzkbtbrxw5x1hh89qs64:general-video","sourceUrl":"https://clawhub.ai/heygen-com/general-video","homepage":"https://clawhub.ai/heygen-com/skills/general-video","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/heygen-com/general-video","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/heygen-com/skills/general-video","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":68,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"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, "},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T15:06:07.119Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T15:06:07.119Z","emptyReason":null},"stars":null,"forks":null,"downloads":2425,"packageName":null,"latestVersion":"1.0.25","tractionLabel":"2.4K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T15:06:07.119Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T15:06:07.119Z","lastCrawledAt":"2026-10-09T15:06:07.119Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T15:06:07.119Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.25","createdAt":"2026-10-07T07:29:45.795Z","changelog":"Synced from 4fcad1e (main)","fileCount":7,"zipByteSize":15599},{"version":"1.0.24","createdAt":"2026-10-04T13:07:14.607Z","changelog":"Synced from 69a2169 (main)","fileCount":7,"zipByteSize":15549},{"version":"1.0.23","createdAt":"2026-10-03T00:38:25.556Z","changelog":"Synced from 7348933 (main)","fileCount":7,"zipByteSize":15581},{"version":"1.0.22","createdAt":"2026-10-02T00:11:05.665Z","changelog":"Synced from 37f30b1 (main)","fileCount":7,"zipByteSize":15325},{"version":"1.0.21","createdAt":"2026-09-27T21:18:07.977Z","changelog":"Synced from ff6e210 (main)","fileCount":7,"zipByteSize":15397},{"version":"1.0.20","createdAt":"2026-09-23T23:09:52.289Z","changelog":"Synced from 29fc953 (main)","fileCount":7,"zipByteSize":15558},{"version":"1.0.19","createdAt":"2026-09-19T05:08:03.023Z","changelog":"Synced from 1a9668b (main)","fileCount":6,"zipByteSize":12505},{"version":"1.0.18","createdAt":"2026-09-14T01:22:40.787Z","changelog":"Synced from 95bea16 (main)","fileCount":6,"zipByteSize":12476}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17fpgb0p797dzkbtbrxw5x1hh89qs64:general-video","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-heygen-com-general-video/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-heygen-com-general-video/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-heygen-com-general-video/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-heygen-com-general-video/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-heygen-com-general-video/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-heygen-com-general-video/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T03:53:08.667Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-heygen-com-general-video/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-heygen-com-general-video/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-heygen-com-general-video/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-heygen-com-general-video/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-09T15:06:07.119Z","emptyReason":null},"readme":"Skill: general-video\n\nOwner: heygen-com\n\nSummary: 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.\n\nTags: latest:1.0.25\n\nVersion history:\n\nv1.0.25 | 2026-10-07T07:29:45.795Z | user\n\nSynced from 4fcad1e (main)\n\nv1.0.24 | 2026-10-04T13:07:14.607Z | user\n\nSynced from 69a2169 (main)\n\nv1.0.23 | 2026-10-03T00:38:25.556Z | user\n\nSynced from 7348933 (main)\n\nv1.0.22 | 2026-10-02T00:11:05.665Z | user\n\nSynced from 37f30b1 (main)\n\nv1.0.21 | 2026-09-27T21:18:07.977Z | user\n\nSynced from ff6e210 (main)\n\nv1.0.20 | 2026-09-23T23:09:52.289Z | user\n\nSynced from 29fc953 (main)\n\nv1.0.19 | 2026-09-19T05:08:03.023Z | user\n\nSynced from 1a9668b (main)\n\nv1.0.18 | 2026-09-14T01:22:40.787Z | user\n\nSynced from 95bea16 (main)\n\nv1.0.17 | 2026-09-13T03:19:57.043Z | user\n\nSynced from 4aa6e17 (main)\n\nv1.0.16 | 2026-09-11T21:20:36.951Z | user\n\nSynced from b848d81 (main)\n\nv1.0.15 | 2026-09-10T03:23:03.209Z | user\n\nSynced from 0f8eb89 (main)\n\nv1.0.14 | 2026-08-18T14:17:38.214Z | user\n\nSynced from afafca4 (main)\n\nv1.0.13 | 2026-07-29T15:27:40.507Z | user\n\nSynced from 6cab53a (main)\n\nv1.0.12 | 2026-07-28T11:28:46.866Z | user\n\nSynced from d287e52 (main)\n\nv1.0.11 | 2026-07-25T02:34:04.435Z | user\n\nSynced from 3978b8e (main)\n\nv1.0.10 | 2026-07-21T16:43:12.804Z | user\n\nSynced from 696cbdb (main)\n\nv1.0.9 | 2026-07-20T15:19:11.544Z | user\n\nSynced from 6ad738b (main)\n\nv1.0.8 | 2026-07-15T13:20:46.775Z | user\n\nSynced from b9be0b2 (main)\n\nv1.0.7 | 2026-07-10T22:48:11.685Z | user\n\nSynced from 00d059b (main)\n\nv1.0.6 | 2026-07-10T02:57:22.613Z | user\n\nSynced from a8f242e (main)\n\nv1.0.5 | 2026-07-08T18:00:09.318Z | user\n\nSynced from 17b8527 (main)\n\nv1.0.4 | 2026-07-08T17:32:14.305Z | user\n\nSynced from 81884a7 (main)\n\nv1.0.3 | 2026-07-08T15:59:19.749Z | user\n\nSynced from 4d3cdc3 (main)\n\nv1.0.2 | 2026-07-07T20:26:48.251Z | user\n\nSynced from 7286b00 (main)\n\nv1.0.1 | 2026-07-07T18:57:09.585Z | user\n\nSynced from 5fe9573 (main)\n\nv1.0.0 | 2026-07-01T08:42:16.663Z | user\n\nOfficial HyperFrames skills from heygen-com/hyperframes\n\nArchive index:\n\nArchive v1.0.25: 7 files, 15599 bytes\n\nFiles: scripts/frame-packets.mjs (1462b), scripts/frame-packets.test.mjs (3584b), scripts/lib/frame-packets-core.mjs (7408b), skill-card.md (1802b), SKILL.md (21541b), sub-agents/frame-worker.md (2304b), _meta.json (133b)\n\nFile v1.0.25:SKILL.md\n\n---\nname: general-video\ndescription: >\n  Author or edit a custom HyperFrames composition when no specialized workflow fits, or when\n  BRIEF.md sets flow: companion. Use for longer or multi-scene pieces, brand and sizzle reels,\n  montages, static loops, static title cards, footage remixes, and freeform builds. Use\n  motion-graphics instead for a short unnarrated motion-first unit, including an animated title.\n  Route fresh creation through hyperframes before using this skill.\n---\n\n**Plugin installs:** Before setup or freshness commands, follow [plugin execution rules](../hyperframes/references/plugin-installation.md) when this skill is inside a HyperFrames plugin. Standalone installs keep the update instructions below.\n\n# General video\n\nRun `npx hyperframes usage --json` at the start unless the workflow just read it, then check again at milestones such as after drafting and before rendering. Read the available windows and reset times. If usage is unknown, say so without guessing allowance; keep scope and workflow choices with the user.\n\nBefore relying on this workflow, run:\n\n```bash\nnpx hyperframes skills update general-video\n```\n\nA successful no-op means the skill is current. Surface an update failure instead of continuing from memory.\n\n## 1. Apply cross-cutting source adapters\n\n- **Media:** For any audio, image, icon, logo, voice, grade, LUT, treatment/effect, caption, or media-operation need, load `/media-use` and follow `../media-use/references/resolve.md` (resolve, adopt, reuse) and `../media-use/references/setup-providers.md` (providers, auth). Vague footage feedback and named styles use `../media-use/references/media-treatments.md` 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. Local adoption alone does not require an auth gate.\n- **Figma:** If any input is a `figma.com` URL, run `/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.\n\nThese adapters do not change the workflow selected by `/hyperframes`.\n\n## 2. Start from project state\n\nApply the first matching row; do not evaluate lower state rows:\n\n| State                                                      | Action                                                                                                         |\n| ---------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |\n| Specific edit                                              | Make the edit, preserve existing project decisions, then rerun affected checks. Do not reopen discovery.       |\n| `BRIEF.md` exists                                          | Read it. If `workflow` names another workflow and `flow` is not `companion`, hand off. Ask no brief questions. |\n| No brief, but `hyperframes.json` or `STORYBOARD.md` exists | Resume from files and recorded preferences. Backfill `BRIEF.md` only from known facts.                         |\n| Fresh creation                                             | Run `/hyperframes` and its intent layer. Return here only for `workflow: general-video` or `flow: companion`.  |\n\nFor a new project, choose a kebab-case directory name from the brief and scaffold before writing the brief:\n\n```bash\nnpx hyperframes init \"videos/<project>\" --non-interactive --example=blank --skill=general-video\n```\n\nThen 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`. Record only the confirmed preference-backed fields named by the brief format, using `node <MEDIA_DIR>/scripts/prefs.mjs record --hyperframes <PROJECT_ROOT>`; never record inferred defaults. Here `<MEDIA_DIR>` is the installed `/media-use` skill directory and `<PROJECT_ROOT>` is the directory containing `hyperframes.json`. If the intent layer adopted a recipe, apply it now with `node <MEDIA_DIR>/scripts/recipe.mjs use --hyperframes <PROJECT_ROOT> --name <name>` and do not ask again.\n\n## 3. Interpret the run shape\n\nUse only the canonical terms from `../hyperframes/references/brief-contract.md`:\n\n| Field          | Meaning                               | Effect                                                                              |\n| -------------- | ------------------------------------- | ----------------------------------------------------------------------------------- |\n| `flow`         | Who drives                            | `automation`: choose and execute the route. `companion`: co-create in conversation. |\n| `storyboard`   | Plan, sketch, and review before build | `yes`: run plan and sketch review (`storyboard.html`). `no`: build without it.      |\n| derived `mode` | How checkpoint gates behave           | Follow the brief contract. Never ask the user to name a mode.                       |\n\nDo 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`.\n\n- For `flow: automation`, choose the route and state it in one line in the first progress update.\n- For a specific edit, make the edit without inventing a new route.\n\nFor a hard cut, trim, splice, or reorder of existing footage, duplicate the same\nvideo source into multiple clip elements. On each copy, set the source range\nwith `data-media-start` plus `data-duration`, then set authored placement/order\nwith `data-start`. Each video segment keeps its sound: the sound stays on the clip (`data-has-audio=\"true\"`), so cutting the video cuts its sound. `/hyperframes-core` owns this temporal\nedit; use `/hyperframes-keyframes` only for visual-property animation such as\nzoom, punch, pan, crop, mask, or `clip-path` on an inner wrapper.\nCopy the full contracts from `../hyperframes-core/references/creator-editing-recipes.md`.\n\n### Companion flow\n\nWhen `flow: companion`:\n\n- Read `BRIEF.md` and reconcile accepted `## Assets` and `## Customizations` with project artifacts. Complete accepted work that is still pending; leave completed work alone; do not offer an accepted capability again as if it were new.\n- **Arrive as the director, not the contractor.** A user who chose companion chose involvement and quality; the honest response is the best version you can design, not the smallest one you can defend. The first plan is the ceiling treatment: the story arc (borrow the nearest genre lens — menu § Genre lenses), the design spec, each scene's motion treatment cited by name (§ 5's plan discipline), the transitions, the audio identity — music and sound marks, or deliberate silence — the user's material placed, and a designed open and close. Say what each layer adds in one line; flag the expensive ones (render time, sign-in, billing) as you name them. The user trims a treatment down; they should never have to assemble one approval by approval.\n- **The ceiling belongs to the concept, not the toolbox.** Every layer must serve the brief's message — a treatment that would dress any video the same way is decoration. Craft rises to the ceiling; content never grows past what was asked (§ 6).\n- Between checkpoints, `../hyperframes/references/capability-menu.md` works two ways. As the trigger list: offer a relevant capability when the user mentions its input or the build reaches its need. 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 (\"scene 3's stat wants the count-up treatment\"). Read it before offering; never dump the full catalog.\n- After the user accepts a capability, produce its artifact and record the decision in the matching `BRIEF.md` body section immediately. Rewrite a frontmatter field and record the confirmed preference only when the user explicitly changes it.\n- Keep the same storyboard, validation, final-preview, and render-approval gates. Companion changes who steers, not what quality requires.\n\n## 4. Load required knowledge before each stage\n\nThese reads are mandatory when their condition matches:\n\n| Condition                                                                                                         | Read before acting                                                                                                                                                                                                                     |\n| ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Any composition HTML or scene layout                                                                              | `/hyperframes-core`; use `references/determinism-rules.md` for its layout contract                                                                                                                                                     |\n| Any non-trivial creation or visual treatment                                                                      | `/hyperframes-creative` → `references/house-style.md` and `references/video-composition.md`                                                                                                                                            |\n| Any motion, animation, or scene transition                                                                        | `/hyperframes-animation`; follow its routing to the matching rules, adapters, blueprints, or transition references                                                                                                                     |\n| `storyboard: yes`                                                                                                 | `../hyperframes/references/storyboard-format.md` and `../hyperframes/references/review-loop.md`                                                                                                                                        |\n| Any media asset or operation, including narration, BGM, SFX, captions, grading, or transforms                     | `/media-use` (a host app's own music and sound-effect tools come first for those); for framework playback and placement also read `/hyperframes-core` → `references/variables-and-media.md`                                            |\n| Multi-scene assembly                                                                                              | `../hyperframes/references/production-loop.md`                                                                                                                                                                                         |\n| `flow: companion`, before the first plan                                                                          | `/hyperframes-creative` → `references/story-spine.md` and `references/house-style.md`; the nearest genre lens and the full `../hyperframes/references/capability-menu.md` — the ceiling treatment is designed from these, not recalled |\n| A companion capability offer, capture, beat grid, generative video, map, publishing, or cross-workflow capability | `../hyperframes/references/capability-menu.md`                                                                                                                                                                                         |\n| A design spec exists, before final approval                                                                       | `/hyperframes-creative` → `references/design-adherence.md`                                                                                                                                                                             |\n\nDo not replace these reads with recollection. Progressive disclosure saves context only when the matching reference is actually loaded.\n\n## 5. Execute the composition\n\nUse this dependency order. Skip a stage only when its input is absent.\n\n1. **Plan.** State the viewer arc, structure, rhythm, and duration driver. Use one file for a short single scene; use sub-compositions for three or more hard scene cuts or any reused scene. Read `/hyperframes-creative` → `references/story-spine.md` for narrated arcs, `references/beat-direction.md` for rhythm, and `/hyperframes-core` → `references/composition-patterns.md` for structure. For an open-ended multi-scene brief, expand the prompt through `/hyperframes-creative` → `references/prompt-expansion.md`. A multi-scene plan cites each scene's shape: a blueprint id from `/hyperframes-animation` → `blueprints-index.md` when one fits, or the named rules it composes from `rules-index.md` when none does — motion names come from those indexes, never invented. Story truth decides which scenes exist; the citation dresses them. **Search the live catalog before you plan to build any named look yourself**: for every look, effect, treatment or transition the brief names — \"CRT scanlines\", \"glitch\", \"film grain\", \"shimmer sweep\", \"confetti burst\" — run `npx hyperframes catalog --query \"<the look, in plain English>\" --json` and read the top results before the plan names how that look gets built. The search needs **nothing installed**: no project, no prior `add`, no account. It ranks the whole hosted registry (~400 blocks and components) from any directory, so it also applies to a look the user asks for mid-build. Blocks the plan names are installed at stage 3; hand-author a look only after a search for it came back with nothing that fits. A multi-scene plan is also recorded as the dispatch artifact: one `## Frame N` block per scene in `STORYBOARD.md` — `status: outline`, a declared `src:`, the blueprint/rules citation, and the beat text — **even when `storyboard: no`**. The block is the dispatch unit; the storyboard sheet is only the review surface.\n2. **Review the plan when requested.** For `storyboard: yes`, run the shared review loop over those blocks. For `storyboard: no`, continue without a plan pause or sketch sheet. When a plan pause happens anyway, fold the sub-agent delegation grant (needed by codex for step 4's dispatch) into that pause rather than stopping again later.\n3. **Resolve dependencies.** Install registry blocks before parallel work. Stage user assets, adopt existing media, and resolve only what the brief requires. Start audio early when its timings drive duration.\n4. **Build scenes.** For a short single-scene piece, implement the scene at its most visible moment before adding motion (the confirmed wireframe, when present, is that end state and must not be redrawn), then animate from its cited blueprint or rules — read the full recipe body (`/hyperframes-animation` → `blueprints/<id>.md`, `rules/<id>.md`) before writing motion.\n\n   **Dispatch pays for itself only at scale.** Authoring packets and warming fresh worker contexts costs real minutes and tokens: a film of up to ~6 short scenes builds FASTER inline, in this context, one scene after another (measured: 5 short scenes ≈ 9 min inline vs ≈ 21 min packetized). Fan out only when the plan exceeds that — more scenes, or individually heavy ones — and then give each worker **2–3 scenes**, not one, and spawn **all workers in a single wave** (a second wave nearly doubles the window). When dispatching:\n\n   `node <SKILL_DIR>/scripts/frame-packets.mjs --project \"$PROJECT_DIR\" --storyboard \"$PROJECT_DIR/STORYBOARD.md\"`\n\n   The builder writes one bounded packet per scene under `.hyperframes/frame-packets/` (the scene's exact storyboard block + the blueprint body + every cited rule recipe, inlined) and `_role.md` (`../hyperframes/references/frame-worker-core.md` + this skill's `sub-agents/frame-worker.md`, concatenated verbatim — the complete worker role). Dispatch the workers — 2–3 scene packets each, all in one wave (`../hyperframes/references/subagent-dispatch.md`); each worker's prompt carries `_role.md` and its packets — paste them in full, or hand the file paths for the worker to read first (equivalent either way) — plus a dispatch context with `PROJECT_DIR`, its `frame_id`s, and canvas size. WAIT on every scene's `compositions/<frame_id>.html` + `compositions/<frame_id>.motion.json`. Workers read only their packets and the design truth file; they never open `STORYBOARD.md` or the skill documents. With no delegation channel, fall back serially: process one packet at a time in this context, still working from the packet alone.\n\n5. **Merge motion sidecars.** Collect the workers' `compositions/<frame_id>.motion.json` files and carry their durations and exit/entry vectors into assembly; where the doctrine chain (`/motion-doctrine`) is installed, translate them into the project ledger before stamping seams.\n6. **Assemble.** Mount scenes, media, transitions, captions, and audio using the production loop. Real voice duration overrides estimates. When a music bed plays under any voice track, carve the bed before verifying: `/hyperframes-audio` → `scripts/carve.mjs --comp index.html`. A volume duck alone does not finish the mix.\n7. **Verify.** Use `npx hyperframes lint` for fast feedback after the first HTML pass and structural changes. For the final gate, run `npx hyperframes check`; it reruns lint internally, so do not run a redundant standalone lint immediately before it. For sub-compositions, inspect midpoint snapshots. For multi-scene work, review the animation map.\n8. **Final approval.** Once checks pass, open the final Studio preview — in autonomous mode too, before any render: opening it asks nothing. Ask whether to render or revise (autonomous: the one kept question). Render only after approval.\n\n## 6. Gates that always apply\n\n### Keep scope exact\n\nBuild what the user asked for. A title card is not a title card plus three scenes, music, and captions. Offer additions before adding them.\n\n### Establish design before HTML\n\nResolve the design source in this order: `frame.md` → `design.md` → `DESIGN.md`. Treat the first file found as brand truth.\n\nWhen no design spec exists, complete all four items before writing composition HTML:\n\n1. Ground the visual identity in `house-style.md` and `video-composition.md`.\n2. Write one sentence naming the concept angle for every non-trivial creation.\n3. Choose an embeddable font pairing from `/hyperframes-creative` → `references/typography.md`; do not assume an unbundled display font exists in cloud rendering.\n4. Define the focal element, edge anchors, supporting detail, and background treatment.\n\nMatch density to the requested format and message. Density examples are guidance for produced frames, not permission to invent claims, scenes, or a fixed number of elements.\n\nFor a named style or mood, read `/hyperframes-creative` → `references/visual-styles.md`. When the user needs to choose visually and no shipped preset fits, read `/hyperframes-creative` → `references/design-picker.md` and run the interactive design selection there.\n\n### Preserve the composition contract\n\nTimed elements use `class=\"clip\"`; the root and relevant ancestors are sized; each composition registers one paused, seek-safe timeline on `window.__timelines`; rendering is deterministic. Do not use render-time network fetches, clocks, or unseeded randomness.\n\n### Borrow workflows safely\n\nWhen the piece resembles a shipped workflow, borrow its genre references as examples. First run `npx hyperframes skills update <workflow-name>`. Borrow its story shape and taste, not its private scripts, pipeline state, or directory contract. The generic build remains owned by this skill.\n\n## 7. Done\n\nA run is complete only when:\n\n- requested scope is implemented;\n- for `flow: companion`, the treatment is delivered, not just the scope: every scene's cited blueprint or rules realized, the audio identity present (or the silence chosen and said), the open and close designed rather than defaulted;\n- `npx hyperframes check` passes, including its built-in lint stage;\n- design adherence is reviewed against `/hyperframes-creative` → `references/design-adherence.md` when a design spec exists;\n- contrast findings are resolved;\n- sub-composition snapshots are inspected when applicable;\n- an autonomous handoff includes an inspected contact or snapshot sheet; multi-scene sheets use scene midpoints;\n- the handoff names the final preview or rendered artifact as applicable and reports the actual duration for a time-based deliverable;\n- `hyperframes-animation/scripts/animation-map.mjs` is reviewed for multi-scene work;\n- the user approves the final Studio preview before render;\n- the rendered file is verified when a render was requested.\n\nAfter final approval, offer once to freeze the run as a recipe, following `../hyperframes/references/review-loop.md` § 4.\n\nFile v1.0.25:_meta.json\n\n{\n  \"ownerId\": \"kn77d06grj6xqp3dqwkk4bavhn89pegt\",\n  \"slug\": \"general-video\",\n  \"version\": \"1.0.25\",\n  \"publishedAt\": 1791358185795\n}\n\nFile v1.0.25:skill-card.md\n\n## Description:\n\nAuthors and edits custom HyperFrames video compositions when specialized workflows do not fit, including multi-scene pieces, title cards, and footage remixes.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[heygen-com](https://clawhub.ai/user/heygen-com)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nVideo creators and developers use this skill to plan, build, revise, and check custom HyperFrames compositions for projects that do not fit a specialized workflow.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Unpinned external commands and built-in skill updates may change the reviewed workflow.\n\nMitigation: Review before installation; use a trusted, pinned HyperFrames CLI/package source and review updates before running them.\n\nRisk: External commands can modify project files in environments with sensitive files or credentials.\n\nMitigation: Review the skill and limit access to sensitive project files and credentials before execution.\n\n## Reference(s):\n\n- [General Video on ClawHub](https://clawhub.ai/heygen-com/skills/general-video)\n\n## Skill Output:\n\n**Output Type(s):** [Code, Markdown, Shell commands, Files]\n\n**Output Format:** [HTML compositions, project files, preview or rendered video, and Markdown handoff]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Rendering requires final preview approval; reports duration for time-based deliverables.]\n\n## Skill Version(s):\n\n1.0.25 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.25:sub-agents/frame-worker.md\n\n# Frame worker — general-video delta\n\n> The shared law is the core contract above (the packet builder prepends `../../hyperframes/references/frame-worker-core.md` to this file as `_role.md`) — read the two as one role. This file carries only what's specific to a general-video scene; you run N-up, **one scene each** — your dispatch carries exactly one packet. Tempted to add a generic GSAP / timeline rule here? Wrong home — it belongs in the core contract or `hyperframes-core`.\n\n## Your scene is invented, not captured\n\nThere is no product capture pipeline: your packet's storyboard block plus the design truth file named in Project inputs are your complete input. Invent elements from those two sources only — use exactly the media paths the block itself names, and never resolve or fetch new media (the orchestrator staged everything your block cites before dispatch).\n\n## Design truth\n\nProject inputs names the design file (resolution order `frame.md` → `design.md` → `DESIGN.md`). It is brand truth for tokens, type, palette, and treatment; the storyboard block owns content. When the block and the design file disagree on content, the block wins; on style, the design file wins.\n\n## Output contract — composition + motion sidecar\n\nWrite exactly two files, then stop:\n\n1. `compositions/<frame_id>.html` — the sub-composition, a bare fragment per the core contract.\n2. `compositions/<frame_id>.motion.json` — one JSON object the orchestrator merges into the project's motion ledger:\n\n```json\n{\n  \"scene\": \"<frame_id>\",\n  \"duration_s\": 0.0,\n  \"rules\": [\"<rule ids you actually used>\"],\n  \"exit\": { \"vector\": \"<direction + px/s at your last frame>\", \"still_moving\": true },\n  \"entry\": { \"vector\": \"<direction + px/s at your first frame>\", \"from_rest\": false }\n}\n```\n\nReport what you actually authored — measured values from your timeline, not the plan's hopes; where the doctrine chain is installed, a numeric seam gate verifies exits and entries downstream and a wrong sidecar fails loudly there instead of silently here.\n\n## Boundaries\n\nAudio is orchestrator-owned: never author `<audio>` in a scene. Seams between scenes are stamped by the orchestrator from the ledger — author your entry/exit motion inside your own timeline, and never reach into a neighbor scene's file.\n\nArchive v1.0.24: 7 files, 15549 bytes\n\nFiles: scripts/frame-packets.mjs (1462b), scripts/frame-packets.test.mjs (3584b), scripts/lib/frame-packets-core.mjs (7408b), skill-card.md (1694b), SKILL.md (21541b), sub-agents/frame-worker.md (2304b), _meta.json (133b)\n\nFile v1.0.24:SKILL.md\n\n---\nname: general-video\ndescription: >\n  Author or edit a custom HyperFrames composition when no specialized workflow fits, or when\n  BRIEF.md sets flow: companion. Use for longer or multi-scene pieces, brand and sizzle reels,\n  montages, static loops, static title cards, footage remixes, and freeform builds. Use\n  motion-graphics instead for a short unnarrated motion-first unit, including an animated title.\n  Route fresh creation through hyperframes before using this skill.\n---\n\n**Plugin installs:** Before setup or freshness commands, follow [plugin execution rules](../hyperframes/references/plugin-installation.md) when this skill is inside a HyperFrames plugin. Standalone installs keep the update instructions below.\n\n# General video\n\nRun `npx hyperframes usage --json` at the start unless the workflow just read it, then check again at milestones such as after drafting and before rendering. Read the available windows and reset times. If usage is unknown, say so without guessing allowance; keep scope and workflow choices with the user.\n\nBefore relying on this workflow, run:\n\n```bash\nnpx hyperframes skills update general-video\n```\n\nA successful no-op means the skill is current. Surface an update failure instead of continuing from memory.\n\n## 1. Apply cross-cutting source adapters\n\n- **Media:** For any audio, image, icon, logo, voice, grade, LUT, treatment/effect, caption, or media-operation need, load `/media-use` and follow `../media-use/references/resolve.md` (resolve, adopt, reuse) and `../media-use/references/setup-providers.md` (providers, auth). Vague footage feedback and named styles use `../media-use/references/media-treatments.md` 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. Local adoption alone does not require an auth gate.\n- **Figma:** If any input is a `figma.com` URL, run `/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.\n\nThese adapters do not change the workflow selected by `/hyperframes`.\n\n## 2. Start from project state\n\nApply the first matching row; do not evaluate lower state rows:\n\n| State                                                      | Action                                                                                                         |\n| ---------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |\n| Specific edit                                              | Make the edit, preserve existing project decisions, then rerun affected checks. Do not reopen discovery.       |\n| `BRIEF.md` exists                                          | Read it. If `workflow` names another workflow and `flow` is not `companion`, hand off. Ask no brief questions. |\n| No brief, but `hyperframes.json` or `STORYBOARD.md` exists | Resume from files and recorded preferences. Backfill `BRIEF.md` only from known facts.                         |\n| Fresh creation                                             | Run `/hyperframes` and its intent layer. Return here only for `workflow: general-video` or `flow: companion`.  |\n\nFor a new project, choose a kebab-case directory name from the brief and scaffold before writing the brief:\n\n```bash\nnpx hyperframes init \"videos/<project>\" --non-interactive --example=blank --skill=general-video\n```\n\nThen 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`. Record only the confirmed preference-backed fields named by the brief format, using `node <MEDIA_DIR>/scripts/prefs.mjs record --hyperframes <PROJECT_ROOT>`; never record inferred defaults. Here `<MEDIA_DIR>` is the installed `/media-use` skill directory and `<PROJECT_ROOT>` is the directory containing `hyperframes.json`. If the intent layer adopted a recipe, apply it now with `node <MEDIA_DIR>/scripts/recipe.mjs use --hyperframes <PROJECT_ROOT> --name <name>` and do not ask again.\n\n## 3. Interpret the run shape\n\nUse only the canonical terms from `../hyperframes/references/brief-contract.md`:\n\n| Field          | Meaning                               | Effect                                                                              |\n| -------------- | ------------------------------------- | ----------------------------------------------------------------------------------- |\n| `flow`         | Who drives                            | `automation`: choose and execute the route. `companion`: co-create in conversation. |\n| `storyboard`   | Plan, sketch, and review before build | `yes`: run plan and sketch review (`storyboard.html`). `no`: build without it.      |\n| derived `mode` | How checkpoint gates behave           | Follow the brief contract. Never ask the user to name a mode.                       |\n\nDo 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`.\n\n- For `flow: automation`, choose the route and state it in one line in the first progress update.\n- For a specific edit, make the edit without inventing a new route.\n\nFor a hard cut, trim, splice, or reorder of existing footage, duplicate the same\nvideo source into multiple clip elements. On each copy, set the source range\nwith `data-media-start` plus `data-duration`, then set authored placement/order\nwith `data-start`. Each video segment keeps its sound: the sound stays on the clip (`data-has-audio=\"true\"`), so cutting the video cuts its sound. `/hyperframes-core` owns this temporal\nedit; use `/hyperframes-keyframes` only for visual-property animation such as\nzoom, punch, pan, crop, mask, or `clip-path` on an inner wrapper.\nCopy the full contracts from `../hyperframes-core/references/creator-editing-recipes.md`.\n\n### Companion flow\n\nWhen `flow: companion`:\n\n- Read `BRIEF.md` and reconcile accepted `## Assets` and `## Customizations` with project artifacts. Complete accepted work that is still pending; leave completed work alone; do not offer an accepted capability again as if it were new.\n- **Arrive as the director, not the contractor.** A user who chose companion chose involvement and quality; the honest response is the best version you can design, not the smallest one you can defend. The first plan is the ceiling treatment: the story arc (borrow the nearest genre lens — menu § Genre lenses), the design spec, each scene's motion treatment cited by name (§ 5's plan discipline), the transitions, the audio identity — music and sound marks, or deliberate silence — the user's material placed, and a designed open and close. Say what each layer adds in one line; flag the expensive ones (render time, sign-in, billing) as you name them. The user trims a treatment down; they should never have to assemble one approval by approval.\n- **The ceiling belongs to the concept, not the toolbox.** Every layer must serve the brief's message — a treatment that would dress any video the same way is decoration. Craft rises to the ceiling; content never grows past what was asked (§ 6).\n- Between checkpoints, `../hyperframes/references/capability-menu.md` works two ways. As the trigger list: offer a relevant capability when the user mentions its input or the build reaches its need. 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 (\"scene 3's stat wants the count-up treatment\"). Read it before offering; never dump the full catalog.\n- After the user accepts a capability, produce its artifact and record the decision in the matching `BRIEF.md` body section immediately. Rewrite a frontmatter field and record the confirmed preference only when the user explicitly changes it.\n- Keep the same storyboard, validation, final-preview, and render-approval gates. Companion changes who steers, not what quality requires.\n\n## 4. Load required knowledge before each stage\n\nThese reads are mandatory when their condition matches:\n\n| Condition                                                                                                         | Read before acting                                                                                                                                                                                                                     |\n| ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Any composition HTML or scene layout                                                                              | `/hyperframes-core`; use `references/determinism-rules.md` for its layout contract                                                                                                                                                     |\n| Any non-trivial creation or visual treatment                                                                      | `/hyperframes-creative` → `references/house-style.md` and `references/video-composition.md`                                                                                                                                            |\n| Any motion, animation, or scene transition                                                                        | `/hyperframes-animation`; follow its routing to the matching rules, adapters, blueprints, or transition references                                                                                                                     |\n| `storyboard: yes`                                                                                                 | `../hyperframes/references/storyboard-format.md` and `../hyperframes/references/review-loop.md`                                                                                                                                        |\n| Any media asset or operation, including narration, BGM, SFX, captions, grading, or transforms                     | `/media-use`; for framework playback and placement also read `/hyperframes-core` → `references/variables-and-media.md`                                                                                                                 |\n| Multi-scene assembly                                                                                              | `../hyperframes/references/production-loop.md`                                                                                                                                                                                         |\n| `flow: companion`, before the first plan                                                                          | `/hyperframes-creative` → `references/story-spine.md` and `references/house-style.md`; the nearest genre lens and the full `../hyperframes/references/capability-menu.md` — the ceiling treatment is designed from these, not recalled |\n| A companion capability offer, capture, beat grid, generative video, map, publishing, or cross-workflow capability | `../hyperframes/references/capability-menu.md`                                                                                                                                                                                         |\n| A design spec exists, before final approval                                                                       | `/hyperframes-creative` → `references/design-adherence.md`                                                                                                                                                                             |\n\nDo not replace these reads with recollection. Progressive disclosure saves context only when the matching reference is actually loaded.\n\n## 5. Execute the composition\n\nUse this dependency order. Skip a stage only when its input is absent.\n\n1. **Plan.** State the viewer arc, structure, rhythm, and duration driver. Use one file for a short single scene; use sub-compositions for three or more hard scene cuts or any reused scene. Read `/hyperframes-creative` → `references/story-spine.md` for narrated arcs, `references/beat-direction.md` for rhythm, and `/hyperframes-core` → `references/composition-patterns.md` for structure. For an open-ended multi-scene brief, expand the prompt through `/hyperframes-creative` → `references/prompt-expansion.md`. A multi-scene plan cites each scene's shape: a blueprint id from `/hyperframes-animation` → `blueprints-index.md` when one fits, or the named rules it composes from `rules-index.md` when none does — motion names come from those indexes, never invented. Story truth decides which scenes exist; the citation dresses them. **Search the live catalog before you plan to build any named look yourself**: for every look, effect, treatment or transition the brief names — \"CRT scanlines\", \"glitch\", \"film grain\", \"shimmer sweep\", \"confetti burst\" — run `npx hyperframes catalog --query \"<the look, in plain English>\" --json` and read the top results before the plan names how that look gets built. The search needs **nothing installed**: no project, no prior `add`, no account. It ranks the whole hosted registry (~400 blocks and components) from any directory, so it also applies to a look the user asks for mid-build. Blocks the plan names are installed at stage 3; hand-author a look only after a search for it came back with nothing that fits. A multi-scene plan is also recorded as the dispatch artifact: one `## Frame N` block per scene in `STORYBOARD.md` — `status: outline`, a declared `src:`, the blueprint/rules citation, and the beat text — **even when `storyboard: no`**. The block is the dispatch unit; the storyboard sheet is only the review surface.\n2. **Review the plan when requested.** For `storyboard: yes`, run the shared review loop over those blocks. For `storyboard: no`, continue without a plan pause or sketch sheet. When a plan pause happens anyway, fold the sub-agent delegation grant (needed by codex for step 4's dispatch) into that pause rather than stopping again later.\n3. **Resolve dependencies.** Install registry blocks before parallel work. Stage user assets, adopt existing media, and resolve only what the brief requires. Start audio early when its timings drive duration.\n4. **Build scenes.** For a short single-scene piece, implement the scene at its most visible moment before adding motion (the confirmed wireframe, when present, is that end state and must not be redrawn), then animate from its cited blueprint or rules — read the full recipe body (`/hyperframes-animation` → `blueprints/<id>.md`, `rules/<id>.md`) before writing motion.\n\n   **Dispatch pays for itself only at scale.** Authoring packets and warming fresh worker contexts costs real minutes and tokens: a film of up to ~6 short scenes builds FASTER inline, in this context, one scene after another (measured: 5 short scenes ≈ 9 min inline vs ≈ 21 min packetized). Fan out only when the plan exceeds that — more scenes, or individually heavy ones — and then give each worker **2–3 scenes**, not one, and spawn **all workers in a single wave** (a second wave nearly doubles the window). When dispatching:\n\n   `node <SKILL_DIR>/scripts/frame-packets.mjs --project \"$PROJECT_DIR\" --storyboard \"$PROJECT_DIR/STORYBOARD.md\"`\n\n   The builder writes one bounded packet per scene under `.hyperframes/frame-packets/` (the scene's exact storyboard block + the blueprint body + every cited rule recipe, inlined) and `_role.md` (`../hyperframes/references/frame-worker-core.md` + this skill's `sub-agents/frame-worker.md`, concatenated verbatim — the complete worker role). Dispatch the workers — 2–3 scene packets each, all in one wave (`../hyperframes/references/subagent-dispatch.md`); each worker's prompt carries `_role.md` and its packets — paste them in full, or hand the file paths for the worker to read first (equivalent either way) — plus a dispatch context with `PROJECT_DIR`, its `frame_id`s, and canvas size. WAIT on every scene's `compositions/<frame_id>.html` + `compositions/<frame_id>.motion.json`. Workers read only their packets and the design truth file; they never open `STORYBOARD.md` or the skill documents. With no delegation channel, fall back serially: process one packet at a time in this context, still working from the packet alone.\n\n5. **Merge motion sidecars.** Collect the workers' `compositions/<frame_id>.motion.json` files and carry their durations and exit/entry vectors into assembly; where the doctrine chain (`/motion-doctrine`) is installed, translate them into the project ledger before stamping seams.\n6. **Assemble.** Mount scenes, media, transitions, captions, and audio using the production loop. Real voice duration overrides estimates. When a music bed plays under any voice track, carve the bed before verifying: `/hyperframes-audio` → `scripts/carve.mjs --comp index.html`. A volume duck alone does not finish the mix.\n7. **Verify.** Use `npx hyperframes lint` for fast feedback after the first HTML pass and structural changes. For the final gate, run `npx hyperframes check`; it reruns lint internally, so do not run a redundant standalone lint immediately before it. For sub-compositions, inspect midpoint snapshots. For multi-scene work, review the animation map.\n8. **Final approval.** Once checks pass, open the final Studio preview — in autonomous mode too, before any render: opening it asks nothing. Ask whether to render or revise (autonomous: the one kept question). Render only after approval.\n\n## 6. Gates that always apply\n\n### Keep scope exact\n\nBuild what the user asked for. A title card is not a title card plus three scenes, music, and captions. Offer additions before adding them.\n\n### Establish design before HTML\n\nResolve the design source in this order: `frame.md` → `design.md` → `DESIGN.md`. Treat the first file found as brand truth.\n\nWhen no design spec exists, complete all four items before writing composition HTML:\n\n1. Ground the visual identity in `house-style.md` and `video-composition.md`.\n2. Write one sentence naming the concept angle for every non-trivial creation.\n3. Choose an embeddable font pairing from `/hyperframes-creative` → `references/typography.md`; do not assume an unbundled display font exists in cloud rendering.\n4. Define the focal element, edge anchors, supporting detail, and background treatment.\n\nMatch density to the requested format and message. Density examples are guidance for produced frames, not permission to invent claims, scenes, or a fixed number of elements.\n\nFor a named style or mood, read `/hyperframes-creative` → `references/visual-styles.md`. When the user needs to choose visually and no shipped preset fits, read `/hyperframes-creative` → `references/design-picker.md` and run the interactive design selection there.\n\n### Preserve the composition contract\n\nTimed elements use `class=\"clip\"`; the root and relevant ancestors are sized; each composition registers one paused, seek-safe timeline on `window.__timelines`; rendering is deterministic. Do not use render-time network fetches, clocks, or unseeded randomness.\n\n### Borrow workflows safely\n\nWhen the piece resembles a shipped workflow, borrow its genre references as examples. First run `npx hyperframes skills update <workflow-name>`. Borrow its story shape and taste, not its private scripts, pipeline state, or directory contract. The generic build remains owned by this skill.\n\n## 7. Done\n\nA run is complete only when:\n\n- requested scope is implemented;\n- for `flow: companion`, the treatment is delivered, not just the scope: every scene's cited blueprint or rules realized, the audio identity present (or the silence chosen and said), the open and close designed rather than defaulted;\n- `npx hyperframes check` passes, including its built-in lint stage;\n- design adherence is reviewed against `/hyperframes-creative` → `references/design-adherence.md` when a design spec exists;\n- contrast findings are resolved;\n- sub-composition snapshots are inspected when applicable;\n- an autonomous handoff includes an inspected contact or snapshot sheet; multi-scene sheets use scene midpoints;\n- the handoff names the final preview or rendered artifact as applicable and reports the actual duration for a time-based deliverable;\n- `hyperframes-animation/scripts/animation-map.mjs` is reviewed for multi-scene work;\n- the user approves the final Studio preview before render;\n- the rendered file is verified when a render was requested.\n\nAfter final approval, offer once to freeze the run as a recipe, following `../hyperframes/references/review-loop.md` § 4.\n\nFile v1.0.24:_meta.json\n\n{\n  \"ownerId\": \"kn77d06grj6xqp3dqwkk4bavhn89pegt\",\n  \"slug\": \"general-video\",\n  \"version\": \"1.0.24\",\n  \"publishedAt\": 1791119234607\n}\n\nFile v1.0.24:skill-card.md\n\n## Description:\n\nGuides agents in authoring or editing custom HyperFrames video compositions, including multi-scene pieces, reels, montages, loops, title cards, and footage remixes.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[heygen-com](https://clawhub.ai/user/heygen-com)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nVideo creators and developers use this skill to plan, build, and refine custom HyperFrames compositions when a specialized workflow does not fit or a companion-led production is requested.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Live, unpinned HyperFrames CLI updates may change the code or workflow content used during a run.\n\nMitigation: Prefer a pinned or locally vetted CLI, and review update changes before rendering or broader provider actions.\n\n## Reference(s):\n\n- [General Video on ClawHub](https://clawhub.ai/heygen-com/skills/general-video)\n- [Frame worker instructions](sub-agents/frame-worker.md)\n\n## Skill Output:\n\n**Output Type(s):** [Code, Markdown, Shell commands, Files, Guidance]\n\n**Output Format:** [HTML compositions, JSON motion data, Markdown planning documents, and video files after approved rendering]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Checks compositions and requests preview approval before rendering.]\n\n## Skill Version(s):\n\n1.0.24 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.24:sub-agents/frame-worker.md\n\n# Frame worker — general-video delta\n\n> The shared law is the core contract above (the packet builder prepends `../../hyperframes/references/frame-worker-core.md` to this file as `_role.md`) — read the two as one role. This file carries only what's specific to a general-video scene; you run N-up, **one scene each** — your dispatch carries exactly one packet. Tempted to add a generic GSAP / timeline rule here? Wrong home — it belongs in the core contract or `hyperframes-core`.\n\n## Your scene is invented, not captured\n\nThere is no product capture pipeline: your packet's storyboard block plus the design truth file named in Project inputs are your complete input. Invent elements from those two sources only — use exactly the media paths the block itself names, and never resolve or fetch new media (the orchestrator staged everything your block cites before dispatch).\n\n## Design truth\n\nProject inputs names the design file (resolution order `frame.md` → `design.md` → `DESIGN.md`). It is brand truth for tokens, type, palette, and treatment; the storyboard block owns content. When the block and the design file disagree on content, the block wins; on style, the design file wins.\n\n## Output contract — composition + motion sidecar\n\nWrite exactly two files, then stop:\n\n1. `compositions/<frame_id>.html` — the sub-composition, a bare fragment per the core contract.\n2. `compositions/<frame_id>.motion.json` — one JSON object the orchestrator merges into the project's motion ledger:\n\n```json\n{\n  \"scene\": \"<frame_id>\",\n  \"duration_s\": 0.0,\n  \"rules\": [\"<rule ids you actually used>\"],\n  \"exit\": { \"vector\": \"<direction + px/s at your last frame>\", \"still_moving\": true },\n  \"entry\": { \"vector\": \"<direction + px/s at your first frame>\", \"from_rest\": false }\n}\n```\n\nReport what you actually authored — measured values from your timeline, not the plan's hopes; where the doctrine chain is installed, a numeric seam gate verifies exits and entries downstream and a wrong sidecar fails loudly there instead of silently here.\n\n## Boundaries\n\nAudio is orchestrator-owned: never author `<audio>` in a scene. Seams between scenes are stamped by the orchestrator from the ledger — author your entry/exit motion inside your own timeline, and never reach into a neighbor scene's file.\n\nArchive v1.0.23: 7 files, 15581 bytes\n\nFiles: scripts/frame-packets.mjs (1462b), scripts/frame-packets.test.mjs (3584b), scripts/lib/frame-packets-core.mjs (7408b), skill-card.md (1837b), SKILL.md (21439b), sub-agents/frame-worker.md (2304b), _meta.json (133b)\n\nFile v1.0.23:SKILL.md\n\n---\nname: general-video\ndescription: >\n  Author or edit a custom HyperFrames composition when no specialized workflow fits, or when\n  BRIEF.md sets flow: companion. Use for longer or multi-scene pieces, brand and sizzle reels,\n  montages, static loops, static title cards, footage remixes, and freeform builds. Use\n  motion-graphics instead for a short unnarrated motion-first unit, including an animated title.\n  Route fresh creation through hyperframes before using this skill.\n---\n\n**Plugin installs:** Before setup or freshness commands, follow [plugin execution rules](../hyperframes/references/plugin-installation.md) when this skill is inside a HyperFrames plugin. Standalone installs keep the update instructions below.\n\n# General video\n\nRun `npx hyperframes usage --json` at the start unless the workflow just read it, then check again at milestones such as after drafting and before rendering. Read the available windows and reset times. If usage is unknown, say so without guessing allowance; keep scope and workflow choices with the user.\n\nBefore relying on this workflow, run:\n\n```bash\nnpx hyperframes skills update general-video\n```\n\nA successful no-op means the skill is current. Surface an update failure instead of continuing from memory.\n\n## 1. Apply cross-cutting source adapters\n\n- **Media:** For any audio, image, icon, logo, voice, grade, LUT, treatment/effect, caption, or media-operation need, load `/media-use` and follow `../media-use/references/resolve.md` (resolve, adopt, reuse) and `../media-use/references/setup-providers.md` (providers, auth). Vague footage feedback and named styles use `../media-use/references/media-treatments.md` 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. Local adoption alone does not require an auth gate.\n- **Figma:** If any input is a `figma.com` URL, run `/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.\n\nThese adapters do not change the workflow selected by `/hyperframes`.\n\n## 2. Start from project state\n\nApply the first matching row; do not evaluate lower state rows:\n\n| State                                                      | Action                                                                                                         |\n| ---------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |\n| Specific edit                                              | Make the edit, preserve existing project decisions, then rerun affected checks. Do not reopen discovery.       |\n| `BRIEF.md` exists                                          | Read it. If `workflow` names another workflow and `flow` is not `companion`, hand off. Ask no brief questions. |\n| No brief, but `hyperframes.json` or `STORYBOARD.md` exists | Resume from files and recorded preferences. Backfill `BRIEF.md` only from known facts.                         |\n| Fresh creation                                             | Run `/hyperframes` and its intent layer. Return here only for `workflow: general-video` or `flow: companion`.  |\n\nFor a new project, choose a kebab-case directory name from the brief and scaffold before writing the brief:\n\n```bash\nnpx hyperframes init \"videos/<project>\" --non-interactive --example=blank --skill=general-video\n```\n\nThen 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`. Record only the confirmed preference-backed fields named by the brief format, using `node <MEDIA_DIR>/scripts/prefs.mjs record --hyperframes <PROJECT_ROOT>`; never record inferred defaults. Here `<MEDIA_DIR>` is the installed `/media-use` skill directory and `<PROJECT_ROOT>` is the directory containing `hyperframes.json`. If the intent layer adopted a recipe, apply it now with `node <MEDIA_DIR>/scripts/recipe.mjs use --hyperframes <PROJECT_ROOT> --name <name>` and do not ask again.\n\n## 3. Interpret the run shape\n\nUse only the canonical terms from `../hyperframes/references/brief-contract.md`:\n\n| Field          | Meaning                               | Effect                                                                              |\n| -------------- | ------------------------------------- | ----------------------------------------------------------------------------------- |\n| `flow`         | Who drives                            | `automation`: choose and execute the route. `companion`: co-create in conversation. |\n| `storyboard`   | Plan, sketch, and review before build | `yes`: run plan and sketch review (`storyboard.html`). `no`: build without it.      |\n| derived `mode` | How checkpoint gates behave           | Follow the brief contract. Never ask the user to name a mode.                       |\n\nDo 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`.\n\n- For `flow: automation`, choose the route and state it in one line in the first progress update.\n- For a specific edit, make the edit without inventing a new route.\n\nFor a hard cut, trim, splice, or reorder of existing footage, duplicate the same\nvideo source into multiple clip elements. On each copy, set the source range\nwith `data-media-start` plus `data-duration`, then set authored placement/order\nwith `data-start`. Each video segment keeps its sound: the sound stays on the clip (`data-has-audio=\"true\"`), so cutting the video cuts its sound. `/hyperframes-core` owns this temporal\nedit; use `/hyperframes-keyframes` only for visual-property animation such as\nzoom, punch, pan, crop, mask, or `clip-path` on an inner wrapper.\nCopy the full contracts from `../hyperframes-core/references/creator-editing-recipes.md`.\n\n### Companion flow\n\nWhen `flow: companion`:\n\n- Read `BRIEF.md` and reconcile accepted `## Assets` and `## Customizations` with project artifacts. Complete accepted work that is still pending; leave completed work alone; do not offer an accepted capability again as if it were new.\n- **Arrive as the director, not the contractor.** A user who chose companion chose involvement and quality; the honest response is the best version you can design, not the smallest one you can defend. The first plan is the ceiling treatment: the story arc (borrow the nearest genre lens — menu § Genre lenses), the design spec, each scene's motion treatment cited by name (§ 5's plan discipline), the transitions, the audio identity — music and sound marks, or deliberate silence — the user's material placed, and a designed open and close. Say what each layer adds in one line; flag the expensive ones (render time, sign-in, billing) as you name them. The user trims a treatment down; they should never have to assemble one approval by approval.\n- **The ceiling belongs to the concept, not the toolbox.** Every layer must serve the brief's message — a treatment that would dress any video the same way is decoration. Craft rises to the ceiling; content never grows past what was asked (§ 6).\n- Between checkpoints, `../hyperframes/references/capability-menu.md` works two ways. As the trigger list: offer a relevant capability when the user mentions its input or the build reaches its need. 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 (\"scene 3's stat wants the count-up treatment\"). Read it before offering; never dump the full catalog.\n- After the user accepts a capability, produce its artifact and record the decision in the matching `BRIEF.md` body section immediately. Rewrite a frontmatter field and record the confirmed preference only when the user explicitly changes it.\n- Keep the same storyboard, validation, final-preview, and render-approval gates. Companion changes who steers, not what quality requires.\n\n## 4. Load required knowledge before each stage\n\nThese reads are mandatory when their condition matches:\n\n| Condition                                                                                                         | Read before acting                                                                                                                                                                                                                     |\n| ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Any composition HTML or scene layout                                                                              | `/hyperframes-core`; use `references/determinism-rules.md` for its layout contract                                                                                                                                                     |\n| Any non-trivial creation or visual treatment                                                                      | `/hyperframes-creative` → `references/house-style.md` and `references/video-composition.md`                                                                                                                                            |\n| Any motion, animation, or scene transition                                                                        | `/hyperframes-animation`; follow its routing to the matching rules, adapters, blueprints, or transition references                                                                                                                     |\n| `storyboard: yes`                                                                                                 | `../hyperframes/references/storyboard-format.md` and `../hyperframes/references/review-loop.md`                                                                                                                                        |\n| Any media asset or operation, including narration, BGM, SFX, captions, grading, or transforms                     | `/media-use`; for framework playback and placement also read `/hyperframes-core` → `references/variables-and-media.md`                                                                                                                 |\n| Multi-scene assembly                                                                                              | `../hyperframes/references/production-loop.md`                                                                                                                                                                                         |\n| `flow: companion`, before the first plan                                                                          | `/hyperframes-creative` → `references/story-spine.md` and `references/house-style.md`; the nearest genre lens and the full `../hyperframes/references/capability-menu.md` — the ceiling treatment is designed from these, not recalled |\n| A companion capability offer, capture, beat grid, generative video, map, publishing, or cross-workflow capability | `../hyperframes/references/capability-menu.md`                                                                                                                                                                                         |\n| A design spec exists, before final approval                                                                       | `/hyperframes-creative` → `references/design-adherence.md`                                                                                                                                                                             |\n\nDo not replace these reads with recollection. Progressive disclosure saves context only when the matching reference is actually loaded.\n\n## 5. Execute the composition\n\nUse this dependency order. Skip a stage only when its input is absent.\n\n1. **Plan.** State the viewer arc, structure, rhythm, and duration driver. Use one file for a short single scene; use sub-compositions for three or more hard scene cuts or any reused scene. Read `/hyperframes-creative` → `references/story-spine.md` for narrated arcs, `references/beat-direction.md` for rhythm, and `/hyperframes-core` → `references/composition-patterns.md` for structure. For an open-ended multi-scene brief, expand the prompt through `/hyperframes-creative` → `references/prompt-expansion.md`. A multi-scene plan cites each scene's shape: a blueprint id from `/hyperframes-animation` → `blueprints-index.md` when one fits, or the named rules it composes from `rules-index.md` when none does — motion names come from those indexes, never invented. Story truth decides which scenes exist; the citation dresses them. **Search the live catalog before you plan to build any named look yourself**: for every look, effect, treatment or transition the brief names — \"CRT scanlines\", \"glitch\", \"film grain\", \"shimmer sweep\", \"confetti burst\" — run `npx hyperframes catalog --query \"<the look, in plain English>\" --json` and read the top results before the plan names how that look gets built. The search needs **nothing installed**: no project, no prior `add`, no account. It ranks the whole hosted registry (~400 blocks and components) from any directory, so it also applies to a look the user asks for mid-build. Blocks the plan names are installed at stage 3; hand-author a look only after a search for it came back with nothing that fits. A multi-scene plan is also recorded as the dispatch artifact: one `## Frame N` block per scene in `STORYBOARD.md` — `status: outline`, a declared `src:`, the blueprint/rules citation, and the beat text — **even when `storyboard: no`**. The block is the dispatch unit; the storyboard sheet is only the review surface.\n2. **Review the plan when requested.** For `storyboard: yes`, run the shared review loop over those blocks. For `storyboard: no`, continue without a plan pause or sketch sheet. When a plan pause happens anyway, fold the sub-agent delegation grant (needed by codex for step 4's dispatch) into that pause rather than stopping again later.\n3. **Resolve dependencies.** Install registry blocks before parallel work. Stage user assets, adopt existing media, and resolve only what the brief requires. Start audio early when its timings drive duration.\n4. **Build scenes.** For a short single-scene piece, implement the scene at its most visible moment before adding motion (the confirmed wireframe, when present, is that end state and must not be redrawn), then animate from its cited blueprint or rules — read the full recipe body (`/hyperframes-animation` → `blueprints/<id>.md`, `rules/<id>.md`) before writing motion.\n\n   **Dispatch pays for itself only at scale.** Authoring packets and warming fresh worker contexts costs real minutes and tokens: a film of up to ~6 short scenes builds FASTER inline, in this context, one scene after another (measured: 5 short scenes ≈ 9 min inline vs ≈ 21 min packetized). Fan out only when the plan exceeds that — more scenes, or individually heavy ones — and then give each worker **2–3 scenes**, not one, and spawn **all workers in a single wave** (a second wave nearly doubles the window). When dispatching:\n\n   `node <SKILL_DIR>/scripts/frame-packets.mjs --project \"$PROJECT_DIR\" --storyboard \"$PROJECT_DIR/STORYBOARD.md\"`\n\n   The builder writes one bounded packet per scene under `.hyperframes/frame-packets/` (the scene's exact storyboard block + the blueprint body + every cited rule recipe, inlined) and `_role.md` (`../hyperframes/references/frame-worker-core.md` + this skill's `sub-agents/frame-worker.md`, concatenated verbatim — the complete worker role). Dispatch the workers — 2–3 scene packets each, all in one wave (`../hyperframes/references/subagent-dispatch.md`); each worker's prompt carries `_role.md` and its packets — paste them in full, or hand the file paths for the worker to read first (equivalent either way) — plus a dispatch context with `PROJECT_DIR`, its `frame_id`s, and canvas size. WAIT on every scene's `compositions/<frame_id>.html` + `compositions/<frame_id>.motion.json`. Workers read only their packets and the design truth file; they never open `STORYBOARD.md` or the skill documents. With no delegation channel, fall back serially: process one packet at a time in this context, still working from the packet alone.\n\n5. **Merge motion sidecars.** Collect the workers' `compositions/<frame_id>.motion.json` files and carry their durations and exit/entry vectors into assembly; where the doctrine chain (`/motion-doctrine`) is installed, translate them into the project ledger before stamping seams.\n6. **Assemble.** Mount scenes, media, transitions, captions, and audio using the production loop. Real voice duration overrides estimates. When a music bed plays under any voice track, carve the bed before verifying: `/hyperframes-audio` → `scripts/carve.mjs --comp index.html`. A volume duck alone does not finish the mix.\n7. **Verify.** Use `npx hyperframes lint` for fast feedback after the first HTML pass and structural changes. For the final gate, run `npx hyperframes check`; it reruns lint internally, so do not run a redundant standalone lint immediately before it. For sub-compositions, inspect midpoint snapshots. For multi-scene work, review the animation map.\n8. **Final approval.** Open the final Studio preview only after checks pass. Ask whether to render or revise. Render only after approval.\n\n## 6. Gates that always apply\n\n### Keep scope exact\n\nBuild what the user asked for. A title card is not a title card plus three scenes, music, and captions. Offer additions before adding them.\n\n### Establish design before HTML\n\nResolve the design source in this order: `frame.md` → `design.md` → `DESIGN.md`. Treat the first file found as brand truth.\n\nWhen no design spec exists, complete all four items before writing composition HTML:\n\n1. Ground the visual identity in `house-style.md` and `video-composition.md`.\n2. Write one sentence naming the concept angle for every non-trivial creation.\n3. Choose an embeddable font pairing from `/hyperframes-creative` → `references/typography.md`; do not assume an unbundled display font exists in cloud rendering.\n4. Define the focal element, edge anchors, supporting detail, and background treatment.\n\nMatch density to the requested format and message. Density examples are guidance for produced frames, not permission to invent claims, scenes, or a fixed number of elements.\n\nFor a named style or mood, read `/hyperframes-creative` → `references/visual-styles.md`. When the user needs to choose visually and no shipped preset fits, read `/hyperframes-creative` → `references/design-picker.md` and run the interactive design selection there.\n\n### Preserve the composition contract\n\nTimed elements use `class=\"clip\"`; the root and relevant ancestors are sized; each composition registers one paused, seek-safe timeline on `window.__timelines`; rendering is deterministic. Do not use render-time network fetches, clocks, or unseeded randomness.\n\n### Borrow workflows safely\n\nWhen the piece resembles a shipped workflow, borrow its genre references as examples. First run `npx hyperframes skills update <workflow-name>`. Borrow its story shape and taste, not its private scripts, pipeline state, or directory contract. The generic build remains owned by this skill.\n\n## 7. Done\n\nA run is complete only when:\n\n- requested scope is implemented;\n- for `flow: companion`, the treatment is delivered, not just the scope: every scene's cited blueprint or rules realized, the audio identity present (or the silence chosen and said), the open and close designed rather than defaulted;\n- `npx hyperframes check` passes, including its built-in lint stage;\n- design adherence is reviewed against `/hyperframes-creative` → `references/design-adherence.md` when a design spec exists;\n- contrast findings are resolved;\n- sub-composition snapshots are inspected when applicable;\n- an autonomous handoff includes an inspected contact or snapshot sheet; multi-scene sheets use scene midpoints;\n- the handoff names the final preview or rendered artifact as applicable and reports the actual duration for a time-based deliverable;\n- `hyperframes-animation/scripts/animation-map.mjs` is reviewed for multi-scene work;\n- the user approves the final Studio preview before render;\n- the rendered file is verified when a render was requested.\n\nAfter final approval, offer once to freeze the run as a recipe, following `../hyperframes/references/review-loop.md` § 4.\n\nFile v1.0.23:_meta.json\n\n{\n  \"ownerId\": \"kn77d06grj6xqp3dqwkk4bavhn89pegt\",\n  \"slug\": \"general-video\",\n  \"version\": \"1.0.23\",\n  \"publishedAt\": 1790987905556\n}\n\nFile v1.0.23:skill-card.md\n\n## Description:\n\nGuides an agent in creating or editing custom HyperFrames video compositions for multi-scene pieces, montages, title cards, and footage remixes.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[heygen-com](https://clawhub.ai/user/heygen-com)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nVideo creators and developers use this skill to plan, build, and refine custom HyperFrames videos when a specialized workflow does not fit or a collaborative brief calls for a bespoke composition.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill runs and updates unpinned HyperFrames tooling, which can change after installation.\n\nMitigation: Use a trusted HyperFrames package source and a pinned or vetted version in managed environments; review updates before running them.\n\nRisk: Authenticated media providers may incur charges or access account-connected resources.\n\nMitigation: Check provider authentication status and review the intended output and costs before using paid media capabilities.\n\n## Reference(s):\n\n- [General Video on ClawHub](https://clawhub.ai/heygen-com/skills/general-video)\n\n## Skill Output:\n\n**Output Type(s):** [Code, Markdown, Configuration instructions, Shell commands, Guidance]\n\n**Output Format:** [HTML compositions, JSON motion data, Markdown briefs, and text guidance]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Video rendering follows validation and user approval.]\n\n## Skill Version(s):\n\n1.0.23 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.23:sub-agents/frame-worker.md\n\n# Frame worker — general-video delta\n\n> The shared law is the core contract above (the packet builder prepends `../../hyperframes/references/frame-worker-core.md` to this file as `_role.md`) — read the two as one role. This file carries only what's specific to a general-video scene; you run N-up, **one scene each** — your dispatch carries exactly one packet. Tempted to add a generic GSAP / timeline rule here? Wrong home — it belongs in the core contract or `hyperframes-core`.\n\n## Your scene is invented, not captured\n\nThere is no product capture pipeline: your packet's storyboard block plus the design truth file named in Project inputs are your complete input. Invent elements from those two sources only — use exactly the media paths the block itself names, and never resolve or fetch new media (the orchestrator staged everything your block cites before dispatch).\n\n## Design truth\n\nProject inputs names the design file (resolution order `frame.md` → `design.md` → `DESIGN.md`). It is brand truth for tokens, type, palette, and treatment; the storyboard block owns content. When the block and the design file disagree on content, the block wins; on style, the design file wins.\n\n## Output contract — composition + motion sidecar\n\nWrite exactly two files, then stop:\n\n1. `compositions/<frame_id>.html` — the sub-composition, a bare fragment per the core contract.\n2. `compositions/<frame_id>.motion.json` — one JSON object the orchestrator merges into the project's motion ledger:\n\n```json\n{\n  \"scene\": \"<frame_id>\",\n  \"duration_s\": 0.0,\n  \"rules\": [\"<rule ids you actually used>\"],\n  \"exit\": { \"vector\": \"<direction + px/s at your last frame>\", \"still_moving\": true },\n  \"entry\": { \"vector\": \"<direction + px/s at your first frame>\", \"from_rest\": false }\n}\n```\n\nReport what you actually authored — measured values from your timeline, not the plan's hopes; where the doctrine chain is installed, a numeric seam gate verifies exits and entries downstream and a wrong sidecar fails loudly there instead of silently here.\n\n## Boundaries\n\nAudio is orchestrator-owned: never author `<audio>` in a scene. Seams between scenes are stamped by the orchestrator from the ledger — author your entry/exit motion inside your own timeline, and never reach into a neighbor scene's file.\n\nArchive v1.0.22: 7 files, 15325 bytes\n\nFiles: scripts/frame-packets.mjs (1462b), scripts/frame-packets.test.mjs (3584b), scripts/lib/frame-packets-core.mjs (7408b), skill-card.md (1575b), SKILL.md (21133b), sub-agents/frame-worker.md (2304b), _meta.json (133b)\n\nFile v1.0.22:SKILL.md\n\n---\nname: general-video\ndescription: >\n  Author or edit a custom HyperFrames composition when no specialized workflow fits, or when\n  BRIEF.md sets flow: companion. Use for longer or multi-scene pieces, brand and sizzle reels,\n  montages, static loops, static title cards, footage remixes, and freeform builds. Use\n  motion-graphics instead for a short unnarrated motion-first unit, including an animated title.\n  Route fresh creation through hyperframes before using this skill.\n---\n\n**Plugin installs:** Before setup or freshness commands, follow [plugin execution rules](../hyperframes/references/plugin-installation.md) when this skill is inside a HyperFrames plugin. Standalone installs keep the update instructions below.\n\n# General video\n\nBefore relying on this workflow, run:\n\n```bash\nnpx hyperframes skills update general-video\n```\n\nA successful no-op means the skill is current. Surface an update failure instead of continuing from memory.\n\n## 1. Apply cross-cutting source adapters\n\n- **Media:** For any audio, image, icon, logo, voice, grade, LUT, treatment/effect, caption, or media-operation need, load `/media-use` and follow `../media-use/references/resolve.md` (resolve, adopt, reuse) and `../media-use/references/setup-providers.md` (providers, auth). Vague footage feedback and named styles use `../media-use/references/media-treatments.md` 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. Local adoption alone does not require an auth gate.\n- **Figma:** If any input is a `figma.com` URL, run `/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.\n\nThese adapters do not change the workflow selected by `/hyperframes`.\n\n## 2. Start from project state\n\nApply the first matching row; do not evaluate lower state rows:\n\n| State                                                      | Action                                                                                                         |\n| ---------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |\n| Specific edit                                              | Make the edit, preserve existing project decisions, then rerun affected checks. Do not reopen discovery.       |\n| `BRIEF.md` exists                                          | Read it. If `workflow` names another workflow and `flow` is not `companion`, hand off. Ask no brief questions. |\n| No brief, but `hyperframes.json` or `STORYBOARD.md` exists | Resume from files and recorded preferences. Backfill `BRIEF.md` only from known facts.                         |\n| Fresh creation                                             | Run `/hyperframes` and its intent layer. Return here only for `workflow: general-video` or `flow: companion`.  |\n\nFor a new project, choose a kebab-case directory name from the brief and scaffold before writing the brief:\n\n```bash\nnpx hyperframes init \"videos/<project>\" --non-interactive --example=blank --skill=general-video\n```\n\nThen 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`. Record only the confirmed preference-backed fields named by the brief format, using `node <MEDIA_DIR>/scripts/prefs.mjs record --hyperframes <PROJECT_ROOT>`; never record inferred defaults. Here `<MEDIA_DIR>` is the installed `/media-use` skill directory and `<PROJECT_ROOT>` is the directory containing `hyperframes.json`. If the intent layer adopted a recipe, apply it now with `node <MEDIA_DIR>/scripts/recipe.mjs use --hyperframes <PROJECT_ROOT> --name <name>` and do not ask again.\n\n## 3. Interpret the run shape\n\nUse only the canonical terms from `../hyperframes/references/brief-contract.md`:\n\n| Field          | Meaning                               | Effect                                                                              |\n| -------------- | ------------------------------------- | ----------------------------------------------------------------------------------- |\n| `flow`         | Who drives                            | `automation`: choose and execute the route. `companion`: co-create in conversation. |\n| `storyboard`   | Plan, sketch, and review before build | `yes`: run plan and sketch review (`storyboard.html`). `no`: build without it.      |\n| derived `mode` | How checkpoint gates behave           | Follow the brief contract. Never ask the user to name a mode.                       |\n\nDo 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`.\n\n- For `flow: automation`, choose the route and state it in one line in the first progress update.\n- For a specific edit, make the edit without inventing a new route.\n\nFor a hard cut, trim, splice, or reorder of existing footage, duplicate the same\nvideo source into multiple clip elements. On each copy, set the source range\nwith `data-media-start` plus `data-duration`, then set authored placement/order\nwith `data-start`. Each video segment keeps its sound: the sound stays on the clip (`data-has-audio=\"true\"`), so cutting the video cuts its sound. `/hyperframes-core` owns this temporal\nedit; use `/hyperframes-keyframes` only for visual-property animation such as\nzoom, punch, pan, crop, mask, or `clip-path` on an inner wrapper.\nCopy the full contracts from `../hyperframes-core/references/creator-editing-recipes.md`.\n\n### Companion flow\n\nWhen `flow: companion`:\n\n- Read `BRIEF.md` and reconcile accepted `## Assets` and `## Customizations` with project artifacts. Complete accepted work that is still pending; leave completed work alone; do not offer an accepted capability again as if it were new.\n- **Arrive as the director, not the contractor.** A user who chose companion chose involvement and quality; the honest response is the best version you can design, not the smallest one you can defend. The first plan is the ceiling treatment: the story arc (borrow the nearest genre lens — menu § Genre lenses), the design spec, each scene's motion treatment cited by name (§ 5's plan discipline), the transitions, the audio identity — music and sound marks, or deliberate silence — the user's material placed, and a designed open and close. Say what each layer adds in one line; flag the expensive ones (render time, sign-in, billing) as you name them. The user trims a treatment down; they should never have to assemble one approval by approval.\n- **The ceiling belongs to the concept, not the toolbox.** Every layer must serve the brief's message — a treatment that would dress any video the same way is decoration. Craft rises to the ceiling; content never grows past what was asked (§ 6).\n- Between checkpoints, `../hyperframes/references/capability-menu.md` works two ways. As the trigger list: offer a relevant capability when the user mentions its input or the build reaches its need. 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 (\"scene 3's stat wants the count-up treatment\"). Read it before offering; never dump the full catalog.\n- After the user accepts a capability, produce its artifact and record the decision in the matching `BRIEF.md` body section immediately. Rewrite a frontmatter field and record the confirmed preference only when the user explicitly changes it.\n- Keep the same storyboard, validation, final-preview, and render-approval gates. Companion changes who steers, not what quality requires.\n\n## 4. Load required knowledge before each stage\n\nThese reads are mandatory when their condition matches:\n\n| Condition                                                                                                         | Read before acting                                                                                                                                                                                                                     |\n| ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Any composition HTML or scene layout                                                                              | `/hyperframes-core`; use `references/determinism-rules.md` for its layout contract                                                                                                                                                     |\n| Any non-trivial creation or visual treatment                                                                      | `/hyperframes-creative` → `references/house-style.md` and `references/video-composition.md`                                                                                                                                            |\n| Any motion, animation, or scene transition                                                                        | `/hyperframes-animation`; follow its routing to the matching rules, adapters, blueprints, or transition references                                                                                                                     |\n| `storyboard: yes`                                                                                                 | `../hyperframes/references/storyboard-format.md` and `../hyperframes/references/review-loop.md`                                                                                                                                        |\n| Any media asset or operation, including narration, BGM, SFX, captions, grading, or transforms                     | `/media-use`; for framework playback and placement also read `/hyperframes-core` → `references/variables-and-media.md`                                                                                                                 |\n| Multi-scene assembly                                                                                              | `../hyperframes/references/production-loop.md`                                                                                                                                                                                         |\n| `flow: companion`, before the first plan                                                                          | `/hyperframes-creative` → `references/story-spine.md` and `references/house-style.md`; the nearest genre lens and the full `../hyperframes/references/capability-menu.md` — the ceiling treatment is designed from these, not recalled |\n| A companion capability offer, capture, beat grid, generative video, map, publishing, or cross-workflow capability | `../hyperframes/references/capability-menu.md`                                                                                                                                                                                         |\n| A design spec exists, before final approval                                                                       | `/hyperframes-creative` → `references/design-adherence.md`                                                                                                                                                                             |\n\nDo not replace these reads with recollection. Progressive disclosure saves context only when the matching reference is actually loaded.\n\n## 5. Execute the composition\n\nUse this dependency order. Skip a stage only when its input is absent.\n\n1. **Plan.** State the viewer arc, structure, rhythm, and duration driver. Use one file for a short single scene; use sub-compositions for three or more hard scene cuts or any reused scene. Read `/hyperframes-creative` → `references/story-spine.md` for narrated arcs, `references/beat-direction.md` for rhythm, and `/hyperframes-core` → `references/composition-patterns.md` for structure. For an open-ended multi-scene brief, expand the prompt through `/hyperframes-creative` → `references/prompt-expansion.md`. A multi-scene plan cites each scene's shape: a blueprint id from `/hyperframes-animation` → `blueprints-index.md` when one fits, or the named rules it composes from `rules-index.md` when none does — motion names come from those indexes, never invented. Story truth decides which scenes exist; the citation dresses them. **Search the live catalog before you plan to build any named look yourself**: for every look, effect, treatment or transition the brief names — \"CRT scanlines\", \"glitch\", \"film grain\", \"shimmer sweep\", \"confetti burst\" — run `npx hyperframes catalog --query \"<the look, in plain English>\" --json` and read the top results before the plan names how that look gets built. The search needs **nothing installed**: no project, no prior `add`, no account. It ranks the whole hosted registry (~400 blocks and components) from any directory, so it also applies to a look the user asks for mid-build. Blocks the plan names are installed at stage 3; hand-author a look only after a search for it came back with nothing that fits. A multi-scene plan is also recorded as the dispatch artifact: one `## Frame N` block per scene in `STORYBOARD.md` — `status: outline`, a declared `src:`, the blueprint/rules citation, and the beat text — **even when `storyboard: no`**. The block is the dispatch unit; the storyboard sheet is only the review surface.\n2. **Review the plan when requested.** For `storyboard: yes`, run the shared review loop over those blocks. For `storyboard: no`, continue without a plan pause or sketch sheet. When a plan pause happens anyway, fold the sub-agent delegation grant (needed by codex for step 4's dispatch) into that pause rather than stopping again later.\n3. **Resolve dependencies.** Install registry blocks before parallel work. Stage user assets, adopt existing media, and resolve only what the brief requires. Start audio early when its timings drive duration.\n4. **Build scenes.** For a short single-scene piece, implement the scene at its most visible moment before adding motion (the confirmed wireframe, when present, is that end state and must not be redrawn), then animate from its cited blueprint or rules — read the full recipe body (`/hyperframes-animation` → `blueprints/<id>.md`, `rules/<id>.md`) before writing motion.\n\n   **Dispatch pays for itself only at scale.** Authoring packets and warming fresh worker contexts costs real minutes and tokens: a film of up to ~6 short scenes builds FASTER inline, in this context, one scene after another (measured: 5 short scenes ≈ 9 min inline vs ≈ 21 min packetized). Fan out only when the plan exceeds that — more scenes, or individually heavy ones — and then give each worker **2–3 scenes**, not one, and spawn **all workers in a single wave** (a second wave nearly doubles the window). When dispatching:\n\n   `node <SKILL_DIR>/scripts/frame-packets.mjs --project \"$PROJECT_DIR\" --storyboard \"$PROJECT_DIR/STORYBOARD.md\"`\n\n   The builder writes one bounded packet per scene under `.hyperframes/frame-packets/` (the scene's exact storyboard block + the blueprint body + every cited rule recipe, inlined) and `_role.md` (`../hyperframes/references/frame-worker-core.md` + this skill's `sub-agents/frame-worker.md`, concatenated verbatim — the complete worker role). Dispatch the workers — 2–3 scene packets each, all in one wave (`../hyperframes/references/subagent-dispatch.md`); each worker's prompt carries `_role.md` and its packets — paste them in full, or hand the file paths for the worker to read first (equivalent either way) — plus a dispatch context with `PROJECT_DIR`, its `frame_id`s, and canvas size. WAIT on every scene's `compositions/<frame_id>.html` + `compositions/<frame_id>.motion.json`. Workers read only their packets and the design truth file; they never open `STORYBOARD.md` or the skill documents. With no delegation channel, fall back serially: process one packet at a time in this context, still working from the packet alone.\n\n5. **Merge motion sidecars.** Collect the workers' `compositions/<frame_id>.motion.json` files and carry their durations and exit/entry vectors into assembly; where the doctrine chain (`/motion-doctrine`) is installed, translate them into the project ledger before stamping seams.\n6. **Assemble.** Mount scenes, media, transitions, captions, and audio using the production loop. Real voice duration overrides estimates. When a music bed plays under any voice track, carve the bed before verifying: `/hyperframes-audio` → `scripts/carve.mjs --comp index.html`. A volume duck alone does not finish the mix.\n7. **Verify.** Use `npx hyperframes lint` for fast feedback after the first HTML pass and structural changes. For the final gate, run `npx hyperframes check`; it reruns lint internally, so do not run a redundant standalone lint immediately before it. For sub-compositions, inspect midpoint snapshots. For multi-scene work, review the animation map.\n8. **Final approval.** Open the final Studio preview only after checks pass. Ask whether to render or revise. Render only after approval.\n\n## 6. Gates that always apply\n\n### Keep scope exact\n\nBuild what the user asked for. A title card is not a title card plus three scenes, music, and captions. Offer additions before adding them.\n\n### Establish design before HTML\n\nResolve the design source in this order: `frame.md` → `design.md` → `DESIGN.md`. Treat the first file found as brand truth.\n\nWhen no design spec exists, complete all four items before writing composition HTML:\n\n1. Ground the visual identity in `house-style.md` and `video-composition.md`.\n2. Write one sentence naming the concept angle for every non-trivial creation.\n3. Choose an embeddable font pairing from `/hyperframes-creative` → `references/typography.md`; do not assume an unbundled display font exists in cloud rendering.\n4. Define the focal element, edge anchors, supporting detail, and background treatment.\n\nMatch density to the requested format and message. Density examples are guidance for produced frames, not permission to invent claims, scenes, or a fixed number of elements.\n\nFor a named style or mood, read `/hyperframes-creative` → `references/visual-styles.md`. When the user needs to choose visually and no shipped preset fits, read `/hyperframes-creative` → `references/design-picker.md` and run the interactive design selection there.\n\n### Preserve the composition contract\n\nTimed elements use `class=\"clip\"`; the root and relevant ancestors are sized; each composition registers one paused, seek-safe timeline on `window.__timelines`; rendering is deterministic. Do not use render-time network fetches, clocks, or unseeded randomness.\n\n### Borrow workflows safely\n\nWhen the piece resembles a shipped workflow, borrow its genre references as examples. First run `npx hyperframes skills update <workflow-name>`. Borrow its story shape and taste, not its private scripts, pipeline state, or directory contract. The generic build remains owned by this skill.\n\n## 7. Done\n\nA run is complete only when:\n\n- requested scope is implemented;\n- for `flow: companion`, the treatment is delivered, not just the scope: every scene's cited blueprint or rules realized, the audio identity present (or the silence chosen and said), the open and close designed rather than defaulted;\n- `npx hyperframes check` passes, including its built-in lint stage;\n- design adherence is reviewed against `/hyperframes-creative` → `references/design-adherence.md` when a design spec exists;\n- contrast findings are resolved;\n- sub-composition snapshots are inspected when applicable;\n- an autonomous handoff includes an inspected contact or snapshot sheet; multi-scene sheets use scene midpoints;\n- the handoff names the final preview or rendered artifact as applicable and reports the actual duration for a time-based deliverable;\n- `hyperframes-animation/scripts/animation-map.mjs` is reviewed for multi-scene work;\n- the user approves the final Studio preview before render;\n- the rendered file is verified when a render was requested.\n\nAfter final approval, offer once to freeze the run as a recipe, following `../hyperframes/references/review-loop.md` § 4.\n\nFile v1.0.22:_meta.json\n\n{\n  \"ownerId\": \"kn77d06grj6xqp3dqwkk4bavhn89pegt\",\n  \"slug\": \"general-video\",\n  \"version\": \"1.0.22\",\n  \"publishedAt\": 1790899865665\n}\n\nFile v1.0.22:skill-card.md\n\n## Description:\n\nHelps agents create and edit custom HyperFrames video compositions, from title cards and footage remixes to multi-scene reels.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[heygen-com](https://clawhub.ai/user/heygen-com)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nCreators and developers use this skill to plan, build, and review custom video compositions when a specialized workflow does not fit, including collaborative multi-scene projects.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The workflow updates and runs unpinned HyperFrames tooling, which may change after this release was reviewed.\n\nMitigation: Use only a trusted update channel and pin or locally vet the HyperFrames toolchain for sensitive projects.\n\n## Reference(s):\n\n- [General Video on ClawHub](https://clawhub.ai/heygen-com/skills/general-video)\n\n## Skill Output:\n\n**Output Type(s):** [Code, Configuration, Markdown, Shell commands]\n\n**Output Format:** [HTML compositions, JSON motion data, Markdown planning documents, and shell commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Preview and rendered video may be delivered after review and approval.]\n\n## Skill Version(s):\n\n1.0.22 (source: server-resolved release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.22:sub-agents/frame-worker.md\n\n# Frame worker — general-video delta\n\n> The shared law is the core contract above (the packet builder prepends `../../hyperframes/references/frame-worker-core.md` to this file as `_role.md`) — read the two as one role. This file carries only what's specific to a general-video scene; you run N-up, **one scene each** — your dispatch carries exactly one packet. Tempted to add a generic GSAP / timeline rule here? Wrong home — it belongs in the core contract or `hyperframes-core`.\n\n## Your scene is invented, not captured\n\nThere is no product capture pipeline: your packet's storyboard block plus the design truth file named in Project inputs are your complete input. Invent elements from those two sources only — use exactly the media paths the block itself names, and never resolve or fetch new media (the orchestrator staged everything your block cites before dispatch).\n\n## Design truth\n\nProject inputs names the design file (resolution order `frame.md` → `design.md` → `DESIGN.md`). It is brand truth for tokens, type, palette, and treatment; the storyboard block owns content. When the block and the design file disagree on content, the block wins; on style, the design file wins.\n\n## Output contract — composition + motion sidecar\n\nWrite exactly two files, then stop:\n\n1. `compositions/<frame_id>.html` — the sub-composition, a bare fragment per the core contract.\n2. `compositions/<frame_id>.motion.json` — one JSON object the orchestrator merges into the project's motion ledger:\n\n```json\n{\n  \"scene\": \"<frame_id>\",\n  \"duration_s\": 0.0,\n  \"rules\": [\"<rule ids you actually used>\"],\n  \"exit\": { \"vector\": \"<direction + px/s at your last frame>\", \"still_moving\": true },\n  \"entry\": { \"vector\": \"<direction + px/s at your first frame>\", \"from_rest\": false }\n}\n```\n\nReport what you actually authored — measured values from your timeline, not the plan's hopes; where the doctrine chain is installed, a numeric seam gate verifies exits and entries downstream and a wrong sidecar fails loudly there instead of silently here.\n\n## Boundaries\n\nAudio is orchestrator-owned: never author `<audio>` in a scene. Seams between scenes are stamped by the orchestrator from the ledger — author your entry/exit motion inside your own timeline, and never reach into a neighbor scene's file.\n\nArchive v1.0.21: 7 files, 15397 bytes\n\nFiles: scripts/frame-packets.mjs (1462b), scripts/frame-packets.test.mjs (3584b), scripts/lib/frame-packets-core.mjs (7408b), skill-card.md (1791b), SKILL.md (21108b), sub-agents/frame-worker.md (2304b), _meta.json (133b)\n\nFile v1.0.21:SKILL.md\n\n---\nname: general-video\ndescription: >\n  Author or edit a custom HyperFrames composition when no specialized workflow fits, or when\n  BRIEF.md sets flow: companion. Use for longer or multi-scene pieces, brand and sizzle reels,\n  montages, static loops, static title cards, footage remixes, and freeform builds. Use\n  motion-graphics instead for a short unnarrated motion-first unit, including an animated title.\n  Route fresh creation through hyperframes before using this skill.\n---\n\n**Plugin installs:** Before setup or freshness commands, follow [plugin execution rules](../hyperframes/references/plugin-installation.md) when this skill is inside a HyperFrames plugin. Standalone installs keep the update instructions below.\n\n# General video\n\nBefore relying on this workflow, run:\n\n```bash\nnpx hyperframes skills update general-video\n```\n\nA successful no-op means the skill is current. Surface an update failure instead of continuing from memory.\n\n## 1. Apply cross-cutting source adapters\n\n- **Media:** For any audio, image, icon, logo, voice, grade, LUT, treatment/effect, caption, or media-operation need, load `/media-use` and follow `../media-use/references/resolve.md` (resolve, adopt, reuse) and `../media-use/references/setup-providers.md` (providers, auth). Vague footage feedback and named styles use `../media-use/references/media-treatments.md` 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. Local adoption alone does not require an auth gate.\n- **Figma:** If any input is a `figma.com` URL, run `/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.\n\nThese adapters do not change the workflow selected by `/hyperframes`.\n\n## 2. Start from project state\n\nApply the first matching row; do not evaluate lower state rows:\n\n| State                                                      | Action                                                                                                         |\n| ---------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |\n| Specific edit                                              | Make the edit, preserve existing project decisions, then rerun affected checks. Do not reopen discovery.       |\n| `BRIEF.md` exists                                          | Read it. If `workflow` names another workflow and `flow` is not `companion`, hand off. Ask no brief questions. |\n| No brief, but `hyperframes.json` or `STORYBOARD.md` exists | Resume from files and recorded preferences. Backfill `BRIEF.md` only from known facts.                         |\n| Fresh creation                                             | Run `/hyperframes` and its intent layer. Return here only for `workflow: general-video` or `flow: companion`.  |\n\nFor a new project, choose a kebab-case directory name from the brief and scaffold before writing the brief:\n\n```bash\nnpx hyperframes init \"videos/<project>\" --non-interactive --example=blank --skill=general-video\n```\n\nThen 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`. Record only the confirmed preference-backed fields named by the brief format, using `node <MEDIA_DIR>/scripts/prefs.mjs record --hyperframes <PROJECT_ROOT>`; never record inferred defaults. Here `<MEDIA_DIR>` is the installed `/media-use` skill directory and `<PROJECT_ROOT>` is the directory containing `hyperframes.json`. If the intent layer adopted a recipe, apply it now with `node <MEDIA_DIR>/scripts/recipe.mjs use --hyperframes <PROJECT_ROOT> --name <name>` and do not ask again.\n\n## 3. Interpret the run shape\n\nUse only the canonical terms from `../hyperframes/references/brief-contract.md`:\n\n| Field          | Meaning                               | Effect                                                                              |\n| -------------- | ------------------------------------- | ----------------------------------------------------------------------------------- |\n| `flow`         | Who drives                            | `automation`: choose and execute the route. `companion`: co-create in conversation. |\n| `storyboard`   | Plan, sketch, and review before build | `yes`: run plan and sketch review (`storyboard.html`). `no`: build without it.      |\n| derived `mode` | How checkpoint gates behave           | Follow the brief contract. Never ask the user to name a mode.                       |\n\nDo 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`.\n\n- For `flow: automation`, choose the route and state it in one line in the first progress update.\n- For a specific edit, make the edit without inventing a new route.\n\nFor a hard cut, trim, splice, or reorder of existing footage, duplicate the same\nvideo source into multiple clip elements. On each copy, set the source range\nwith `data-media-start` plus `data-duration`, then set authored placement/order\nwith `data-start`. Separately authored audio follows the identical clip ranges\nand timing on matching `<audio>` elements. `/hyperframes-core` owns this temporal\nedit; use `/hyperframes-keyframes` only for visual-property animation such as\nzoom, punch, pan, crop, mask, or `clip-path` on an inner wrapper.\nCopy the full contracts from `../hyperframes-core/references/creator-editing-recipes.md`.\n\n### Companion flow\n\nWhen `flow: companion`:\n\n- Read `BRIEF.md` and reconcile accepted `## Assets` and `## Customizations` with project artifacts. Complete accepted work that is still pending; leave completed work alone; do not offer an accepted capability again as if it were new.\n- **Arrive as the director, not the contractor.** A user who chose companion chose involvement and quality; the honest response is the best version you can design, not the smallest one you can defend. The first plan is the ceiling treatment: the story arc (borrow the nearest genre lens — menu § Genre lenses), the design spec, each scene's motion treatment cited by name (§ 5's plan discipline), the transitions, the audio identity — music and sound marks, or deliberate silence — the user's material placed, and a designed open and close. Say what each layer adds in one line; flag the expensive ones (render time, sign-in, billing) as you name them. The user trims a treatment down; they should never have to assemble one approval by approval.\n- **The ceiling belongs to the concept, not the toolbox.** Every layer must serve the brief's message — a treatment that would dress any video the same way is decoration. Craft rises to the ceiling; content never grows past what was asked (§ 6).\n- Between checkpoints, `../hyperframes/references/capability-menu.md` works two ways. As the trigger list: offer a relevant capability when the user mentions its input or the build reaches its need. 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 (\"scene 3's stat wants the count-up treatment\"). Read it before offering; never dump the full catalog.\n- After the user accepts a capability, produce its artifact and record the decision in the matching `BRIEF.md` body section immediately. Rewrite a frontmatter field and record the confirmed preference only when the user explicitly changes it.\n- Keep the same storyboard, validation, final-preview, and render-approval gates. Companion changes who steers, not what quality requires.\n\n## 4. Load required knowledge before each stage\n\nThese reads are mandatory when their condition matches:\n\n| Condition                                                                                                         | Read before acting                                                                                                                                                                                                                     |\n| ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Any composition HTML or scene layout                                                                              | `/hyperframes-core`; use `references/determinism-rules.md` for its layout contract                                                                                                                                                     |\n| Any non-trivial creation or visual treatment                                                                      | `/hyperframes-creative` → `references/house-style.md` and `references/video-composition.md`                                                                                                                                            |\n| Any motion, animation, or scene transition                                                                        | `/hyperframes-animation`; follow its routing to the matching rules, adapters, blueprints, or transition references                                                                                                                     |\n| `storyboard: yes`                                                                                                 | `../hyperframes/references/storyboard-format.md` and `../hyperframes/references/review-loop.md`                                                                                                                                        |\n| Any media asset or operation, including narration, BGM, SFX, captions, grading, or transforms                     | `/media-use`; for framework playback and placement also read `/hyperframes-core` → `references/variables-and-media.md`                                                                                                                 |\n| Multi-scene assembly                                                                                              | `../hyperframes/references/production-loop.md`                                                                                                                                                                                         |\n| `flow: companion`, before the first plan                                                                          | `/hyperframes-creative` → `references/story-spine.md` and `references/house-style.md`; the nearest genre lens and the full `../hyperframes/references/capability-menu.md` — the ceiling treatment is designed from these, not recalled |\n| A companion capability offer, capture, beat grid, generative video, map, publishing, or cross-workflow capability | `../hyperframes/references/capability-menu.md`                                                                                                                                                                                         |\n| A design spec exists, before final approval                                                                       | `/hyperframes-creative` → `references/design-adherence.md`                                                                                                                                                                             |\n\nDo not replace these reads with recollection. Progressive disclosure saves context only when the matching reference is actually loaded.\n\n## 5. Execute the composition\n\nUse this dependency order. Skip a stage only when its input is absent.\n\n1. **Plan.** State the viewer arc, structure, rhythm, and duration driver. Use one file for a short single scene; use sub-compositions for three or more hard scene cuts or any reused scene. Read `/hyperframes-creative` → `references/story-spine.md` for narrated arcs, `references/beat-direction.md` for rhythm, and `/hyperframes-core` → `references/composition-patterns.md` for structure. For an open-ended multi-scene brief, expand the prompt through `/hyperframes-creative` → `references/prompt-expansion.md`. A multi-scene plan cites each scene's shape: a blueprint id from `/hyperframes-animation` → `blueprints-index.md` when one fits, or the named rules it composes from `rules-index.md` when none does — motion names come from those indexes, never invented. Story truth decides which scenes exist; the citation dresses them. **Search the live catalog before you plan to build any named look yourself**: for every look, effect, treatment or transition the brief names — \"CRT scanlines\", \"glitch\", \"film grain\", \"shimmer sweep\", \"confetti burst\" — run `npx hyperframes catalog --query \"<the look, in plain English>\" --json` and read the top results before the plan names how that look gets built. The search needs **nothing installed**: no project, no prior `add`, no account. It ranks the whole hosted registry (~400 blocks and components) from any directory, so it also applies to a look the user asks for mid-build. Blocks the plan names are installed at stage 3; hand-author a look only after a search for it came back with nothing that fits. A multi-scene plan is also recorded as the dispatch artifact: one `## Frame N` block per scene in `STORYBOARD.md` — `status: outline`, a declared `src:`, the blueprint/rules citation, and the beat text — **even when `storyboard: no`**. The block is the dispatch unit; the storyboard sheet is only the review surface.\n2. **Review the plan when requested.** For `storyboard: yes`, run the shared review loop over those blocks. For `storyboard: no`, continue without a plan pause or sketch sheet. When a plan pause happens anyway, fold the sub-agent delegation grant (needed by codex for step 4's dispatch) into that pause rather than stopping again later.\n3. **Resolve dependencies.** Install registry blocks before parallel work. Stage user assets, adopt existing media, and resolve only what the brief requires. Start audio early when its timings drive duration.\n4. **Build scenes.** For a short single-scene piece, implement the scene at its most visible moment before adding motion (the confirmed wireframe, when present, is that end state and must not be redrawn), then animate from its cited blueprint or rules — read the full recipe body (`/hyperframes-animation` → `blueprints/<id>.md`, `rules/<id>.md`) before writing motion.\n\n   **Dispatch pays for itself only at scale.** Authoring packets and warming fresh worker contexts costs real minutes and tokens: a film of up to ~6 short scenes builds FASTER inline, in this context, one scene after another (measured: 5 short scenes ≈ 9 min inline vs ≈ 21 min packetized). Fan out only when the plan exceeds that — more scenes, or individually heavy ones — and then give each worker **2–3 scenes**, not one, and spawn **all workers in a single wave** (a second wave nearly doubles the window). When dispatching:\n\n   `node <SKILL_DIR>/scripts/frame-packets.mjs --project \"$PROJECT_DIR\" --storyboard \"$PROJECT_DIR/STORYBOARD.md\"`\n\n   The builder writes one bounded packet per scene under `.hyperframes/frame-packets/` (the scene's exact storyboard block + the blueprint body + every cited rule recipe, inlined) and `_role.md` (`../hyperframes/references/frame-worker-core.md` + this skill's `sub-agents/frame-worker.md`, concatenated verbatim — the complete worker role). Dispatch the workers — 2–3 scene packets each, all in one wave (`../hyperframes/references/subagent-dispatch.md`); each worker's prompt carries `_role.md` and its packets — paste them in full, or hand the file paths for the worker to read first (equivalent either way) — plus a dispatch context with `PROJECT_DIR`, its `frame_id`s, and canvas size. WAIT on every scene's `compositions/<frame_id>.html` + `compositions/<frame_id>.motion.json`. Workers read only their packets and the design truth file; they never open `STORYBOARD.md` or the skill documents. With no delegation channel, fall back serially: process one packet at a time in this context, still working from the packet alone.\n\n5. **Merge motion sidecars.** Collect the workers' `compositions/<frame_id>.motion.json` files and carry their durations and exit/entry vectors into assembly; where the doctrine chain (`/motion-doctrine`) is installed, translate them into the project ledger before stamping seams.\n6. **Assemble.** Mount scenes, media, transitions, captions, and audio using the production loop. Real voice duration overrides estimates. When a music bed plays under any voice track, carve the bed before verifying: `/hyperframes-audio` → `scripts/carve.mjs --comp index.html`. A volume duck alone does not finish the mix.\n7. **Verify.** Use `npx hyperframes lint` for fast feedback after the first HTML pass and structural changes. For the final gate, run `npx hyperframes check`; it reruns lint internally, so do not run a redundant standalone lint immediately before it. For sub-compositions, inspect midpoint snapshots. For multi-scene work, review the animation map.\n8. **Final approval.** Open the final Studio preview only after checks pass. Ask whether to render or revise. Render only after approval.\n\n## 6. Gates that always apply\n\n### Keep scope exact\n\nBuild what the user asked for. A title card is not a title card plus three scenes, music, and captions. Offer additions before adding them.\n\n### Establish design before HTML\n\nResolve the design source in this order: `frame.md` → `design.md` → `DESIGN.md`. Treat the first file found as brand truth.\n\nWhen no design spec exists, complete all four items before writing composition HTML:\n\n1. Ground the visual identity in `house-style.md` and `video-composition.md`.\n2. Write one sentence naming the concept angle for every non-trivial creation.\n3. Choose an embeddable font pairing from `/hyperframes-creative` → `references/typography.md`; do not assume an unbundled display font exists in cloud rendering.\n4. Define the focal element, edge anchors, supporting detail, and background treatment.\n\nMatch density to the requested format and message. Density examples are guidance for produced frames, not permission to invent claims, scenes, or a fixed number of elements.\n\nFor a named style or mood, read `/hyperframes-creative` → `references/visual-styles.md`. When the user needs to choose visually and no shipped preset fits, read `/hyperframes-creative` → `references/design-picker.md` and run the interactive design selection there.\n\n### Preserve the composition contract\n\nTimed elements use `class=\"clip\"`; the root and relevant ancestors are sized; each composition registers one paused, seek-safe timeline on `window.__timelines`; rendering is deterministic. Do not use render-time network fetches, clocks, or unseeded randomness.\n\n### Borrow workflows safely\n\nWhen the piece resembles a shipped workflow, borrow its genre references as examples. First run `npx hyperframes skills update <workflow-name>`. Borrow its story shape and taste, not its private scripts, pipeline state, or directory contract. The generic build remains owned by this skill.\n\n## 7. Done\n\nA run is complete only when:\n\n- requested scope is implemented;\n- for `flow: companion`, the treatment is delivered, not just the scope: every scene's cited blueprint or rules realized, the audio identity present (or the silence chosen and said), the open and close designed rather than defaulted;\n- `npx hyperframes check` passes, including its built-in lint stage;\n- design adherence is reviewed against `/hyperframes-creative` → `references/design-adherence.md` when a design spec exists;\n- contrast findings are resolved;\n- sub-composition snapshots are inspected when applicable;\n- an autonomous handoff includes an inspected contact or snapshot sheet; multi-scene sheets use scene midpoints;\n- the handoff names the final preview or rendered artifact as applicable and reports the actual duration for a time-based deliverable;\n- `hyperframes-animation/scripts/animation-map.mjs` is reviewed for multi-scene work;\n- the user approves the final Studio preview before render;\n- the rendered file is verified when a render was requested.\n\nAfter final approval, offer once to freeze the run as a recipe, following `../hyperframes/references/review-loop.md` § 4.\n\nFile v1.0.21:_meta.json\n\n{\n  \"ownerId\": \"kn77d06grj6xqp3dqwkk4bavhn89pegt\",\n  \"slug\": \"general-video\",\n  \"version\": \"1.0.21\",\n  \"publishedAt\": 1790543887977\n}\n\nFile v1.0.21:skill-card.md\n\n## Description:\n\nGuides agents in creating or editing custom HyperFrames video compositions, including multi-scene videos, montages, loops, title cards, and footage remixes.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[heygen-com](https://clawhub.ai/user/heygen-com)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nCreators and developers use this skill to plan, build, check, and, after approval, render custom video compositions when a specialized workflow is not a fit.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The workflow runs an unpinned HyperFrames CLI that can change at runtime and modify project files.\n\nMitigation: Review update steps and project changes before execution; prefer a pinned or locally locked CLI version.\n\nRisk: Media or provider features may require authenticated access.\n\nMitigation: Check authentication status before provider actions and use an available offline option when appropriate.\n\n## Reference(s):\n\n- [General Video on ClawHub](https://clawhub.ai/heygen-com/skills/general-video)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Code, Shell commands, Configuration, Files]\n\n**Output Format:** [Markdown guidance and video project files, including HTML compositions and JSON motion data]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Video previews and rendered media may be produced after project checks and user approval.]\n\n## Skill Version(s):\n\n1.0.21 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.21:sub-agents/frame-worker.md\n\n# Frame worker — general-video delta\n\n> The shared law is the core contract above (the packet builder prepends `../../hyperframes/references/frame-worker-core.md` to this file as `_role.md`) — read the two as one role. This file carries only what's specific to a general-video scene; you run N-up, **one scene each** — your dispatch carries exactly one packet. Tempted to add a generic GSAP / timeline rule here? Wrong home — it belongs in the core contract or `hyperframes-core`.\n\n## Your scene is invented, not captured\n\nThere is no product capture pipeline: your packet's storyboard block plus the design truth file named in Project inputs are your complete input. Invent elements from those two sources only — use exactly the media paths the block itself names, and never resolve or fetch new media (the orchestrator staged everything your block cites before dispatch).\n\n## Design truth\n\nProject inputs names the design file (resolution order `frame.md` → `design.md` → `DESIGN.md`). It is brand truth for tokens, type, palette, and treatment; the storyboard block owns content. When the block and the design file disagree on content, the block wins; on style, the design file wins.\n\n## Output contract — composition + motion sidecar\n\nWrite exactly two files, then stop:\n\n1. `compositions/<frame_id>.html` — the sub-composition, a bare fragment per the core contract.\n2. `compositions/<frame_id>.motion.json` — one JSON object the orchestrator merges into the project's motion ledger:\n\n```json\n{\n  \"scene\": \"<frame_id>\",\n  \"duration_s\": 0.0,\n  \"rules\": [\"<rule ids you actually used>\"],\n  \"exit\": { \"vector\": \"<direction + px/s at your last frame>\", \"still_moving\": true },\n  \"entry\": { \"vector\": \"<direction + px/s at your first frame>\", \"from_rest\": false }\n}\n```\n\nReport what you actually authored — measured values from your timeline, not the plan's hopes; where the doctrine chain is installed, a numeric seam gate verifies exits and entries downstream and a wrong sidecar fails loudly there instead of silently here.\n\n## Boundaries\n\nAudio is orchestrator-owned: never author `<audio>` in a scene. Seams between scenes are stamped by the orchestrator from the ledger — author your entry/exit motion inside your own timeline, and never reach into a neighbor scene's file.\n\nArchive v1.0.20: 7 files, 15558 bytes\n\nFiles: scripts/frame-packets.mjs (1462b), scripts/frame-packets.test.mjs (3584b), scripts/lib/frame-packets-core.mjs (7408b), skill-card.md (2488b), SKILL.md (20864b), sub-agents/frame-worker.md (2304b), _meta.json (133b)\n\nFile v1.0.20:SKILL.md\n\n---\nname: general-video\ndescription: >\n  Author or edit a custom HyperFrames composition when no specialized workflow fits, or when\n  BRIEF.md sets flow: companion. Use for longer or multi-scene pieces, brand and sizzle reels,\n  montages, static loops, static title cards, footage remixes, and freeform builds. Use\n  motion-graphics instead for a short unnarrated motion-first unit, including an animated title.\n  Route fresh creation through hyperframes before using this skill.\n---\n\n# General video\n\nBefore relying on this workflow, run:\n\n```bash\nnpx hyperframes skills update general-video\n```\n\nA successful no-op means the skill is current. Surface an update failure instead of continuing from memory.\n\n## 1. Apply cross-cutting source adapters\n\n- **Media:** For any audio, image, icon, logo, voice, grade, LUT, treatment/effect, caption, or media-operation need, load `/media-use` and follow `../media-use/references/resolve.md` (resolve, adopt, reuse) and `../media-use/references/setup-providers.md` (providers, auth). Vague footage feedback and named styles use `../media-use/references/media-treatments.md` 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. Local adoption alone does not require an auth gate.\n- **Figma:** If any input is a `figma.com` URL, run `/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.\n\nThese adapters do not change the workflow selected by `/hyperframes`.\n\n## 2. Start from project state\n\nApply the first matching row; do not evaluate lower state rows:\n\n| State                                                      | Action                                                                                                         |\n| ---------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |\n| Specific edit                                              | Make the edit, preserve existing project decisions, then rerun affected checks. Do not reopen discovery.       |\n| `BRIEF.md` exists                                          | Read it. If `workflow` names another workflow and `flow` is not `companion`, hand off. Ask no brief questions. |\n| No brief, but `hyperframes.json` or `STORYBOARD.md` exists | Resume from files and recorded preferences. Backfill `BRIEF.md` only from known facts.                         |\n| Fresh creation                                             | Run `/hyperframes` and its intent layer. Return here only for `workflow: general-video` or `flow: companion`.  |\n\nFor a new project, choose a kebab-case directory name from the brief and scaffold before writing the brief:\n\n```bash\nnpx hyperframes init \"videos/<project>\" --non-interactive --example=blank --skill=general-video\n```\n\nThen 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`. Record only the confirmed preference-backed fields named by the brief format, using `node <MEDIA_DIR>/scripts/prefs.mjs record --hyperframes <PROJECT_ROOT>`; never record inferred defaults. Here `<MEDIA_DIR>` is the installed `/media-use` skill directory and `<PROJECT_ROOT>` is the directory containing `hyperframes.json`. If the intent layer adopted a recipe, apply it now with `node <MEDIA_DIR>/scripts/recipe.mjs use --hyperframes <PROJECT_ROOT> --name <name>` and do not ask again.\n\n## 3. Interpret the run shape\n\nUse only the canonical terms from `../hyperframes/references/brief-contract.md`:\n\n| Field          | Meaning                               | Effect                                                                              |\n| -------------- | ------------------------------------- | ----------------------------------------------------------------------------------- |\n| `flow`         | Who drives                            | `automation`: choose and execute the route. `companion`: co-create in conversation. |\n| `storyboard`   | Plan, sketch, and review before build | `yes`: run plan and sketch review (`storyboard.html`). `no`: build without it.      |\n| derived `mode` | How checkpoint gates behave           | Follow the brief contract. Never ask the user to name a mode.                       |\n\nDo 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`.\n\n- For `flow: automation`, choose the route and state it in one line in the first progress update.\n- For a specific edit, make the edit without inventing a new route.\n\nFor a hard cut, trim, splice, or reorder of existing footage, duplicate the same\nvideo source into multiple clip elements. On each copy, set the source range\nwith `data-media-start` plus `data-duration`, then set authored placement/order\nwith `data-start`. Separately authored audio follows the identical clip ranges\nand timing on matching `<audio>` elements. `/hyperframes-core` owns this temporal\nedit; use `/hyperframes-keyframes` only for visual-property animation such as\nzoom, punch, pan, crop, mask, or `clip-path` on an inner wrapper.\nCopy the full contracts from `../hyperframes-core/references/creator-editing-recipes.md`.\n\n### Companion flow\n\nWhen `flow: companion`:\n\n- Read `BRIEF.md` and reconcile accepted `## Assets` and `## Customizations` with project artifacts. Complete accepted work that is still pending; leave completed work alone; do not offer an accepted capability again as if it were new.\n- **Arrive as the director, not the contractor.** A user who chose companion chose involvement and quality; the honest response is the best version you can design, not the smallest one you can defend. The first plan is the ceiling treatment: the story arc (borrow the nearest genre lens — menu § Genre lenses), the design spec, each scene's motion treatment cited by name (§ 5's plan discipline), the transitions, the audio identity — music and sound marks, or deliberate silence — the user's material placed, and a designed open and close. Say what each layer adds in one line; flag the expensive ones (render time, sign-in, billing) as you name them. The user trims a treatment down; they should never have to assemble one approval by approval.\n- **The ceiling belongs to the concept, not the toolbox.** Every layer must serve the brief's message — a treatment that would dress any video the same way is decoration. Craft rises to the ceiling; content never grows past what was asked (§ 6).\n- Between checkpoints, `../hyperframes/references/capability-menu.md` works two ways. As the trigger list: offer a relevant capability when the user mentions its input or the build reaches its need. 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 (\"scene 3's stat wants the count-up treatment\"). Read it before offering; never dump the full catalog.\n- After the user accepts a capability, produce its artifact and record the decision in the matching `BRIEF.md` body section immediately. Rewrite a frontmatter field and record the confirmed preference only when the user explicitly changes it.\n- Keep the same storyboard, validation, final-preview, and render-approval gates. Companion changes who steers, not what quality requires.\n\n## 4. Load required knowledge before each stage\n\nThese reads are mandatory when their condition matches:\n\n| Condition                                                                                                         | Read before acting                                                                                                                                                                                                                     |\n| ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Any composition HTML or scene layout                                                                              | `/hyperframes-core`; use `references/determinism-rules.md` for its layout contract                                                                                                                                                     |\n| Any non-trivial creation or visual treatment                                                                      | `/hyperframes-creative` → `references/house-style.md` and `references/video-composition.md`                                                                                                                                            |\n| Any motion, animation, or scene transition                                                                        | `/hyperframes-animation`; follow its routing to the matching rules, adapters, blueprints, or transition references                                                                                                                     |\n| `storyboard: yes`                                                                                                 | `../hyperframes/references/storyboard-format.md` and `../hyperframes/references/review-loop.md`                                                                                                                                        |\n| Any media asset or operation, including narration, BGM, SFX, captions, grading, or transforms                     | `/media-use`; for framework playback and placement also read `/hyperframes-core` → `references/variables-and-media.md`                                                                                                                 |\n| Multi-scene assembly                                                                                              | `../hyperframes/references/production-loop.md`                                                                                                                                                                                         |\n| `flow: companion`, before the first plan                                                                          | `/hyperframes-creative` → `references/story-spine.md` and `references/house-style.md`; the nearest genre lens and the full `../hyperframes/references/capability-menu.md` — the ceiling treatment is designed from these, not recalled |\n| A companion capability offer, capture, beat grid, generative video, map, publishing, or cross-workflow capability | `../hyperframes/references/capability-menu.md`                                                                                                                                                                                         |\n| A design spec exists, before final approval                                                                       | `/hyperframes-creative` → `references/design-adherence.md`                                                                                                                                                                             |\n\nDo not replace these reads with recollection. Progressive disclosure saves context only when the matching reference is actually loaded.\n\n## 5. Execute the composition\n\nUse this dependency order. Skip a stage only when its input is absent.\n\n1. **Plan.** State the viewer arc, structure, rhythm, and duration driver. Use one file for a short single scene; use sub-compositions for three or more hard scene cuts or any reused scene. Read `/hyperframes-creative` → `references/story-spine.md` for narrated arcs, `references/beat-direction.md` for rhythm, and `/hyperframes-core` → `references/composition-patterns.md` for structure. For an open-ended multi-scene brief, expand the prompt through `/hyperframes-creative` → `references/prompt-expansion.md`. A multi-scene plan cites each scene's shape: a blueprint id from `/hyperframes-animation` → `blueprints-index.md` when one fits, or the named rules it composes from `rules-index.md` when none does — motion names come from those indexes, never invented\n\nArchive v1.0.19: 6 files, 12505 bytes\n\nFiles: scripts/frame-packets.mjs (1486b), scripts/frame-packets.test.mjs (3584b), skill-card.md (2180b), SKILL.md (20864b), sub-agents/frame-worker.md (2304b), _meta.json (133b)\n\nArchive v1.0.18: 6 files, 12476 bytes\n\nFiles: scripts/frame-packets.mjs (1486b), scripts/frame-packets.test.mjs (3584b), skill-card.md (2063b), SKILL.md (20842b), sub-agents/frame-worker.md (2304b), _meta.json (133b)\n\nArchive v1.0.17: 6 files, 12498 bytes\n\nFiles: scripts/frame-packets.mjs (1506b), scripts/frame-packets.test.mjs (3584b), skill-card.md (2263b), SKILL.md (20872b), sub-agents/frame-worker.md (2309b), _meta.json (133b)\n\nArchive v1.0.16: 6 files, 12532 bytes\n\nFiles: scripts/frame-packets.mjs (1506b), scripts/frame-packets.test.mjs (3584b), skill-card.md (2164b), SKILL.md (20872b), sub-agents/frame-worker.md (2306b), _meta.json (133b)","readmeExcerpt":"Skill: general-video Owner: heygen-com Summary: 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 f","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"npx hyperframes skills update general-video"},{"language":"bash","snippet":"npx hyperframes init \"videos/<project>\" --non-interactive --example=blank --skill=general-video"},{"language":"json","snippet":"{\n  \"scene\": \"<frame_id>\",\n  \"duration_s\": 0.0,\n  \"rules\": [\"<rule ids you actually used>\"],\n  \"exit\": { \"vector\": \"<direction + px/s at your last frame>\", \"still_moving\": true },\n  \"entry\": { \"vector\": \"<direction + px/s at your first frame>\", \"from_rest\": false }\n}"},{"language":"bash","snippet":"npx hyperframes skills update general-video"},{"language":"bash","snippet":"npx hyperframes init \"videos/<project>\" --non-interactive --example=blank --skill=general-video"},{"language":"json","snippet":"{\n  \"scene\": \"<frame_id>\",\n  \"duration_s\": 0.0,\n  \"rules\": [\"<rule ids you actually used>\"],\n  \"exit\": { \"vector\": \"<direction + px/s at your last frame>\", \"still_moving\": true },\n  \"entry\": { \"vector\": \"<direction + px/s at your first frame>\", \"from_rest\": false }\n}"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: general-video\ndescription: >\n  Author or edit a custom HyperFrames composition when no specialized workflow fits, or when\n  BRIEF.md sets flow: companion. Use for longer or multi-scene pieces, brand and sizzle reels,\n  montages, static loops, static title cards, footage remixes, and freeform builds. Use\n  motion-graphics instead for a short unnarrated motion-first unit, including an animated title.\n  Route fresh creation through hyperframes before using this skill.\n---\n\n**Plugin installs:** Before setup or freshness commands, follow [plugin execution rules](../hyperframes/references/plugin-installation.md) when this skill is inside a HyperFrames plugin. Standalone installs keep the update instructions below.\n\n# General video\n\nRun `npx hyperframes usage --json` at the start unless the workflow just read it, then check again at milestones such as after drafting and before rendering. Read the available windows and reset times. If usage is unknown, say so without guessing allowance; keep scope and workflow choices with the user.\n\nBefore relying on this workflow, run:\n\n```bash\nnpx hyperframes skills update general-video\n```\n\nA successful no-op means the skill is current. Surface an update failure instead of continuing from memory.\n\n## 1. Apply cross-cutting source adapters\n\n- **Media:** For any audio, image, icon, logo, voice, grade, LUT, treatment/effect, caption, or media-operation need, load `/media-use` and follow `../media-use/references/resolve.md` (resolve, adopt, reuse) and `../media-use/references/setup-providers.md` (providers, auth). Vague footage feedback and named styles use `../media-use/references/media-treatments.md` 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. Local adoption alone does not require an auth gate.\n- **Figma:** If any input is a `figma.com` URL, run `/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.\n\nThese adapters do not change the workflow selected by `/hyperframes`.\n\n## 2. Start from project state\n\nApply the first matching row; do not evaluate lower state rows:\n\n| State                                                      | Action                                                                                                         |\n| ---------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |\n| Specif"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn77d06grj6xqp3dqwkk4bavhn89pegt\",\n  \"slug\": \"general-video\",\n  \"version\": \"1.0.25\",\n  \"publishedAt\": 1791358185795\n}"},{"path":"skill-card.md","content":"## Description:\n\nAuthors and edits custom HyperFrames video compositions when specialized workflows do not fit, including multi-scene pieces, title cards, and footage remixes.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[heygen-com](https://clawhub.ai/user/heygen-com)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nVideo creators and developers use this skill to plan, build, revise, and check custom HyperFrames compositions for projects that do not fit a specialized workflow.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Unpinned external commands and built-in skill updates may change the reviewed workflow.\n\nMitigation: Review before installation; use a trusted, pinned HyperFrames CLI/package source and review updates before running them.\n\nRisk: External commands can modify project files in environments with sensitive files or credentials.\n\nMitigation: Review the skill and limit access to sensitive project files and credentials before execution.\n\n## Reference(s):\n\n- [General Video on ClawHub](https://clawhub.ai/heygen-com/skills/general-video)\n\n## Skill Output:\n\n**Output Type(s):** [Code, Markdown, Shell commands, Files]\n\n**Output Format:** [HTML compositions, project files, preview or rendered video, and Markdown handoff]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Rendering requires final preview approval; reports duration for time-based deliverables.]\n\n## Skill Version(s):\n\n1.0.25 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."},{"path":"sub-agents/frame-worker.md","content":"# Frame worker — general-video delta\n\n> The shared law is the core contract above (the packet builder prepends `../../hyperframes/references/frame-worker-core.md` to this file as `_role.md`) — read the two as one role. This file carries only what's specific to a general-video scene; you run N-up, **one scene each** — your dispatch carries exactly one packet. Tempted to add a generic GSAP / timeline rule here? Wrong home — it belongs in the core contract or `hyperframes-core`.\n\n## Your scene is invented, not captured\n\nThere is no product capture pipeline: your packet's storyboard block plus the design truth file named in Project inputs are your complete input. Invent elements from those two sources only — use exactly the media paths the block itself names, and never resolve or fetch new media (the orchestrator staged everything your block cites before dispatch).\n\n## Design truth\n\nProject inputs names the design file (resolution order `frame.md` → `design.md` → `DESIGN.md`). It is brand truth for tokens, type, palette, and treatment; the storyboard block owns content. When the block and the design file disagree on content, the block wins; on style, the design file wins.\n\n## Output contract — composition + motion sidecar\n\nWrite exactly two files, then stop:\n\n1. `compositions/<frame_id>.html` — the sub-composition, a bare fragment per the core contract.\n2. `compositions/<frame_id>.motion.json` — one JSON object the orchestrator merges into the project's motion ledger:\n\n```json\n{\n  \"scene\": \"<frame_id>\",\n  \"duration_s\": 0.0,\n  \"rules\": [\"<rule ids you actually used>\"],\n  \"exit\": { \"vector\": \"<direction + px/s at your last frame>\", \"still_moving\": true },\n  \"entry\": { \"vector\": \"<direction + px/s at your first frame>\", \"from_rest\": false }\n}\n```\n\nReport what you actually authored — measured values from your timeline, not the plan's hopes; where the doctrine chain is installed, a numeric seam gate verifies exits and entries downstream and a wrong sidecar fails loudly there instead of silently here.\n\n## Boundaries\n\nAudio is orchestrator-owned: never author `<audio>` in a scene. Seams between scenes are stamped by the orchestrator from the ledger — author your entry/exit motion inside your own timeline, and never reach into a neighbor scene's file."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"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. Skill: general-video Owner: heygen-com Summary: 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 f","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1381,"uniquenessScore":50,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T15:06:07.119Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T15:06:07.119Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T03:53:08.670Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}