erm-tune

erm-tune is a skill for Claude Code from dougcalobrisi/erm. It costs 100 tokens per session (1,068 once invoked), scanned A, original, MIT.

A troubleshooting guide for erm, a tool that removes filler words and unwanted speech from audio. It explains how to adjust erm's settings based on the sound problem.

In plain words
What is it for?
Use it to diagnose and tune speech cleanup, test changes with a dry run, and validate the resulting audio.
Why use it?
It helps fix issues such as audible fillers, clipped words, clicks, smeared audio, noise changes, or missed detections without guessing settings.

Skill for Claude Code

Written for Claude Code: allowed-tools in frontmatter. Also seen: names the AskUserQuestion tool.

Runs only inside its plugin — its command needs a path that Claude Code sets for a plugin’s own hooks and for nothing else. Install the plugin, not this.

Part of the erm plugin — 2 skills shipped together

Good fit Use it to diagnose and tune speech cleanup, test changes with a dry run, and validate the resulting audio.

Compare 6 skills from other repositories ↓
Install

Getting it into your agent

This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.

Claude Code
/plugin marketplace add dougcalobrisi/erm
Claude Code
/plugin install erm

Made for: Claude Code.

Or install erm, the plugin that ships this one along with the rest of its 2 skills.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for erm-tune

README.md
[![agentmods](https://agentmods.dev/badge/skills/dougcalobrisi/erm/erm-tune/github.svg)](https://agentmods.dev/skills/dougcalobrisi/erm/erm-tune)
Your own site
<a href="https://agentmods.dev/skills/dougcalobrisi/erm/erm-tune"><img src="https://agentmods.dev/badge/skills/dougcalobrisi/erm/erm-tune/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for erm-tune

Your own site · 80×15
<a href="https://agentmods.dev/skills/dougcalobrisi/erm/erm-tune"><img src="https://agentmods.dev/badge/skills/dougcalobrisi/erm/erm-tune.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 100 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,068 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00100 $0.01068
Opus 5 $0.00050 $0.00534
Sonnet 5 $0.00020 $0.00214
Haiku 4.5 $0.00010 $0.00107

Measured 10d ago against content hash c335de79cac2, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-10, from the pricing page.

Security

Grade A, and why

erm-tune scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/erm-tune/SKILL.md · 82 lines

How it starts

The opening of the file, as written. The whole thing — 82 lines — stays where its author put it; the contents beside it link to each section on GitHub.

erm — tune and troubleshoot

erm exposes ~30 flags that cluster into five knob groups. Tune by symptom, change one cluster at a time, and re-check with --dry-run + validate.

Launcher convention. This skill assumes erm is already runnable (set up by the erm skill). In the commands below, erm means that launcher: uvx erm … if you ran it via uv, or plain erm … after activating the venv where it's installed.

Resolving documentation

Resolve detail in this order (broadest compatibility last):

  1. erm --help — definitive flag names, defaults, and units.
  2. Public docs: https://doug.sh/docs/erm/troubleshooting, detection, render-pipeline, denoise-and-room-tone.
  3. Bundled docs (Claude plugin only): ${CLAUDE_PLUGIN_ROOT}/docs/*.md; flag defaults in ${CLAUDE_PLUGIN_ROOT}/src/erm/cli.py.

Never guess values — read one of the above before recommending a setting.

1. Diagnose first — ask what's wrong

Use AskUserQuestion to pin the symptom (each maps to a different cluster), unless the user already described it:

  • Fillers still audible / missed → detection
  • A specific word should also be cut, or a default word is over-matching → detection word list (--add-fillers / --remove-fillers)
  • Real words clipped or chopped → detection (too aggressive) / refinement
  • Splices click, pop, or sound smeared/blurry → crossfade / refinement
  • Noise floor pumps, audible level changes at edits → denoise / room tone
  • Words run together with no breath → splice spacing
  • Too slow → detection (--model/--device)

Then read the troubleshooting doc for the symptom→knob fix.

2. The five knob clusters

Read the linked doc page for good-value ranges before changing anything.

  1. Detection aggressiveness (what gets cut) — --model (biggest lever), --detect-gaps, --confirm-pitch, --gap-min-ms, --gap-min-voiced-ms, --gap-max-voiced-ms, --intraword-min-ms, --fillers. → detection doc.
    • Word list (pass 1): --add-fillers "word,word" adds words on top of the defaults; --remove-fillers "word" drops a default that over-matches (removal wins). Prefer these over --fillers, which replaces the whole set.
  2. Refinement / merge (clean splice points) — --search-ms, --merge-gap-ms. → render-pipeline doc.
  3. Splice spacing (remove mode breathing room) — --pad-pause-factor, --pad-min-ms, --pad-max-ms, --min-gap-ms. → render-pipeline doc.
  4. Crossfade (splice smoothness) — --crossfade-factor, --min-crossfade-ms, --max-crossfade-ms, --crossfade-ms. → render-pipeline doc.
  5. Denoise / room tone (uniform floor) — --denoise none|pre|post|hybrid, --denoise-nr, --denoise-nf, --room-tone/--no-room-tone, --room-tone-level-db, --room-tone-source. → denoise-and-room-tone doc.

Read the full file on GitHub · 82 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 10d ago First seen · 82 lines · 100 tokens per session scan A c335de79cac2

Subscribe to this mod's changes

erm-tune is a skill published in the GitHub repository dougcalobrisi/erm (112 stars, last pushed 17d ago), licensed MIT. It adds 100 tokens to every session and 1,068 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

embedded-captions

A workflow for adding captions or subtitles to an existing single-person talking-head video without changing the footage. Captions can appear as ordinary subtitles, behind the speaker, or as stylized visual effects.

heygen-com/hyperframes · 120 tokens

pr-to-video

Turn a GitHub pull request (a PR URL, owner/repo#N, or 'this PR' in a checked-out repo) into a code-change explainer video — changelog, feature reveal, fix, or refactor walkthrough built from the diff, commits, and files: the input is a code change, not a website. Not a product promo (/product-launch-video) or a no-PR…

heygen-com/hyperframes · 104 tokens

slideshow

Author a HyperFrames slideshow — a presentation, pitch deck, or interactive deck with discrete slides, fragment reveals, branching, hotspot navigation, and built-in presenter mode with speaker notes; also converts an existing page into a deck. Output is a navigable deck, not a rendered MP4. If the user didn't…

heygen-com/hyperframes · 83 tokens

faceless-explainer

Turn arbitrary text — an article, notes, a topic, a brief — into a faceless explainer video: there is no site or footage to capture, so the visuals are invented per scene (typography, abstract graphics, diagrams, data-viz). Use for topic explainers, concept breakdowns, how-tos, listicles. Not a video built from a…

heygen-com/hyperframes · 98 tokens

figma

Import Figma content into a HyperFrames composition — rendered assets, brand tokens, components, storyboard sections → reconstructed motion (frames read as states, not slides) (REST/CLI), connector-assisted motion when available, and shaders from a connector or native export. Use when the user pastes a figma.com link…

heygen-com/hyperframes · 89 tokens

general-video

Author or edit a custom HyperFrames composition when no specialized workflow fits, or when BRIEF.md sets flow: companion. Use for longer or multi-scene pieces, brand and sizzle reels, montages, static loops, static title cards, footage remixes, and freeform builds. Use motion-graphics instead for a short unnarrated…

heygen-com/hyperframes · 92 tokens