@cueframe/skills 0.1.0

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.
Files changed (80) hide show
  1. package/.agents/plugins/marketplace.json +12 -0
  2. package/.claude-plugin/marketplace.json +6 -0
  3. package/.claude-plugin/plugin.json +15 -0
  4. package/.codex-plugin/plugin.json +30 -0
  5. package/.cursor-plugin/plugin.json +1 -0
  6. package/.mcp.json +1 -0
  7. package/AGENTS.md +20 -0
  8. package/LICENSE +202 -0
  9. package/NOTICE +4 -0
  10. package/README.md +111 -0
  11. package/assets/icon.svg +16 -0
  12. package/assets/logo-400.png +0 -0
  13. package/gemini-extension.json +1 -0
  14. package/glama.json +1 -0
  15. package/hooks/hooks.json +7 -0
  16. package/hooks/session-inject.md +15 -0
  17. package/hooks/session-start.sh +6 -0
  18. package/llms-install.md +47 -0
  19. package/mcp.json +1 -0
  20. package/package.json +57 -0
  21. package/plugin.json +46 -0
  22. package/rules/cueframe.mdc +19 -0
  23. package/skills/add-music-bed/SKILL.md +100 -0
  24. package/skills/add-music-bed/agents/openai.yaml +6 -0
  25. package/skills/add-music-bed/assets/icon.svg +16 -0
  26. package/skills/brand-reel/SKILL.md +100 -0
  27. package/skills/brand-reel/agents/openai.yaml +6 -0
  28. package/skills/brand-reel/assets/icon.svg +16 -0
  29. package/skills/clip-a-talking-head/SKILL.md +101 -0
  30. package/skills/clip-a-talking-head/agents/openai.yaml +6 -0
  31. package/skills/clip-a-talking-head/assets/icon.svg +16 -0
  32. package/skills/composing-video/SKILL.md +702 -0
  33. package/skills/composing-video/agents/openai.yaml +6 -0
  34. package/skills/composing-video/assets/icon.svg +16 -0
  35. package/skills/cueframe-brand-demo/SKILL.md +257 -0
  36. package/skills/cueframe-brand-demo/agents/openai.yaml +6 -0
  37. package/skills/cueframe-brand-demo/assets/icon.svg +16 -0
  38. package/skills/cueframe-cli/SKILL.md +265 -0
  39. package/skills/cueframe-cli/agents/openai.yaml +6 -0
  40. package/skills/cueframe-cli/assets/icon.svg +16 -0
  41. package/skills/cueframe-component-authoring/SKILL.md +179 -0
  42. package/skills/cueframe-component-authoring/agents/openai.yaml +6 -0
  43. package/skills/cueframe-component-authoring/assets/icon.svg +16 -0
  44. package/skills/cueframe-compose-loop/SKILL.md +114 -0
  45. package/skills/cueframe-compose-loop/agents/openai.yaml +6 -0
  46. package/skills/cueframe-compose-loop/assets/icon.svg +16 -0
  47. package/skills/cueframe-compose-loop/references/preview-workflow.md +37 -0
  48. package/skills/cueframe-connect/SKILL.md +45 -0
  49. package/skills/cueframe-connect/agents/openai.yaml +6 -0
  50. package/skills/cueframe-connect/assets/icon.svg +16 -0
  51. package/skills/cueframe-product-video/SKILL.md +293 -0
  52. package/skills/cueframe-product-video/agents/openai.yaml +6 -0
  53. package/skills/cueframe-product-video/assets/icon.svg +16 -0
  54. package/skills/cueframe-scene-shot/SKILL.md +68 -0
  55. package/skills/cueframe-scene-shot/agents/openai.yaml +6 -0
  56. package/skills/cueframe-scene-shot/assets/icon.svg +16 -0
  57. package/skills/cueframe-storyboard/SKILL.md +104 -0
  58. package/skills/cueframe-storyboard/agents/openai.yaml +6 -0
  59. package/skills/cueframe-storyboard/assets/icon.svg +16 -0
  60. package/skills/every-format-from-one-edit/SKILL.md +87 -0
  61. package/skills/every-format-from-one-edit/agents/openai.yaml +6 -0
  62. package/skills/every-format-from-one-edit/assets/icon.svg +16 -0
  63. package/skills/extracting-brand-kits/SKILL.md +159 -0
  64. package/skills/extracting-brand-kits/agents/openai.yaml +6 -0
  65. package/skills/extracting-brand-kits/assets/icon.svg +16 -0
  66. package/skills/launch-video/SKILL.md +93 -0
  67. package/skills/launch-video/agents/openai.yaml +6 -0
  68. package/skills/launch-video/assets/icon.svg +16 -0
  69. package/skills/make-a-social-reel/SKILL.md +105 -0
  70. package/skills/make-a-social-reel/agents/openai.yaml +6 -0
  71. package/skills/make-a-social-reel/assets/icon.svg +16 -0
  72. package/skills/rebrand-a-video/SKILL.md +95 -0
  73. package/skills/rebrand-a-video/agents/openai.yaml +6 -0
  74. package/skills/rebrand-a-video/assets/icon.svg +16 -0
  75. package/skills/video-craft-standards/SKILL.md +128 -0
  76. package/skills/video-craft-standards/agents/openai.yaml +6 -0
  77. package/skills/video-craft-standards/assets/icon.svg +16 -0
  78. package/skills-dir.d.ts +1 -0
  79. package/skills-dir.js +2 -0
  80. package/skills.sh.json +1 -0
@@ -0,0 +1,128 @@
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.
@@ -0,0 +1,6 @@
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."
@@ -0,0 +1,16 @@
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>
@@ -0,0 +1 @@
1
+ export declare const SKILLS_DIR: string;
package/skills-dir.js ADDED
@@ -0,0 +1,2 @@
1
+ import { fileURLToPath } from 'node:url';
2
+ export const SKILLS_DIR = fileURLToPath(new URL('./skills/', import.meta.url));
package/skills.sh.json ADDED
@@ -0,0 +1 @@
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" ] } ] }