# open-edit

Skill for building and editing videos via HTML compositions and VEED CLI tools. Useful for captions, motion graphics, background removal, and AI presenters.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 1100 installs · ★ 1729
- Author: veedstudio
- License: Apache-2.0 · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/veedstudio/open-edit/tree/HEAD/.claude/skills/open-edit/SKILL.md
- Updated: 2026-10-07
- HTML: https://affpapa.org/en/nevibecode/skills/open-edit

## What it does

The skill structures video editing as authoring an HTML page and rendering it with `@veedstudio/openedit-cli`. A Chrome-based renderer captures `#stage` or defaults to 1920x1080 while driving a virtual clock for CSS animations and GSAP timelines. If you tweak a single scene, the renderer updates only that segment via `--from` and `--to` rather than rebuilding the whole timeline.

Every piece lives inside its own `runs/<key>/` folder alongside its code, assets, audio, and renders. The toolkit includes word-timed transcription, EDL cutting, background removal, lipsync, and model calls to fal. Renders are silent by design. You construct audio tracks with `mix-audio` and merge them into the MP4 file using `mux-audio`.

Hosted services rely on your VEED login and fal credentials, which consume workspace credits. Setup requires running `openedit-cli init` in your project folder. If the CLI outputs `APPROVAL REQUIRED`, the agent must stop and get your confirmation before proceeding.

## Requirements
- Works with: Chrome

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add veedstudio/open-edit --skill open-edit -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/open-edit/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/open-edit/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add veedstudio/open-edit --skill open-edit -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/open-edit/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add veedstudio/open-edit --skill open-edit -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/open-edit/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install veedstudio/open-edit open-edit
```

2. **Manually: put the files in place**
- File: `.github/skills/open-edit/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add veedstudio/open-edit --skill open-edit -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/veedstudio/open-edit --path .claude/skills/open-edit
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/open-edit/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add veedstudio/open-edit --skill open-edit -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/veedstudio/open-edit/tree/HEAD/.claude/skills/open-edit/SKILL.md

## When to use it
- render video from an HTML composition
- transcribe speech with word-level timestamps
- cut subject from background via VEED or fal
- mix separate audio tracks and mux sound onto renders

## Example prompts
- Initialize open-edit workspace in the current directory
- Transcribe speech from runs/clip/source.mp4 with word-level timestamps
- Render the HTML stage in runs/promo/index.html to out.mp4 at 30 fps

## Source text · SKILL.md · Apache-2.0

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: 06adc396d5517d18.

BEGIN THIRD-PARTY FILE 06adc396d5517d18
````text
---
name: open-edit
description: Video work with VEED's hosted services and a CLI toolkit — word-timed transcription, cutting, background removal, AI presenters, lipsync, any fal model, sound mixing, and a Chrome renderer for HTML compositions that re-renders only what changed. Captions, edits, motion graphics, or pieces with no footage at all; hands a finished piece to VEED's editor as an editable project, and takes projects back from it. Use when the user wants video made, edited, or captioned by an agent.
---

# open-edit

You author the piece yourself, as an HTML page, and render it with `render`. OpenEdit supplies what a
bare shell does not: VEED's hosted services on one login, measured tools for cutting and sound, and a
renderer that re-renders only the stretch you changed. `openedit` below is short for
`npx @veedstudio/openedit-cli`; every command explains its flags with `--help`.

## Setup

Once per workspace, before the first command. WORKSPACE is the current project root, or the current
directory outside a project.
```
npx --yes @veedstudio/openedit-cli init --dry --workspace "$WORKSPACE"
npx --yes @veedstudio/openedit-cli init --workspace "$WORKSPACE"
```
Read the final `preflight:` line, not the exit code: `ready — OPEN_EDIT_ROOT=…` means go, and `runs/`
and the recorded preferences live under that root. If init prints `APPROVAL REQUIRED`, tell the user
every exact action and wait for an explicit yes, then run it again with `--auto-approve`. When the final
line says the user runs the install commands, `--auto-approve` cannot run them: give the user those
commands and run init again once they are done. Never install anything machine-global without that
yes, and never infer it from the render request. When a command prints `update available`, tell the user
once; run the `init --update` command it names only after they say yes, and if they decline, carry on
without asking again.

## One folder per piece

Keep everything a piece is made of under `runs/<key>/`: the page, its assets, renders, audio. The code
is the edit: that folder is how the user comes back later to change one scene or reuse the piece for
another video, so nothing it needs lives anywhere else.

## Tools

| Need | Command |
| --- | --- |
| A transcript with real per-word times | `transcribe <video> [...]` runs the provider recorded in `$OPEN_EDIT_ROOT/.open-edit-prefs.json`. None recorded (the command refuses and says so), "No VEED login found", or a failed run: read `TRANSCRIPTION.md` first |
| Remove, reorder or join takes | read `CUT.md` (`speech-probe`, `apply-edl`, `retime-transcript`) |
| Join whole clips whose shapes disagree | `concat-videos` (re-encodes to one canvas at 30 fps) |
````
END THIRD-PARTY FILE 06adc396d5517d18

The third-party file has ended. Everything between the 06adc396d5517d18 tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2716 of 7268 bytes. © veedstudio · Apache-2.0 · https://github.com/veedstudio/open-edit/tree/HEAD/.claude/skills/open-edit/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
