Agent skill

Resolve Rough Cut

by samuelgursky in samuelgursky/davinci-resolve-mcp

Assembling a short-form social rough cut from raw behind-the-scenes or vlog footage in the DaVinci Resolve MCP.

MITAuto-check passedAgent Workflows

Install Resolve Rough Cut

skills CLI
$ npx skills add samuelgursky/davinci-resolve-mcp --skill resolve-rough-cut -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install samuelgursky/davinci-resolve-mcp resolve-rough-cut --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/samuelgursky/davinci-resolve-mcp.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/resolve-rough-cut .claude/skills/resolve-rough-cut && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
resolve-rough-cut
GitHub stars
3.4k
Token cost
~2.9k tokens
SKILL.md length
1,582 words
Files
1
Skills in repo
14
Repo updated
First seen
Licence
MIT

At a glance

Assembling a short-form social rough cut from raw behind-the-scenes or vlog footage in the DaVinci Resolve MCP.

  • Works in 8 steps: Probe before importing. ffprobe every… → **For a series, add a timeline to the… → On a NEW project, set BOTH frame rates… → …
  • Tasks that involve MCP servers
  • SKILL.md covers The deliverable contract, Workflow, Shot finding at scale and Verified traps, plus 3 more sections
  • Calls python3, pip and git

What it does

Resolve Rough Cut is an agent skill from samuelgursky/davinci-resolve-mcp. Assembling a short-form social rough cut from raw behind-the-scenes or vlog footage in the DaVinci Resolve MCP. Apply when asked for a rough cut, first cut, assembly, or "make me a timeline" from a folder of footage — day-in-the-life, BTS, process, or product-shoot material destined for Reels, TikTok, or Shorts. Covers ingest, shot finding at scale, vertical timeline setup, and gapless assembly.

Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Agent Workflows, covering MCP servers. It works with Model Context Protocol and TikTok. The repository describes itself as: MCP server integration for DaVinci Resolve Studio. The licence is MIT.

When your agent uses it

  • Tasks that involve MCP servers

Example prompts

  • “make me a timeline”
  • “/resolve-rough-cut”

Requirements

  • Python 3

Workflow steps

8 steps, taken from the first numbered list in SKILL.md.

  1. Probe before importing. ffprobe every clip for r_frame_rate,
  2. **For a series, add a timeline to the existing project — don't create a new
  3. On a NEW project, set BOTH frame rates before any timeline exists.
  4. **Create a bin named for the episode, media_pool set_current_folder to it,
  5. Analyse — media_analysis analyze_bin, sampling_mode="adaptive_capped".
  6. Find shots via contact sheets, not one frame at a time
  7. Assemble in one call — media_pool create_timeline_from_clips with
  8. Verify — timeline detect_gaps_overlaps must return zero of both, and

What it can do on your machine

Read from SKILL.md and the folder at commit 94c7a88. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python3
    • pip
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use pip and git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Resolve Rough Cut loads about 2.9k tokens when it runs. Until then it costs about 104 tokens; SKILL.md has 1,582 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~104
When it runs · the whole SKILL.md, loaded when a task matches
~2.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from samuelgursky/davinci-resolve-mcp at commit 94c7a88, republished under its MIT licence (© samuelgursky). 1,582 words, ~2,916 tokens.

