agentsclimarketplace

Davinci resolve skill

Skill odaiouattara0022-del/davinci-resolve-skill

Use when editing video in DaVinci Resolve - building timelines, cutting clips, importing media, color grading, applying LUTs or CDLs, adding titles or subtitles, auto-cutting silences, managing render queues, or automating any Resolve post-production task via its Python scripting API. Triggers include "DaVinci", "Resolve", "timeline", "media pool", "color grade", "render", "auto captions", "Text+".From its SKILL.md

Install
npx -y skills add odaiouattara0022-del/davinci-resolve-skill

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

5.2 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it

DaVinci Resolve Editing

Automate DaVinci Resolve with the Python scripting API (DaVinciResolveScript) that ships with every Resolve install. No plugins, no MCP server, no extra dependencies — just Resolve running and Python 3.6+.

Requirements

  • DaVinci Resolve must be running with a project open.
  • External scripts need scripting enabled: Preferences → System → General → External scripting using = Local. (Resolve Studio unlocks network scripting; the free edition allows local external scripting in recent versions — if connection fails on free, run scripts from Workspace → Console instead.)
  • ffmpeg on PATH only for the audio-analysis workflows (silence auto-cut).

Quick Start

Always connect through the bundled helper — it handles the per-OS environment paths:

python scripts/resolve_bootstrap.py          # prints connection status, project, timeline

In your own scripts:

from resolve_bootstrap import get_resolve

resolve = get_resolve()                       # raises with a clear message if Resolve isn't reachable
pm = resolve.GetProjectManager()
project = pm.GetCurrentProject()
timeline = project.GetCurrentTimeline()
media_pool = project.GetMediaPool()

Everything hangs off this object chain. Get it first, every time: Resolve → ProjectManager → Project → (MediaPool | Timeline | Gallery)

Quick Reference

TaskCallDetails
Import mediamedia_pool.ImportMedia([paths])workflows.md
New timelinemedia_pool.CreateEmptyTimeline(name)workflows.md
Add cut clipsmedia_pool.AppendToTimeline([clip_infos])workflows.md
Auto-cut silencespython scripts/auto_cut_silence.pyworkflows.md
Auto subtitlestimeline.CreateSubtitlesFromAudio()workflows.md
Titles (Text+)timeline.InsertFusionTitleIntoTimeline("Text+")fusion-titles.md
Grade a clip (CDL)item.SetCDL({...})color-grading.md
Apply a LUTitem.SetLUT(node_index, lut_path)color-grading.md
Renderproject.AddRenderJob() + StartRendering()workflows.md
Full API surfaceapi-reference.md

Golden Rules

  1. Check every return value. The API signals failure by returning None, False, or an empty list — it almost never raises. Wrap the chain in explicit checks.
  2. Frames, not seconds. AppendToTimeline clip infos, markers, and item positions use frames. Convert with the clip's real FPS: frames = int(seconds * fps) where fps = float(clip.GetClipProperty("FPS")).
  3. Some calls are page-sensitive. Thumbnails and stills need the Color page; switch with resolve.OpenPage("color") and switch back after.
  4. Batch AppendToTimeline calls to ~50 clip infos per call on long edits — very large batches can silently drop clips.
  5. Ask before rendering. Never start a render or overwrite output files without the user explicitly asking — queue the job and report instead.
  6. Build natively, keep it editable. Prefer real timeline items, titles, and grades over importing pre-rendered media, so the user can adjust everything in the Resolve UI afterwards.
  7. Track indices start at 1, and GetTimelineByIndex also starts at 1.

Reference Files

Common Mistakes

MistakeFix
ImportError: DaVinciResolveScriptUse resolve_bootstrap.get_resolve() — it sets PYTHONPATH/lib paths per OS
get_resolve() returns nothingResolve not running, or external scripting not set to Local in Preferences
Clips land at wrong timesYou passed seconds; convert to frames with the clip's FPS
AppendToTimeline returns NoneMalformed clip info dict, or endFrame beyond the clip's length
Timeline ops fail after switching projects in the UIRe-fetch the whole object chain — old handles go stale
Subtitles/captions call failsNeeds Resolve 18.1+ and a timeline with audible speech on an enabled track

What ships with it: 9 files

33.7 KB alongside SKILL.md, 2 of them executable

scripts/

Keep looking

Skills are one crate of 326,144. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.