Audits the user-facing terminal copy changed over a git range for factual truth rather than readability, by fanning out reviewers partitioned by evidence source and triaging what survives.

MITAuto-check passedWriting & Content

Install Copy Audit

skills CLI
$ npx skills add antoinecellerier/speaker-tuning-to-easyeffects --skill copy-audit -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install antoinecellerier/speaker-tuning-to-easyeffects copy-audit --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/antoinecellerier/speaker-tuning-to-easyeffects.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/copy-audit .claude/skills/copy-audit && rm -rf skills-src

Use ~/.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/

Facts

Skill name
copy-audit
GitHub stars
144
Token cost
~2.2k tokens
SKILL.md length
1,091 words
Files
1
Skills in repo
7
Repo updated
First seen
Licence
MIT

At a glance

Audits the user-facing terminal copy changed over a git range for factual truth rather than readability, by fanning out reviewers partitioned by evidence source and triaging what survives.

  • Works in 5 steps: Prepare the evidence, once → Build the claim inventory → Fan out, partitioned by evidence source → …
  • Asks to check the messages are accurate
  • SKILL.md covers Running as a subagent, 1. Prepare the evidence, once, 2. Build the claim inventory and 3. Fan out, partitioned by…, plus 3 more sections
  • Calls python3 and pytest

What it does

Copy Audit is an agent skill from antoinecellerier/speaker-tuning-to-easyeffects. Audits the user-facing terminal copy changed over a git range for factual truth rather than readability, by fanning out reviewers partitioned by evidence source and triaging what survives. Use before a release, after a batch of messaging work, or when the user asks to "check the messages are accurate", "verify what we're telling people", "audit the output for correctness", or doubts a claim a run prints. Complements /user-review, which asks whether a first-time reader can act on a message; this asks whether the…

Its SKILL.md is about 2.2k 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 Writing & Content, covering Plain language and style rules. It works with Git. The repository describes itself as: Convert OEM Dolby Atmos speaker tuning data to EasyEffects presets or PipeWire filter-chains for Linux. The licence is MIT.

When your agent uses it

  • Asks to check the messages are accurate
  • Verify what were telling people
  • Audit the output for correctness
  • Doubts a claim a run prints

Example prompts

  • “check the messages are accurate”
  • “verify what we”
  • “audit the output for correctness”
  • “/copy-audit”

Requirements

  • Python 3

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Prepare the evidence, once
  2. Build the claim inventory
  3. Fan out, partitioned by evidence source
  4. Triage
  5. Fix, grouped by topic

What it can do on your machine

Read from SKILL.md and the folder at commit 37cf91b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python3
    • pytest

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Copy Audit loads about 2.2k tokens when it runs. Until then it costs about 161 tokens; SKILL.md has 1,091 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~161
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k

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.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated 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.

SKILL.md

The full file from antoinecellerier/speaker-tuning-to-easyeffects at commit 37cf91b, republished under its MIT licence (© antoinecellerier). 1,091 words, ~2,231 tokens.

