Skip to main content
skill Claude Code CX Codex Cursor GitHub Copilot

cli-anything-shotcut — Claude Code skill: Shotcut editing without GUI

A skill that hands an agent a shell for Shotcut: timelines, filters and renders through MLT XML, with no GUI in the loop.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add HKUDS/CLI-Anything --skill cli-anything-shotcut -a claude-code
Open on GitHub

What cli-anything-shotcut does

cli-anything-shotcut gives an agent commands for Shotcut projects. Edits land in MLT XML, so the .mlt file it writes still opens in Shotcut itself. No window to click, no screenshots to read.

The media model takes two calls. media import returns a clip_id, then add-clip puts that clip on a track at a given time. After that come trim, split and move-clip, filters with volume-envelope for keyframed levels and duck for dipping music under a voice, transitions between tracks, blend modes and picture-in-picture placement. Session history carries undo and redo; render --preset writes the output file.

Prerequisites are where this bites. You need Python 3.10+, Shotcut on the machine, melt for rendering and ffmpeg with ffprobe for probing media. Skip melt and the timeline builds while the render fails. The skill and the CLI also install as separate steps, which is easy to miss.

What it helps with

  • build a timeline from imported clips without launching Shotcut
  • split a clip at a timecode and reset its in and out points
  • keyframe volume so music drops under the voice
  • attach a filter to one clip or a whole track
  • render the project to a file with an export preset

Example prompts for the agent

  • Import the files in `footage/`, add a video track and place the clips in order.
  • Open `my_project.mlt`, trim `clip0` and save the project.
  • Build a ducking envelope under the voiceover and render it with `--preset`.

How to install cli-anything-shotcut

1Skills CLI (Vercel)

npx skills add HKUDS/CLI-Anything --skill cli-anything-shotcut -a claude-code

2Manually: put the files in place

~/.claude/skills/cli-anything-shotcut/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/cli-anything-shotcut/

From the same set18

The whole set →
cli-hub-meta-skill HKUDS A skill that gives agents a catalog of professional command-line tools built for AI. Search, install, and run CLIs for video, design, AI, and development without leaving your editor. Claude Code CX Codex Cursor +1 5,300installs cli-anything HKUDS Builds a Python harness with Click commands for any GUI application or repository. Generates REPL, tests, and docs following the CLI-Anything methodology. Claude Code CX Codex Cursor +1 2,100installs cli-anything-blender HKUDS A skill that adds a stateful command-line interface for editing Blender 3D scenes. Use it when an agent needs to assemble a scene, assign materials, or render a frame without manual clicking. Claude Code CX Codex Cursor +1 941installs cli-anything-obsidian HKUDS Manage an Obsidian vault from the terminal: read, create, search, and update notes or run editor commands. It suits agents that need to work without the GUI. Claude Code CX Codex Cursor +1 917installs cli-anything-notebooklm HKUDS Experimental harness to manage Google NotebookLM through a local CLI. It lets agents list notebooks, query sources, generate artifacts, and download files. Claude Code CX Codex Cursor +1 801installs cli-anything-libreoffice HKUDS Skill for creating and editing Writer, Calc, and Impress documents from the CLI without a GUI. Produces real ODF files (ZIP with XML) — useful when an AI agent needs to assemble a report, spreadsheet, or presentation programmatically. Claude Code CX Codex Cursor +1 669installs cli-anything-drawio HKUDS A command-line harness over Draw.io: the skill hands your agent commands to build a diagram step by step and export it to PNG, PDF or SVG. Claude Code CX Codex Cursor +1 666installs cli-anything-freecad HKUDS Turns FreeCAD into a scriptable CLI for your agent: 258 commands for primitives, sketches, PartDesign features and headless export. Claude Code CX Codex Cursor +1 643installs

Similar

