Edit video
Edit video with FableCut — assemble a cut, add titles and captions, grade, add transitions, keyframe animation, speed ramps, and export. Use whenever the user wants to cut, trim, caption, subtitle, grade, or otherwise edit a video, or asks to open/start the video editor.From its SKILL.md
npx -y skills add ronak-create/FableCut --skill edit-videoAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
2.9 KB, as published. Nobody here has run it
Editing video with FableCut
FableCut is a browser video editor whose entire timeline is one JSON document. You edit video by patching that document; the open editor UI hot-reloads within ~150 ms, so the user watches the timeline rebuild as you work.
Start here, every time
fablecut_status— starts the editor server if it isn't running and returns the URL, the current project summary, and what's inmedia/. Call it before anything else. If the user doesn't have a browser tab open, tell them the URL so they can watch.fablecut_docs— the full manual:project.jsonschema, every prop, transitions, text animations, and a recipe book. Request a single section ({section:"props"},{section:"Recipes"}) rather than the whole document. Skip it entirely if the schema is already in context.
Making edits
Prefer fablecut_patch_project. It sends only what changes, re-reads the
latest document internally, and is merge-safe — it will not clobber a tweak the
user just made in the UI. Batch related changes into one call; ops apply in
order and bump the revision once.
fablecut_patch_project {ops:[
{op:"updateClip", id:"c_v2", set:{props:{filterPreset:"teal-orange"}}}
]}
Use fablecut_get_project {compact:true} to plan — it's roughly 10× smaller
than the full JSON. Fetch the full document only when you need exact keyframes.
fablecut_set_project replaces the whole document and is conflict-checked: if
the user edited in the UI since your last read, it refuses rather than
overwriting. On conflict, re-read, re-apply your change, and call it again.
Getting footage in
fablecut_import_media copies a local file into the project and registers it.
Media entries may omit duration — the browser probes it and writes it back, so
re-read after a moment instead of shelling out to ffprobe.
Things that trip people up
- A cut is just two clips: the first with
duration: t, the second withstart: +t, in: +t×speed, duration: rest. - Video and audio clips must satisfy
in + duration×speed ≤ media.duration. - Crossfades are same-track overlap plus
transitionIn: {type:"fade"}on the later clip — not a separate object. - Vary the font per title. Reusing one typeface across a whole edit is the
single clearest tell of a machine-made cut;
fablecut_docs {section:"Text"}lists the built-in title styles. - Export is user-driven. The compositor lives in the browser, so you cannot render headlessly. Ask the user to click Export, or run ffmpeg directly against the source files if they just need a file.