reelkit-cli 0.8.0 → 0.10.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 +13 -1
- package/package.json +49 -10
- package/skill/.claude-plugin/plugin.json +7 -0
- package/skill/SKILL.md +44 -19
- package/skill/THIRD_PARTY.md +37 -5
- package/skill/commands/launch-film.md +1 -1
- package/skill/hooks/hooks.json +1 -0
- package/skill/hooks/player.ts +278 -0
- package/skill/hooks/project.ts +227 -0
- package/skill/hooks/register.tsx +533 -0
- package/skill/hooks/timeline.ts +218 -0
- package/skill/reference/art-styles.md +70 -0
- package/skill/reference/backgrounds.md +1 -1
- package/skill/reference/brand-motion.md +62 -0
- package/skill/reference/clips.md +3 -3
- package/skill/reference/component-authoring.md +3 -1
- package/skill/reference/continuity.md +5 -5
- package/skill/reference/delivery-review.md +40 -0
- package/skill/reference/hebrew-rtl.md +3 -4
- package/skill/reference/higgsfield-production.md +70 -0
- package/skill/reference/{remotion-composition.md → hyperframes-composition.md} +14 -8
- package/skill/reference/kit.md +7 -3
- package/skill/reference/launch-film.md +13 -9
- package/skill/reference/motion-design.md +26 -22
- package/skill/reference/sound-design.md +34 -12
- package/skill/reference/studio-editing.md +55 -0
- package/skill/reference/studio-pane.md +31 -0
- package/skill/reference/style-components.md +40 -0
- package/skill/reference/style-recipes.md +86 -0
- package/skill/reference/styles.md +17 -10
- package/skill/reference/three-d.md +8 -7
- package/skill/reference/voice-sync.md +1 -1
- package/skill/tests/studio.test.ts +111 -0
- package/skill/types/index.d.ts +65 -0
- package/src/commands/assets.ts +5 -1
- package/src/contract/index.ts +1 -1
- package/src/hyperframes/Root.tsx +1 -0
- package/src/hyperframes/fonts.ts +54 -0
- package/src/hyperframes/frame.tsx +46 -0
- package/src/hyperframes/host.tsx +38 -0
- package/src/{remotion → hyperframes}/kit/Assemble3D.tsx +1 -1
- package/src/hyperframes/kit/BrandTransform3D.tsx +12 -0
- package/src/{remotion → hyperframes}/kit/BrowserFrame.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/Camera.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/Captions.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/Card3D.tsx +2 -2
- package/src/{remotion → hyperframes}/kit/Carry.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/ChapterFrame.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/ClipLayer.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/Counter.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/CounterRoll.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/Entrance.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/FootageLayer.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/GlassPanel.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/Grounds.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/Headline.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/Hero3D.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/HudOverlay.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/ImageLayers.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/KenBurnsImage.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/KeyedClip.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/Layers.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/LowerThird.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/Music.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/NamedCursor.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/Orbit3D.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/Particles3D.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/Place.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/PromptBox.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/Scene3D.tsx +2 -2
- package/src/{remotion → hyperframes}/kit/SceneFrame.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/ScreenOverlay.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/Sfx.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/SoundCues.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/TerminalLog.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/Text3D.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/TextOnImage.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/TitleCard.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/Voiceover.tsx +1 -1
- package/src/{remotion → hyperframes}/kit/Warp3D.tsx +1 -1
- package/src/hyperframes/kit/brand-transform.ts +25 -0
- package/src/{remotion → hyperframes}/kit/docs.ts +6 -2
- package/src/{remotion → hyperframes}/kit/index.ts +3 -0
- package/src/{remotion → hyperframes}/kit/sound-cues.ts +1 -1
- package/src/{remotion → hyperframes}/kit/sound-kinds.ts +14 -1
- package/src/{remotion → hyperframes}/kit/theme.ts +42 -40
- package/src/{remotion → hyperframes}/kit/ui-math.ts +1 -1
- package/src/hyperframes/math.ts +62 -0
- package/src/hyperframes/three.tsx +10 -0
- package/src/project/chromakey.ts +1 -1
- package/src/project/layers.ts +1 -1
- package/src/project/serve.ts +2 -2
- package/src/render/component-preview.ts +11 -55
- package/src/render/render.ts +62 -64
- package/src/render/serve.ts +31 -0
- package/src/render/static-check.ts +15 -4
- package/src/render/validate.ts +4 -4
- package/src/render/word-check.ts +1 -1
- package/src/render/worker.ts +71 -0
- package/src/testing/fixtures.ts +1 -1
- package/src/remotion/Root.tsx +0 -31
- /package/src/{remotion → hyperframes}/kit/Icon.tsx +0 -0
- /package/src/{remotion → hyperframes}/kit/beat.ts +0 -0
- /package/src/{remotion → hyperframes}/kit/bg-math.ts +0 -0
- /package/src/{remotion → hyperframes}/kit/brand-icons.ts +0 -0
- /package/src/{remotion → hyperframes}/kit/caption-groups.ts +0 -0
- /package/src/{remotion → hyperframes}/kit/caption-style.ts +0 -0
- /package/src/{remotion → hyperframes}/kit/image-layers-math.ts +0 -0
- /package/src/{remotion → hyperframes}/kit/inter-bold-typeface.ts +0 -0
- /package/src/{remotion → hyperframes}/kit/media.ts +0 -0
- /package/src/{remotion → hyperframes}/kit/motion-math.ts +0 -0
- /package/src/{remotion → hyperframes}/kit/music-math.ts +0 -0
- /package/src/{remotion → hyperframes}/kit/quiet-three.ts +0 -0
- /package/src/{remotion → hyperframes}/kit/sample-text.ts +0 -0
- /package/src/{remotion → hyperframes}/kit/scene3d-context.ts +0 -0
- /package/src/{remotion → hyperframes}/kit/seeded.ts +0 -0
- /package/src/{remotion → hyperframes}/kit/three-fx-math.ts +0 -0
- /package/src/{remotion → hyperframes}/kit/three-math.ts +0 -0
- /package/src/{remotion → hyperframes}/kit/transition-math.ts +0 -0
- /package/src/{remotion → hyperframes}/kit/ui-theme.ts +0 -0
- /package/src/{remotion → hyperframes}/kit/word-anchor.ts +0 -0
- /package/src/{remotion → hyperframes}/types.ts +0 -0
package/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Reelkit
|
|
2
2
|
|
|
3
|
-
A CLI and a Claude skill for making short-form video. Claude plans the video and writes the motion design; `reelkit` searches a shared asset library, records voiceover, generates what is missing, checks the composition and renders it on your machine with
|
|
3
|
+
A CLI and a Claude skill for making short-form video. Claude plans the video and writes the motion design; `reelkit` searches a shared asset library, records voiceover, generates what is missing, checks the composition and renders it on your machine with HyperFrames.
|
|
4
|
+
|
|
5
|
+
Rendering uses `@hyperframes/engine` with Reelkit's seekable React adapter. Author compositions and library components in TSX, importing animation primitives from `reelkit/frame` and the kit from `reelkit/kit`. The build produces an HTML page; HyperFrames captures its frames and encodes video with FFmpeg. Fonts are bundled locally, including Hebrew. Use `REELKIT_CHROME_PATH` to select a browser; an installed Chrome is detected automatically, with a downloaded headless browser as the fallback. Previously published components have their legacy imports upgraded when pulled.
|
|
4
6
|
|
|
5
7
|
## Requirements
|
|
6
8
|
|
|
@@ -23,6 +25,16 @@ reelkit auth login
|
|
|
23
25
|
|
|
24
26
|
It installs for every agent it finds on your machine. Name one with `--agent claude`, or use `--agent all`. `reelkit init` and `reelkit auth login` keep the installed skill up to date on their own; set `REELKIT_NO_AUTO_INSTALL=1` to turn that off.
|
|
25
27
|
|
|
28
|
+
## Studio pane in Claude Code
|
|
29
|
+
|
|
30
|
+
In Claude Code 2.1.287 or newer the installed skill is also a mod: a Reelkit pane opens beside the conversation when a project is in reach (`/reelkit-studio` opens it by hand, `/reelkit-studio my-video` on a named project). It has five tabs:
|
|
31
|
+
|
|
32
|
+
- **Timeline**: scene clips with a filmstrip, on-screen text, the voice with a mark per word and the music with its beats. **Play with timeline** opens `out/studio.html` in your browser, the render playing over that timeline with a draggable playhead, zoom and frame-by-frame keys.
|
|
33
|
+
- **Plan**, **Music**, **Components**: what the project holds, read from its files.
|
|
34
|
+
- **Browser**: search the shared library; **Use** hands the pick to Claude.
|
|
35
|
+
|
|
36
|
+
The pane only reads the project. Its buttons write a request into the prompt for you to send. The mod lives in `skill/hooks`; check it with `claude plugin validate skill` and `claude plugin test skill`.
|
|
37
|
+
|
|
26
38
|
## Use
|
|
27
39
|
|
|
28
40
|
Ask Claude to make a video. The skill takes it from there. To drive it by hand:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "reelkit-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.2",
|
|
4
4
|
"description": "CLI and Claude skill for making short-form video with a shared asset library.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Daniel Livshin",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"short-form",
|
|
10
10
|
"reels",
|
|
11
11
|
"tiktok",
|
|
12
|
-
"
|
|
12
|
+
"hyperframes",
|
|
13
13
|
"cli",
|
|
14
14
|
"ai-agents",
|
|
15
15
|
"claude-code",
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
},
|
|
23
23
|
"exports": {
|
|
24
24
|
".": "./src/contract/index.ts",
|
|
25
|
-
"./kit": "./src/
|
|
26
|
-
"./root": "./src/
|
|
25
|
+
"./kit": "./src/hyperframes/kit/index.ts",
|
|
26
|
+
"./root": "./src/hyperframes/Root.tsx",
|
|
27
27
|
"./validate": "./src/render/validate.ts",
|
|
28
28
|
"./component-preview": "./src/render/component-preview.ts",
|
|
29
29
|
"./testing": "./src/testing/fake-api.ts",
|
|
@@ -32,7 +32,9 @@
|
|
|
32
32
|
"./context": "./src/context.ts",
|
|
33
33
|
"./commands/*": "./src/commands/*.ts",
|
|
34
34
|
"./testing/conformance": "./src/testing/conformance.ts",
|
|
35
|
-
"./static-check": "./src/render/static-check.ts"
|
|
35
|
+
"./static-check": "./src/render/static-check.ts",
|
|
36
|
+
"./frame": "./src/hyperframes/frame.tsx",
|
|
37
|
+
"./host": "./src/hyperframes/host.tsx"
|
|
36
38
|
},
|
|
37
39
|
"files": [
|
|
38
40
|
"bin",
|
|
@@ -51,20 +53,57 @@
|
|
|
51
53
|
"typecheck": "tsc --noEmit"
|
|
52
54
|
},
|
|
53
55
|
"dependencies": {
|
|
56
|
+
"@fontsource/alef": "^5.2.0",
|
|
57
|
+
"@fontsource/amatic-sc": "^5.2.0",
|
|
58
|
+
"@fontsource/archivo-black": "^5.2.0",
|
|
59
|
+
"@fontsource/assistant": "^5.2.0",
|
|
60
|
+
"@fontsource/bebas-neue": "^5.2.0",
|
|
61
|
+
"@fontsource/bungee-shade": "^5.2.0",
|
|
62
|
+
"@fontsource/cinzel": "^5.2.0",
|
|
63
|
+
"@fontsource/creepster": "^5.2.0",
|
|
64
|
+
"@fontsource/david-libre": "^5.2.0",
|
|
65
|
+
"@fontsource/frank-ruhl-libre": "^5.2.0",
|
|
66
|
+
"@fontsource/fredoka": "^5.2.0",
|
|
67
|
+
"@fontsource/great-vibes": "^5.2.0",
|
|
68
|
+
"@fontsource/heebo": "^5.2.0",
|
|
69
|
+
"@fontsource/inter": "^5.2.0",
|
|
70
|
+
"@fontsource/jetbrains-mono": "^5.2.0",
|
|
71
|
+
"@fontsource/kanit": "^5.2.0",
|
|
72
|
+
"@fontsource/karantina": "^5.2.0",
|
|
73
|
+
"@fontsource/kaushan-script": "^5.2.0",
|
|
74
|
+
"@fontsource/lilita-one": "^5.2.0",
|
|
75
|
+
"@fontsource/modak": "^5.2.0",
|
|
76
|
+
"@fontsource/montserrat": "^5.2.0",
|
|
77
|
+
"@fontsource/mrs-saint-delafield": "^5.2.0",
|
|
78
|
+
"@fontsource/noto-sans-hebrew": "^5.2.0",
|
|
79
|
+
"@fontsource/orbitron": "^5.2.0",
|
|
80
|
+
"@fontsource/outfit": "^5.2.0",
|
|
81
|
+
"@fontsource/permanent-marker": "^5.2.0",
|
|
82
|
+
"@fontsource/playfair-display": "^5.2.0",
|
|
83
|
+
"@fontsource/roboto": "^5.2.0",
|
|
84
|
+
"@fontsource/roboto-slab": "^5.2.0",
|
|
85
|
+
"@fontsource/rubik": "^5.2.0",
|
|
86
|
+
"@fontsource/rye": "^5.2.0",
|
|
87
|
+
"@fontsource/sacramento": "^5.2.0",
|
|
88
|
+
"@fontsource/secular-one": "^5.2.0",
|
|
89
|
+
"@fontsource/sora": "^5.2.0",
|
|
90
|
+
"@fontsource/suez-one": "^5.2.0",
|
|
91
|
+
"@fontsource/syne": "^5.2.0",
|
|
92
|
+
"@fontsource/unbounded": "^5.2.0",
|
|
93
|
+
"@fontsource/varela-round": "^5.2.0",
|
|
94
|
+
"@fontsource/yellowtail": "^5.2.0",
|
|
95
|
+
"@hyperframes/engine": "0.8.137",
|
|
96
|
+
"@puppeteer/browsers": "^3.2.3",
|
|
54
97
|
"@react-three/fiber": "^9.8.1",
|
|
55
|
-
"@remotion/bundler": "^4.0.532",
|
|
56
|
-
"@remotion/google-fonts": "4.0.532",
|
|
57
|
-
"@remotion/renderer": "^4.0.532",
|
|
58
|
-
"@remotion/three": "4.0.532",
|
|
59
98
|
"@types/react": "^19.3.0",
|
|
60
99
|
"@types/react-dom": "^19.3.0",
|
|
61
100
|
"@types/three": "^0.186.0",
|
|
62
101
|
"commander": "^15.0.0",
|
|
102
|
+
"esbuild": "^0.28.2",
|
|
63
103
|
"ink": "^8.0.0",
|
|
64
104
|
"ink-spinner": "^5.0.0",
|
|
65
105
|
"react": "^19.3.0",
|
|
66
106
|
"react-dom": "^19.3.0",
|
|
67
|
-
"remotion": "^4.0.532",
|
|
68
107
|
"three": "^0.186.1",
|
|
69
108
|
"tsx": "^4.23.15",
|
|
70
109
|
"typescript": "^5.9.3",
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "reelkit",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Reelkit studio: a pane with the film's timeline, plan, music, components and the library, and a browser player for the render.",
|
|
5
|
+
"author": { "name": "Daniel Livshin" },
|
|
6
|
+
"types": "./types/index.d.ts"
|
|
7
|
+
}
|
package/skill/SKILL.md
CHANGED
|
@@ -1,17 +1,29 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: reelkit
|
|
3
|
-
description: Produce short-form and explainer videos from an idea plus the user's own screenshots, logo, clips or footage. Searches a shared asset library first, generates only what is missing, and renders locally with
|
|
3
|
+
description: Produce short-form and explainer videos from an idea plus the user's own screenshots, logo, clips or footage. Searches a shared asset library first, generates only what is missing, and renders locally with HyperFrames. Use when the user wants to create, edit or assemble a video, turn an app or idea into a demo, or make a promo.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Reelkit
|
|
7
7
|
|
|
8
|
-
You make the video. The `reelkit` CLI gives you the tools: it holds no model and makes no creative decisions. You write the plan and the motion code yourself
|
|
8
|
+
You make the video. The `reelkit` CLI gives you the tools: it holds no model and makes no creative decisions. You write the plan and the motion code yourself and check them with the CLI. Show the plan and preview for approval when those decisions are still open; an explicit request to render, or approval already given in the conversation, authorizes that work. For a scoped edit or integration test, continue from the existing project instead of restarting the creative briefing.
|
|
9
|
+
|
|
10
|
+
Read the material before choosing a treatment. Own routine editing decisions and explain the few that matter: the hook, visual thread, pacing and music direction. Ask only when missing information would materially change the result. Respect the user's chosen style and message; quality comes from a purposeful edit, not a quota of cuts, animations or effects.
|
|
11
|
+
|
|
12
|
+
For footage, talking heads, screen recordings, mixed media, or an open creative brief, read `reference/studio-editing.md`. It explains how to choose the approach and what this CLI can actually edit. For final verification and platform variants, read `reference/delivery-review.md`.
|
|
13
|
+
|
|
14
|
+
For image or video cutouts, editable Blender product shots, custom 3D materials, or native Higgsfield motion workflows beyond the kit, read `reference/higgsfield-production.md`. It maps the external tools, their connection requirements and the inspected media handoff back to Reelkit.
|
|
15
|
+
|
|
16
|
+
To implement a chosen style, read its row in `reference/style-recipes.md` for action, timing, sound and proof. `reference/style-components.md` maps the shared components and built-in kit to shot roles; inspect the selected source before using its props.
|
|
17
|
+
|
|
18
|
+
This skill targets `reelkit-cli` 0.10.2 and its HyperFrames kit. Check the installed version with `reelkit --version`; in a source checkout, invoke its `bin/reelkit.mjs` with Node. Use the matching CLI before authoring with `reelkit/frame`.
|
|
9
19
|
|
|
10
20
|
Every command takes `--json` for machine-readable output and exits non-zero with a one-line reason when something is wrong. Read the reason and act on it.
|
|
11
21
|
|
|
12
22
|
## Setup (once per machine, then once per video)
|
|
13
23
|
|
|
14
|
-
|
|
24
|
+
Local checks, previews and renders need no account.
|
|
25
|
+
|
|
26
|
+
1. For work that searches or pulls the shared library, generates media, or records voiceover, run `reelkit whoami`. If it says you are not logged in, run `reelkit auth login --start` (it returns at once and never opens a browser; plain `reelkit auth login` would wait for a person and block you). Show the user the link it prints (the code is already in it) and wait for them to say they have approved it, then run `reelkit auth login --finish`. If that says it is not approved yet, ask the user again and re-run it. (Plain `reelkit auth login` opens a browser on the user's machine when run in a terminal; `--no-browser` stops that. Still prefer `--start`.)
|
|
15
27
|
2. Run `reelkit init <project-name> --aspect 9:16` (`16:9` or `1:1` for other shapes), then work in the folder it prints.
|
|
16
28
|
|
|
17
29
|
The folder holds everything: `plan.json`, `assets/`, `src/` (your composition and any components you pull), `out/`.
|
|
@@ -28,20 +40,20 @@ Add `--footage` for a video the motion design should be laid over. User files st
|
|
|
28
40
|
If the user points at an existing video ("make one like this", a link or a file), it is a reference: you learn how it is built and make something new in that spirit. Read `reference/references.md`, then `reelkit ref download <url-or-file>` and `reelkit ref analyze <id>`, and look at the frames it saves. Take its structure, pace and motion; never its footage, music or words. A link is fetched on the user's machine and they are responsible for the right to download it; ask before running `reelkit ref analyze` without `--no-transcript`, because the audio (never the video) is sent to Reelkit to be transcribed.
|
|
29
41
|
|
|
30
42
|
### 2. Look
|
|
31
|
-
Read `reference/styles.md`
|
|
43
|
+
Read `reference/styles.md` for techniques that fit the material, and `reference/art-styles.md` when the picture should be drawn. Recommend a direction with a short reason; present a catalogue only if the user asks to compare looks. If they already described what they want, use it. Bundle only consequential open questions. If any on-screen text will be Hebrew, read `reference/hebrew-rtl.md` now: it changes how words may enter and how lines are written.
|
|
32
44
|
|
|
33
|
-
|
|
45
|
+
Infer whether the video needs a narrator from the request and source. Ask only if that choice is consequential and still unclear. For a product, feature or brand launch carried by music and sound effects, follow `reference/launch-film.md` and write `"voice": "none"` in the plan; skip voice generation. Existing recorded speech needs the footage workflow in `reference/studio-editing.md`, not a replacement narrator.
|
|
34
46
|
|
|
35
|
-
|
|
47
|
+
Honor the requested captions: none, one word at a time (`word`), or a few words at a time (`phrase`, the default for generated narration). "A few words at a time" is `phrase`, never `word`; see `reference/captions.md`. Use no speech captions in a silent film. Write the choice into the plan as `captions`.
|
|
36
48
|
|
|
37
|
-
|
|
49
|
+
When the central visual idea is still open, read `reference/continuity.md` and propose the strongest fitting concept. If the user wants alternatives, offer up to three concepts, each one sentence about the picture and what carries the changes. If they already chose a concept or asked for a scoped revision, use that direction. Write the chosen idea into the first scene's `notes` beside the look.
|
|
38
50
|
|
|
39
51
|
### 3. Plan
|
|
40
52
|
For a film with no narrator, write the plan in the launch-film shape (`"voice": "none"` and a `seconds` for every scene, see `reference/launch-film.md`) and skip the voice choice below.
|
|
41
53
|
|
|
42
|
-
Read `reference/scriptwriting.md` and `reference/scene-treatments.md` (and `reference/clips.md` if
|
|
54
|
+
Read `reference/scriptwriting.md` and `reference/scene-treatments.md` (and `reference/clips.md` if a scene needs a video clip). Write the chosen look into the first scene's `notes`. For generated narration, run `reelkit assets voices` and choose a voice that fits the language, tone and user's preference. Reuse an already chosen voice. Offer a short comparison only when the user asks or the voice is a consequential open decision; do not require a gender mix. For Hebrew, consider voices marked `he` first.
|
|
43
55
|
|
|
44
|
-
|
|
56
|
+
Use the real material already supplied: screenshots, footage, numbers, logo and exact names. Ask for a missing item only when the shot depends on it. Demonstrate product claims with real screens and interactions (`reference/kit.md`, "Act the product out"); a personal story or documentary does not need an invented product surface. Keep a small number of main ideas, state the intended duration and visual thread in the first scene's `notes`, and choose grounds by meaning and contrast. A short promo often fits 15 to 40 seconds; honor a different requested length. A film with a narrator-less launch shape also follows `reference/launch-film.md`.
|
|
45
57
|
|
|
46
58
|
Write `plan.json`:
|
|
47
59
|
|
|
@@ -70,7 +82,7 @@ Write `plan.json`:
|
|
|
70
82
|
}
|
|
71
83
|
```
|
|
72
84
|
|
|
73
|
-
- 3 to 8 scenes. Scene ids are short, unique, lowercase with dashes.
|
|
85
|
+
- 3 to 8 scenes with generated narration; 3 to 16 with `voice: "none"`. These are current plan-schema limits, not an ideal number of edits. Scene ids are short, unique, lowercase with dashes.
|
|
74
86
|
- `treatment` is `motion-graphic`, `illustration`, `clip` or `footage-overlay`. With footage, `mode` is `"footage"` and every scene is `footage-overlay`; otherwise `mode` is `"motion"` and no scene is.
|
|
75
87
|
- `imagePrompt` is set only for `illustration` scenes, with 3 to 6 `imageTags`. Set `shareable` to true only when the prompt is fully generic: no brand, product, person or detail specific to this user.
|
|
76
88
|
- `clipPrompt` is set only for `clip` scenes (a generated or reused video clip is the scene's picture; the rest of the scene uses `imageTags` and `shareable` as an illustration does). Clips are scarce: most videos have none or one or two.
|
|
@@ -82,10 +94,10 @@ Write `plan.json`:
|
|
|
82
94
|
|
|
83
95
|
Run `reelkit plan check`; it prints the estimated length to tell the user. Fix everything under "Fix these". Act on "Worth improving" unless you have a good reason not to.
|
|
84
96
|
|
|
85
|
-
**Checkpoint.** Tell the user, in one sentence, that new components you write are shared with the Reelkit library for review after the render (their code, a description and an example, nothing else), and that they can say no: then use `reelkit init <name> --private` (it also keeps the images, clips and graphics generated for the video out of the library, whatever `shareable` says) or `reelkit render --no-share`, or set REELKIT_NO_SHARE=1. Show the user the look, the title, the estimated length, and each scene's narration, the exact on-screen text and one line on the visual, in plain words about what they will see.
|
|
97
|
+
**Checkpoint.** Tell the user, in one sentence, that new components you write are shared with the Reelkit library for review after the render (their code, a description and an example, nothing else), and that they can say no: then use `reelkit init <name> --private` (it also keeps the images, clips and graphics generated for the video out of the library, whatever `shareable` says) or `reelkit render --no-share`, or set REELKIT_NO_SHARE=1. Show the user the look, the title, the estimated length, and each scene's narration, the exact on-screen text and one line on the visual, in plain words about what they will see. If the plan is not already approved, wait for a clear yes. A question or a comment is not approval; answer it without treating it as permission to render.
|
|
86
98
|
|
|
87
99
|
### 4. Voice
|
|
88
|
-
`reelkit assets voiceover --all`. It records each scene and prints the real length of the video. If the user wants a different voice, change `voiceId` in `plan.json` and run it again with `--redo`.
|
|
100
|
+
For generated narration only, run `reelkit assets voiceover --all`. It records each scene and prints the real length of the video. If the user wants a different voice, change `voiceId` in `plan.json` and run it again with `--redo`.
|
|
89
101
|
|
|
90
102
|
### 5. Images and clips
|
|
91
103
|
Read `reference/asset-reuse.md`. For each illustration scene, search first:
|
|
@@ -95,29 +107,42 @@ Each result starts with a match percentage: how likely it is good enough to reus
|
|
|
95
107
|
For each clip scene, read `reference/clips.md`, then search `reelkit assets search "<what the clip shows>" --kind clip` and pull a 60% match (`reelkit assets pull <id> --scene <sceneId>`), or generate: `reelkit assets gen clip --scene <sceneId>` (add `--green` for a green-screen subject). It waits for the clip, which takes minutes; check what is left with `reelkit whoami`.
|
|
96
108
|
|
|
97
109
|
### 6. Composition
|
|
98
|
-
Read `reference/
|
|
110
|
+
Read `reference/hyperframes-composition.md` for the seekable HyperFrames timing and media rules. Consult `reference/kit.md` for the components you need, `reference/motion-design.md` and `reference/continuity.md` for new shots, `reference/captions.md` when adding captions, `reference/beat-sync.md` for music timing, and `reference/voice-sync.md` for narrated visuals.
|
|
99
111
|
|
|
100
112
|
- **Fit the picture to the voice** (narrated films; the whole method is in `reference/voice-sync.md`). The voice is the clock: write the narration first, record it (step 4), and only then place visuals from the real word times with `onWord(s, "word")` (the frame to start an entrance so it lands on its word; `wordFrame` is the word's own frame, `onWordBeat` lets it land on a beat only within 3 frames after the word). Never count words by hand. One visual event per stressed word and at most one every 0.5 s; the thing a word names is on screen within 3 frames of the word starting, never before the previous sentence ends; numbers count up to finish on their word; a list ticks on each item's word; scene changes fall in the gaps between sentences, never inside one; the last word of a sentence is held for the gap, not longer; sound effects for a word's visual sit under the voice at 0.3 or less. `reelkit check` fails on a word the scene never says, and `reelkit preview` renders a frame 4 frames after each word you timed: each of those should already show the thing that word names.
|
|
101
113
|
- Choose the music before you write the composition, and read `reference/beat-sync.md`: `reelkit assets search "<mood and tempo>" --kind music`, then `reelkit assets pull <id> --music`. Scene changes then land on its beat by themselves; bring each element in on a beat inside a scene as that file shows.
|
|
102
114
|
- Search the library before writing a component: `reelkit assets search "<what it shows>" --kind component`. To use one, `reelkit assets pull <id>`: it lands in `src/` and the command prints the import line and an example.
|
|
115
|
+
- When the brief is open ("make it impressive", a launch film, a showreel) and you want to see how others asked for such a video, search the prompt gallery: `reelkit assets search "<kind of video>" --kind prompt`, then `reelkit assets pull <id>` to read the whole prompt in `prompts/`. These are other people's prompts with their author and source: borrow the structure (what they specified: length, beats, style, constraints), never the wording, and never show one in the film. Prompts appear only with `--kind prompt`.
|
|
103
116
|
- Read `reference/sound-design.md`, then find the few sounds the video needs: `reelkit assets search "whoosh" --kind sfx`, `reelkit assets pull <id>`. The pull prints how to reference the file.
|
|
104
|
-
- For
|
|
117
|
+
- For a brand reveal, a transformation, or a shot with real depth, read `reference/brand-motion.md` and `reference/three-d.md`. Choose the move by what it explains, preserve the supplied identity, and share its event frames with the sound cues. Keep reading-heavy shots in 2D; a requested brand film or showreel may use several purposeful 3D moments.
|
|
105
118
|
- For what sits behind the whole film (a video, a picture that changes, or an animated ground), read `reference/backgrounds.md`; pick one ground and keep it.
|
|
106
119
|
- Before writing a new component, read `reference/component-authoring.md`.
|
|
107
|
-
- Write `src/Video.tsx` and any component files beside it. `Video.tsx` may import only `react`, `
|
|
120
|
+
- Write `src/Video.tsx` and any component files beside it. `Video.tsx` may import only `react`, `reelkit/frame`, `reelkit/kit` and sibling components (`./Name`).
|
|
108
121
|
- `manifest.json` is the exact object passed to `Video` as the `manifest` prop. Media is referenced as `urls[path]`, where `path` is the file's path in the project, such as `urls[scene.voiceoverKey]` or `urls["assets/lib/<id>/clip.mp3"]`.
|
|
109
122
|
|
|
110
|
-
|
|
123
|
+
Run `reelkit check` and fix every error. Treat "Worth improving" notes as diagnostics: a deliberate cut or a calm shot can be correct. Run `reelkit preview` (the first preview on a machine may download a browser), inspect the contact sheet and each scene's early, late, word-timed and boundary frames. Check cropped or overlapping text, phone readability, missing media, hidden layers, false claims and identity changes. A mid-animation frame is not a defect by itself; inspect the landing and hold. Fix observed problems, then recheck changed shots. Repeat only for a change or unresolved defect; finish with `reference/delivery-review.md`. Continuity notes should prompt a reason for a cut, not force every shot to morph.
|
|
111
124
|
|
|
112
|
-
|
|
125
|
+
Use frames to inspect layout and the moving video to judge timing and sound when playback is available. `reelkit preview` writes `out/preview/sheet.jpg`, one labelled picture of all of them: look at it first, then at every frame singly. And whoever built a video is the worst judge of it. If independent review is available and authorized, give the reviewer the original request and the preview frames without your explanations. Ask for observable defects and concrete fixes: a cropped logo, unreadable label, missed landing or unintended empty state. Fix those defects and recheck the changed shots; stop iterating when the requested result is achieved.
|
|
113
126
|
|
|
114
|
-
**Checkpoint.** Show the
|
|
127
|
+
**Checkpoint.** Show the preview frames when the user is choosing the final treatment. If they have already approved rendering or explicitly requested this edit and render, continue within that scope. For requested changes, edit the code, run `reelkit check` and `reelkit preview`, and inspect the updated frames.
|
|
115
128
|
|
|
116
129
|
### 7. Render
|
|
117
130
|
`reelkit render`. Give the user the path it prints.
|
|
118
131
|
|
|
132
|
+
Verify the finished export using `reference/delivery-review.md`; previews alone do not prove audio presence or synchronization. Report the deliverable path, the main creative choices and any verification limitation. Create extra platform variants only when requested or necessary for the stated destinations.
|
|
133
|
+
|
|
119
134
|
If the render fails, read the error, fix the composition, and run `reelkit check` before rendering again.
|
|
120
135
|
|
|
136
|
+
## The studio pane
|
|
137
|
+
|
|
138
|
+
In Claude Code 2.1.287 or newer this skill also loads a mod (`hooks/register.tsx`, read `reference/studio-pane.md` before changing it). It opens a Reelkit pane beside the conversation whenever a project is in reach, and `/reelkit-studio [project folder]` opens it by hand. The pane reads the project's files and follows your `reelkit` commands and edits, so it is current after each step:
|
|
139
|
+
|
|
140
|
+
- **Timeline**: the film as an editor's timeline (scene clips with a filmstrip from the preview frames, on-screen text, the voice with a mark per word, the music with its beats) and the selected scene's narration. **Play with timeline** writes `out/studio.html` and opens it in the browser: the render playing over the same timeline, with a playhead to drag, zoom, and frame and scene keys. Before a render it steps through the preview frames.
|
|
141
|
+
- **Plan**, **Music**, **Components**: the plan as written, the track, voice and sound effects, and each component in `src/` with its description and source.
|
|
142
|
+
- **Browser**: searches the shared library by kind.
|
|
143
|
+
|
|
144
|
+
The pane never changes the project by itself. Its buttons (Edit this scene, Change the plan, Use, Render) write a request into the prompt for the user to finish or send; treat such a request as any other from the user. After a preview or a render, tell the user in one line that the pane shows it and that **Play with timeline** plays it.
|
|
145
|
+
|
|
121
146
|
## Rules
|
|
122
147
|
|
|
123
148
|
- Search before generating. Reuse beats regenerate.
|
|
@@ -125,7 +150,7 @@ If the render fails, read the error, fix the composition, and run `reelkit check
|
|
|
125
150
|
- The user's own files (images, footage, sounds) stay private: pass `--share` only when they ask you to contribute a file. Components are the opposite, by default: new components you write are sent to the library for review after the render (source, description and example only), unless the user says no; then use `reelkit init <name> --private` or `reelkit render --no-share` (or REELKIT_NO_SHARE=1).
|
|
126
151
|
- Pass the user's facts through unchanged. Never invent a number, statistic, price or quote.
|
|
127
152
|
- Keep components driven by props, not hardcoded, so they can be reused: nothing of this user's text in them, and every new component starts with a one or two sentence comment saying what it shows and when to use it (`reference/component-authoring.md`).
|
|
128
|
-
-
|
|
153
|
+
- Resolve open creative decisions before committing to them. Preserve earlier approvals and explicit requests to edit or render; do not add a new approval step for work already authorized.
|
|
129
154
|
- Never say a video is done without having looked at its frames and checked that the file exists.
|
|
130
155
|
- If a command reports that a quota is used up, tell the user what ran out and when it resets. Do not work around it. A message that says to wait a minute or an hour ("Too many searches", "Too many uploads started") is a throttle, not a used-up quota: wait and retry once instead of stopping.
|
|
131
156
|
- Reply in the user's language.
|
package/skill/THIRD_PARTY.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Third-party sources
|
|
2
2
|
|
|
3
|
-
Some guidance in these skills, and some starter-kit components, are adapted from three open-source motion-design skills. The first two target a different renderer (HTML pages captured with Playwright), so their engines, scripts and workflows are not used here; only renderer-independent design principles were taken and rewritten for
|
|
3
|
+
Some guidance in these skills, and some starter-kit components, are adapted from three open-source motion-design skills. The first two target a different renderer (HTML pages captured with Playwright), so their engines, scripts and workflows are not used here; only renderer-independent design principles were taken and rewritten for Reelkit’s HyperFrames adapter.
|
|
4
4
|
|
|
5
5
|
- **Barty-Bart/motion-graphics** (`skills/motion-broll`), MIT License, Copyright (c) 2026 Bart.
|
|
6
6
|
https://github.com/Barty-Bart/motion-graphics
|
|
@@ -12,16 +12,16 @@ Some guidance in these skills, and some starter-kit components, are adapted from
|
|
|
12
12
|
|
|
13
13
|
- **haidrrrry/claude-remotion-skill** (`remotion-motion-graphics`), MIT License.
|
|
14
14
|
https://github.com/haidrrrry/claude-remotion-skill
|
|
15
|
-
This one targets Remotion, so more carried over. Adapted into the starter kit (`src/
|
|
15
|
+
This one targets Remotion, so more carried over. Adapted into the starter kit (`src/hyperframes/kit`): the layer stack (background mesh, grade, grain, vignette), the combined entrance, the word-by-word reveal, Ken Burns with pan, spring and easing presets, and the starting palettes. Adapted into the skills: the animation rules, hero-colour rule, hit-hold-build rhythm, safe zones and common layout bugs. Its setup, render and sound-effect steps are not used; this project has its own pipeline.
|
|
16
16
|
|
|
17
17
|
- **A "CapCut-style animated captions" skill** supplied by the project owner as pasted text, source repository not stated.
|
|
18
18
|
It burns captions in with FFmpeg subtitle files, which this project does not do. Adapted into the kit's `Captions` component (the pop, highlight and karaoke modes) and the `captions` skill (words per screen, timing, safe zones, contrast, shake and flash limits). Its engagement statistics were left out because they are unsourced.
|
|
19
19
|
|
|
20
|
-
Used in: `motion-design`, `
|
|
20
|
+
Used in: `motion-design`, `hyperframes-composition`, `scriptwriting`, `scene-treatments`, the starter kit, and the preview checklist in `SKILL.md`.
|
|
21
21
|
|
|
22
22
|
## The 3D typeface
|
|
23
23
|
|
|
24
|
-
- **Inter** (Bold weight), by the Inter Project Authors (https://github.com/rsms/inter), SIL Open Font License 1.1. It is the one typeface bundled for the kit's `Text3D`, converted to three.js's typeface JSON (the Latin letters, digits, punctuation and a few symbols) and kept as data in `src/
|
|
24
|
+
- **Inter** (Bold weight), by the Inter Project Authors (https://github.com/rsms/inter), SIL Open Font License 1.1. It is the one typeface bundled for the kit's `Text3D`, converted to three.js's typeface JSON (the Latin letters, digits, punctuation and a few symbols) and kept as data in `src/hyperframes/kit/inter-bold-typeface.ts`. The three npm package ships no typeface files, so the glyph outlines were taken from the Inter font files in the `@fontsource/inter` package; the outlines are unchanged apart from scaling to 1000 units to the em. The licence text, as shipped with that package:
|
|
25
25
|
|
|
26
26
|
```
|
|
27
27
|
Copyright 2016 The Inter Project Authors (https://github.com/rsms/inter) Inter-Italic[opsz,wght].ttf: Copyright 2016 The Inter Project Authors (https://github.com/rsms/inter)
|
|
@@ -119,4 +119,36 @@ FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
|
119
119
|
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
120
120
|
```
|
|
121
121
|
|
|
122
|
-
The 3D layer
|
|
122
|
+
The 3D layer depends on `three` (MIT) and `@react-three/fiber` (MIT). Rendering uses `@hyperframes/engine` (Apache-2.0). Fonts are bundled locally from Fontsource; each family retains its original font licence in its installed package.
|
|
123
|
+
|
|
124
|
+
## Additional production references
|
|
125
|
+
|
|
126
|
+
The style recipes and external-production guide summarize the project owner’s supplied CapCut studio-editing reference and reviewed official Higgsfield and HyperFrames documentation. They adapt relevant craft and identify runtime boundaries; external editor code and services are not bundled. Sources: https://higgsfield.ai/skills, https://higgsfield.ai/plugins/blender, https://github.com/heygen-com/hyperframes/tree/main/skills.
|
|
127
|
+
|
|
128
|
+
## Art-style catalog
|
|
129
|
+
|
|
130
|
+
`reference/art-styles.md` adapts the fifteen style films and prompts in **Vincentwei1021/mg-styles-15**, https://github.com/VincentWei1021/mg-styles-15. The motion recipes are translated for Reelkit rather than bundling the original renderer. Its MIT notice follows:
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
MIT License
|
|
134
|
+
|
|
135
|
+
Copyright (c) 2026 Vincentwei1021
|
|
136
|
+
|
|
137
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
138
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
139
|
+
in the Software without restriction, including without limitation the rights
|
|
140
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
141
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
142
|
+
furnished to do so, subject to the following conditions:
|
|
143
|
+
|
|
144
|
+
The above copyright notice and this permission notice shall be included in all
|
|
145
|
+
copies or substantial portions of the Software.
|
|
146
|
+
|
|
147
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
148
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
149
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
150
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
151
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
152
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
153
|
+
SOFTWARE.
|
|
154
|
+
```
|
|
@@ -4,4 +4,4 @@ description: Make a voiceless product launch film with Reelkit
|
|
|
4
4
|
|
|
5
5
|
Use the reelkit skill and follow `reference/launch-film.md` to make a launch film with no voice for this product: $ARGUMENTS
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Use the product's supplied screens and logo. Ask only for material a planned shot still needs; continue from the existing project for a revision.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{ "modules": ["./register.tsx"] }
|