@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
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: cueframe-connect
|
|
3
|
-
description: 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.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Connect CueFrame
|
|
7
|
-
|
|
8
|
-
Connect only when the first CueFrame tool call is imminent. Setup is a short detour, not a phase;
|
|
9
|
-
resume the user's original task immediately afterward.
|
|
10
|
-
|
|
11
|
-
- **Claude Code:** offer to run
|
|
12
|
-
`claude mcp add --transport http cueframe https://api.cueframe.ai/v1/mcp` — a browser
|
|
13
|
-
opens and the user clicks **Allow**. No API key.
|
|
14
|
-
- **Claude.ai / Claude Desktop:** Settings → Connectors → add a custom connector with
|
|
15
|
-
`https://api.cueframe.ai/v1/mcp`.
|
|
16
|
-
- **Other agents (Cursor, Codex, VS Code, Windsurf, Zed, Antigravity CLI, Copilot CLI, …):**
|
|
17
|
-
run `npx -y cueframe@0.5 install` — it detects what is on the machine and wires each one.
|
|
18
|
-
- **ChatGPT:** the CLI cannot wire it because there is no local config to write; add
|
|
19
|
-
`https://api.cueframe.ai/v1/mcp` as a custom connector instead.
|
|
20
|
-
- **No account (pay per call):** connect
|
|
21
|
-
`https://api.cueframe.ai/v1/mcp/x402` — no sign-up or API key; priced calls settle
|
|
22
|
-
per call in USDC over x402 from the agent's wallet.
|
|
23
|
-
|
|
24
|
-
Do not ask the user to configure a model provider for CueFrame. This connection exposes CueFrame's
|
|
25
|
-
tools; the host agent keeps using its already-selected CueFrame Gateway, BYOK, or local model.
|
|
26
|
-
|
|
27
|
-
## Then confirm it works, before you plan anything
|
|
28
|
-
|
|
29
|
-
Connected is not the same as working, and finding out at the first *paid* call is the expensive
|
|
30
|
-
way. Two free read-only calls prove the whole path:
|
|
31
|
-
|
|
32
|
-
1. **Discover the surface.** List the tools your host now exposes. You should see the compose loop
|
|
33
|
-
(`new_composition`, `apply_composition`, `validate_composition`, `create_render`) alongside
|
|
34
|
-
discovery reads (`list_catalog`, `list_media`, `get_account`). There are also resources
|
|
35
|
-
(`cueframe://scene-shot` for 3D product shots) and workflow prompts — a flat tool list is not
|
|
36
|
-
the whole surface.
|
|
37
|
-
2. **Smoke-call `get_account`.** It takes no arguments, costs nothing, and answers the questions
|
|
38
|
-
worth knowing before you spend: which org the key is bound to, the plan, per-feature
|
|
39
|
-
entitlements and — the one that matters — `balance`, not `included`. CueFrame is credit-funded,
|
|
40
|
-
so rendering, generation, preview stills, the judge and the Director all draw on ONE shared
|
|
41
|
-
wallet. If `get_account` returns, authentication, routing and scope are all proven.
|
|
42
|
-
|
|
43
|
-
If a later call fails on scope, the error names the exact missing permission (for example
|
|
44
|
-
`billing:read`, which `get_usage` needs and a creative-only key will not have). Mint a key with
|
|
45
|
-
that scope rather than guessing at the surface.
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: cueframe-storyboard
|
|
3
|
-
description: >-
|
|
4
|
-
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.
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# CueFrame Storyboard: brief → flow
|
|
8
|
-
|
|
9
|
-
This is a new-video planning workflow. For revisions to an approved plan, preserve its structure
|
|
10
|
-
and use `cueframe-compose-loop`'s [preview workflow](../cueframe-compose-loop/references/preview-workflow.md)
|
|
11
|
-
to verify the requested change; do not restart intake, Director authoring, or final export by default.
|
|
12
|
-
|
|
13
|
-
> **The bar:** the `video-craft-standards` skill (GET /v1/skills/video-craft-standards) defines DONE for every artifact class — per-class MUST checklists and kill criteria. Read it before composing and score against it before rendering. When this skill and that document disagree, the standards win.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
## The one idea
|
|
17
|
-
|
|
18
|
-
**You are the planner.** You have the user, the whole conversation, the brand, and the judgment — you are
|
|
19
|
-
the smartest thing in this loop. CueFrame is the hands. This skill is the **intake + structure** step:
|
|
20
|
-
turn intent into a concrete **beat flow** *before* you seed a composition, so the curated workflow (media →
|
|
21
|
-
components → seed) executes a plan instead of a guess. Craft — grounded-vs-slop, the verify loop — belongs
|
|
22
|
-
to the sibling **composing-video** skill; this skill gets you a flow, then hands off to it.
|
|
23
|
-
|
|
24
|
-
Do not offload the *thinking* to CueFrame. There is no server that plans the video for you, and you would
|
|
25
|
-
not want one — it would be a blind model with none of your context. Plan here, in the open, with the user.
|
|
26
|
-
|
|
27
|
-
## 1. Interview for the brief — ask only what you can't infer
|
|
28
|
-
|
|
29
|
-
Fill the brief from the conversation first; ask the user **only for the 1–2 things you genuinely cannot
|
|
30
|
-
infer**, and STATE what you assume for the rest. Never wall them with a form.
|
|
31
|
-
|
|
32
|
-
- **Goal / intent** *(required)* — what is this video FOR? launch, promo, explainer, demo, teaser, recap.
|
|
33
|
-
- **Platform** *(sets the format)* — reels / tiktok / shorts → **9:16, ~20s** · youtube → **16:9, ~45s** ·
|
|
34
|
-
linkedin / x → **1:1, ~20s** · web → **16:9, ~30s**. (Or an explicit aspect ratio + duration.)
|
|
35
|
-
- **Audience**, **tone** (punchy / premium-calm / playful / authoritative), **CTA**, **must-includes**
|
|
36
|
-
(a number, a name, a screen), **references** (a style to echo), **brand kit**.
|
|
37
|
-
|
|
38
|
-
If the ask is "make a launch video for our API," you already have goal + a hint of audience — ask "Reels,
|
|
39
|
-
YouTube, or your site?" and infer the rest: *"I'll assume a developer audience and a punchy tone — say if
|
|
40
|
-
you'd rather it feel calm/premium."* One or two questions, not seven.
|
|
41
|
-
|
|
42
|
-
## 2. Structure the flow — the storyboard
|
|
43
|
-
|
|
44
|
-
Lay the duration into **beats** using the fixed editorial vocabulary
|
|
45
|
-
**hook → context → body → proof → cta → outro** (use what the piece needs — most short-form is
|
|
46
|
-
hook → body → cta). For each beat decide:
|
|
47
|
-
|
|
48
|
-
- a one-line **intent** (what this beat does for the viewer),
|
|
49
|
-
- a **duration** (they sum to the target; the hook earns attention in ~3s),
|
|
50
|
-
- a **media need** — real footage is the strongest grounding and CueFrame's home turf, so reach for it
|
|
51
|
-
first; otherwise `generate` a *purposeful* clip (a diagram of the real mechanism, the real UI) or `find`
|
|
52
|
-
stock. Animated text over a gradient is not grounding — it's the slop default,
|
|
53
|
-
- an optional **graphic** (a lower-third, title, CTA card),
|
|
54
|
-
- a **caption** and/or a **VO/script** line.
|
|
55
|
-
|
|
56
|
-
**Ground it, don't invent it.** Pick every graphic/scene from `list_catalog` (filter by `useCase`/`tier`)
|
|
57
|
-
— never hardcode hex or positions or name a component that doesn't exist. Theme from the brand kit. If
|
|
58
|
-
you're planning over real footage, read `get_media_context` (detected faces + transcript) so beat timing,
|
|
59
|
-
crops, and captions land on what's actually there.
|
|
60
|
-
|
|
61
|
-
## 3. Show the flow, then persist it as a Brief
|
|
62
|
-
|
|
63
|
-
Show the user the beat list **first** — a five-line outline. It is cheap to change here and expensive to
|
|
64
|
-
change after a render, so this is where you converge on structure. On their go, **persist the plan with
|
|
65
|
-
`create_brief`** — the beats/goal/format/gates you just elicited map 1:1 onto its fields, and the plan stops
|
|
66
|
-
being chat-ephemeral (it survives the session, carries a cost quote, and is honored field-by-field):
|
|
67
|
-
|
|
68
|
-
1. `import_media` / `generate_media` for each beat's media need,
|
|
69
|
-
2. `create_brief` — goal, audience, platform/format, durationSec, tone, cta, locale, and the beats
|
|
70
|
-
(each with its editorial intent and, when you're cutting real footage, MOMENT PINNING
|
|
71
|
-
`source: {mediaId, startSec, endSec}` from the transcript — honored to-the-frame or refused).
|
|
72
|
-
Relay the response's **quote** (compose + estimated render) BEFORE composing.
|
|
73
|
-
3. `compose { briefId }` — the Director authors FROM your brief; every field is honored or the
|
|
74
|
-
compose is refused loudly naming the field. Gates: put `holdAt: ["layout"]` in the brief's `gates` when
|
|
75
|
-
the user wants to approve the storyboard mid-flight; `autoApprove: true` for hands-off.
|
|
76
|
-
4. `score_composition` / `consult` to fix the weakest beat,
|
|
77
|
-
5. `create_render` for the MP4.
|
|
78
|
-
|
|
79
|
-
**Two graphic media — pick per beat, and review accordingly:** a `card` (verbatim HTML in
|
|
80
|
-
`seededGraphics`) is a STATIC graphic — cheap, approve it from a still; a **component**
|
|
81
|
-
(`create_component`, `useCurrentFrame`) is MOTION — a still is one frame, so preview it before trusting it.
|
|
82
|
-
Seeded graphics you author into the brief are carried VERBATIM as locked clips — the Director never
|
|
83
|
-
re-authors them; `exclusions` bans graphic kinds you never want it to author.
|
|
84
|
-
|
|
85
|
-
Then load **composing-video** and apply its craft to make each beat good.
|
|
86
|
-
|
|
87
|
-
## Related skills & positioning
|
|
88
|
-
|
|
89
|
-
This skill owns **structure/intake**; its siblings own execution and craft — defer to them:
|
|
90
|
-
|
|
91
|
-
- **composing-video** — the craft/quality layer (grounded specificity vs. slop, the vision → rubric →
|
|
92
|
-
verify loop). Load it *after* you have a flow; it makes each beat good.
|
|
93
|
-
- **cueframe-compose-loop** — the author → render → verify → fix convergence loop + the ship bar.
|
|
94
|
-
- **cueframe-product-video** — click-points → auto-zoom tiling + PiP for screen demos.
|
|
95
|
-
- **cueframe-brand-demo** — brand-token vocabulary + auto intro/outro/logo for branded launches.
|
|
96
|
-
- **cueframe-component-authoring** — fork → preview → push for a custom graphic a beat needs.
|
|
97
|
-
- **cueframe-cli** — the `cueframe` binary + wire mechanics.
|
|
98
|
-
|
|
99
|
-
## The boundary
|
|
100
|
-
|
|
101
|
-
You own the **vision** (the one idea and the flow for *this* video) and **data correctness** (a wrong
|
|
102
|
-
number you supply is rendered faithfully — the mistake is yours). CueFrame owns being faithful, legible,
|
|
103
|
-
and giving you real footage + real components to plan against. Reason from this; skip the whole flow only
|
|
104
|
-
for a re-render of an approved composition or a single trivial one-off.
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: video-craft-standards
|
|
3
|
-
description: 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.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Video-Craft Standards — what "finished" means
|
|
7
|
-
|
|
8
|
-
This is the single source of truth for output quality. A video that misses a
|
|
9
|
-
MUST for its artifact class is **not done** — fix it or explicitly record why
|
|
10
|
-
the rule doesn't apply. Kill criteria (**K**) mean: do not render; fix first.
|
|
11
|
-
|
|
12
|
-
## Why this exists
|
|
13
|
-
|
|
14
|
-
Every quality dimension nobody measures decays to the laziest default:
|
|
15
|
-
template titles, silent reels, centered white text on footage. Each class
|
|
16
|
-
below is the checklist a good human editor carries implicitly. Score against
|
|
17
|
-
it with stills (`preview_frame`) and the judge (`score_composition`) before
|
|
18
|
-
your one final render.
|
|
19
|
-
|
|
20
|
-
## The controlling idea — the rule above every rule
|
|
21
|
-
|
|
22
|
-
- **MUST (K)** Before composing, write the video's CLAIM in one sentence —
|
|
23
|
-
the thing a viewer should be able to repeat afterward ("real bread takes
|
|
24
|
-
48 hours and you can taste every one of them"). Not a vibe, not a tagline:
|
|
25
|
-
a claim with tension (what does this brand/story believe that its category
|
|
26
|
-
doesn't?).
|
|
27
|
-
- **MUST (K)** Every channel is EVIDENCE for the claim, in harmony:
|
|
28
|
-
- **Footage** — each clip earns its place as proof of the claim, chosen
|
|
29
|
-
from the claim's shot list, not from search-term aesthetics.
|
|
30
|
-
- **Sound** — the bed's mood and TEMPO embody the claim (a "slow" claim
|
|
31
|
-
gets a patient, sparse bed and the nerve to hold shots; an "instant"
|
|
32
|
-
claim cuts hot). Silence and pauses are rhetoric, not absence.
|
|
33
|
-
- **Pacing** — the cut rhythm IS part of the argument; it may defy
|
|
34
|
-
platform convention when the claim demands it.
|
|
35
|
-
- **Type/cards** — copy advances the argument; the tagline lands as the
|
|
36
|
-
CONCLUSION the beats have earned, never as a caption.
|
|
37
|
-
- **Kill tests:** (1) beats reorderable without changing what the video
|
|
38
|
-
says; (2) any channel (bed, shot, card) that would fit a different claim
|
|
39
|
-
equally well; (3) a viewer who watched it cannot state the claim.
|
|
40
|
-
|
|
41
|
-
## Cross-cutting rules (every artifact)
|
|
42
|
-
|
|
43
|
-
These are final-artifact criteria, not a requirement to re-plan or export after every tweak.
|
|
44
|
-
For scoped corrections and preview selection, use `cueframe-compose-loop`'s
|
|
45
|
-
[preview workflow](../cueframe-compose-loop/references/preview-workflow.md). Inspect continuous
|
|
46
|
-
motion and listen to affected audio, not only stills or judge scores. Keep the user's explicit
|
|
47
|
-
scope and acceptance criteria; approved simulated UI is not evidence of a real product capture.
|
|
48
|
-
|
|
49
|
-
- **MUST** Brand/text graphics are AUTHORED — `kind:"card"` HTML (your
|
|
50
|
-
typography, layout, palette-as-fields) shelled with `applyMotionPreset`,
|
|
51
|
-
or a custom component. Catalog text primitives are for utility only.
|
|
52
|
-
**K:** a brand graphic rendered from a catalog text primitive.
|
|
53
|
-
- **MUST** Audio is decided, never defaulted: a music bed (curated packs via
|
|
54
|
-
`import_resource {kind:"music-pack"}`) or ambience/loops (Freesound via
|
|
55
|
-
`search_resources kind:"sfx"`), honoring the brand kit's `musicMood`;
|
|
56
|
-
cut to the beat via `materializeGrid` when the bed drives pacing — OR an
|
|
57
|
-
explicit intentional-silence decision recorded in your delivery note with
|
|
58
|
-
the reason. **K:** a render whose silence nobody chose.
|
|
59
|
-
- **MUST** Footage carries the video: real footage / real UI / real data
|
|
60
|
-
≥60% of runtime for footage-first classes. Text alone is not a video.
|
|
61
|
-
- **MUST** Every stock asset's provenance is recorded (provider, id, author).
|
|
62
|
-
- **MUST** Safe-area respected: no critical copy in the outer ~8% of frame.
|
|
63
|
-
- **MUST** One final render per approval; iterate with previews, not renders.
|
|
64
|
-
- **MUST** Delivery never ends with "done": the last message carries the
|
|
65
|
-
output link and where to find it, plus the intentional-silence note if any.
|
|
66
|
-
|
|
67
|
-
## 1. Social reel — 9:16 · 8–30s
|
|
68
|
-
|
|
69
|
-
- **MUST (K)** The hook lands inside 2 seconds: the strongest image, motion,
|
|
70
|
-
or claim opens the piece. No logo-first cold opens, no fade-in-from-black
|
|
71
|
-
preambles.
|
|
72
|
-
- **MUST** Typography is poster-grade: composed plates/fields in the brand
|
|
73
|
-
palette, considered alignment and scale. **K:** centered white text
|
|
74
|
-
floating on footage.
|
|
75
|
-
- **MUST** Pacing is cut-driven: a new visual beat at least every ~4s; static
|
|
76
|
-
holds >4s need motion inside the frame (reframe push, kenBurns, animated
|
|
77
|
-
card) or they die.
|
|
78
|
-
- **MUST** Ends on a deliberate beat: tagline, logo, or CTA lockup — not a
|
|
79
|
-
clip running out.
|
|
80
|
-
- **SHOULD** Cuts land on the music grid when a bed exists.
|
|
81
|
-
|
|
82
|
-
## 2. Launch film / feature announcement — 16:9 · 30–90s
|
|
83
|
-
|
|
84
|
-
- **MUST (K)** Payoff-first hook: the OUTCOME, not the feature name
|
|
85
|
-
("Close the books two days faster" beats "Introducing the reconciliation
|
|
86
|
-
module"). No throat-clearing ("in this video we're going to…").
|
|
87
|
-
- **MUST** Narration or a bed that builds toward the reveal; pacing tightens
|
|
88
|
-
as the payoff approaches.
|
|
89
|
-
- **MUST** Real product surface: actual UI/screens/output — never mocked.
|
|
90
|
-
- **MUST** End card with a single CTA.
|
|
91
|
-
- **MUST** Captions present when narrated.
|
|
92
|
-
|
|
93
|
-
## 3. Brand-identity reel — 9:16 · 12–20s (the showcase class)
|
|
94
|
-
|
|
95
|
-
Everything in §1, plus:
|
|
96
|
-
- **MUST** Three-beat arc: opening brand moment (wordmark treatment) →
|
|
97
|
-
middle craft/proof beat (the subject's world, with an editorial device —
|
|
98
|
-
numbered chapter, pull-quote, stat) → closing tagline lockup.
|
|
99
|
-
- **MUST** Every graphic is bespoke to the brand: its type, its palette as
|
|
100
|
-
fields, its layout system. **K:** any layout that would look correct with
|
|
101
|
-
another brand's hex swapped in.
|
|
102
|
-
- **MUST** Footage color and brand palette agree — grade toward the palette
|
|
103
|
-
or choose footage that lives in it.
|
|
104
|
-
|
|
105
|
-
## 4. Talking-head clip — any aspect · 15–60s
|
|
106
|
-
|
|
107
|
-
- **MUST (K)** Hook = the strongest sentence, first. Cut TO the moment;
|
|
108
|
-
never open on wind-up.
|
|
109
|
-
- **MUST** Active-speaker reframe (`focus: active-speaker` / `face`) — a
|
|
110
|
-
moving camera, not a static center crop.
|
|
111
|
-
- **MUST** Captions timed to the saved edited timeline (`captions.fromComposition`
|
|
112
|
-
after the clip edits; re-run after later edits). Speech clips must have saved duration matching playable source duration divided by
|
|
113
|
-
playbackRate.
|
|
114
|
-
The focused behind-the-speaker LOOK is an overlay text layer at
|
|
115
|
-
`zPlane:"behind-subject"` where the footage allows. Use caption-layer
|
|
116
|
-
`zPlane:"behind-subject"` only when the user explicitly wants every running
|
|
117
|
-
caption behind the speaker and the legibility gate accepts it.
|
|
118
|
-
- **MUST** Dead air and false starts cut (`addExcludedRange` /
|
|
119
|
-
`cutAndRipple`).
|
|
120
|
-
|
|
121
|
-
## Scoring discipline
|
|
122
|
-
|
|
123
|
-
Before the final render: (1) pull stills at each beat boundary and describe
|
|
124
|
-
each one to yourself BEFORE judging it; (2) walk the class checklist and list
|
|
125
|
-
every MUST as pass/fail; (3) any K fails → fix, re-preview; (4) run
|
|
126
|
-
`score_composition` when the budget allows and fix the worst criterion first.
|
|
127
|
-
The checklist is the floor; the judge is the critic; neither substitutes for
|
|
128
|
-
looking at the frames.
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
interface:
|
|
2
|
-
display_name: "Video-Craft Standards — what \"finished\" means"
|
|
3
|
-
short_description: "The definition of DONE for every video made with CueFrame — per-artifact…"
|
|
4
|
-
icon_small: "./assets/icon.svg"
|
|
5
|
-
icon_large: "./assets/icon.svg"
|
|
6
|
-
default_prompt: "Use $video-craft-standards for 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."
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
<svg viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<clipPath id="cf-favicon-clip"><circle cx="128" cy="128" r="118"/></clipPath>
|
|
3
|
-
<circle cx="128" cy="128" r="118" fill="#f7c948"/>
|
|
4
|
-
<g clip-path="url(#cf-favicon-clip)">
|
|
5
|
-
<path d="M88 128Q160 40 300-40" fill="none" stroke="#160f08" stroke-width="5"/>
|
|
6
|
-
<path d="M88 128Q170 60 310 20" fill="none" stroke="#160f08" stroke-width="4.5"/>
|
|
7
|
-
<path d="M88 128Q180 80 316 70" fill="none" stroke="#160f08" stroke-width="4.5"/>
|
|
8
|
-
<path d="M88 128Q186 110 320 110" fill="none" stroke="#160f08" stroke-width="4.5"/>
|
|
9
|
-
<path d="M88 128Q186 146 320 146" fill="none" stroke="#160f08" stroke-width="4.5"/>
|
|
10
|
-
<path d="M88 128Q180 176 316 186" fill="none" stroke="#160f08" stroke-width="4.5"/>
|
|
11
|
-
<path d="M88 128Q170 196 310 236" fill="none" stroke="#160f08" stroke-width="4.5"/>
|
|
12
|
-
<path d="M88 128Q160 216 300 296" fill="none" stroke="#160f08" stroke-width="5"/>
|
|
13
|
-
</g>
|
|
14
|
-
<circle cx="88" cy="128" r="20" fill="#160f08"/>
|
|
15
|
-
<circle cx="88" cy="128" r="8" fill="#f7c948"/>
|
|
16
|
-
</svg>
|
package/skills.sh.json
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{ "$schema": "https://skills.sh/schemas/skills.sh.schema.json", "groupings": [ { "title": "CueFrame", "description": "Compose, edit and render video from an agent.", "skills": [ "add-music-bed", "brand-reel", "clip-a-talking-head", "composing-video", "cueframe-brand-demo", "cueframe-cli", "cueframe-component-authoring", "cueframe-compose-loop", "cueframe-connect", "cueframe-product-video", "cueframe-scene-shot", "cueframe-storyboard", "every-format-from-one-edit", "extracting-brand-kits", "launch-video", "make-a-social-reel", "rebrand-a-video", "video-craft-standards" ] } ] }
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/{skills/cueframe-component-authoring → dist/skills/cueframe-compose-loop}/assets/icon.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/{skills/cueframe-storyboard → dist/skills/every-format-from-one-edit}/assets/icon.svg
RENAMED
|
File without changes
|
|
File without changes
|
/package/{skills/every-format-from-one-edit → dist/skills/extracting-brand-kits}/assets/icon.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|