@amg555/frameforge-mcp 2.4.10 → 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.
Files changed (40) hide show
  1. package/.claude-plugin/marketplace.json +22 -4
  2. package/CHANGELOG.md +174 -0
  3. package/CLAUDE.md +192 -9
  4. package/README.md +47 -6
  5. package/output/harness_test_1794418727139/frames/f000000.jpg +1 -0
  6. package/package.json +4 -3
  7. package/plugins/video-pipeline/.claude-plugin/plugin.json +8 -2
  8. package/plugins/video-pipeline/skills/.upstream-skills.json +143 -0
  9. package/plugins/video-pipeline/skills/html-renderer/SKILL.md +59 -15
  10. package/plugins/video-pipeline/skills/html-renderer/references/animation-patterns.md +609 -0
  11. package/plugins/video-pipeline/skills/html-renderer/references/character-animation.md +388 -0
  12. package/plugins/video-pipeline/skills/html-renderer/references/collage-broll.md +41 -0
  13. package/plugins/video-pipeline/skills/html-renderer/references/design.md +217 -0
  14. package/plugins/video-pipeline/skills/html-renderer/references/directing.md +165 -0
  15. package/plugins/video-pipeline/skills/html-renderer/references/earshot-audio.md +201 -0
  16. package/plugins/video-pipeline/skills/html-renderer/references/engine-api.md +480 -0
  17. package/plugins/video-pipeline/skills/html-renderer/references/film-styles.md +95 -0
  18. package/plugins/video-pipeline/skills/html-renderer/references/hyperframes-motion.md +208 -0
  19. package/plugins/video-pipeline/skills/html-renderer/references/onetake-camera.md +59 -0
  20. package/plugins/video-pipeline/skills/html-renderer/references/procedural-sfx.md +135 -0
  21. package/plugins/video-pipeline/skills/html-renderer/references/remotion-patterns.md +159 -0
  22. package/plugins/video-pipeline/skills/video-pipeline/SKILL.md +19 -2
  23. package/plugins/video-pipeline/skills/video-pipeline/assets/project/pipeline/briefings/orchestrator.md +15 -0
  24. package/plugins/video-pipeline/skills/video-pipeline/assets/project/pipeline/briefings/scene-author.md +21 -0
  25. package/plugins/video-pipeline/skills/video-pipeline/assets/project/reel/engine.js +1293 -20
  26. package/plugins/video-pipeline/skills/video-pipeline/assets/project/reel/virtual-clock.js +36 -6
  27. package/plugins/video-pipeline/skills/video-pipeline/references/mcp-tools.md +126 -2
  28. package/scripts/deep-validate.js +52 -2
  29. package/src/audio-mixer/mixer.js +594 -63
  30. package/src/cli/doctor.js +36 -2
  31. package/src/cli/make.js +113 -9
  32. package/src/harness/bin/harness.mjs +127 -5
  33. package/src/harness/lib/capture.mjs +215 -192
  34. package/src/harness/lib/verify-quality.mjs +47 -7
  35. package/src/mcp-server/server.js +1015 -59
  36. package/src/skills/sync-upstream.js +290 -0
  37. package/src/utils/media-downloader.js +162 -0
  38. package/src/utils/transcribe.js +341 -0
  39. package/src/video-editor/editor.js +96 -11
  40. package/src/workflows/ingest.js +10 -0
@@ -1,14 +1,20 @@
1
1
  {
2
2
  "name": "video-pipeline",
3
3
  "displayName": "FrameForge Video Pipeline",
4
- "version": "2.3.1",
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": "17 MCP tools: create_video_from_script, scaffold_animation_project, render_animation, validate_storyboard, multi_voice_tts, ingest_media, edit_scenes, research_topic, write_script, queue_full_pipeline, and more."
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, and any
13
- agentic IDE connected via MCP. Activate when the user asks for richer
14
- animation, Remotion-style rendering, HTML-based video, or "make it look
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 ← this file
281
- references/engine-api.md ← full engine function reference
282
- references/design.md ← layouts, safe zones, type scale, pacing
283
- assets/project/ ← template copied into each render project
284
- index.html ← compositor page (loads engine.js)
285
- edit.js ← starter edit (one layer per FrameForge scene)
286
- reel/engine.js ← springs, layouts, components, captions, seek API
287
- reel/engine.css ← default fonts + base reset
288
- scripts/ ← render.mjs, mix_audio.py, verify.py, stock.py,
289
- capture.mjs, transcribe.py, new-project.mjs
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 ← scaffolds a render project from script JSON
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.