Download SKILL.mdSave it as .claude/skills/resolve-rough-cut/SKILL.md (or your agent's skills folder).
name
resolve-rough-cut
description
Assembling a short-form social rough cut from raw behind-the-scenes or vlog footage in the DaVinci Resolve MCP. Apply when asked for a rough cut, first cut, assembly, or "make me a timeline" from a folder of footage — day-in-the-life, BTS, process, or product-shoot material destined for Reels, TikTok, or Shorts. Covers ingest, shot finding at scale, vertical timeline setup, and gapless assembly.

Resolve Rough Cut

Turns a folder of raw footage into an assembled, gapless timeline. The timeline is the deliverable, not a finished video.

For editorial craft (why a cut works) see docs/guides/editorial-decision-guide.md. For the analysis layer see the resolve-media-analysis skill. This skill is the assembly recipe and the traps between them.

The deliverable contract

Deliver an assembled timeline. Do not add titles, captions, text cards, effects, transitions, music, or grading unless explicitly asked. Editors who ask for a rough cut want shot selection and pacing; styling is theirs. Adding graphics is work that gets thrown away — and see the Fusion trap below for why it also silently fails.

Render an mp4 only to preview the cut, and say that is what it is.

Workflow

  1. Probe before importing. ffprobe every clip for r_frame_rate, avg_frame_rate, and rotation. Two things routinely differ from what the filenames and Resolve suggest — see Verified traps.

  2. For a series, add a timeline to the existing project — don't create a new one. Check project_manager list first. One project per series keeps the bins, analysed clips and settings in one place; one per episode scatters them. Only create a project for a genuinely new series.

  3. On a NEW project, set BOTH frame rates before any timeline exists. timelineFrameRate is locked once a timeline is created — set it via project_manager safe_set_project_settings. timelinePlaybackFrameRate cannot be set through the API at all, so ask the user to set it in the UI now, as a setup step:

    Project Settings (gear, bottom-right) → Master Settings → Playback frame rate

    Quote that path as written and do not extend it from memory — if the user cannot find it on their build, say you cannot see their screen and point at Blackmagic's manual rather than guessing a second location. Improvised UI directions are what issue #132 cost a user; see the retime entry in resolve-edit for the rule.

    Do not defer this to the end or write it off as cosmetic; a mismatch has been reported to affect playback and output, not just the display. On an existing project, read both back and only raise it if they are wrong.

  4. Create a bin named for the episode, media_pool set_current_folder to it, THEN import. That order is mandatory, not stylistic: ImportMedia has no destination parameter and always lands in the current folder, so importing first puts the clips wherever the current folder happens to be — see the MediaPool.ImportMedia (current-folder destination only) entry in the api_truth ledger. Restore the previous current folder afterwards if it matters. One bin per episode, not one shared dump — it keeps analyze_bin scoped and the Media Pool readable across a long series.

  5. Analyse — media_analysis analyze_bin, sampling_mode="adaptive_capped". Complete the commit_vision loop for every clip; leaving one in pending_host_vision_analysis is a failure, not a partial success (AGENTS.md).

  6. Find shots via contact sheets, not one frame at a time: python3 scripts/contact_sheet.py <clip_dir> <out_dir> — see Shot finding.

  7. Assemble in one call — media_pool create_timeline_from_clips with positioned clip_infos. Name the timeline for the episode.

  8. Verify — timeline detect_gaps_overlaps must return zero of both, and check the total duration against the target.

Shot finding at scale

media_analysis extracts frames at full source resolution. A 35-minute 4K clip yields 80 frames at 2160x3840. Reading those individually to satisfy commit_vision costs ~1,100 tokens each — a four-clip shoot exceeds 250 frames.

Tile them instead. scripts/contact_sheet.py burns frame index, timestamp and selection_reason onto each tile, so per-frame findings stay reportable by index. Roughly a 15x saving with no loss of coverage. It needs Pillow (pip install Pillow) — the repo treats Pillow as optional elsewhere, but this script hard-fails without it rather than silently producing nothing.

Ask for short clips per subject rather than 20-35 minute takes when the shooter can choose. adaptive_capped tops out at 80 frames per clip, so a 35-minute take gets sampled only to about its first 16 minutes — the tail is never seen.

When footage arrives pre-culled (the shooter has already thrown away the unusable takes), scale the effort down: fewer frames per clip, fewer sheets, and trust the selection rather than hunting for the good moments. The expensive part of shot finding is separating usable from unusable, and that work is already done. Don't re-litigate it.

Verified traps

Each one silently produces a wrong result rather than an error.

Every row states the build it was confirmed on. A date alone is not reproducible — the scripting API changes per patch release, so a trap confirmed on one build is only a prior on another. Re-confirm before relying on a row whose build is older than yours, and update the stamp when you do.

TrapConfirmed onSymptomFix
clip_infos end_frame is exclusiveStudio 21.01-frame gap between every clip, and matching audio gapsend_frame = start_frame + duration
Mixed-fps duration floor — start_frame/end_frame are SOURCE framesStudio 21.0 (MCP v2.71.1)Source fps ≠ timeline fps (24.0 or 29.97 source in a 23.976 timeline) → Resolve floors the source→timeline conversion, so a range planned to fill an exact record slot lands one frame shortPlan durations in timeline frames: floor(src_frames * timeline_fps / source_fps). If the floored duration misses the slot, extend end_frame by one source frame and re-check
An audio item's source frames are in the media's rate, and a WAV freezes the project's rate at importStudio 21.0.3.7 (2026-08-09), corrected on 19.1.3.7 (2026-08-10)probe_timeline_structure returned source_start: 56871 for a WAV on a 29.97 fps timeline; read at 29.97 that is 1897.6 s, but the clip counts at 24, making it 2369.6 s — out by 7m52s. 24 is not a WAV constant: a WAV takes the project's timelineFrameRate at import and keeps it, so it reads 24 only if the project was at 24 when you imported, and a WAV imported at 29.97 has no mismatch at allRead the source_fps the probe reports beside every item and divide by that — never the timeline rate, and never a hard-coded 24. Video items are fine; they carry their own rate. Feed the media-rate frames back to create_variant_from_ranges unchanged; it converts on placement and reports it in duration_delta. Related: on an audio item GetLeftOffset counts in timeline frames while GetSourceStartFrame counts in source frames, so the probe reports source_fps: null when it had to fall back
create_timeline_from_clips needs the current folderStudio 21.0Bare Failed to create timeline from clip_infos, valid clip_idsmedia_pool set_current_folder to the clips' bin first
ImportMedia has no destination parameterStudio 21.0 (MCP v2.71.1)Clips land wherever the current folder happens to be; an unrecognized destination arg is silently ignoredset_current_folder before importing (step 4)
Phone footage carries a rotation flagStudio 21.0Stored 3840x2160, displays 2160x3840Check rotation in ffprobe; Resolve honours it. Do not reframe — it is already vertical
Phone footage is VFRStudio 21.0avg_frame_rate differs per clip and from r_frame_rateMatch the timeline to what Resolve conforms to (its reported clip FPS), not to r_frame_rate
timelinePlaybackFrameRate is read-onlyStudio 21.0.2set_setting returns False for every value form, before and after a timeline existsNo API path. Ask the user to set it in Master Settings during setup (step 3), not at handover
An API-built Fusion comp on a media clip renders only when MediaOut has a path from MediaInStudio 19.1.3.7, corrected 2026-08-02A comp wired MediaIn → Blur → MediaOut does render. But a MediaOut fed by a tool with no source does not merely get bypassed — the render job comes back Failed. The earlier blanket claim that such comps "never render" was too broadWire the graph so MediaOut descends from MediaIn, and never leave a tool unrooted. For text over picture, insert a Fusion title as its own timeline clip and set its Text+ via fusion_comp set_text_plus
Show full SKILL.md (308 more words)Show less

The mixed-fps, audio-source-rate, ImportMedia, playback-frame-rate and Fusion rows are recorded in the api_truth ledger and docs/reference/api-limitations.md; query them at runtime with resolve_control api_truth "fusion" (or "timeline", "media-pool", "frame-rate"). The ledger is the canonical copy — this table is the narrative version, so when the two disagree the ledger wins and this table is the thing to correct.

⚠️ A running MCP process keeps executing the version it started with, so a git pull does not update the ledger until it restarts. Check resolve_control get_version → mcp.version before trusting an api_truth miss: on MCP v2.70.4, api_truth "DeleteClips" returns zero facts that v2.71.1 does carry.

On burning text over picture specifically: the title route above renders, but the API cannot choose a destination track (issue #74 — Insert*IntoTimeline takes no trackIndex and always lands on V1), so overlaying text onto an existing clip's track is not reachable end-to-end. Treat text as a request for the user's UI pass, not something to attempt and half-deliver.

Destructive ops auto-archive the timeline, so several edits leave *_archived_vNN timelines behind. Clean them up before handing over.

Assembly shape

Build clip_infos as a flat list — source start_frame/end_frame plus a cumulative record_frame:

python
shots = [(clip_id, start_sec, duration_sec), ...]
infos, record = [], 0
for clip_id, start, dur in shots:
    start_f, dur_f = round(start * fps), round(dur * fps)
    infos.append({
        "clip_id": clip_id,
        "start_frame": start_f,
        "end_frame": start_f + dur_f,   # exclusive
        "record_frame": record,
    })
    record += dur_f

Working in seconds and converting once keeps the shot list readable and makes the exclusive-end_frame rule impossible to get wrong twice.

Common mistakes

  • Reframing vertical-flagged footage into a vertical timeline — double-rotating or cropping material that already fits.
  • Setting the timeline frame rate after creating the timeline; it is ignored.
  • Trusting detect_gaps_overlaps alone — also confirm total duration and inspect representative frames.
  • Reporting a render as the deliverable when the timeline is what was asked for.

Source-media safety (AGENTS.md)

Assembly references existing Media Pool items and never transcodes, proxies, or relinks source media. Analysis frames, contact sheets, and preview renders are scratch artifacts — write them to the analysis root or session scratch, never beside the source, and never into git.

© samuelgursky, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/resolve-rough-cut of samuelgursky/davinci-resolve-mcp.

Open the folder on GitHubat commit 94c7a88

Compare with similar skills

Resolve Rough Cut next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Resolve Rough Cut compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Resolve Rough Cut this skillsamuelgursky/davinci-resolve-mcp3.4k—~2.9kAutomated safety check: PassMIT
Linkdigest Social Link Readersickn33/agentic-awesome-skills47k—~3.4kAutomated safety check: PassMIT
Taisly Social Media Postingtaisly/agent2171 repos~1.5kAutomated safety check: PassMIT
Tiktok Shop Operatoraronhy/tiktok-agent-skills168—~1.2kAutomated safety check: PassMIT
MCP Server Builderanthropics/skills180k63 repos~2.3kAutomated safety check: PassApache-2.0
MCP Server BuildershareAI-lab/learn-claude-code78k4 repos~1.2kAutomated safety check: PassMIT

Similar skills

  • Linkdigest Social Link Reader

    sickn33/agentic-awesome-skills

    Read one public Xiaohongshu, Douyin, TikTok, YouTube, X or WeChat article link into text an agent can use (transcript, image text, key points) via the LinkDigest API or MCP server.

    47k GitHub stars~3.4k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • Free AI-first short-form video publishing to TikTok, Instagram Reels, YouTube Shorts, X, and Facebook from AI agents through Taisly.

    217 GitHub starsUsed in 1 repo~1.5k tokens
    Media & CreativeAuto-check passed
  • Tiktok Shop Operator

    aronhy/tiktok-agent-skills

    Operate TikTok Shop research and planning with KSS MCP across product discovery, shop analysis, viral commerce videos, creator matching, caption extraction, pagination, sorting, and evidence-based…

    168 GitHub stars~1.2k tokensUpdated 2 mo ago
    Media & CreativeAuto-check passed
  • MCP Server Builder

    anthropics/skills

    Official

    Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.

    180k GitHub starsUsed in 63 repos~2.3k tokens
    Agent WorkflowsAuto-check passed
  • MCP Server Builder

    shareAI-lab/learn-claude-code

    Walks through building MCP servers in Python or TypeScript that expose tools, resources and prompts to Claude, with templates, registration and testing.

    78k GitHub starsUsed in 4 repos~1.2k tokens
    Agent WorkflowsAuto-check passed
  • MCP Integration for Plugins

    anthropics/claude-plugins-official

    Official

    Explains how to bundle Model Context Protocol servers in a Claude Code plugin, covering config files, stdio, SSE, HTTP and WebSocket server types, and authentication.

    38k GitHub starsUsed in 11 repos~3.1k tokens
    Agent WorkflowsAuto-check passed

More from samuelgursky/davinci-resolve-mcp

All 14 skills in this repo
  • Resolve MCP

    samuelgursky/davinci-resolve-mcp

    Orientation and index for DaVinci Resolve MCP work — grading, editing, conforming, delivery, media analysis, and .drp/.drt/.drx file work, live in a running Resolve or offline with none open.

    3.4k GitHub stars~1.5k tokensUpdated yesterday
    Auto-check passed
  • House Style

    samuelgursky/davinci-resolve-mcp

    The editorial and finishing preferences this project's work is judged against — cut rhythm, shot selection, delivery conventions, and the corrections that have already been given.

    3.4k GitHub stars~736 tokensUpdated yesterday
    Auto-check passed
  • Resolve Audio

    samuelgursky/davinci-resolve-mcp

    Audio and Fairlight work in the DaVinci Resolve MCP. An agent skill from samuelgursky/davinci-resolve-mcp.

    3.4k GitHub stars~1.3k tokensUpdated yesterday
    Auto-check passed
  • Resolve Color

    samuelgursky/davinci-resolve-mcp

    Color grading and look work in the DaVinci Resolve MCP. An agent skill from samuelgursky/davinci-resolve-mcp.

    3.4k GitHub stars~1.9k tokensUpdated yesterday
    Auto-check passed
  • Resolve Conform

    samuelgursky/davinci-resolve-mcp

    Conforming, relinking, and finishing prep in the DaVinci Resolve MCP.

    3.4k GitHub stars~2.1k tokensUpdated yesterday
    Auto-check passed
  • Resolve Delivery

    samuelgursky/davinci-resolve-mcp

    Delivery, rendering, and deliverable QC in the DaVinci Resolve MCP.

    3.4k GitHub stars~2.1k tokensUpdated yesterday
    Auto-check passed

Categories

Questions about Resolve Rough Cut

What does Resolve Rough Cut do?

Assembling a short-form social rough cut from raw behind-the-scenes or vlog footage in the DaVinci Resolve MCP. Resolve Rough Cut is an agent skill from samuelgursky/davinci-resolve-mcp. Assembling a short-form social rough cut from raw behind-the-scenes or vlog footage in the DaVinci Resolve MCP.

When should I use Resolve Rough Cut?

Resolve Rough Cut fits situations like: tasks that involve MCP servers.

How do I install Resolve Rough Cut in Claude Code?

Run `npx skills add samuelgursky/davinci-resolve-mcp --skill resolve-rough-cut -a claude-code`. Or copy the skill folder (.agents/skills/resolve-rough-cut in samuelgursky/davinci-resolve-mcp) into .claude/skills/resolve-rough-cut in your project. Claude Code loads it when a task matches its description.

How do I install Resolve Rough Cut in Codex?

Run `npx skills add samuelgursky/davinci-resolve-mcp --skill resolve-rough-cut -a codex`. Or copy the skill folder (.agents/skills/resolve-rough-cut in samuelgursky/davinci-resolve-mcp) into .agents/skills/resolve-rough-cut in your project. Codex loads it when a task matches its description.

Can I use Resolve Rough Cut in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add samuelgursky/davinci-resolve-mcp --skill resolve-rough-cut -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/resolve-rough-cut, .gemini/skills/resolve-rough-cut, .github/skills/resolve-rough-cut and .opencode/skills/resolve-rough-cut in your project.

What does Resolve Rough Cut need to run?

Going by SKILL.md and its folder, Resolve Rough Cut needs the command-line tools its instructions call (python3, pip and git). Our summary lists: Python 3.

Does Resolve Rough Cut access the network?

SKILL.md contains no URLs. Its commands use pip and git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Resolve Rough Cut safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Resolve Rough Cut use?

Resolve Rough Cut is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Resolve Rough Cut use?

About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Resolve Rough Cut?

Skills that share tags, products or a category with Resolve Rough Cut: Linkdigest Social Link Reader (sickn33/agentic-awesome-skills, 47k stars), Taisly Social Media Posting (taisly/agent, 217 stars), Tiktok Shop Operator (aronhy/tiktok-agent-skills, 168 stars) and MCP Server Builder (anthropics/skills, 180k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Resolve Rough Cut?

samuelgursky (a GitHub user) maintains it in samuelgursky/davinci-resolve-mcp, which has 3,448 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 9, 2026.

Source: samuelgursky/davinci-resolve-mcp on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.