ecosystem-primer langchain-ai Guides framework selection across LangChain, LangGraph, and Deep Agents before writing code. Maps requirements to the right layer, env vars, and quickstarts. Claude Code CX Codex Cursor +1 8,000installs kimi-delegate amElnagdy Hands implementation to the Kimi Code CLI as a background worker, then leaves review and commit to your agent. Useful when you want to stay the reviewer. Claude Code CX Codex Cursor +1 4,400installs browser-mcp-agent antibrow Gives an agent a real browser through MCP calls: navigate, click, fill forms, screenshot, run JS. A named profile keeps the session logged in between runs. Claude Code CX Codex Cursor +1 105,700installs ccf-common mikubaka88 Shared preflight module for the CCFA skill suite. It configures routing, working directories, and evidence standards before specialist skills run. Claude Code CX Codex Cursor +1 2,000installs build-iterated-agentic-loop humanlayer Turns a repeatable agent task into a repo-local skill plus a GitHub Actions workflow that runs a coding agent on a schedule, by hand, or both. Claude Code CX Codex Cursor +1 1,400installs clean-architecture wondelai A skill that keeps business rules independent of framework and database by enforcing one rule: source code dependencies point inward. Claude Code CX Codex Cursor +1 7,200installs setup-matt-pocock-skills Matt Pocock This skill configures a repository for Matt Pocock's engineering skills by setting its issue tracker, triage labels, and domain docs layout. Run it before using the other skills. Claude Code 1,052,851installs to-tickets Matt Pocock Turns a plan, spec, or conversation into small end-to-end tickets with explicit blockers. Use it to agree on the work breakdown before tickets go to a tracker. Claude Code 711,230installs

Questions about cli-anything-shotcut

How do I install cli-anything-shotcut in Claude Code?

Run npx skills add HKUDS/CLI-Anything --skill cli-anything-shotcut -a claude-code — the skill lands at ~/.claude/skills/cli-anything-shotcut/SKILL.md. The CLI itself is a separate install: pip install cli-anything-shotcut.

What does cli-anything-shotcut do?

It gives an agent commands to edit Shotcut projects through MLT XML: tracks, clips, filters, transitions and rendering. Sessions keep undo and redo history.

What has to be installed first?

Python 3.10+, Shotcut, melt for rendering and playback, and ffmpeg with ffprobe for media probing.

Source text

SKILL.md · Apache-2.0
---
name: "cli-anything-shotcut"
description: >-
  Command-line interface for Shotcut - A stateful command-line interface for video editing, built on the MLT XML format. Designed for AI ag...
---

# cli-anything-shotcut

A stateful command-line interface for video editing, built on the MLT XML format. Designed for AI agents and power users who need to create and edit Shotcut projects without a GUI.

## Installation

This CLI is installed as part of the cli-anything-shotcut package:

```bash
pip install cli-anything-shotcut
```

**Prerequisites:**
- Python 3.10+
- `melt` (MLT CLI) — required for rendering and playback
- `ffmpeg` / `ffprobe` — required for media probing
- `shotcut` must be installed on your system


## Usage

### Basic Commands

```bash
# Show help
cli-anything-shotcut --help

# Start interactive REPL mode
cli-anything-shotcut

# Create a new project
cli-anything-shotcut project new -o project.json

# Run with JSON output (for agent consumption)
cli-anything-shotcut --json project info -p project.json
```

### REPL Mode

When invoked without a subcommand, the CLI enters an interactive REPL session with undo/redo support:

```bash
cli-anything-shotcut
# or with a project:
cli-anything-shotcut --project my_project.mlt
```

#### REPL Commands

**Workflow:** Always `media import` first to get a `clip_id`, then use `add-clip` to place it on the timeline.

**Project & Session:**
- `new [profile]` — Create new project (default: `hd1080p30`)
- `open <path>` — Open `.mlt` file
- `save [path]` — Save project
- `info` — Show project info
- `xml` — Print raw MLT XML
- `status` — Show session status
- `undo` / `redo` — Navigate operation history

**Media (two-step model):**
- `media import <file> [--caption name]` — Import file into project bin, returns `clip_id` (e.g., `clip0`)
- `media` — List all imported media
- `probe <file>` — Analyze a media file

**Timeline:**
- `add-track <video|audio> [name]` — Add a track
- `tracks` — List all tracks
- `show` — Visual timeline overview
- `add-clip <clip_id> <track> [in] [out] [--at time]` — Place imported clip on track
- `clips <track>` — List clips on a track
- `remove-clip <track> <clip>` — Remove a clip
- `trim <track> <clip> [--in tc] [--out tc]` — Trim clip
- `split <track> <clip> <at>` — Split clip at timecode

