video-editor

Installation
SKILL.md

Video editor

One skill owns the film from product discovery to final MP4. A request such as “make a product launch video” is enough to start: inspect the product and choose the story. The bundled Remotion scaffold and local sound editor are packaged assets to copy or run as needed; their source does not need to be loaded into model context. They share the edit.json cut map. Keep working projects, renders, music, and mix recipes outside this skill. The scaffold is a placeholder, not product evidence.

  1. Preflight: run scripts/preflight.mjs. Fix blockers; apply the printed workarounds (a local Chrome for Remotion, self-hosted fonts) before scaffolding.
  2. Discover and choose: Inspect the product's docs, source, live UI, and available assets. Read story. Default to a launch film. Inventory every capability and mark each hero, montage, or omit; with no further brief, cover the default beats in story.md (hook, first contact, core loop, 3-4 heroes, a breadth montage, the differentiator, a call to action) in 20-30 s. Choose a focused demo when the user asks for a demo or names one feature without asking for a launch; an explicit launch request wins. A whole website can be the subject of either mode.
  3. Classify and stage: Read fidelity and staging. Mark each visible element as primary product UI or accessory context. Reuse or record the real primary UI and its actual motion by default; for interactive UI, record the running product with capture/record.mjs, one take per surface. Do not invent a replacement component or animation because the source is difficult to render. The user must explicitly request abstraction before primary UI can be redesigned. If the product misbehaves on camera, film a truthful path and report the bug.
  4. Direct: Read scenes. Plan one composition per shot and set cuts in src/edit.json. Every cut must change the picture: a different surface, a visibly different state, or a declared two-tier punch; a reframe of the same surface is a camera move inside one shot, never a cut. Declare surface on each product scene, and build camera shots with footageScene() so the zoom on screen is checked against the tiers. Keep it snappy: short approaches, 12-20 frame result holds, 30-60 frame clips. Transitions come out of the product (a theme flood, a gesture-direction wipe) as handoffs, two or three per film. Show breadth with a beat-cut montage (montage.mjs), and once the music exists snap every cut to it (beats.mjs). Read text when the film has on-screen words.
  5. Render and review: Read render. Run scripts/scaffold.mjs from the installed skill to create a standalone project from assets/launch and assets/capture. node qc.mjs checks framing and aligns the frames either side of every cut to catch same-picture cuts. Inspect the in/out stills of every cut side by side and the silent assembled out/film.mp4. Compare featured UI states and motion against the running product or source captures, then watch at playback speed to check whether an unfamiliar viewer can name the features and see their results. Technical QC cannot answer either question. Revise weak or inaccurate scenes before sound work. A changed cut or picture requires a fresh sound review.
  6. Sound and export: Read soundtrack methodology. In the packaged editor, run npm ci. Without a supplied song, generate the bed with node bed.mjs --film <s> --drop <first reveal s>. Choose the sounds with sound design (the product's own sounds first; one sound per role; design missing ones with sfx.mjs, whooshes as long as their motion), write a cue sheet with a role per cue from the recorder's press frames and the picture's results, then either run node render-mix.mjs (headless: recipe, per-cue level report, -14 LUFS master) or open the visual editor with npm start -- --video /absolute/film.mp4 --edit /absolute/edit.json --cues /absolute/cues.json. Fix any cue the level report flags as buried, then run node listen.mjs on the final file and look at its annotated spectrogram. Watch the encoded MP4 through the last frame. Counted cues or a passing export do not establish creative quality.
  7. Log the dogfood: add what worked and what did not to the dogfood log, and fold any repeatable fix back into this skill.

The visual editor adjusts music and sound cues; picture cuts live in the Remotion project. edit.json uses { "cuts": [{ "scene": "name", "in": 0, "out": 60 }] } at 30 fps, and the bundled sound editor reads it directly. A cue sheet uses scene-local frame numbers; see the soundtrack methodology. Keep the film and song with the saved JSON recipe because it references their timing. Node 22.12+, FFmpeg, and FFprobe are required for the full workflow.

Installs
1
Repository
tjcages/skills
GitHub Stars
5
First Seen
14 days ago