analyze-video
Internal sub-procedure (not a standalone entry point) — the shared footage-analysis pipeline that produces audio transcripts,…
Create a new ButterCut library. Gather library info (name, footage location, language, transcript proofreading) and scaffold the library. Use when the user wants to start a **new** library. Libraries are containers of footage and footage analysis (transcripts, contact sheets,
$ npx -y skills add barefootford/buttercut --skill create-library --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/create-libraryContext preview
The summary Claude sees to decide when to auto-load this skill.
Create a new ButterCut library. Gather library info (name, footage location, language, transcript proofreading) and scaffold the library. Use when the user wants to start a **new** library. Libraries are containers of footage and footage analysis (transcripts, contact sheets,
name: create-library description: Create a new ButterCut library. Gather library info (name, footage location, language, transcript proofreading) and scaffold the library. Use when the user wants to start a **new** library. Libraries are containers of footage and footage analysis (transcripts, contact sheets, etc). User's may also refer to Libraries as "projects" or similiar. Ask them to confirm if they want a new Library (footage container) or just a new cut (roughcut, select, etc) if unsure.
This skill is performed in the main thread.
Before any library setup, check if `libraries/settings.yaml` exists. If not, copy from template:
cp templates/settings_template.yaml libraries/settings.yaml
If no previous `settings.yaml` was present, use `AskUserQuestion` to ask the user to confirm or change their defaults (editor and `whisper_model`).
Editor options (label shown to user → value to save):
`whisper_model` options:
Save the shortcode (`fcpx` / `premiere` / `resolve`) to `libraries/settings.yaml`.
First, guard against clobbering an existing library. Once you have a candidate name (after question 1 below), check:
ruby lib/buttercut/library.rb <name> exists # exits 0 if it does, 1 if not
If it already exists, stop creating — the user is really resuming or adding footage. Switch to the `process-library` skill instead.
Ask the user these questions one at a time — never all at once.
1. **What do you want to call this project library?**
2. **Where are the footage files located?**
3. **What language is spoken in these videos?**
4. **Can I proofread the transcripts after they're generated?**
Read the `editor` from `libraries/settings.yaml` — you'll pass it into the create call next.
`Library.create` is the one operation that doesn't have a plain CLI form (kwarg-heavy). Run it via `ruby -e`. It creates the directory tree (transcripts/, contact_sheets/, summaries/, cuts/, plans/, misc/), ffprobes each video for duration, and writes library.yaml in one call. `media_paths` takes videos and images together — the type is inferred from each file's extension:
ruby -e "require_relative 'lib/buttercut/library'; \
Library.create('my-library', \
language: 'en', \
editor: 'fcpx', \
transcript_refinement: true, \
media_paths: ['/abs/foo.mov', '/abs/title-card.png'])"Each video entry starts with empty `transcript`, `contact_sheet`, and `summary` — empty means "todo", filename presence means "done." Image entries get only an empty `summary` (no transcript, contact sheet, or duration — stills are timeless).
The library now exists but no footage has been analyzed. Continue straight into the `process-library` skill to analyze the footage end-to-end. Read that skill and continue processing the library.
Tell the user: "Library setup complete. Found [N] videos ([55 minutes of footage]). Starting footage analysis..." then proceed with `process-library` against the library you just created.
This is the source code for the core ButterCut XML generator and video editing agent. If you love or hate Docker, have opinions on types, and have a favorite text editor, this is the spot for you.
Internal sub-procedure (not a standalone entry point) — the shared footage-analysis pipeline that produces audio transcripts,…
Backs up user libraries and all their contents (external video excluded). This skill can also be useful when you need to restore…
The ButterCut home menu — welcome the user back, then ask what they'd like to do (start a new cut, add footage to a library, a…
The ButterCut home menu — welcome the user back, then ask what they'd like to do (start a new cut, add footage to a library, a…
Builds a contact sheet from a video clip — evenly spaced frames laid out in a single grid image, each with its hh:mm:ss timestamp…
Build a cut from a library — scene, selects, roughcut, custom task, or an edit from a written script. Starts by asking what kind…