Skip to content
Content
Skill

/cassette-video-edit

Edit, trim, cut, caption, retime, combine, or export video, audio, and image files through Cassette. Use this skill whenever the user asks to change, preview, or render media in the project, even if they never say "Cassette" or name a tool, for example "trim the intro off

From plugin
oh-my-cassette
2001 skill1 MCP

Claude Code

$ npx -y skills add Cassette-Editor/oh-my-cassette --skill cassette-video-edit --agent claude-code

SKILL.md

cassette-video-edit.SKILL.md
name: cassette-video-edit
license: MIT
description: Edit, trim, cut, caption, retime, combine, or export video, audio, and image files through Cassette. Use this skill whenever the user asks to change, preview, or render media in the project, even if they never say "Cassette" or name a tool, for example "trim the intro off demo.mp4", "add subtitles to this clip", "make a 30-second cut", "put a title on it", "export the video". Drives the tools of the `cassette` MCP server (oh-my-cassette), which relays a running conversation with the Cassette editing agent.

Oh My Cassette

The `cassette` MCP server is a local bridge to the Cassette video editor. Its editing tools come from the Cassette MCP service and change as Cassette evolves, so this skill deliberately names none of them. **The server's instructions and each tool's description are the source of truth**: read them, and when they disagree with anything you remember, they win.

Rules that hold for every version

1. **Follow the server.** Which tool to call, in what order, and how to route on a result are in the server instructions and the tool descriptions. Route on typed fields such as `status`, never on prose. 2. **Relay the user's words.** When a tool takes the user's editing request, pass it exactly as the user wrote it: no rewriting, summarizing, translating, or expanding. The Cassette agent reads the project media itself. 3. **Ground every claim in a tool result.** What is on the timeline, which version it is, and where the editor link points come from the latest result, not from memory. 4. **Render only when asked.** Export or render only when the user asks to export, render, download, or finish. 5. **Say where the media goes.** When the user has not asked for Cassette by name in this conversation, tell them before the first upload that the files they named go to the Cassette service for editing, and go on once they agree.

Local files

  • Pass file paths as the user gave them, absolute or relative to the workspace. The bridge prepares

and uploads them and hands Cassette references in their place.

  • Only files the user named or that sit in the workspace. Never search the filesystem for media.
  • Files outside the workspace are refused unless the user adds their directory to

`CASSETTE_ALLOWED_ROOTS`. Only video, audio, and image files upload.

  • Video is transcoded on this machine with ffmpeg before it uploads, and audio or images Cassette

does not take as they are get converted. Long footage can take minutes.

  • Exported files are downloaded into `cassette-exports/` in the workspace. Use the local path the

result gives you; never invent one.

Long waits

Long work never fails just for taking long. A tool waits a bounded time and then returns a normal, non-error result that says the work is still going:

  • **`status: "preparing"`** comes from the bridge: the local files are still being prepared or

uploaded, and that work continues in the background. Tell the user the progress it reports, then call the same tool again with exactly the same arguments to keep waiting; it picks up the same work instead of starting over. Never keep calling for longer than the user is willing to wait: ask before you continue a long wait.

  • **`running`, `processing` and similar statuses** come from Cassette. How to continue (usually the

same tool with the id the result returns) is in the server instructions and the tool description.

  • Cancelling a call only stops waiting; the work goes on. Stop the work itself only when the user

asks, with the tool the server provides for that.

When the bridge itself reports a problem

Errors whose code starts with `bridge.` come from the local bridge, not from Cassette. Any other error code is Cassette's own: follow its message and the tool description.

| Code | What to do | | --- | --- | | `bridge.backend_unreachable` | A tool that names its request in an argument has already been sent again by the bridge while the call's wait lasted. If the message says the connection broke during the call, the work may still be running: call the same tool again with the same arguments to pick it up. If it says Cassette did not take the call, retry after `retry_after_seconds` when the error gives it. Otherwise call `cassette_bridge_status` once, tell the user the service is not reachable and at which URL, and retry only after it reports connected. | | `bridge.rate_limited` | Cassette is taking too many requests and did not run the call. Wait `retry_after_seconds` (from the error), then call the same tool again with the same arguments; do not retry sooner. | | `bridge.forbidden` | This account or grant cannot access Cassette. Ask the user to check that they signed in with the account of their projects. Do not repeatedly trigger login. | | `bridge.auth_unavailable` | Online authentication or secure credential storage is unavailable. Tell the user to restore the connection or unlock the system keyring, then retry. | | `bridge.unauthorized` | The service refused the token. Tell the user to run `oh-my-cassette login`. The browser handles email verification and consent. Restart the MCP host only if it cannot refresh tools. Do not repeatedly trigger login. | | `bridge.upgrade_required` | Tell the user to update the oh-my-cassette version their MCP host runs (the message links the steps: bump the `oh-my-cassette==` pin, or update the plugin). Do not retry. | | `bridge.protocol_unsupported` | The service at that URL is too old for this plugin (it does not speak MCP 2026-07-28). Tell the user the Cassette service must be updated. Do not retry. | | `bridge.file_not_found` | Ask the user for the correct path. | | `bridge.file_outside_workspace` | Ask the user to copy the file into the workspace, or to add its directory to `CASSETTE_ALLOWED_ROOTS`. When the message says the host started the bridge in a folder too wide to read from (the whole disk or the home folder), ask them to set `

Read more
@cassette-editor
Ships withoh-my-cassette

你的随身 AI 剪辑搭档 | Pocket AI co-editor for video montage — AI video editing plugin & MCP server for Claude Code, Codex, Hermes & OpenCode

2001 skill1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
200
Star history of Cassette-Editor/oh-my-cassette on GitHub, a chart by star-history.com

More skills from other plugins.

prompt-lookup

prompt-lookup

Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use…

@gh-f@gh-fInstall Skill
ppt-master

ppt-master

AI-driven presentation workflow for generating editable PPTX decks and slides, reconstructing page visuals, creating reusable…

@hugohe3@hugohe3Install Skill
morph-ppt

morph-ppt

Use this skill when the user wants a .pptx with smooth cross-slide animation — PowerPoint Morph transitions, Keynote-style…

officecli11d33k
@iofficeai@iofficeaiInstall Skill

Questions about cassette-video-edit.

Which coding agents can use cassette-video-edit?
cassette-video-edit installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.