davinci-resolve
Installation
SKILL.md
DaVinci Resolve (free, Linux)
The agent drives Resolve through the davinci-resolve MCP (samuelgursky/davinci-resolve-mcp). Free Resolve 21.1+ blocks external scripting, so the MCP talks to a Lua bridge running inside Resolve (bridge/). The edit is real Resolve: the user can open it and keep working by hand.
Free-on-Linux limits (why the pipeline looks like this)
- No H.264/H.265/AAC decode. An MP4 imports as Audio only, with no picture. Convert every clip to ProRes LT first with
scripts/to-prores.sh. MP3 and WAV import fine as they are. - No H.264 encode. The user exports a ProRes/DNxHR
.mov; we make the MP4 withscripts/to-mp4.shor the captions render. - No webp. Images must be png/jpg/tiff (
add-media.pyconverts). - ProRes LT is about 10 MB/s at 1080×1920 (about 2.5 GB for 4 minutes). It is a working format only. The client gets the MP4 (about 150–250 MB for 4 minutes at crf 20). Never send the ProRes.
Before anything
- Check the MCP is there:
project_managerget_current. If the tool doesn't exist, runscripts/install-bridge.shand give the user the register command it prints; the agent must be restarted after that. - If a call says the bridge isn't running, ask the user to click Workspace → Scripts → claude_bridge in Resolve. It's needed once per Resolve launch. Clicking it twice is harmless: the newest one takes over.
Process (fast path: one command per stage, no per-step tool calls)
Do the edit with scripts/build.py, not step by step through the MCP. One MCP call costs a model turn, and the MCP's append looks each clip up by scanning the media pool one bridge call at a time (about 2,000 round trips for 64 clips). build.py imports once, appends every piece in one call, checks placement once and saves. (It also has --render, but rendering is the user's job: never pass it.) It prints a timing line per phase.