**Filters:**
- `list-filters [video|audio]` — Browse available filters
- `filter-info <name>` — Show filter details
- `add-filter <name> [--track n] [--clip n] [key=val ...]` — Add filter to clip, track, or global
- `filters [--track n] [--clip n]` — List active filters
- `remove-filter <idx> [--track n] [--clip n]` — Remove filter by index
- `set-filter <idx> <param> <value> [--track n] [--clip n]` — Set filter parameter
- `volume-envelope [--track n] [--clip n] TIME=LEVEL ...` — Keyframed volume (e.g., `00:00:00.000=1.0 00:00:03.000=0.35`)
- `duck [--track n] [--clip n] START..END ...` — Ducking envelope (e.g., `00:00:06.000..00:00:09.000`)

**Export:**
- `presets` — List export presets
- `render <output> [--preset name]` — Render to video file


## Command Groups


### Project

Project management: new, open, save, info.

| Command | Description |
|---------|-------------|
| `new` | Create a new blank project |
| `open` | Open an existing .mlt project file |
| `save` | Save the current project |
| `info` | Show detailed project information |
| `profiles` | List available video profiles |
| `xml` | Print the raw MLT XML of the current project |


### Timeline

Timeline operations: tracks, clips, trimming.

| Command | Description |
|---------|-------------|
| `show` | Show the timeline overview |
| `tracks` | List all tracks |
| `add-track` | Add a new track to the timeline |
| `remove-track` | Remove a track by index |
| `add-clip` | Add an imported clip to a track by clip_id; supports `--at` for absolute placement |
| `remove-clip` | Remove a clip from a track |
| `move-clip` | Move a clip between tracks or positions |
| `trim` | Trim a clip's in/out points |
| `split` | Split a clip into two at the given timecode |
| `clips` | List all clips on a track |
| `add-blank` | Add a blank gap to a track |
| `set-name` | Set a track's display name |
| `mute` | Mute or unmute a track |
| `hide` | Hide or unhide a video track |


### Filter Group

Filter operations: add, remove, configure effects.

| Command | Description |
|---------|-------------|
| `list-available` | List all available filters |
| `info` | Show detailed info about a filter and its parameters |
| `add` | Add a filter to a clip, track, or globally |
| `remove` | Remove a filter by index |
| `set` | Set a parameter on a filter |
| `list` | List active filters on a target |
| `volume-envelope` | Create or replace a keyframed volume envelope on a track or clip |
| `duck` | Build a practical ducking envelope over one or more time windows |


### Media

Media operations: probe, list, check files.

| Command | Description |
|---------|-------------|
| `import` | Import a media file into the project bin |
| `probe` | Analyze a media file's properties |
| `list` | List all media clips in the current project |
| `check` | Check all media files for existence |
| `thumbnail` | Generate a thumbnail from a video file |


### Export

Export/render operations.

| Command | Description |
|---------|-------------|
| `presets` | List available export presets |
| `preset-info` | Show details of an export preset |
| `render` | Render the project to a video file |


### Transition Group

Transition operations: dissolve, wipe, and other transitions.

| Command | Description |
|---------|-------------|
| `list-available` | List all available transition types |
| `info` | Show detailed info about a transition type |
| `add` | Add a transition between two tracks |
| `remove` | Remove a transition by index |
| `set` | Set a parameter on a transition |
| `list` | List all transitions on the timeline |


### Composite Group

Compositing: blend modes, PIP, opacity.

| Command | Description |
|---------|-------------|
| `blend-modes` | List all available blend modes |
| `set-blend` | Set the blend mode for a track |
| `get-blend` | Get the current blend mode for a track |
| `set-opacity` | Set the opacity of a track (0.0-1.0) |
| `pip` | Set picture-in-picture position for a clip |


### Session

Session management: status, undo, redo.

| Command | Description |
|---------|-------------|
| `status` | Show current session status |
| `undo` | Undo the last operation |
| `redo` | Redo the last undone operation |
| `save` | Save session state to disk |
| `list` | List all saved sessions |

### Preview

Preview bundles and live preview sessions for iterative editing review.

| Command | Description |
|---------|-------------|
| `preview recipes` | List preview recipes |
| `preview capture` | Render a low-res preview bundle |
| `preview latest` | Return the latest existing bundle |
| `preview live start` | Start a live preview session and publish the first bundle |
| `preview live push` | Publish a new bundle into the live session |
| `preview live status` | Query current live-session state without rendering |
| `preview live stop` | Stop the live session without deleting artifacts |

