@amg555/frameforge-mcp 2.4.9 → 2.7.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.
- package/.claude-plugin/marketplace.json +22 -4
- package/CHANGELOG.md +174 -0
- package/CLAUDE.md +192 -9
- package/README.md +47 -6
- package/output/harness_test_1794418727139/frames/f000000.jpg +1 -0
- package/package.json +4 -3
- package/plugins/video-pipeline/.claude-plugin/plugin.json +8 -2
- package/plugins/video-pipeline/skills/.upstream-skills.json +143 -0
- package/plugins/video-pipeline/skills/html-renderer/SKILL.md +59 -15
- package/plugins/video-pipeline/skills/html-renderer/references/animation-patterns.md +609 -0
- package/plugins/video-pipeline/skills/html-renderer/references/character-animation.md +388 -0
- package/plugins/video-pipeline/skills/html-renderer/references/collage-broll.md +41 -0
- package/plugins/video-pipeline/skills/html-renderer/references/design.md +217 -0
- package/plugins/video-pipeline/skills/html-renderer/references/directing.md +165 -0
- package/plugins/video-pipeline/skills/html-renderer/references/earshot-audio.md +201 -0
- package/plugins/video-pipeline/skills/html-renderer/references/engine-api.md +480 -0
- package/plugins/video-pipeline/skills/html-renderer/references/film-styles.md +95 -0
- package/plugins/video-pipeline/skills/html-renderer/references/hyperframes-motion.md +208 -0
- package/plugins/video-pipeline/skills/html-renderer/references/motion-craft.md +1 -0
- package/plugins/video-pipeline/skills/html-renderer/references/onetake-camera.md +59 -0
- package/plugins/video-pipeline/skills/html-renderer/references/procedural-sfx.md +135 -0
- package/plugins/video-pipeline/skills/html-renderer/references/remotion-patterns.md +159 -0
- package/plugins/video-pipeline/skills/html-renderer/references/render-contract.md +1 -0
- package/plugins/video-pipeline/skills/video-pipeline/SKILL.md +19 -2
- package/plugins/video-pipeline/skills/video-pipeline/assets/project/pipeline/briefings/orchestrator.md +15 -0
- package/plugins/video-pipeline/skills/video-pipeline/assets/project/pipeline/briefings/scene-author.md +21 -0
- package/plugins/video-pipeline/skills/video-pipeline/assets/project/reel/engine.js +1293 -20
- package/plugins/video-pipeline/skills/video-pipeline/assets/project/reel/virtual-clock.js +36 -6
- package/plugins/video-pipeline/skills/video-pipeline/references/mcp-tools.md +126 -2
- package/scripts/deep-validate.js +52 -2
- package/src/audio-mixer/mixer.js +594 -63
- package/src/cli/doctor.js +36 -2
- package/src/cli/make.js +113 -9
- package/src/harness/bin/harness.mjs +127 -5
- package/src/harness/lib/capture.mjs +215 -192
- package/src/harness/lib/verify-quality.mjs +48 -7
- package/src/mcp-server/server.js +1020 -61
- package/src/skills/sync-upstream.js +290 -0
- package/src/utils/media-downloader.js +162 -0
- package/src/utils/transcribe.js +341 -0
- package/src/video-editor/editor.js +96 -11
- package/src/video-renderer/renderer.js +7 -1
- package/src/video-renderer/scene-animator.js +143 -1
- package/src/workflows/assets.js +4 -0
- package/src/workflows/ingest.js +10 -0
- package/src/workflows/render.js +2 -0
- package/src/workflows/script.js +18 -10
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "video-pipeline",
|
|
3
3
|
"displayName": "FrameForge Video Pipeline",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.7.0",
|
|
5
5
|
"description": "End-to-end AI video production. IDE writes scenes → FrameForge renders. Or: scaffold a Playwright+ffmpeg code-driven animation. Or: auto-research and script the video.",
|
|
6
6
|
"skills": [
|
|
7
7
|
{
|
|
8
8
|
"name": "video-pipeline",
|
|
9
9
|
"path": "skills/video-pipeline/SKILL.md",
|
|
10
10
|
"displayName": "Video Pipeline",
|
|
11
|
-
"description": "
|
|
11
|
+
"description": "28 MCP tools: create_video_from_script, edit_video, plan_video_edit, preview_scene, verify_scene_quality, scaffold_animation_project, render_animation, validate_storyboard, mix_audio_pro, transcribe_media, ingest_url, sync_upstream_skills, check_upstream_updates, and more."
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"name": "html-renderer",
|
|
15
|
+
"path": "skills/html-renderer/SKILL.md",
|
|
16
|
+
"displayName": "HTML Renderer",
|
|
17
|
+
"description": "HTML-as-compositor rendering engine: pure function of time t, virtual clock, Playwright headless capture, and FFmpeg broadcast-standard encoding."
|
|
12
18
|
}
|
|
13
19
|
],
|
|
14
20
|
"mcpServer": {
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
{
|
|
2
|
+
"lastSync": "2026-11-11T19:56:18.351Z",
|
|
3
|
+
"repos": {
|
|
4
|
+
"hyperframes": {
|
|
5
|
+
"repo": "heygen-com/hyperframes",
|
|
6
|
+
"category": "compositor",
|
|
7
|
+
"desc": "Agent-native HTML/GSAP declarative video compositor",
|
|
8
|
+
"capabilities": [
|
|
9
|
+
"scaffold_animation_project",
|
|
10
|
+
"render_animation"
|
|
11
|
+
],
|
|
12
|
+
"userImpact": "New compositor patterns or GSAP animation primitives available for HTML-rendered video",
|
|
13
|
+
"sha": "a243169",
|
|
14
|
+
"lastChecked": "2026-11-11T19:56:16.487Z",
|
|
15
|
+
"status": "synced"
|
|
16
|
+
},
|
|
17
|
+
"opuscar": {
|
|
18
|
+
"repo": "lemomo-ai/lemo-opuscar",
|
|
19
|
+
"category": "styles",
|
|
20
|
+
"desc": "Frontier cinematic and viral film styles catalog (12 styles)",
|
|
21
|
+
"capabilities": [
|
|
22
|
+
"plan_video_edit",
|
|
23
|
+
"edit_video",
|
|
24
|
+
"render_from_scenes"
|
|
25
|
+
],
|
|
26
|
+
"userImpact": "New color grades or film styles available in plan_video_edit style parameter",
|
|
27
|
+
"sha": "9eb7739",
|
|
28
|
+
"lastChecked": "2026-11-11T19:56:16.692Z",
|
|
29
|
+
"status": "synced"
|
|
30
|
+
},
|
|
31
|
+
"onetake": {
|
|
32
|
+
"repo": "feitangyuan/onetake",
|
|
33
|
+
"category": "camera",
|
|
34
|
+
"desc": "Continuous single-shot camera choreography (zero-cut spline)",
|
|
35
|
+
"capabilities": [
|
|
36
|
+
"generate_scene_code",
|
|
37
|
+
"scaffold_animation_project"
|
|
38
|
+
],
|
|
39
|
+
"userImpact": "New onetake camera transition patterns available for code-driven animation",
|
|
40
|
+
"sha": "abb6d17",
|
|
41
|
+
"lastChecked": "2026-11-11T19:56:16.855Z",
|
|
42
|
+
"status": "synced"
|
|
43
|
+
},
|
|
44
|
+
"collage-broll": {
|
|
45
|
+
"repo": "pyang5166/gbro-collage-broll",
|
|
46
|
+
"category": "broll",
|
|
47
|
+
"desc": "Editorial paper collage, halftone textures, 2.5D tilt",
|
|
48
|
+
"capabilities": [
|
|
49
|
+
"generate_scene_code",
|
|
50
|
+
"create_video_from_script"
|
|
51
|
+
],
|
|
52
|
+
"userImpact": "New editorial collage / halftone visual templates available",
|
|
53
|
+
"sha": "a1a4ee2",
|
|
54
|
+
"lastChecked": "2026-11-11T19:56:17.057Z",
|
|
55
|
+
"status": "synced"
|
|
56
|
+
},
|
|
57
|
+
"remotion-skills": {
|
|
58
|
+
"repo": "remotion-dev/skills",
|
|
59
|
+
"category": "motion",
|
|
60
|
+
"desc": "First-party Remotion composition skills (spring physics)",
|
|
61
|
+
"capabilities": [
|
|
62
|
+
"scaffold_animation_project",
|
|
63
|
+
"render_animation"
|
|
64
|
+
],
|
|
65
|
+
"userImpact": "New Remotion motion patterns or spring physics presets available",
|
|
66
|
+
"sha": "7e541aa",
|
|
67
|
+
"lastChecked": "2026-11-11T19:56:17.403Z",
|
|
68
|
+
"status": "synced"
|
|
69
|
+
},
|
|
70
|
+
"earshot": {
|
|
71
|
+
"repo": "Leonxlnx/earshot",
|
|
72
|
+
"category": "audio",
|
|
73
|
+
"desc": "Procedural CPU SFX synthesis and timeline sync (13-type library)",
|
|
74
|
+
"capabilities": [
|
|
75
|
+
"mix_audio_pro",
|
|
76
|
+
"create_video_from_script"
|
|
77
|
+
],
|
|
78
|
+
"userImpact": "New procedural SFX cue types or audio sync patterns available in mix_audio_pro",
|
|
79
|
+
"sha": "4ac3d2a",
|
|
80
|
+
"lastChecked": "2026-11-11T19:56:17.839Z",
|
|
81
|
+
"status": "synced"
|
|
82
|
+
},
|
|
83
|
+
"claude-anim-base": {
|
|
84
|
+
"repo": "JohnHeibel/ClaudeAnimationBase",
|
|
85
|
+
"category": "animation",
|
|
86
|
+
"desc": "12fps hand-drawn cel boil, character emotions (Opus 5.5 patterns)",
|
|
87
|
+
"capabilities": [
|
|
88
|
+
"generate_scene_code",
|
|
89
|
+
"scaffold_animation_project"
|
|
90
|
+
],
|
|
91
|
+
"userImpact": "New ClaudeAnimationBase patterns for 12fps organic boil or character emotion scenes",
|
|
92
|
+
"sha": "0ac8bf2",
|
|
93
|
+
"lastChecked": "2026-11-11T19:56:18.012Z",
|
|
94
|
+
"status": "synced"
|
|
95
|
+
},
|
|
96
|
+
"claude-remotion": {
|
|
97
|
+
"repo": "haidrrrry/claude-remotion-skill",
|
|
98
|
+
"category": "motion",
|
|
99
|
+
"desc": "10 hard motion craft rules, review loop, Opus 5.5 closed-loop QA",
|
|
100
|
+
"capabilities": [
|
|
101
|
+
"scaffold_animation_project",
|
|
102
|
+
"render_animation",
|
|
103
|
+
"verify_scene_quality"
|
|
104
|
+
],
|
|
105
|
+
"userImpact": "Updated motion craft rules or QA patterns for the Opus 5.5 closed-loop correction pipeline",
|
|
106
|
+
"sha": "1dcbe5e",
|
|
107
|
+
"lastChecked": "2026-11-11T19:56:18.180Z",
|
|
108
|
+
"status": "synced"
|
|
109
|
+
},
|
|
110
|
+
"ffmpeg-skill": {
|
|
111
|
+
"repo": "kajisho5/ffmpeg-skill",
|
|
112
|
+
"category": "ffmpeg",
|
|
113
|
+
"desc": "42 typed-argparse FFmpeg tools, machine-readable contract, visual linter",
|
|
114
|
+
"capabilities": [
|
|
115
|
+
"edit_video",
|
|
116
|
+
"plan_video_edit",
|
|
117
|
+
"mix_audio_pro"
|
|
118
|
+
],
|
|
119
|
+
"userImpact": "New FFmpeg filter patterns or video editing operations available",
|
|
120
|
+
"sha": "532cbe3",
|
|
121
|
+
"lastChecked": "2026-11-11T19:56:18.351Z",
|
|
122
|
+
"status": "synced"
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
"version": "2.7.0",
|
|
126
|
+
"updatedCount": 2,
|
|
127
|
+
"pendingUpdates": [
|
|
128
|
+
{
|
|
129
|
+
"id": "hyperframes",
|
|
130
|
+
"repo": "heygen-com/hyperframes",
|
|
131
|
+
"sha": "a243169",
|
|
132
|
+
"category": "compositor",
|
|
133
|
+
"userImpact": "New compositor patterns or GSAP animation primitives available for HTML-rendered video"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"id": "remotion-skills",
|
|
137
|
+
"repo": "remotion-dev/skills",
|
|
138
|
+
"sha": "7e541aa",
|
|
139
|
+
"category": "motion",
|
|
140
|
+
"userImpact": "New Remotion motion patterns or spring physics presets available"
|
|
141
|
+
}
|
|
142
|
+
]
|
|
143
|
+
}
|
|
@@ -9,10 +9,28 @@ description: |
|
|
|
9
9
|
morphing layouts, spring-physics, counters, progress rings, captions
|
|
10
10
|
synced to audio, and any CSS/SVG animation. Pairs with the FrameForge
|
|
11
11
|
pipeline: script JSON → HTML compositor → frame PNGs → FFmpeg encode.
|
|
12
|
-
Compatible with IBM Bob, Kiro, Cursor, Windsurf, Claude Code,
|
|
13
|
-
agentic IDE connected via MCP. Activate when the user
|
|
14
|
-
animation, Remotion-style rendering, HTML-based video, or
|
|
15
|
-
like the reference repo".
|
|
12
|
+
Compatible with IBM Bob, Kiro, Cursor, Windsurf, Claude Code, Codex,
|
|
13
|
+
opencode, and any agentic IDE connected via MCP. Activate when the user
|
|
14
|
+
asks for richer animation, Remotion-style rendering, HTML-based video, or
|
|
15
|
+
"make it look like the reference repo".
|
|
16
|
+
|
|
17
|
+
Advanced animation patterns (read references/ after scaffold):
|
|
18
|
+
references/animation-patterns.md — ClaudeAnimationBase 12fps boil, onetake 39-move library,
|
|
19
|
+
collage B-roll 3-gate, Remotion spring patterns
|
|
20
|
+
references/character-animation.md — ClaudeAnimationBase full ANIMATION_GUIDE (31 emotions,
|
|
21
|
+
timing principles, pure-fn constraint, review loop)
|
|
22
|
+
references/motion-craft.md — 10 hard motion craft rules (springs, 5-layer stack, exits faster)
|
|
23
|
+
references/film-styles.md — 24 cinematic film styles (anamorphic, cyberpunk, anime, lofi...)
|
|
24
|
+
references/hyperframes-motion.md — HyperFrames motion craft (GSAP eases, beat grid, transitions,
|
|
25
|
+
measured from official launch films)
|
|
26
|
+
references/directing.md — lemo-opuscar directing method (story, sound layers, rhythm,
|
|
27
|
+
camera, performance, review loop, delivery checklist)
|
|
28
|
+
references/earshot-audio.md — earshot professional audio (5 loops, forge DSP, sound bank,
|
|
29
|
+
LUFS tables, J/L cuts, AI-verifiable audio metrics)
|
|
30
|
+
references/onetake-camera.md — zero-cut continuous camera choreography
|
|
31
|
+
references/collage-broll.md — editorial paper collage + halftone 2.5D
|
|
32
|
+
references/procedural-sfx.md — 13-type SFX library with room profiles + platform LUFS targets
|
|
33
|
+
references/render-contract.md — determinism contract (bans Date.now, Math.random, CSS transitions)
|
|
16
34
|
---
|
|
17
35
|
|
|
18
36
|
# HTML Renderer — FrameForge Extension
|
|
@@ -195,6 +213,7 @@ publish_video(productionId, masterPath="output/my-topic/html-render/out/video.mp
|
|
|
195
213
|
| `captions(outlinePath)` | Auto-sync captions from whisper outline |
|
|
196
214
|
| `cuePhrase(phrase, offset)` | Word-level trigger with fail-fast transcript check |
|
|
197
215
|
| `cue(sfxName, t, vol)` | Trigger sound effect at time t |
|
|
216
|
+
| `event(type, t, meta)` | Declare a composition event for render.mjs to consume via `window.__events()` |
|
|
198
217
|
| `faceAt(layout, t)` | Position talking-head face (FULL, SPLIT, PIP) |
|
|
199
218
|
| `hash(i)` | Deterministic PRNG float [0, 1) for index i |
|
|
200
219
|
| `boilSeed(key, t)` | Deterministic stepped float [0, 1) in 1/12s window |
|
|
@@ -204,6 +223,16 @@ publish_video(productionId, masterPath="output/my-topic/html-render/out/video.mp
|
|
|
204
223
|
| `pulse(t, k)` | Exponential impulse peak at t=0, decaying with rate k |
|
|
205
224
|
| `shots(timeline)` | Time-ordered shot registry fn(t, lt, dur) for parallel render |
|
|
206
225
|
| `on(t => ...)` | Raw per-frame compute (for custom animations) |
|
|
226
|
+
| `beatAt(index, bpm, fps)` | Beat frame index (HyperFrames formula — round per-index, never accumulated) |
|
|
227
|
+
| `beatTime(index, bpm)` | Beat timestamp in seconds |
|
|
228
|
+
| `snapToBeat(t, bpm)` | Snap a timestamp to the nearest beat boundary |
|
|
229
|
+
| `OM.spring(t, opts)` | OneTake spring entrance → `{ transform, opacity }` |
|
|
230
|
+
| `OM.iris(t, opts)` | Radial clip expand from centre → `{ clipPath }` |
|
|
231
|
+
| `OM.morphRect(t, opts)` | Clip from narrow rect to full frame → `{ clipPath }` |
|
|
232
|
+
| `OM.zoomThrough(t, opts)` | Portal scale-through → `{ transform }` |
|
|
233
|
+
| `OM.camera(t, opts)` | Ken Burns + seeded micro-shake → `{ transform }` |
|
|
234
|
+
| `OM.carryScore(t)` | Carry momentum at exit (must be ≥ 0.5 to PASS oracle) |
|
|
235
|
+
| `ROOM_SFX` | OneTake 5-material SFX palette (air/wood/glass/sub/bubble) for `cue()` |
|
|
207
236
|
|
|
208
237
|
---
|
|
209
238
|
|
|
@@ -277,16 +306,31 @@ the animation/render stage.
|
|
|
277
306
|
|
|
278
307
|
```
|
|
279
308
|
plugins/video-pipeline/skills/html-renderer/
|
|
280
|
-
SKILL.md
|
|
281
|
-
references/engine-api.md
|
|
282
|
-
references/design.md
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
309
|
+
SKILL.md ← this file
|
|
310
|
+
references/engine-api.md ← full engine function reference
|
|
311
|
+
references/design.md ← layouts, safe zones, type scale, pacing
|
|
312
|
+
references/animation-patterns.md ← ClaudeAnimationBase boil + onetake 39-move + collage + Remotion
|
|
313
|
+
references/character-animation.md ← ClaudeAnimationBase full ANIMATION_GUIDE (31 emotions, timing)
|
|
314
|
+
references/hyperframes-motion.md ← HyperFrames GSAP motion craft (measured from official films)
|
|
315
|
+
references/directing.md ← lemo-opuscar directing method (sound, rhythm, camera, delivery)
|
|
316
|
+
references/earshot-audio.md ← earshot 5-loop audio workflow (forge DSP, kit, LUFS tables)
|
|
317
|
+
references/motion-craft.md ← 10 hard motion craft rules (springs, 5-layer stack, exits faster)
|
|
318
|
+
references/film-styles.md ← 24 cinematic film styles from lemo-opuscar
|
|
319
|
+
references/onetake-camera.md ← zero-cut continuous camera patterns
|
|
320
|
+
references/collage-broll.md ← editorial paper collage + halftone 2.5D
|
|
321
|
+
references/procedural-sfx.md ← 13-type SFX + room profiles + platform LUFS + earshot bank
|
|
322
|
+
references/render-contract.md ← determinism contract (bans Math.random etc.)
|
|
323
|
+
assets/project/ ← template copied into each render project
|
|
324
|
+
index.html ← compositor page (loads engine.js)
|
|
325
|
+
edit.js ← starter edit (one layer per FrameForge scene)
|
|
326
|
+
reel/engine.js ← springs, layouts, components, captions, seek API
|
|
327
|
+
reel/engine.css ← default fonts + base reset
|
|
328
|
+
scripts/ ← render.mjs, mix_audio.py, mix_audio_pro.py,
|
|
329
|
+
verify.py, stock.py, capture.mjs,
|
|
330
|
+
transcribe.py, new-project.mjs
|
|
290
331
|
scripts/html-renderer/
|
|
291
|
-
new-project.mjs
|
|
332
|
+
new-project.mjs ← scaffolds a render project from script JSON
|
|
292
333
|
```
|
|
334
|
+
|
|
335
|
+
References are automatically copied into each project's `references/` directory
|
|
336
|
+
by `scaffold_animation_project` — agents should read them for advanced patterns.
|