Download SKILL.mdSave it as .claude/skills/copy-audit/SKILL.md (or your agent's skills folder).
name
copy-audit
description
Audits the user-facing terminal copy changed over a git range for factual truth rather than readability, by fanning out reviewers partitioned by evidence source and triaging what survives. Use before a release, after a batch of messaging work, or when the user asks to "check the messages are accurate", "verify what we're telling people", "audit the output for correctness", or doubts a claim a run prints. Complements /user-review, which asks whether a first-time reader can act on a message; this asks whether the message is true, whether it holds for every device that can reach it, and whether its numbers still match the corpus.
context
fork
agent
general-purpose
model
opus

copy-audit

Running as a subagent

This skill runs with context: fork, in a fresh subagent. Nothing from the conversation reaches it, so everything it needs is stated here or in its arguments. It returns one thing: the triaged report of step 4. It does not fix anything: step 5 is the maintainer's choice, made in the main conversation from that report.

  • Range: the argument, if one names a revision or a..b. Otherwise origin/master..HEAD, the unpushed work. Step 2's --since is the range's base.
  • Evidence dir: localresearch/copy_audit/<YYYY-MM-DD>/, which is gitignored. If the argument names a directory that already holds the step-1 files, that directory is the evidence dir: reuse its files and regenerate only what is missing.
  • Use absolute paths in every shell command: a cd that fails leaves the shell elsewhere for every later call.
  • Run reviewers as subagents at model: opus, because this is truth-checking, not comprehension. Give each one slice and one evidence source, as §3 says.
  • Return the step-4 report verbatim as your final message: ranked, every finding with severity, the true statement and its evidence, the discarded findings with why, the known limits, and the patterns that went unrendered.

/user-review grades comprehension, and a false sentence can score perfectly there. That loop's own fixes were the biggest single source of untrue statements, because simplifying a hedged sentence is how a hypothesis becomes an assertion.

This audit walks a git range and checks each claim against the evidence its type demands. The claim-type checklist it applies, with examples of a dropped qualifier, is .claude/rules/claims.md ("What each claim rests on").

Non-expert phrasing is the design goal and is never a finding. A reviewer reporting that copy is informal, imprecise or jargon-free has misunderstood the task. Only FALSE, UNSUPPORTED, or TRUE-ONLY-FOR-SOME-DEVICES counts.

Copy this checklist and track progress:

Copy audit:
- [ ] 1. Prepare the evidence (corpus sweep, renders, system probe)
- [ ] 2. Build the claim inventory
- [ ] 3. Fan out reviewers, one slice and one evidence source each
- [ ] 4. Re-check every finding yourself; discard what doesn't survive
- [ ] 5. Fix, grouped by topic, then verify

1. Prepare the evidence, once

Every reviewer reads files, and none re-runs a tool. That is the whole cost control: the audit is affordable because the expensive work happens once.

python3 tools/corpus_audit.py > <out>/corpus_audit.txt
python3 tools/preview_output.py --full --examples 3 --width 80 > <out>/renders/findings_all.txt
python3 tools/render_forced_conditions.py --out-dir <out>/renders

--examples 3 is load-bearing: the same message rendered for three different devices is what exposes a sentence true only for the one it was written from.

render_forced_conditions.py covers what preview_output.py structurally cannot: messages whose trigger value never occurs in the corpus, so no real device can show them. Those are exactly the messages nobody has ever read.

Then render the conditions that need flags rather than XML values: a SOUNDWIRE_* file against an HDA one, a simplified-schema file, --all-profiles, -v, each --disable name, and a dolby_to_pipewire.py --no-activate --dry-run. Probe the live system too, because several claims are about other people's software: easyeffects --version, pw-cli ls Node | grep alsa_output, pw-link -l, command -v lv2info.

2. Build the claim inventory

python3 tools/extract_claims.py --since <rev> --out-dir <out>

It writes claims.md and the per-reviewer slices. Only CHANGED rows are targets. Unchanged strings stay in the file so a claim can be read against the run it prints in.

It reports two totals, so compare the distinct count, which counts sentences rather than sites. A refactor that collapses a string written at two sites legitimately shrinks the row count, while the run prints the same words.

3. Fan out, partitioned by evidence source

Give each reviewer one slice and one evidence source. Partitioning by evidence rather than by file keeps each context small. The reviewer checking corpus figures never loads the wrapper's source, and the one checking the wrapper never loads the docs.

SliceEvidenceHunts
slice_numbers.mdcorpus_audit.txt + cross-device-findings.md, plus targeted corpus grepsstale figures, universals the corpus contradicts, "rare"/"typical" with nothing behind it
renders/the rendered runs + corpus_audit.txtsentences true only for the device they were written from; hardcoded Hz/band counts/profile names; contradictions inside one run
slice_generator.mdthe generator's sourcecopy vs what the code does: flag effects, what was written, -v gating, gates broader or narrower than the sentence
slice_generator.mdreference.md "Validated vs unvalidated mappings" + design-notes.md and docs/research/unvalidated mappings asserted as fact; a leading hypothesis stated as Dolby's intent
slice_wrapper_docs.mdwrapper/converter source + the live systemrestart and undo instructions, command output shapes, WirePlumber/EasyEffects behaviour, package names
slice_changelog.mdthe code each entry describes## Unreleased entries that misstate what ships
slice_all_changed.mdthe sources themselvesCHANGELOG vs what ships, README vs the menus, one fact worded two incompatible ways

Each returns a fixed schema, worst first, and no restated copy:

ID | SEVERITY | <=10-word quote | what is actually true | evidence file:line | confidence

CRITICAL false and it changes what the user does · HIGH false but low consequence, or an unvalidated hypothesis stated as fact · MEDIUM true only for some triggering devices · LOW stale figure, no user consequence.

Tell every reviewer: a finding must name the true statement. "This seems wrong" without a replacement is not a finding, and will be discarded.

Also tell them the settled decisions from /user-review, so they don't relitigate copy that survived eleven rounds. Those reopen only on proof that one is false, not awkward.

Show full SKILL.md (297 more words)Show less

4. Triage

Do not forward reviewer output. Re-check every finding yourself against the code, a real run, or the system. Reviewers misread: this audit's first run produced two claims that didn't survive, one of them a plain misreading of a distributive sentence.

Two bars before anything ships: it names what is actually true, and it cites evidence. Then rank, and let the user choose.

Ask what population a statistic is drawn from before believing it. The reviewer failure mode that mirrors the writers' is a selection effect read as a refutation. One reviewer reported that 23 of 23 XMLs declaring a default profile contradict the tool's assumption. But Dolby only writes that field when they don't want the default, so those 23 are exactly where a difference is expected.

5. Fix, grouped by topic

Group the fixes into one commit per topic, and put a code change and its CHANGELOG or README line in the same commit. A merged group lands at its last member's position, because a later commit may introduce what an earlier member patches.

Re-derive corpus figures as .claude/rules/claims.md "What each claim rests on" says.

Verify after: pytest tests/, and check that tests/test_golden_preset.py did not move. A copy-only fix that shifts the golden digest touched behaviour, so investigate before re-recording. Re-run preview_output.py and diff against the step-1 renders: only the lines a finding named may have changed.

Known limits

State these in the report.

  • Claims about the Windows Dolby app aren't testable here. The available verdicts are "matches what our docs record" or "unsupported". Propose hedging, not deletion.
  • Hardware-probe copy for smart amps can't be exercised without the hardware. Label those as source-verified only.
  • Anything about the live audio graph is static analysis until it is heard. Say so, and route it through /audio-validate.

© antoinecellerier, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/copy-audit of antoinecellerier/speaker-tuning-to-easyeffects.

Open the folder on GitHubat commit 37cf91b

Compare with similar skills

Copy Audit 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.

Copy Audit compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Copy Audit this skillantoinecellerier/speaker-tuning-to-easyeffects144—~2.2kAutomated safety check: PassMIT
Git Teacher Statusfivetaku/gptaku-plugins-codex128—~1kAutomated safety check: PassMIT
Jgrepkeltokhy/jgrep136—~1.1kAutomated safety check: PassMIT
Codflow Updatebighadj22/codflow354—~6.2kAutomated safety check: NotesApache-2.0
ReviewSethGammon/Citadel924—~2.1kAutomated safety check: PassMIT
Viewing FilesSebastienDegodez/copilot-instructions198—~1kAutomated safety check: PassApache-2.0

Similar skills

  • Git Teacher Status

    fivetaku/gptaku-plugins-codex

    Translates current Git status into plain-language explanations for non-developers.

    128 GitHub stars~1k tokensUpdated 1 mo ago
    Writing & ContentAuto-check passed
  • Jgrep

    keltokhy/jgrep

    Filter text, records, code functions, or complete diff hunks by a plain-English description using Jev.

    136 GitHub stars~1.1k tokensUpdated 11 days ago
    DevelopmentAuto-check passed
  • Codflow Update

    bighadj22/codflow

    Update runbook for a self-hosted CodFlow install — an AI agent following it fetches the latest code from the CodFlow GitHub repo, merges it into an EXISTING checkout, syncs the gitignored…

    354 GitHub stars~6.2k tokensUpdated 4 days ago
    DevOps & CloudAuto-check: notes
  • Review

    SethGammon/Citadel

    5-pass structured code review — correctness, security, performance, readability, consistency

    924 GitHub stars~2.1k tokensUpdated today
    DevelopmentAuto-check passed
  • Viewing Files

    SebastienDegodez/copilot-instructions

    A skill your agent uses when viewing source files or documentation with syntax highlighting, previewing files with Git integration, or when enhanced readability would improve code review

    198 GitHub stars~1k tokensUpdated 3 days ago
    DevelopmentAuto-check passed
  • Git Teacher Save

    fivetaku/gptaku-plugins-codex

    Commits changed files to Git, explained in plain language for non-developers.

    128 GitHub stars~777 tokensUpdated 1 mo ago
    DevelopmentAuto-check: notes

More from antoinecellerier/speaker-tuning-to-easyeffects

  • Claude Md Audit

    antoinecellerier/speaker-tuning-to-easyeffects

    Audits the instruction files (CLAUDE.md, .claude/rules, .claude/skills, tools/measuredax/CLAUDEWINDOWS.md) for accuracy and bloat against .claude/rules/instructions.md, and proposes a concrete edit…

    144 GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Docs Review

    antoinecellerier/speaker-tuning-to-easyeffects

    Reviews the user-facing docs — README.md and the user guides under docs/README.md "Using it" — by running them past subagent reviewers role-playing fixed personas: a first-time visitor, a user…

    144 GitHub stars~1.5k tokensUpdated today
    Auto-check passed
  • Issue Replies

    antoinecellerier/speaker-tuning-to-easyeffects

    Guides triaging GitHub issues and drafting or posting replies in this repo.

    144 GitHub stars~2k tokensUpdated today
    Auto-check passed
  • Kernel Watch Triage

    antoinecellerier/speaker-tuning-to-easyeffects

    Guides triaging a kernel-sound-watch hit comment on the "Kernel sound-tree watch" issue (40) — the weekly workflow's per-tag report of .github/kernel-watchlist.txt grep hits against a new…

    144 GitHub stars~2.6k tokensUpdated today
    Auto-check passed
  • User Review

    antoinecellerier/speaker-tuning-to-easyeffects

    Reviews the scripts' user-facing terminal output by running it past subagent reviewers role-playing a first-time user, then reports severity-ranked findings.

    144 GitHub stars~4.3k tokensUpdated today
    Auto-check passed
  • Audio Validate

    antoinecellerier/speaker-tuning-to-easyeffects

    Validates a change to the audio output path against measured on-device ground truth.

    144 GitHub stars~1.7k tokensUpdated today
    Auto-check passed

Works with

Questions about Copy Audit

What does Copy Audit do?

Audits the user-facing terminal copy changed over a git range for factual truth rather than readability, by fanning out reviewers partitioned by evidence source and triaging what survives. Copy Audit is an agent skill from antoinecellerier/speaker-tuning-to-easyeffects. Audits the user-facing terminal copy changed over a git range for factual truth rather than readability, by fanning out reviewers partitioned by evidence source and triaging what survives.

When should I use Copy Audit?

Copy Audit fits situations like: asks to check the messages are accurate; verify what were telling people; audit the output for correctness; doubts a claim a run prints.

How do I install Copy Audit in Claude Code?

Run `npx skills add antoinecellerier/speaker-tuning-to-easyeffects --skill copy-audit -a claude-code`. Or copy the skill folder (.claude/skills/copy-audit in antoinecellerier/speaker-tuning-to-easyeffects) into .claude/skills/copy-audit in your project. Claude Code loads it when a task matches its description.

How do I install Copy Audit in Codex?

Run `npx skills add antoinecellerier/speaker-tuning-to-easyeffects --skill copy-audit -a codex`. Or copy the skill folder (.claude/skills/copy-audit in antoinecellerier/speaker-tuning-to-easyeffects) into .agents/skills/copy-audit in your project. Codex loads it when a task matches its description.

Can I use Copy Audit in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add antoinecellerier/speaker-tuning-to-easyeffects --skill copy-audit -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/copy-audit, .gemini/skills/copy-audit, .github/skills/copy-audit and .opencode/skills/copy-audit in your project.

What does Copy Audit need to run?

Going by SKILL.md and its folder, Copy Audit needs the command-line tools its instructions call (python3 and pytest). Our summary lists: Python 3.

Does Copy Audit access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Copy Audit safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Copy Audit use?

Copy Audit is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Copy Audit use?

About 2.2k tokens (SKILL.md is roughly 8.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Copy Audit?

Skills that share tags, products or a category with Copy Audit: Git Teacher Status (fivetaku/gptaku-plugins-codex, 128 stars), Jgrep (keltokhy/jgrep, 136 stars), Codflow Update (bighadj22/codflow, 354 stars) and Review (SethGammon/Citadel, 924 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Copy Audit?

antoinecellerier (a GitHub user) maintains it in antoinecellerier/speaker-tuning-to-easyeffects, which has 144 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 9, 2026.

Source: antoinecellerier/speaker-tuning-to-easyeffects on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.