Vox Director
Alisa0808/vox-director
Turn ONE topic into a finished Vox-style paper-collage explainer / ad video, end to end on the Atlas Cloud API + local ffmpeg — script, collage keyframes, motion, voice-over, music, captions, all…
Install and run erm, the local CLI that removes filler words / disfluencies (um, uh, er, erm, ah, hmm, mhm, mm, uh-huh and elongations) from spoken-audio recordings.
$ npx skills add dougcalobrisi/erm --skill erm -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install dougcalobrisi/erm erm --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/dougcalobrisi/erm.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/erm .claude/skills/erm && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "erm" agent skill from https://github.com/dougcalobrisi/erm/tree/main/skills/erm into .claude/skills/erm/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "erm", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/dougcalobrisi/erm/tree/main/skills/ermType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add dougcalobrisi/erm --skill erm -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install dougcalobrisi/erm erm --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dougcalobrisi/erm.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/erm .agents/skills/erm && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "erm" agent skill from https://github.com/dougcalobrisi/erm/tree/main/skills/erm into .agents/skills/erm/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "erm", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dougcalobrisi/erm --skill erm -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install dougcalobrisi/erm erm --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dougcalobrisi/erm.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/erm .cursor/skills/erm && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "erm" agent skill from https://github.com/dougcalobrisi/erm/tree/main/skills/erm into .cursor/skills/erm/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "erm", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/dougcalobrisi/erm.git --path skills/erm--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add dougcalobrisi/erm --skill erm -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install dougcalobrisi/erm erm --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dougcalobrisi/erm.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/erm .gemini/skills/erm && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "erm" agent skill from https://github.com/dougcalobrisi/erm/tree/main/skills/erm into .gemini/skills/erm/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "erm", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install dougcalobrisi/erm ermInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add dougcalobrisi/erm --skill erm -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/dougcalobrisi/erm.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/erm .github/skills/erm && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "erm" agent skill from https://github.com/dougcalobrisi/erm/tree/main/skills/erm into .github/skills/erm/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "erm", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dougcalobrisi/erm --skill erm -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install dougcalobrisi/erm erm --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dougcalobrisi/erm.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/erm .opencode/skills/erm && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "erm" agent skill from https://github.com/dougcalobrisi/erm/tree/main/skills/erm into .opencode/skills/erm/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "erm", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
ermInstall and run erm, the local CLI that removes filler words / disfluencies (um, uh, er, erm, ah, hmm, mhm, mm, uh-huh and elongations) from spoken-audio recordings.
Erm is an agent skill from dougcalobrisi/erm. Install and run erm, the local CLI that removes filler words / disfluencies (um, uh, er, erm, ah, hmm, mhm, mm, uh-huh and elongations) from spoken-audio recordings. Use when the user wants to install or set up erm, clean up a recording/podcast/voiceover, strip "ums" and "uhs" from audio, or asks which erm command to run. For fixing imperfect output or adjusting knobs, use the erm-tune skill instead.
Its SKILL.md is about 1.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Media & Creative, covering Text to speech and voice and Video production. It works with FFmpeg, Python and NVIDIA AI Platform. The repository describes itself as: Local CLI that strips disfluencies (um, uh, er, erm, ah, hmm, mhm, mm, uh-huh, etc) from recordings of English speech. The licence is MIT.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit af2fe92. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadAskUserQuestionFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
uvxffmpegbrewaptchocouvpipFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
doug.shFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Erm loads about 1.3k tokens when it runs. Until then it costs about 102 tokens; SKILL.md has 672 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Read, AskUserQuestionAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from dougcalobrisi/erm at commit af2fe92, republished under its MIT licence (© dougcalobrisi). 672 words, ~1,345 tokens.
.claude/skills/erm/SKILL.md (or your agent's skills folder).erm strips disfluencies from English speech audio. It transcribes with
faster-whisper, runs extra audio-domain detectors for fillers Whisper hides,
and splices with ffmpeg (energy-snapped, crossfaded, room-tone-matched).
When you need authoritative detail, resolve it in this order (each works in more environments than the last):
erm --help and erm validate --help — definitive flags and defaults; works once installed.usage, recipes, troubleshooting, etc.${CLAUDE_PLUGIN_ROOT}/docs/*.md and the
source of truth for flag defaults, ${CLAUDE_PLUGIN_ROOT}/src/erm/cli.py.Never guess flag names or defaults — read one of the above.
erm needs Python 3.11+ and ffmpeg/ffprobe on PATH.
ffmpeg -version. If missing, suggest the OS install
(brew install ffmpeg, apt install ffmpeg, choco install ffmpeg).uv --version succeeds, run erm straight
from PyPI with uvx erm … — no install step; uv fetches and caches the
environment on first run, so later runs are fast. Pin a version with
uvx erm@<version> … when needed. Verify: uvx erm --help.uv on PATH). Create an isolated env and
install from PyPI:python3 -m venv .venv
source .venv/bin/activate
pip install erm
erm --help # verifyLauncher convention. In the commands throughout this skill, erm means the
launcher you resolved above: prefix with uvx under tier 1
(e.g. uvx erm INPUT.wav --dry-run), or use plain erm after activating the
venv under tier 2.
Transcription runs on CPU by default (no setup). GPU is optional and needs the
CUDA runtime libs; --device auto falls back to CPU. Add the CUDA wheels to the
same environment — uvx --with nvidia-cublas-cu12 --with nvidia-cudnn-cu12 erm …
under tier 1, or pip install nvidia-cublas-cu12 nvidia-cudnn-cu12 into the venv
under tier 2. See the transcription docs page for details.
erm's behavior forks on a couple of choices. Use AskUserQuestion to settle
these only when they aren't already clear from the request, then proceed:
--mode remove (default — excises fillers, timeline shrinks)
vs --mode silence (mutes in place, duration preserved — required for
video sync and multitrack stems).erm emits the
cleaned audio only (.wav) by default (the "pull the audio out" case). Add
--video to render the picture too — container inferred from the input,
A/V in sync by construction. With --video: --mode silence stream-copies the
picture losslessly (caption/lip-sync safe), --video-splice {crossfade,cut}
picks the splice style, --vcodec/--crf/--preset tune the re-encode. See
the video doc.If the user already implied the answers (e.g. "clean my podcast"), don't ask — pick the sensible default and say what you chose.
Then read the recipes doc and use the matching copy-paste command.
erm INPUT.wav --dry-run — prints/writes the cut-list JSON
(*-cuts-*.json); renders nothing. Review what it intends to cut.erm INPUT.wav — writes INPUT-cleaned-<timestamp>.wav next to the input.erm validate INPUT.wav OUTPUT.wav — re-transcribes the output and
asserts no fillers survive, plus container/duration sanity. Exit 0 = pass.Useful flags (confirm with erm --help): -o/--output, --json, --model,
--device, --fillers, --video (render the picture from a video input). The
full usage doc explains the workflow in depth.
Adjusting the word list. If the user wants to strip an extra word (e.g.
"also remove 'basically' / 'like'"), prefer --add-fillers "basically,like" —
it keeps the built-in defaults and unions the new words on top. Use
--remove-fillers WORD to drop a default that over-matches their voice. Reach
for --fillers only to replace the whole set, since it requires re-typing every
stem. Custom words match verbatim (no automatic elongation). See the
recipes doc → "Custom filler vocabulary".
If fillers remain, real words get clipped, splices click/smear, the noise floor pumps, or words run together — hand off to the erm-tune skill, which maps each symptom to the right knob.
© dougcalobrisi, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/erm of dougcalobrisi/erm.
Open the folder on GitHubat commit af2fe92
Erm next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Erm this skilldougcalobrisi/erm | 112 | — | ~1.3k | Automated safety check: Notes | MIT | |
| Vox DirectorAlisa0808/vox-director | 2.2k | — | ~5.6k | Automated safety check: Pass | MIT | |
| Whiteboard Videognipbao/codex-whiteboard-video-skill | 327 | — | ~7.2k | Automated safety check: Notes | MIT | |
| Muapi DirectorAnil-matcha/vox-ai-motion-graphics-generator | 246 | — | ~679 | Automated safety check: Pass | None | |
| Webcode Local Windows Tts Installershuyu-labs/WebCode | 278 | — | ~787 | Automated safety check: Pass | Custom licence | |
| Video Podcast Makerdtsola/xiaoyaosearch | 1k | — | ~3.4k | Automated safety check: Pass | MIT |
Alisa0808/vox-director
Turn ONE topic into a finished Vox-style paper-collage explainer / ad video, end to end on the Atlas Cloud API + local ffmpeg — script, collage keyframes, motion, voice-over, music, captions, all…
gnipbao/codex-whiteboard-video-skill
Generate smooth hand-drawn whiteboard and story videos directly inside Codex from text scripts, GPT Image 2 color storyboards, scene plans, SVGs, line art, or local images.
Anil-matcha/vox-ai-motion-graphics-generator
Turn ONE topic, talking-head video, or photo into a finished Vox-style paper-collage explainer / ad video on the MuAPI platform (api.muapi.ai) + local ffmpeg — script, collage keyframes, motion…
shuyu-labs/WebCode
A skill your agent uses when building a local Windows WebCode installer from this repo for machine testing, especially when the package must bundle the Kokoro or sherpa-onnx Reply TTS service, model…
dtsola/xiaoyaosearch
Turns a topic into a 4K horizontal video podcast through research, scripting, text-to-speech, Remotion rendering and background music, and can learn styles from references.
kajisho5/ffmpeg-skill
Edit video and audio with local FFmpeg from natural-language requests: cut, trim, join, resize/reframe (9:16, 1:1), speed change, captions and subtitles (SRT/ASS, animated, karaoke), logos and text…
dougcalobrisi/erm
Diagnose and tune erm's output quality. An agent skill from dougcalobrisi/erm.
Works with
Categories
Install and run erm, the local CLI that removes filler words / disfluencies (um, uh, er, erm, ah, hmm, mhm, mm, uh-huh and elongations) from spoken-audio recordings. Erm is an agent skill from dougcalobrisi/erm. Install and run erm, the local CLI that removes filler words / disfluencies (um, uh, er, erm, ah, hmm, mhm, mm, uh-huh and elongations) from spoken-audio recordings.
Erm fits situations like: the user wants to install; clean up a recording/podcast/voiceover; strip ums and uhs from audio; asks which erm command to run.
Run `npx skills add dougcalobrisi/erm --skill erm -a claude-code`. Or copy the skill folder (skills/erm in dougcalobrisi/erm) into .claude/skills/erm in your project. Claude Code loads it when a task matches its description.
Run `npx skills add dougcalobrisi/erm --skill erm -a codex`. Or copy the skill folder (skills/erm in dougcalobrisi/erm) into .agents/skills/erm in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add dougcalobrisi/erm --skill erm -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/erm, .gemini/skills/erm, .github/skills/erm and .opencode/skills/erm in your project.
Going by SKILL.md and its folder, Erm needs the command-line tools its instructions call (uvx, ffmpeg, brew, apt, choco and uv). Our summary lists: Python 3. Its frontmatter pre-approves these tools: Bash, Read, AskUserQuestion.
SKILL.md names 1 domain. As links in the text: doug.sh. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Erm is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.3k tokens (SKILL.md is roughly 5.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Erm: Vox Director (Alisa0808/vox-director, 2.2k stars), Whiteboard Video (gnipbao/codex-whiteboard-video-skill, 327 stars), Muapi Director (Anil-matcha/vox-ai-motion-graphics-generator, 246 stars) and Webcode Local Windows Tts Installer (shuyu-labs/WebCode, 278 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
dougcalobrisi (a GitHub user) maintains it in dougcalobrisi/erm, which has 112 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on August 23, 2026.
Source: dougcalobrisi/erm on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.