@cueframe/skills 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -104
- package/{skills → dist/skills}/add-music-bed/SKILL.md +12 -7
- package/{skills → dist/skills}/brand-reel/SKILL.md +19 -15
- package/{skills → dist/skills}/clip-a-talking-head/SKILL.md +15 -7
- package/dist/skills/composing-video/SKILL.md +447 -0
- package/{skills → dist/skills}/cueframe-brand-demo/SKILL.md +9 -2
- package/{skills → dist/skills}/cueframe-cli/SKILL.md +54 -49
- package/{skills → dist/skills}/cueframe-component-authoring/SKILL.md +14 -6
- package/{skills → dist/skills}/cueframe-compose-loop/SKILL.md +20 -6
- package/dist/skills/cueframe-compose-loop/references/builtin-insertion.md +49 -0
- package/dist/skills/cueframe-compose-loop/references/builtin-requests.json +111 -0
- package/dist/skills/cueframe-connect/SKILL.md +53 -0
- package/{skills → dist/skills}/cueframe-product-video/SKILL.md +15 -7
- package/{skills → dist/skills}/cueframe-scene-shot/SKILL.md +8 -0
- package/dist/skills/cueframe-storyboard/SKILL.md +76 -0
- package/{skills → dist/skills}/every-format-from-one-edit/SKILL.md +14 -8
- package/{skills → dist/skills}/extracting-brand-kits/SKILL.md +8 -0
- package/{skills → dist/skills}/launch-video/SKILL.md +17 -11
- package/{skills → dist/skills}/make-a-social-reel/SKILL.md +19 -15
- package/{skills → dist/skills}/rebrand-a-video/SKILL.md +18 -16
- package/dist/skills/video-craft-standards/SKILL.md +121 -0
- package/dist/skills/video-craft-standards/agents/openai.yaml +6 -0
- package/package.json +9 -28
- package/skills-dir.d.ts +1 -0
- package/skills-dir.js +2 -1
- package/.agents/plugins/marketplace.json +0 -12
- package/.claude-plugin/marketplace.json +0 -6
- package/.claude-plugin/plugin.json +0 -15
- package/.codex-plugin/plugin.json +0 -30
- package/.cursor-plugin/plugin.json +0 -1
- package/.mcp.json +0 -1
- package/AGENTS.md +0 -20
- package/assets/logo-400.png +0 -0
- package/gemini-extension.json +0 -1
- package/glama.json +0 -1
- package/hooks/hooks.json +0 -7
- package/hooks/session-inject.md +0 -15
- package/hooks/session-start.sh +0 -6
- package/llms-install.md +0 -47
- package/mcp.json +0 -1
- package/plugin.json +0 -46
- package/rules/cueframe.mdc +0 -19
- package/skills/composing-video/SKILL.md +0 -702
- package/skills/cueframe-connect/SKILL.md +0 -45
- package/skills/cueframe-storyboard/SKILL.md +0 -104
- package/skills/video-craft-standards/SKILL.md +0 -128
- package/skills/video-craft-standards/agents/openai.yaml +0 -6
- package/skills/video-craft-standards/assets/icon.svg +0 -16
- package/skills.sh.json +0 -1
- /package/{skills → dist/skills}/add-music-bed/agents/openai.yaml +0 -0
- /package/{assets → dist/skills/add-music-bed/assets}/icon.svg +0 -0
- /package/{skills → dist/skills}/brand-reel/agents/openai.yaml +0 -0
- /package/{skills/add-music-bed → dist/skills/brand-reel}/assets/icon.svg +0 -0
- /package/{skills → dist/skills}/clip-a-talking-head/agents/openai.yaml +0 -0
- /package/{skills/brand-reel → dist/skills/clip-a-talking-head}/assets/icon.svg +0 -0
- /package/{skills → dist/skills}/composing-video/agents/openai.yaml +0 -0
- /package/{skills/clip-a-talking-head → dist/skills/composing-video}/assets/icon.svg +0 -0
- /package/{skills → dist/skills}/cueframe-brand-demo/agents/openai.yaml +0 -0
- /package/{skills/composing-video → dist/skills/cueframe-brand-demo}/assets/icon.svg +0 -0
- /package/{skills → dist/skills}/cueframe-cli/agents/openai.yaml +0 -0
- /package/{skills/cueframe-brand-demo → dist/skills/cueframe-cli}/assets/icon.svg +0 -0
- /package/{skills → dist/skills}/cueframe-component-authoring/agents/openai.yaml +0 -0
- /package/{skills/cueframe-cli → dist/skills/cueframe-component-authoring}/assets/icon.svg +0 -0
- /package/{skills → dist/skills}/cueframe-compose-loop/agents/openai.yaml +0 -0
- /package/{skills/cueframe-component-authoring → dist/skills/cueframe-compose-loop}/assets/icon.svg +0 -0
- /package/{skills → dist/skills}/cueframe-compose-loop/references/preview-workflow.md +0 -0
- /package/{skills → dist/skills}/cueframe-connect/agents/openai.yaml +0 -0
- /package/{skills/cueframe-compose-loop → dist/skills/cueframe-connect}/assets/icon.svg +0 -0
- /package/{skills → dist/skills}/cueframe-product-video/agents/openai.yaml +0 -0
- /package/{skills/cueframe-connect → dist/skills/cueframe-product-video}/assets/icon.svg +0 -0
- /package/{skills → dist/skills}/cueframe-scene-shot/agents/openai.yaml +0 -0
- /package/{skills/cueframe-product-video → dist/skills/cueframe-scene-shot}/assets/icon.svg +0 -0
- /package/{skills → dist/skills}/cueframe-storyboard/agents/openai.yaml +0 -0
- /package/{skills/cueframe-scene-shot → dist/skills/cueframe-storyboard}/assets/icon.svg +0 -0
- /package/{skills → dist/skills}/every-format-from-one-edit/agents/openai.yaml +0 -0
- /package/{skills/cueframe-storyboard → dist/skills/every-format-from-one-edit}/assets/icon.svg +0 -0
- /package/{skills → dist/skills}/extracting-brand-kits/agents/openai.yaml +0 -0
- /package/{skills/every-format-from-one-edit → dist/skills/extracting-brand-kits}/assets/icon.svg +0 -0
- /package/{skills → dist/skills}/launch-video/agents/openai.yaml +0 -0
- /package/{skills/extracting-brand-kits → dist/skills/launch-video}/assets/icon.svg +0 -0
- /package/{skills → dist/skills}/make-a-social-reel/agents/openai.yaml +0 -0
- /package/{skills/launch-video → dist/skills/make-a-social-reel}/assets/icon.svg +0 -0
- /package/{skills → dist/skills}/rebrand-a-video/agents/openai.yaml +0 -0
- /package/{skills/make-a-social-reel → dist/skills/rebrand-a-video}/assets/icon.svg +0 -0
- /package/{skills/rebrand-a-video → dist/skills/video-craft-standards}/assets/icon.svg +0 -0
package/README.md
CHANGED
|
@@ -1,111 +1,16 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @cueframe/skills
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
The CueFrame agent skills as an npm package: one directory per skill, each with a `SKILL.md` (YAML frontmatter `name` and `description`, then the skill) and, where a skill has them, `references/`. The same tree ships the per-skill ChatGPT/Codex card (`agents/openai.yaml`) and icon (`assets/icon.svg`); a program installing skills into another host drops those two files.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
The skills are maintained in the `skills/` directory of [cueframe-ai/cueframe-mcp](https://github.com/cueframe-ai/cueframe-mcp), which is also the plugin that installs them into Claude Code, Codex, Cursor and Gemini CLI. This package is a build-time copy of that directory, for programs that embed or copy the skills (the `cueframe` CLI's `install` command, CueFrame's own services).
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
> Install the CueFrame skills from https://github.com/cueframe-ai/cueframe-skills, connect the CueFrame MCP server at https://api.cueframe.ai/v1/mcp, run get_account to confirm it works, then ask me for my footage or the video I want to make.
|
|
12
|
-
|
|
13
|
-
## Install
|
|
14
|
-
|
|
15
|
-
Claude Code (skills, the session router and the MCP server in one plugin):
|
|
16
|
-
|
|
17
|
-
```
|
|
18
|
-
claude plugin marketplace add cueframe-ai/cueframe-skills
|
|
19
|
-
claude plugin install cueframe@cueframe
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
Codex:
|
|
23
|
-
|
|
24
|
-
```
|
|
25
|
-
codex plugin marketplace add cueframe-ai/cueframe-skills
|
|
26
|
-
codex plugin add cueframe@cueframe
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
Gemini CLI:
|
|
30
|
-
|
|
31
|
-
```
|
|
32
|
-
gemini extensions install https://github.com/cueframe-ai/cueframe-skills
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
Any of the 70+ clients that support Agent Skills (reads `skills/` and `skills.sh.json` directly):
|
|
36
|
-
|
|
37
|
-
```
|
|
38
|
-
npx skills add cueframe-ai/cueframe-skills
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
Any MCP client, server only (then install skills with one of the lines above or the CLI below):
|
|
42
|
-
|
|
43
|
-
```
|
|
44
|
-
claude mcp add --transport http cueframe https://api.cueframe.ai/v1/mcp
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
Hermes:
|
|
48
|
-
|
|
49
|
-
```yaml
|
|
50
|
-
mcp_servers:
|
|
51
|
-
cueframe:
|
|
52
|
-
url: https://api.cueframe.ai/v1/mcp
|
|
53
|
-
auth: oauth
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
OpenClaw:
|
|
57
|
-
|
|
58
|
-
```
|
|
59
|
-
openclaw mcp add cueframe --url https://api.cueframe.ai/v1/mcp --transport streamable-http --auth oauth
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
The CueFrame CLI, which writes the skills into the current project for whichever agent you use:
|
|
63
|
-
|
|
64
|
-
```
|
|
65
|
-
npx -y cueframe@0.5 install
|
|
7
|
+
```js
|
|
8
|
+
import { SKILLS_DIR } from '@cueframe/skills/dir';
|
|
9
|
+
// SKILLS_DIR: absolute path of the directory holding one subdirectory per skill
|
|
66
10
|
```
|
|
67
11
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
## The skills
|
|
71
|
-
|
|
72
|
-
| Skill | What it does |
|
|
73
|
-
| --- | --- |
|
|
74
|
-
| `add-music-bed` | Retrofits a music bed (and ambience or SFX) onto an existing composition — license-aware search, correct mix hierarchy, ducking under speech, cuts moved onto the beat. Triggers on "add music to this", "this video feels dead", "put a bed under it", "it needs sound", "add background music", "make the cuts hit the beat", "add some sfx", "the audio is just silence". |
|
|
75
|
-
| `brand-reel` | Produces a 12–20 second 9:16 brand-identity reel — three-beat arc, bespoke cards in the brand's own type and palette, footage graded into the palette. Triggers on "brand video", "identity reel", "make our brand a video", "turn our brand into a reel", "a video that feels like us", "showcase our brand", "anthem video for our launch". |
|
|
76
|
-
| `clip-a-talking-head` | Cuts a podcast, talk, or interview into shorts that open on the strongest sentence, reframe to the active speaker, and carry transcript-timed captions. Triggers on "clip this podcast", "pull the best moments out of this talk", "make shorts from this interview", "cut this down for social", "find the viral moment", "turn this recording into clips", "the good part is buried". |
|
|
77
|
-
| `composing-video` | Use when an agent is asked to make ANY video with CueFrame — a product launch, announcement, promo, teaser, social clip, reel, short, explainer, animated explainer, concept video, product/dev-tool demo, walkthrough, or founder/talking-head piece. Triggers on "make a video", "launch video", "promo", "teaser", "reel", "short", "explainer", "animated explainer", "demo video", "talking-head", or turning long-form footage into clips. |
|
|
78
|
-
| `cueframe-brand-demo` | Use when turning a local app into a brand-consistent product demo with CueFrame — extract the brand straight from the repo (colors/fonts/logo/motion), capture a Playwright walkthrough of the running app, and author a branded, auto-zoomed demo whose intro/outro/logo/colors/fonts/motion are frozen by CueFrame's engine — e.g. "make an on-brand demo of my app", "record my localhost and produce a branded launch video". This is the end-to-end brand pipeline over the CueFrame curated tools. |
|
|
79
|
-
| `cueframe-cli` | Use when editing, clipping, or rendering video via the CueFrame CLI — e.g. "make a 9:16 short from this podcast", "pull the best moments out of this MP4", "render a clip", or any task that calls the `cueframe` binary. Also use when comparing CueFrame against direct-ffmpeg approaches. |
|
|
80
|
-
| `cueframe-component-authoring` | Use when authoring, forking, or customizing a CueFrame motion-graphics component/primitive/graphic — e.g. "customize the cinematic-title primitive", "make my own animated lower-third", "fork a CueFrame template and edit it", "author a custom graphic and render it". Covers cloud MCP, local desktop, and CLI project paths through the same component-v2 contract. Use BEFORE hand-writing a component from scratch — forking a built-in is usually the faster start. |
|
|
81
|
-
| `cueframe-compose-loop` | Use when an AI agent should DRIVE CueFrame to a high-quality clip itself — author a composition, look at rendered frames, score it with CueFrame's judge, fix the weakest thing, and repeat until it's good — e.g. "turn this source into a polished 9:16 clip", "compose and self-correct until it scores well". This is the agent-driven convergence loop over the CueFrame primitives in the `cueframe-cli` skill. |
|
|
82
|
-
| `cueframe-connect` | Use when CueFrame is not connected yet, the user asks how to connect or authenticate CueFrame, or another CueFrame skill is about to call a tool and needs the one-time setup path for Claude Code, Claude, ChatGPT, Cursor, Codex, VS Code, Windsurf, Zed, Antigravity CLI, Copilot CLI, or an x402 wallet. |
|
|
83
|
-
| `cueframe-product-video` | Use when turning a screen recording (with cursor/click events) into a polished, auto-zooming product video or demo reel via CueFrame — e.g. "make a product demo from this Browserbase capture", "auto-zoom this screen recording to where the user clicked", "turn this walkthrough into a social demo". This is a USE-CASE recipe over the CueFrame primitives in the `cueframe-cli` skill. |
|
|
84
|
-
| `cueframe-scene-shot` | Author a CueFrame 3D world-object shot as canonical SceneShotSpecV2 JSON. Use for slabs, pages, phones, laptops, captured component or video surfaces, world text, camera motion, studio lighting, focus, and product-shot recipes. |
|
|
85
|
-
| `cueframe-storyboard` | Use BEFORE composing when starting a NEW video from scratch and you need to plan its structure — turning a rough ask ("make a launch video", "30s promo", "an explainer for our API") into a concrete beat flow. Owns the intake + storyboard step: interview the user for the brief, resolve the format from the platform, and lay out the hook→body→cta beats that drive the compose workflow. Triggers on "plan a video", "storyboard", "structure this video", "outline the video", "where do I start", or any new-video ask that has no structure yet. Hand off to composing-video for per-beat craft. |
|
|
86
|
-
| `every-format-from-one-edit` | Derives content-aware 9:16, 1:1, and 4:5 siblings from one finished composition — same edit, every platform, no re-editing. Triggers on "make this vertical too", "I need this for TikTok and LinkedIn", "every aspect ratio", "square version of this", "resize for Reels", "one video, all platforms", "port this edit to Shorts". |
|
|
87
|
-
| `extracting-brand-kits` | Use when the user says "make my video look like THIS" with a reference video, screenshots, or a moodboard — build a CueFrame brand kit FROM that inspiration so every subsequent compose speaks its visual language. Owns the extraction step: sample the reference's graphics-bearing frames, upload them as exemplars, reproduce each recurring motif as an authored graphic verified against the reference, and upsert the kit with the full language payload. Triggers on "match this style", "like this reference", "use this video as inspiration", "extract a brand kit", "moodboard". Hand off to cueframe-storyboard/composing-video once the kit is bound. |
|
|
88
|
-
| `launch-video` | Turns screen recordings and product footage into a 30–90 second 16:9 launch film — payoff-first hook, real product surface punched in, a building bed or narration, one CTA end card. Triggers on "make a launch video", "announcement video for this feature", "turn this screen recording into a demo film", "product video from these captures", "we're shipping Friday and need a video", "feature announcement". |
|
|
89
|
-
| `make-a-social-reel` | Turns footage into a finished 9:16 social reel — hook inside 2 seconds, poster-grade type, a decided music bed, one final render. Triggers on "make me a reel from this", "turn this into a short", "cut a clip for TikTok / Reels / Shorts", "make this vertical", "make a social clip from this video", "the opening is boring", "can you make this pop for Instagram". |
|
|
90
|
-
| `rebrand-a-video` | Swaps the brand kit under an existing video and re-renders — tokens, bumpers, logo, captions, and motion re-theme automatically; hardcoded card values get surgical edits. Triggers on "rebrand this video", "swap the brand", "we changed our colors", "new logo, same video", "make this video match the new brand", "re-theme our launch video", "white-label this for a client". |
|
|
91
|
-
| `video-craft-standards` | The definition of DONE for every video made with CueFrame — per-artifact checklists (social reel, launch film, brand reel, talking-head clip) with kill criteria. Read this BEFORE composing and score your work against it BEFORE rendering. Other skills quote this document; when a skill and this document disagree, this document wins. Triggers on "is this good enough", "quality bar", "what should a finished reel have", "review my video", or any request to make a video when no other skill has stated the bar. |
|
|
92
|
-
|
|
93
|
-
Skills name each other, so a session starts with the router (`hooks/session-inject.md`) choosing the entry point: `cueframe-storyboard` then `composing-video` for a new video, `clip-a-talking-head` for footage, `cueframe-connect` when the server is not connected yet.
|
|
94
|
-
|
|
95
|
-
## Repository layout
|
|
96
|
-
|
|
97
|
-
- `skills/<name>/SKILL.md`: the skill. `agents/openai.yaml` and `assets/icon.svg` beside it are generated (`npm run build`).
|
|
98
|
-
- `.claude-plugin/`, `hooks/`, `.mcp.json`: Claude Code plugin, session router and server.
|
|
99
|
-
- `.codex-plugin/`, `.agents/plugins/`, `mcp.json`: Codex and ChatGPT plugin and marketplace.
|
|
100
|
-
- `.cursor-plugin/`, `rules/`: Cursor plugin and the always-on rule.
|
|
101
|
-
- `gemini-extension.json`, `skills.sh.json`, `glama.json`, `llms-install.md`: Gemini CLI, skills.sh, Glama.
|
|
102
|
-
- `plugin.json`: the portable manifest (agent-plugins.org).
|
|
103
|
-
- `@cueframe/skills` on npm exports `SKILLS_DIR` from `@cueframe/skills/dir` for programs that copy the skills.
|
|
104
|
-
|
|
105
|
-
## Contributing
|
|
106
|
-
|
|
107
|
-
See [CONTRIBUTING.md](./CONTRIBUTING.md). Skills are edited here and nowhere else.
|
|
12
|
+
`@cueframe/skills/package.json` is exported too, so a consumer can read the version it installed.
|
|
108
13
|
|
|
109
|
-
|
|
14
|
+
The hosted MCP server at `https://api.cueframe.ai/v1/mcp` does the work; the skills teach the agent the workflows. Documentation: https://docs.cueframe.ai
|
|
110
15
|
|
|
111
|
-
Apache-2.0. See
|
|
16
|
+
Apache-2.0. See LICENSE and NOTICE.
|
|
@@ -5,6 +5,14 @@ description: Retrofits a music bed (and ambience or SFX) onto an existing compos
|
|
|
5
5
|
|
|
6
6
|
# Add a music bed
|
|
7
7
|
|
|
8
|
+
## Scope and capability policy
|
|
9
|
+
|
|
10
|
+
User intent and acceptance criteria override this recipe's aesthetic defaults. Silent, typography-only, uncaptioned and slow work are valid; no universal narration, footage, CTA, beat count or score target. Contracts, factual fidelity, media bindings and current source revisions remain mandatory.
|
|
11
|
+
|
|
12
|
+
Read available tools and current project; preserve the chosen local/hosted lane. Supported local work needs no hosted registration. Do not silently install, authenticate, switch projects or upload local content. Before metered hosted work, check `get_account`, entitlements, balance and quotes. Desktop setup: https://docs.cueframe.ai.
|
|
13
|
+
|
|
14
|
+
For scoped revisions, preserve unrelated timing, media, audio and shared brand-kit state. Edit affected content; inspect relevant frames, continuous motion and affected audio. No restarted intake, new approval pause, paid judge or final export by default. Judge only when useful; scores never override acceptance failures. Stop/report after two no-improvement passes. See [preview workflow](../cueframe-compose-loop/references/preview-workflow.md).
|
|
15
|
+
|
|
8
16
|
> **Stock-audio limits (verified in production):** a Freesound import lands with
|
|
9
17
|
> `audioRole:"sfx"` and NO beat grid — `import_resource` takes no audioRole param, and
|
|
10
18
|
> `materializeGrid grid:"beat"` will 422 `grid_unavailable` on it. Set the role yourself when
|
|
@@ -12,7 +20,6 @@ description: Retrofits a music bed (and ambience or SFX) onto an existing compos
|
|
|
12
20
|
> track (the judge expects a dedicated music track), and until curated music-pack discovery
|
|
13
21
|
> exists, prefer fades over beat-cuts for stock beds — beat-grid cutting works with pack beds.
|
|
14
22
|
|
|
15
|
-
|
|
16
23
|
You point at an existing composition that sounds empty; you get it back with a licensed bed that
|
|
17
24
|
matches the brand's mood, sits correctly under any speech, and — where the bed drives pacing —
|
|
18
25
|
cuts moved onto its beat grid. Attribution included, levels disciplined, one re-render.
|
|
@@ -66,9 +73,7 @@ delivery; stills and a visual judge cannot establish the mix. Recheck visuals wh
|
|
|
66
73
|
6. **Restraint is the discipline.** A few placed sounds read; a wall of them merges into mush.
|
|
67
74
|
The biggest moment gets the strongest accent ONCE. And silence stays a device — clean air
|
|
68
75
|
before the first hit, a dropout before the biggest beat, is worth more than any riser.
|
|
69
|
-
7. **
|
|
70
|
-
regressed; `score_composition` to confirm the piece improved (worst-first if not, ≥ 7.5 to
|
|
71
|
-
ship); then `create_render` → `wait_job (kind:"render")` — one render, on approval.
|
|
76
|
+
7. **Listen and verify the affected window.** Check intelligibility, ducking, fades and synchronization in a motion/audio preview; stills alone cannot verify a music change. Preserve existing cut timing unless retiming was requested. Broader judging is optional and budgeted; export only for requested final delivery.
|
|
72
77
|
|
|
73
78
|
If, after listening, the right call is NO bed — a raw testimonial, a piece whose room tone is
|
|
74
79
|
the point — that is a legitimate outcome of this skill: record the intentional-silence decision
|
|
@@ -79,13 +84,13 @@ and its reason in the delivery note instead of forcing a bed.
|
|
|
79
84
|
Quoted from `video-craft-standards` (cross-cutting rules — every artifact); this skill exists to
|
|
80
85
|
satisfy the second one:
|
|
81
86
|
|
|
82
|
-
> **
|
|
87
|
+
> **DEFAULT** Audio is decided, never defaulted: a music bed (curated packs via
|
|
83
88
|
> `import_resource {kind:"music-pack"}`) or ambience/loops (Freesound via
|
|
84
89
|
> `search_resources kind:"sfx"`), honoring the brand kit's `musicMood`; cut to the beat via
|
|
85
90
|
> `materializeGrid` when the bed drives pacing — OR an explicit intentional-silence decision
|
|
86
|
-
> recorded in your delivery note with the reason. **
|
|
91
|
+
> recorded in your delivery note with the reason. **Consider:** a render whose silence nobody chose.
|
|
87
92
|
|
|
88
|
-
> **
|
|
93
|
+
> **DEFAULT** Every stock asset's provenance is recorded (provider, id, author).
|
|
89
94
|
|
|
90
95
|
And from §1: *"**SHOULD** Cuts land on the music grid when a bed exists."*
|
|
91
96
|
|
|
@@ -5,6 +5,14 @@ description: Produces a 12–20 second 9:16 brand-identity reel — three-beat a
|
|
|
5
5
|
|
|
6
6
|
# Brand reel
|
|
7
7
|
|
|
8
|
+
## Scope and capability policy
|
|
9
|
+
|
|
10
|
+
User intent and acceptance criteria override this recipe's aesthetic defaults. Silent, typography-only, uncaptioned and slow work are valid; no universal narration, footage, CTA, beat count or score target. Contracts, factual fidelity, media bindings and current source revisions remain mandatory.
|
|
11
|
+
|
|
12
|
+
Read available tools and current project; preserve the chosen local/hosted lane. Supported local work needs no hosted registration. Do not silently install, authenticate, switch projects or upload local content. Before metered hosted work, check `get_account`, entitlements, balance and quotes. Desktop setup: https://docs.cueframe.ai.
|
|
13
|
+
|
|
14
|
+
For scoped revisions, preserve unrelated timing, media, audio and shared brand-kit state. Edit affected content; inspect relevant frames, continuous motion and affected audio. No restarted intake, new approval pause, paid judge or final export by default. Judge only when useful; scores never override acceptance failures. Stop/report after two no-improvement passes. See [preview workflow](../cueframe-compose-loop/references/preview-workflow.md).
|
|
15
|
+
|
|
8
16
|
You bring a brand (a website, a kit, or just a logo and a palette) plus footage of its world;
|
|
9
17
|
you get back a 12–20 second vertical reel with a three-beat arc — wordmark moment, craft/proof
|
|
10
18
|
beat, tagline lockup — where every graphic could belong to this brand and no other.
|
|
@@ -23,8 +31,7 @@ this job.
|
|
|
23
31
|
- **The brand** (required): a brand kit on the project, a website to `extract_brand_kit` from,
|
|
24
32
|
or explicit colors + fonts + wordmark. Extraction gets colors/fonts only — ask for the tagline
|
|
25
33
|
and voice.
|
|
26
|
-
- **
|
|
27
|
-
needs a real subject. Ask before defaulting to stock.
|
|
34
|
+
- **Leading material:** brand typography, abstract motion, product, workshop, hands or city as requested. Footage is optional for a silent typography study; do not demand it or default to stock.
|
|
28
35
|
- **Tone**: default premium-calm unless the brand's voice says otherwise.
|
|
29
36
|
|
|
30
37
|
## Workflow
|
|
@@ -33,13 +40,10 @@ Use `cueframe-compose-loop`'s [preview workflow](../cueframe-compose-loop/refere
|
|
|
33
40
|
for stills and motion windows. For a small revision, preserve the approved arc and inspect the
|
|
34
41
|
affected behavior and regressions; reserve full-film judging and export for the relevant review/delivery.
|
|
35
42
|
|
|
36
|
-
|
|
37
43
|
0. **Find the claim (before anything else).** Interrogate the brand/material
|
|
38
44
|
for its tension — what it believes that its category doesn't — and write
|
|
39
45
|
the claim in one sentence. Derive the shot list, the bed's mood/tempo, the
|
|
40
|
-
pacing, and every card's copy FROM that sentence.
|
|
41
|
-
claim, you are not ready to compose (video-craft-standards: the
|
|
42
|
-
controlling idea is kill-level).
|
|
46
|
+
pacing, and every card's copy FROM that sentence. For a visual identity study, the desired visual experience can be the intent; no factual claim is required.
|
|
43
47
|
|
|
44
48
|
1. **Pin the brand as engine state.** `extract_brand_kit` from their site or `create_brand_kit`
|
|
45
49
|
from what they gave you; set `brandKitId` on the project. Show the kit and let them override
|
|
@@ -49,7 +53,7 @@ affected behavior and regressions; reserve full-film judging and export for the
|
|
|
49
53
|
2. **Import the world.** `import_media` their footage; `get_media_context` for what's actually
|
|
50
54
|
in it. Choose footage that lives in the palette — or plan a `color-grade` toward it. Footage
|
|
51
55
|
color and brand palette must agree.
|
|
52
|
-
3. **Plan the
|
|
56
|
+
3. **Plan the requested arc.** A three-beat example: Opening brand moment (a wordmark treatment, not a logo dump) →
|
|
53
57
|
middle craft/proof beat (the subject's world plus one editorial device: a numbered chapter, a
|
|
54
58
|
pull-quote, a stat with a source) → closing tagline lockup. Write one line of intent per beat
|
|
55
59
|
before authoring.
|
|
@@ -60,13 +64,13 @@ affected behavior and regressions; reserve full-film judging and export for the
|
|
|
60
64
|
the card, then shell it with `applyMotionPreset` in a FOLLOWING `apply_composition` call. The
|
|
61
65
|
test: if another brand's hex swapped in would still look correct, the layout isn't bespoke
|
|
62
66
|
enough — redo it.
|
|
63
|
-
6. **
|
|
67
|
+
6. **Honor the audio decision.** If silence was requested, preserve it without searching for a bed. Otherwise, when music serves the plan: `search_resources` for a bed honoring the kit's
|
|
64
68
|
`musicMood`; place it `audioRole:"music"`, then `materializeGrid { grid:"beat" }` and land
|
|
65
69
|
the three beat boundaries on the grid. A brand reel almost always wants a bed; if the brand's
|
|
66
|
-
voice
|
|
70
|
+
voice calls for silence, preserve that decision.
|
|
67
71
|
7. **Preview each beat, then get judged.** `preview_frame` at t=0, each beat boundary, and the
|
|
68
72
|
final lockup; describe each still before scoring. `score_composition` with the brand facts as
|
|
69
|
-
`brandContext` and your arc as `editorialIntent`; fix the worst axis first,
|
|
73
|
+
`brandContext` and your arc as `editorialIntent`; fix the worst axis first, fix relevant acceptance failures.
|
|
70
74
|
8. **One final render.** `create_render` → `wait_job (kind:"render")`.
|
|
71
75
|
|
|
72
76
|
## What good looks like
|
|
@@ -74,19 +78,19 @@ affected behavior and regressions; reserve full-film judging and export for the
|
|
|
74
78
|
Quoted from `video-craft-standards` §3 (Brand-identity reel) — read the full section; §1's
|
|
75
79
|
social-reel rules apply underneath it:
|
|
76
80
|
|
|
77
|
-
> **
|
|
81
|
+
> **DEFAULT** Three-beat arc: opening brand moment (wordmark treatment) → middle craft/proof beat
|
|
78
82
|
> (the subject's world, with an editorial device — numbered chapter, pull-quote, stat) → closing
|
|
79
83
|
> tagline lockup.
|
|
80
84
|
|
|
81
|
-
> **
|
|
82
|
-
> system. **
|
|
85
|
+
> **DEFAULT** Every graphic is bespoke to the brand: its type, its palette as fields, its layout
|
|
86
|
+
> system. **Consider:** any layout that would look correct with another brand's hex swapped in.
|
|
83
87
|
|
|
84
|
-
> **
|
|
88
|
+
> **DEFAULT** Footage color and brand palette agree — grade toward the palette or choose footage
|
|
85
89
|
> that lives in it.
|
|
86
90
|
|
|
87
91
|
And the cross-cutting card rule:
|
|
88
92
|
|
|
89
|
-
> **
|
|
93
|
+
> **DEFAULT** Brand/text graphics are AUTHORED — `kind:"card"` HTML […] **Consider:** a brand graphic
|
|
90
94
|
> rendered from a catalog text primitive.
|
|
91
95
|
|
|
92
96
|
## Delivering
|
|
@@ -5,6 +5,14 @@ description: Cuts a podcast, talk, or interview into shorts that open on the str
|
|
|
5
5
|
|
|
6
6
|
# Clip a talking head
|
|
7
7
|
|
|
8
|
+
## Scope and capability policy
|
|
9
|
+
|
|
10
|
+
User intent and acceptance criteria override this recipe's aesthetic defaults. Silent, typography-only, uncaptioned and slow work are valid; no universal narration, footage, CTA, beat count or score target. Contracts, factual fidelity, media bindings and current source revisions remain mandatory.
|
|
11
|
+
|
|
12
|
+
Read available tools and current project; preserve the chosen local/hosted lane. Supported local work needs no hosted registration. Do not silently install, authenticate, switch projects or upload local content. Before metered hosted work, check `get_account`, entitlements, balance and quotes. Desktop setup: https://docs.cueframe.ai.
|
|
13
|
+
|
|
14
|
+
For scoped revisions, preserve unrelated timing, media, audio and shared brand-kit state. Edit affected content; inspect relevant frames, continuous motion and affected audio. No restarted intake, new approval pause, paid judge or final export by default. Judge only when useful; scores never override acceptance failures. Stop/report after two no-improvement passes. See [preview workflow](../cueframe-compose-loop/references/preview-workflow.md).
|
|
15
|
+
|
|
8
16
|
You point at long-form footage of people talking; you get back one or more 15–60 second clips
|
|
9
17
|
that each open on the strongest sentence, keep a moving camera on whoever is speaking, cut the
|
|
10
18
|
dead air, and caption every word from the real transcript.
|
|
@@ -70,23 +78,23 @@ correction, retain the approved edit and check relevant regressions without auto
|
|
|
70
78
|
depth title or ignored speaker crop is not preview evidence.
|
|
71
79
|
9. **Preview, judge, render once per clip.** `preview_frame` at t=0 and each cut; describe each
|
|
72
80
|
still (is the framed person the one talking? is the top of the head in frame?).
|
|
73
|
-
`score_composition` with the clip's claim as `editorialIntent`; fix
|
|
81
|
+
`score_composition` with the clip's claim as `editorialIntent`; fix relevant acceptance failures,
|
|
74
82
|
then `create_render` → `wait_job (kind:"render")`.
|
|
75
83
|
|
|
76
84
|
## What good looks like
|
|
77
85
|
|
|
78
|
-
Quoted from `video-craft-standards` §4 (Talking-head clip) — the
|
|
86
|
+
Quoted from `video-craft-standards` §4 (Talking-head clip) — apply the relevant defaults under the scope policy:
|
|
79
87
|
|
|
80
|
-
> **
|
|
88
|
+
> **DEFAULT** Hook = the strongest sentence, first. Cut TO the moment; never open on wind-up.
|
|
81
89
|
|
|
82
|
-
> **
|
|
90
|
+
> **DEFAULT** Active-speaker reframe (`focus: active-speaker` / `face`) — a moving camera, not a
|
|
83
91
|
> static center crop.
|
|
84
92
|
|
|
85
|
-
> **
|
|
86
|
-
> placement where the footage allows it. **
|
|
93
|
+
> **DEFAULT** Captions timed to the edited clip (`captions.fromComposition`); behind-speaker
|
|
94
|
+
> placement where the footage allows it. **DEFAULT** Dead air and false starts cut
|
|
87
95
|
> (`addExcludedRange` / `cutAndRipple`).
|
|
88
96
|
|
|
89
|
-
Plus the cross-cutting audio rule: *"Audio is decided, never defaulted […] **
|
|
97
|
+
Plus the cross-cutting audio rule: *"Audio is decided, never defaulted […] **Consider:** a render whose
|
|
90
98
|
silence nobody chose."*
|
|
91
99
|
|
|
92
100
|
## Delivering
|