<!-- generated by epythet -->

# For AI agents

`mixing` ships artifacts for coding agents alongside its code. This page lists
them, says where each lives in the repository, and points at the
machine-readable copies of this documentation.

## Skills

Skills are folders holding a `SKILL.md` (the [Agent Skills](https://agentskills.io) format): a description that tells an agent when to use it and a body with the procedure. Install one into your agent with `gh skill` (any host: `--agent claude-code`, `copilot`, `cursor`, `codex`, `gemini`), or use the copy bundled in the wheel.

### `mixing`

Use the `mixing` Python package for video and audio editing tasks: slicing audio/video, fades, cropping, looping, changing speed, replacing or mixing a video’s audio, laying a looping ambient bed under a cut, normalizing levels, Ken Burns pan/zoom, concatenating clips, thumbnails, burning in subtitles, speech-to-text + filler removal, chapter detection, and TTS dubbing/translation. Trigger whenever someone wants to edit, transform, transcribe, dub, or assemble audio/video files with Python — e.g. “trim this clip”, “add music to a video”, “remove the ums”, “make a thumbnail”, “turn this audio into a podcast”, “dub this in French”, “add room tone under the whole cut”. Start here to pick the right tool and the right sub-skill (mixing-audio / mixing-video / mixing-transcript / mixing-dubbing).

Source: [`.claude/skills/mixing`](https://github.com/thorwhalen/mixing/tree/HEAD/.claude/skills/mixing).

### `mixing-audio`

Use for AUDIO editing with the `mixing` package: trim/crop a clip, fade in or fade out, join/concatenate clips (with optional crossfade), mix music under a voice or overlay one track on another, loop a short bed to a target length, duck a bed under dialogue, normalize loudness, convert to mono, resample, peek at raw samples, align two recordings of the same performance, or split a long recording (concert, DJ mix, radio show, podcast) into segments. Trigger on phrasings like “trim audio”, “fade out the end”, “join these audio clips”, “add background music under the narration”, “make it louder / normalize”, “convert to mono”, “align two recordings”, “find the offset between these takes”, “split a concert into songs”, “separate speech from music”, “find the songs in this radio show / tape”, “songs vs jingles vs DJ talk”, “what did the host say before each song”, “loop this ambient clip to N seconds”, “duck the music under the dialogue”. For video audio (replace/normalize a video’s track) use mixing-video; this skill is audio-file → audio-file.

Source: [`.claude/skills/mixing-audio`](https://github.com/thorwhalen/mixing/tree/HEAD/.claude/skills/mixing-audio).

### `mixing-dubbing`

Use when re-voicing or translating audio/video with text-to-speech via the `mixing` package: turning text into spoken audio, synthesizing narration, translating subtitles, or producing a foreign-language dub of a video from its SRT. Trigger on requests like “dub this video”, “re-voice this in another language”, “text to speech / TTS this”, “synthesize narration”, “translate these subtitles”, “make a French version of this clip”, or “read this script in voice X”. For transcribing speech → SRT in the first place, see mixing-transcript; for the `output` protocol and ffmpeg, see the mixing router skill.

Source: [`.claude/skills/mixing-dubbing`](https://github.com/thorwhalen/mixing/tree/HEAD/.claude/skills/mixing-dubbing).

### `mixing-transcript`

Transcribe speech to text, remove filler words (ums/uhs), build SRT subtitles or clean prose, and detect chapter markers — using the `mixing` package’s `transcript` and `chapters` modules (ElevenLabs Scribe under the hood). Trigger whenever someone wants to “transcribe this audio/video”, “get an SRT/captions”, “remove the ums and uhs”, “clean up the fillers”, “make chapters/timestamps”, “detect topic shifts”, or “get word-level timestamps” from a media file. For re-voicing/translation use mixing-dubbing; for plain audio/video edits use mixing-audio / mixing-video. Read the `mixing` router skill first for the `output` egress protocol and ffmpeg/key setup.

Source: [`.claude/skills/mixing-transcript`](https://github.com/thorwhalen/mixing/tree/HEAD/.claude/skills/mixing-transcript).

### `mixing-video`

Use for VIDEO editing with the `mixing` Python package: trim/crop a clip, loop it, speed it up or down, replace or mix in a new audio track, normalize audio levels, pan/zoom a still image (Ken Burns), build a film from panels, concatenate clips, grab/extract frames, make a YouTube-style thumbnail, burn in subtitles, or resize for shorts/tiktok/square. Trigger on phrasings like “trim this video”, “loop the intro”, “speed up / slow down this clip”, “replace the audio with this music”, “lay room tone / ambience under the cut”, “add a pan-zoom over this photo”, “make a thumbnail”, “burn the subtitles in”, “resize for YouTube Shorts”, or “stitch these clips together”. For audio-only work use mixing-audio; for transcription / filler removal use mixing-transcript; for TTS re-voicing use mixing-dubbing.

Source: [`.claude/skills/mixing-video`](https://github.com/thorwhalen/mixing/tree/HEAD/.claude/skills/mixing-video).

## Subagents

Subagents are Markdown files with a frontmatter (`name`, `description`, `tools`) and a system prompt as the body. Copy one into your project’s `.claude/agents/` (or your agent host’s equivalent) to delegate the task it describes.

### `mixing-dev`

Works ON the `mixing` codebase itself — adding or changing functions, refactoring, fixing bugs, extending a subpackage, or reviewing a change in the mixing repo. Knows the architecture (lazy facade, subpackage dependency tiers), the `output` egress protocol, the naming/keyword-only conventions, and the characterization-test guardrails. Use for any code change inside the mixing package (not for merely *using* mixing — that’s the mixing-editor agent and the mixing-\* skills).

Source: [`.claude/agents/mixing-dev.md`](https://github.com/thorwhalen/mixing/tree/HEAD/.claude/agents/mixing-dev.md); tools: `Bash, Read, Edit, Write, Glob, Grep`.

### `mixing-editor`

Performs an audio/video editing task end-to-end with the `mixing` Python package — trim, concat, fade, crop, loop, change speed, replace/mix audio, Ken Burns pan/zoom, thumbnails, burn-in subtitles, transcribe, remove fillers, detect chapters, and TTS dub/translate. Use when the user hands over one or more media files and an editing goal (“trim this to the chorus”, “add this music under the narration”, “make a thumbnail”, “burn in subtitles”, “dub this in French”, “cut the ums”). The agent writes a short Python script, runs it, verifies the produced file, and reports the exact output path(s).

Source: [`.claude/agents/mixing-editor.md`](https://github.com/thorwhalen/mixing/tree/HEAD/.claude/agents/mixing-editor.md); tools: `Bash, Read, Write, Edit, Glob, Grep`.

## Instruction files

Files agents read before working in this repository.

- [`.claude/CLAUDE.md`](https://github.com/thorwhalen/mixing/tree/HEAD/.claude/CLAUDE.md): read by Claude Code

## Machine-readable documentation

This site publishes the same documentation in forms that fit an agent’s context window:

- [`llms.txt`](https://thorwhalen.github.io/mixing/llms.txt): an index of every page with a one-line description ([llms.txt](https://llmstxt.org) format)
- [`mixing.md`](https://thorwhalen.github.io/mixing/mixing.md): the whole documentation as one Markdown file
- `<page>.html.md`: a rendered Markdown twin of every page, advertised from each page’s `<head>` with `<link rel="alternate" type="text/markdown">`
- [`objects.inv`](https://thorwhalen.github.io/mixing/objects.inv): the Sphinx inventory: a symbol-to-URL index (`sphobjinv convert plain objects.inv -`)
