# Project: editing through an MCP server
You control my editing app through an MCP server. The app is open on my screen and I can see every change.
## Safety first
- I always work on a duplicate project or a duplicated timeline. At the start of each session, ask me to confirm the name of the timeline or comp you may edit. Touch nothing else.
- Read before you write. Start with the read only tools (list projects, list timelines or comps, list clips, get markers) and summarize what you see.
- Never delete media, bins, timelines or comps. If something should go, move it to a bin or folder called `_to_delete` and tell me.
- If a tool can run raw scripts (ExtendScript, Python, JavaScript), show me the script and explain it in plain words before running it.
- Never start a render or export unless I ask for it in this session.
## How to work
1. Restate the task as a numbered plan with the exact tools you will call.
2. Do the first step only, then tell me what changed and where to look (timeline name, timecode, track).
3. Continue step by step. If a tool errors, stop and show me the error. Do not retry with a different, riskier tool.
4. Use markers to flag anything you are not sure about, named `AI CHECK: <reason>`.
## Project facts (fill these in)
- App and version:
- Edition (Resolve Free or Studio):
- Timeline fps and resolution:
- Naming style for clips and bins:
Before you run it Fill in anything in [brackets]. If it edits a project, use a duplicate and read the agent's plan before you say go
# Project: motion graphics in Remotion
This folder is a Remotion project. I am a video editor, not a developer. Explain changes in plain words.
## Setup facts
- Preview: `npm run dev` (Remotion Studio). I keep it open in another terminal.
- Render: `npx remotion render <CompositionId> out/<name>.mp4`
- Remotion Agent Skills are installed (`npx remotion skills add`). Use them for anything Remotion specific before guessing an API.
- Brand rules live in `brand/DESIGN.md`. Read it before you design anything.
## Video rules
- Default composition: 1920x1080, 30 fps. Vertical versions: 1080x1920, same fps.
- Never change fps or dimensions of an existing composition unless I ask.
- Express all timing in frames, and name it: `const IN = 12; const HOLD = 60;`
You make motion graphics or explainers in code with Claude Code and Remotion, and you want every session to follow the same rules for timing, fonts and renders
# Project: FFmpeg editing folder
I edit videos here with FFmpeg through you. Treat my footage like a client's footage.
## Folders
- `raw/` original files. READ ONLY. Never write, move, rename or delete anything in here.
- `work/` temporary files. You can create and delete files here.
- `out/` finished exports only.
- `logs/` one text file per job with the exact commands you ran.
## Rules
- Run `ffprobe` on every input before you build a command. Report resolution, fps, codec, duration and audio channels.
- Keep the source fps and resolution unless I ask for something else.
- Prefer stream copy (`-c copy`) for simple trims on keyframes. Re-encode when cuts must be frame accurate and say so.
---
name: cut-silences
description: Find pauses and dead air in a talking head video with ffmpeg silencedetect, propose a cut list, and export a tightened version. Use when the user asks to cut silences, tighten a take, or make a jump cut edit.
argument-hint: <video file> [min pause in seconds, default 0.6]
---
# Cut silences
Input: $ARGUMENTS
1. Run `ffprobe` on the file and report duration, fps and audio channels.
2. Detect silence on the first audio stream:
`ffmpeg -hide_banner -i INPUT -map 0:a:0 -af silencedetect=noise=-35dB:d=MIN_PAUSE -f null - 2> work/silence.txt`
If no audio stream exists, stop and tell the user.
---
name: captions
description: Transcribe a video locally with Whisper, build clean SRT captions with readable line lengths, and optionally burn them in. Use when the user asks for captions, subtitles, an SRT or burned in text.
argument-hint: <video file> [burn] [language]
---
# Captions
Input: $ARGUMENTS
1. Extract audio: `ffmpeg -i INPUT -vn -ac 1 -ar 16000 work/audio.wav`
2. Transcribe with word timestamps (ask which Whisper the user has installed if unsure):
`whisper work/audio.wav --model small --word_timestamps True --output_format json --output_dir work`
3. Build captions from the word timings:
---
name: shorts
description: Find the strongest self contained moments in a long video from its transcript and export vertical 9:16 clips for review. Use when the user asks for shorts, reels, TikToks or clips from a long video.
argument-hint: <video file> [number of clips, default 5] [max seconds, default 45]
---
# Shorts from a long video
Input: $ARGUMENTS
1. Transcribe with word timestamps (see the captions skill) into `work/transcript.json`. Read only the transcript, do not try to watch the video.
2. Find candidate moments that:
- make sense with no context from earlier in the video
- open with a strong first sentence (a claim, a question, a number or a surprise) inside the first 2 seconds
---
name: qa-render
description: Run technical checks on a finished video file (specs, loudness, black frames, silence, duration) and report pass or fail. Use before delivering or uploading any export.
argument-hint: <video file> [target: youtube | broadcast | social]
disable-model-invocation: true
---
# QA a render
Input: $ARGUMENTS
Run each check, then print a table with check, result, pass or fail.
1. Specs with ffprobe: container, codec, resolution, fps, duration, audio codec, channels, sample rate. Compare with the delivery spec in CLAUDE.md if there is one.