diff --git a/skills-manifest.json b/skills-manifest.json index ec3874ae536..73c02687c01 100644 --- a/skills-manifest.json +++ b/skills-manifest.json @@ -14,11 +14,11 @@ "files": 2 }, "general-video": { - "hash": "f288a7bc7eb1a1cf", + "hash": "9e4aa19a49b2b561", "files": 6 }, "hyperframes": { - "hash": "44700184328c21b5", + "hash": "431c3a5bce8497ff", "files": 31 }, "hyperframes-animation": { diff --git a/skills/general-video/SKILL.md b/skills/general-video/SKILL.md index 4ee2d13d01a..4b7b7836a89 100644 --- a/skills/general-video/SKILL.md +++ b/skills/general-video/SKILL.md @@ -155,6 +155,7 @@ A run is complete only when: - requested scope is implemented; - 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; +- when `narration` is `yes` or `minimal`, `index.html` carries the voice track; a missing track blocks render; - `npx hyperframes check` passes, including its built-in lint stage; - design adherence is reviewed against `/hyperframes-creative` → `references/design-adherence.md` when a design spec exists; - contrast findings are resolved; diff --git a/skills/hyperframes/references/brief-contract.md b/skills/hyperframes/references/brief-contract.md index eec0e03f44e..554785ad525 100644 --- a/skills/hyperframes/references/brief-contract.md +++ b/skills/hyperframes/references/brief-contract.md @@ -71,7 +71,7 @@ Ask only fields used by the selected route. Route entries identify their must-ha | `audience` | Who will watch | Infer when clear. Ask only when a different answer changes the story or terminology. | | `message` | The one thing the video must communicate | Derive and echo one sentence. Do not storyboard until this is clear. | | `angle` | Route-specific story shape | Recommend one route-defined option with a reason. | -| `narration` | `yes`, `minimal`, or `no`, plus route-specific modes | Follow the selected route. | +| `narration` | `yes`, `minimal`, or `no`, plus route-specific modes | Follow the route and its workflow. If neither sets a default, infer from the request and state it. Ask only when unknown and it changes the build. | ### Remembered defaults diff --git a/skills/hyperframes/references/routes/general-video.md b/skills/hyperframes/references/routes/general-video.md index d3e7c2d2b87..fb6ba6b64ad 100644 --- a/skills/hyperframes/references/routes/general-video.md +++ b/skills/hyperframes/references/routes/general-video.md @@ -8,5 +8,6 @@ - **Open-ended requests only:** first derive a one-sentence `message`. Ask `audience` only when it is unclear and would change the story or terminology. Ask `destination` only when it would change aspect or composition. Ask for a priority only when the brief contains a real trade-off. Default to one best version; ask about variations only when the user requests options or comparison. - **Specific requests:** a complete ask such as "a static title card with our logo for a website hero" needs no discovery questions. +- **Conditional:** a multi-scene or longer piece with no voice signal adds **`narration`** — narrated or silent? Otherwise infer it and state it: a title card, poster, or loop is `no`; a requested voiceover is `yes`. - **Pitch round:** `message` — the unformed open-ended request is this round's home case. - **Run-shape:** both questions apply. `/general-video` is also the companion host, so `flow: companion` stays on this route with the full toolbox.