Typical `quick` bundle contents:

- `preview.mp4`
- several sampled frames
- midpoint `hero.png`
- `summary.json` with project facts

Poll mode is supported:

```bash
cli-anything-shotcut --json --project edit.mlt preview live start --recipe quick --mode poll --source-poll-ms 500
```

`preview live status --json` includes session refs and a compact
`trajectory_summary` so agents can cheaply understand the latest few publishes.

Viewer commands:

```bash
cli-hub previews inspect /path/to/bundle-or-session
cli-hub previews html /path/to/bundle-or-session -o page.html
cli-hub previews watch /path/to/session --open
cli-hub previews open /path/to/bundle-or-session
```




## Examples


### Create a New Project

Create a new shotcut project file.

```bash
cli-anything-shotcut project new -o myproject.json
# Or with JSON output for programmatic use
cli-anything-shotcut --json project new -o myproject.json
```


### Interactive REPL Session

Start an interactive session with undo/redo support.

```bash
cli-anything-shotcut
# Enter commands interactively
# Use 'help' to see available commands
# Use 'undo' and 'redo' for history navigation
```


### Export Project

Export the project to a final output format.

```bash
cli-anything-shotcut --project myproject.json export render output.mp4 --overwrite
```


### Deterministic Timeline Reconstruction

For rebuilds, prefer absolute placement over append-only clip insertion:

```bash
cli-anything-shotcut --project myproject.mlt media import intro.mp4
cli-anything-shotcut --project myproject.mlt timeline add-clip clip0 \
  --track 1 --in 00:00:00.000 --out 00:00:04.000 --at 00:00:00.000

cli-anything-shotcut --project myproject.mlt media import broll.mp4
cli-anything-shotcut --project myproject.mlt timeline add-clip clip1 \
  --track 1 --in 00:00:10.000 --out 00:00:16.000 --at 00:00:08.000
```

- `--at` inserts blanks automatically when the target time lands in empty space.
- The CLI rejects overlap with an existing clip.
- Prefer explicit `--in` and `--out` values so later absolute placement remains unambiguous.

### Audio Automation

```bash
cli-anything-shotcut --project myproject.mlt filter volume-envelope \
  --track 2 \
  --point 00:00:00.000=1.0 \
  --point 00:00:03.000=0.35 \
  --point 00:00:05.000=1.0

cli-anything-shotcut --project myproject.mlt filter duck \
  --track 2 \
  --window 00:00:06.000..00:00:09.000 \
  --window 00:00:15.000..00:00:18.000 \
  --normal 1.0 --duck 0.25
```

The CLI maintains session state with:

- **Undo/Redo**: Up to 50 levels of history
- **Project persistence**: Save/load project state as JSON
- **Session tracking**: Track modifications and changes

## Output Formats

All commands support dual output modes:

- **Human-readable** (default): Tables, colors, formatted text
- **Machine-readable** (`--json` flag): Structured JSON for agent consumption

```bash
# Human output
cli-anything-shotcut project info -p project.json

# JSON output for agents
cli-anything-shotcut --json project info -p project.json
```

## For AI Agents

When using this CLI programmatically:

1. **Always use `--json` flag** for parseable output
2. **Check return codes** - 0 for success, non-zero for errors
3. **Parse stderr** for error messages on failure
4. **Use absolute paths** for all file operations
5. **Verify outputs exist** after export operations
6. **Prefer `timeline add-clip --at`** when recreating a known edit
7. **Review final renders** after keyframed volume or ducking changes
8. **Use `preview capture` or `preview live ...` to validate pacing, cuts, and filter effects visually**
9. **Read returned artifact paths** such as `hero.png` and `preview.mp4`; JSON payloads reference files on disk
10. **Use `preview live status --json` before reading the full `trajectory.json`**
11. **Use `cli-hub previews ...` only to inspect/open existing bundles or live sessions**

## More Information

- Full documentation: See README.md in the package
- Test coverage: See TEST.md in the package
- Methodology: See HARNESS.md in the cli-anything-plugin

## Version

1.0.0

© HKUDS · Apache-2.0 · HKUDS/CLI-Anything

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor