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…

MITAuto-check passedDevelopment

Install Kernel Watch Triage

skills CLI
$ npx skills add antoinecellerier/speaker-tuning-to-easyeffects --skill kernel-watch-triage -a claude-code

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

GitHub CLI
$ gh skill install antoinecellerier/speaker-tuning-to-easyeffects kernel-watch-triage --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/kernel-watch-triage .claude/skills/kernel-watch-triage && 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
kernel-watch-triage
GitHub stars
143
Token cost
~2.6k tokens
SKILL.md length
1,207 words
Files
1
Skills in repo
7
Repo updated
First seen
Licence
MIT

At a glance

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…

  • Works in 5 steps: One bold verdict line. → Findings that need action or change a… → A table with one row per watch: watch,… → …
  • Tasks that involve Changelog and release notes
  • SKILL.md covers Read the range once, Attribute every hit to its…, Read the diff, not the changelog and Resolve SSIDs both ways, plus 3 more sections
  • Calls git, python3 and gh; reaches git.kernel.org

What it does

Kernel Watch Triage is an agent skill from 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 tiwai/sound pull tag. Load this when asked to "analyse/check the latest kernel watchlist hit", when a kernel-sound-watch comment needs a verdict, or before appending a Triage section to one. Covers reading the commit range cheaply, judging a hit against the watch that fired it, verifying claims against the kernel source rather…

Its SKILL.md is about 2.6k 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 Development, covering Changelog and release notes. It works with GitHub, Linux and 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

  • Tasks that involve Changelog and release notes

Example prompts

  • “Kernel sound-tree watch”
  • “analyse/check the latest kernel watchlist hit”
  • “Use the kernel-watch-triage skill to guide triaging a kernel-sound-watch hit comment on the "Kernel sound-tree watch" issue (40) — the weekly…”
  • “/kernel-watch-triage”

Requirements

  • Python 3

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. One bold verdict line.
  2. Findings that need action or change a watched or tested device, if any.
  3. A table with one row per watch: watch, commit count, and a verdict of
  4. Everything else in a Evidence block: per-term
  5. The Claude footer.

What it can do on your machine

Read from SKILL.md and the folder at commit 3000a2a. 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:

    • git
    • python3
    • gh

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

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • git.kernel.org

    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

Kernel Watch Triage loads about 2.6k tokens when it runs. Until then it costs about 153 tokens; SKILL.md has 1,207 words of instructions outside code blocks.

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

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 3000a2a, republished under its MIT licence (© antoinecellerier). 1,207 words, ~2,586 tokens.

Download SKILL.mdSave it as .claude/skills/kernel-watch-triage/SKILL.md (or your agent's skills folder).
name
kernel-watch-triage
description
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 tiwai/sound pull tag. Load this when asked to "analyse/check the latest kernel watchlist hit", when a kernel-sound-watch comment needs a verdict, or before appending a `### Triage` section to one. Covers reading the commit range cheaply, judging a hit against the watch that fired it, verifying claims against the kernel source rather than the changelog, and the blast-radius checks on our own tables.

Triaging a kernel-sound-watch hit

The output is a ### Triage (YYYY-MM-DD) section appended to the hit comment itself, in the format under "Record the verdict" below. That edit is the whole point: nothing else distinguishes an unassessed hit from a cleared one. The workflow never re-reads hit comments, so editing them is safe.

This is bookkeeping, not a reply: no draft-for-review cycle. The citation rules in /issue-replies still apply: external SHAs need explicit markdown URLs to github.com/torvalds/linux, and only this repo's SHAs auto-link.

Copy this checklist and tick items off. Each maps to a section below.

Triage progress:
- [ ] 1. Read the commit range — fetch the tags into the local clone
- [ ] 2. Re-grep every watch term over full messages, zeros included
- [ ] 3. Read each hit's diff; verify what its message claims
- [ ] 4. Resolve PCI vs codec SSID for any tested device involved
- [ ] 5. Skim the non-hit subjects for a class nothing watches yet
- [ ] 6. Check the blast radius on our own tables
- [ ] 7. Append the Triage section; touch the watchlist only if something moved

Read the range once

The comment already carries the grep hits, a scan_sound_tag.py commit scan, and the full pull text folded below. It carries no commit body or diff, and that is what you fetch.

  • Use the local torvalds/linux clone at ~/src/linux, and fetch the range into it yourself. Pull tags live in tiwai's tree and may not be merged to mainline yet, so the clone carries tiwai's tree as its sound remote:

    bash
    git -C ~/src/linux fetch sound \
      refs/tags/<base>:refs/tags/<base> refs/tags/<tag>:refs/tags/<tag>

    It only adds refs and objects, so the working tree and master are left alone. Run it in the background: git.kernel.org ignores --filter, so the range's objects arrive in full. Then git log/grep over the range is instant, and git show fetches any older blob it lacks from origin.

  • If the remote is missing, add it once. git fetch over HTTPS works on git.kernel.org; only its web pages sit behind an anti-bot wall.

    bash
    git -C ~/src/linux remote add sound \
      https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
    git -C ~/src/linux config remote.sound.tagOpt --no-tags
  • Use the googlesource HTTP mirror only when git fetch fails, with one range request and not one per commit. <mirror>/+log/<base>..<tag>?format=JSON&n=10000 returns every commit with its full message, as tools/scan_sound_tag.py does.

Attribute every hit to its watch before judging it

.github/kernel-watchlist.txt groups terms under # watch: headers naming the issue or the standing lesson that owns them. Find the header whose term fired, and let it decide what "relevant" means. A commit that matched ideapad but limits mic boost is a clear pass. Say so rather than listing it unexplained.

Re-run the grep yourself over the range's full messages, per term, and record the count for every term, zeros included. The comment names hit commits without saying which term matched, and a term can fire from a Fixes: line or a body mention rather than the subject. The re-grep turns "no commit touches #39" into "tas2781 fired, but only via two Lenovo ALC287 quirks".

Give a verdict for every watch, including the silent ones, such as "untouched; ids byte-identical to the previous tag". A reader has to be able to tell a checked watch from a forgotten one.

Read the diff, not the changelog

A commit message can claim more than the diff delivers. 7e77c09e23da says it reorders two Lenovo quirk entries "restoring internal speaker functionality". The diff swaps two adjacent entries carrying the same fixup, so no machine's behaviour changes.

Check any ordering or matching claim against snd_hda_pick_fixup in sound/hda/common/auto_parser.c:

  • It makes one pass over the table, and the first match wins. Each entry is compared against the codec SSID when its match_codec_ssid flag is set, and against the PCI SSID otherwise. HDA_CODEC_QUIRK sets the flag, and SND_PCI_QUIRK does not. A codec-SSID sweep runs afterwards as a fallback.
  • So two entries with different ids and the same fixup cannot differ in effect. Ordering only matters where the fixups differ.
  • Since 7.1, a PCI SSID with either half zero, such as 17aa:0000 under SOF, skips the PCI comparison entirely. Every entry there, SND_PCI_QUIRK included, is then compared against the codec SSID. So a PCI-keyed entry can match such a machine, on its codec id.

Resolve SSIDs both ways

PCI SSID ≠ codec SSID, and a machine collides with a different quirk under each. Pull the pair from the device report before claiming a tested device is or isn't affected, and say which id you matched on. --speaker-info names both: Codec subsystem: under HDA codecs, and Controller subsystem: under PCI audio subsystem. The README tested table's hidden codec and subsystem comment on each device row may hold either.

Sweep what the grep did not hit

Skim all subjects in the range for a shape we have no term for: a new smart-amp part, a new speaker-path failure mode, a first machine on a platform we watch. The comment's folded "Speaker-path commits" list matches subject lines only, and the watchlist only knows the classes we already track. An unwatched class first appears this way, which is why the watch reads commits at all rather than the pull text alone.

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

Check the blast radius on our side

For anything that touches a speaker path, ask which of our surfaces should have carried it:

  • lib/data/speaker_pin_quirks.py holds pin-adding fixups only. tools/update_speaker_pin_quirks.py regenerates it weekly, taking membership from HDA_FIXUP_PINS tables plus the hand-verified _FUNC_FIXUP_PINS allowlist of HDA_FIXUP_FUNC helpers. A new pin-writing helper is silently missed, because the updater's own guard only catches renames of listed ones. Audit the allowlist against upstream while you are in the tree:

    bash
    python3 - <<'PY'
    import re
    src = open('sound/hda/codecs/realtek/alc269.c').read()
    found = {m.group(1) for m in re.finditer(
        r'^static void (\w+)\(struct hda_codec \*codec,.*?\n\}\n', src, re.S|re.M)
        if re.search(r'0x9017[0-9a-f]{4}', m.group(0))}
    print(sorted(found))  # compare against _FUNC_FIXUP_PINS
    PY
  • lib/hardware/amps.py _AMP_FAMILIES: check for a missing amplifier, the AW88399 shape. Its membership bar is r-smart-amp-families in docs/research/hardware-and-drivers.md.

  • lib/data/speaker_route_quirks.py holds fixups that reroute one speaker pin off a widget with no volume amplifier: snd_hda_override_conn_list with no pincfg write, plus alc289_fixup_asus_ga401's preferred_dacs. tools/update_speaker_route_quirks.py regenerates it weekly the same way, taking membership from the hand-verified _FUNC_FIXUP_ROUTES allowlist only. It has the same one-sided guard, so a new routing helper is silently missed too. Audit while you are in the tree:

    bash
    python3 - <<'PY'
    import re
    src = open('sound/hda/codecs/realtek/alc269.c').read()
    found = {m.group(1) for m in re.finditer(
        r'^static void (\w+)\(struct hda_codec \*codec,.*?\n\}\n', src, re.S|re.M)
        if 'snd_hda_override_conn_list' in m.group(0)
        and not re.search(r'0x9017[0-9a-f]{4}', m.group(0))}
    print(sorted(found))  # compare against _FUNC_FIXUP_ROUTES + its
    PY                    # recorded exclusions

    preferred_dacs-only helpers don't show up in that sweep. All five in mainline were hand-read 2026-09-01, and every one but GA401 was excluded. The membership bar and each exclusion's reason are in docs/research/hardware-and-drivers.md, r-speaker-dac-misrouted. Re-read a helper only when the range you are triaging adds or edits one.

  • _FILE_MOVES in tools/update_speaker_pin_quirks.py: both tables carry a commit= link resolved by GitHub's blame, which follows a rename but not a split. A commit in the range that moves or splits sound/hda/codecs/realtek/alc269.c needs a new hop there. Without one, the symptom is the updater's mass-edit rail refusing that commit, never a wrong link: a stderr warning names it, and new rows are left commit="".

  • README tested table: grep the SSIDs in the range against it.

Record the verdict

  • Append the ### Triage (YYYY-MM-DD) section to the hit comment with gh api -X PATCH repos/<owner>/<repo>/issues/comments/<id> -F body=@file. Keep the visible part short, because the issue accumulates one per tag:
    1. One bold verdict line.
    2. Findings that need action or change a watched or tested device, if any. Give each one bullet of a few sentences, with its commit link. This includes problems the check exposed in our own data.
    3. A table with one row per watch: watch, commit count, and a verdict of about a dozen words. Zero-hit watches can share a row that names each one.
    4. Everything else in a <details><summary>Evidence</summary> block: per-term counts, match paths, the sweep, and the blast-radius checks.
    5. The Claude footer.
  • Touch .github/kernel-watchlist.txt only if the triage opened or closed an investigation, in the commit that does so. Don't add a term already covered by a broader one in the file: alc287 already hits most Lenovo quirks. A redundant term doubles every future hit comment.
  • Triage alone gets no CHANGELOG entry, because .claude/rules/changelog.md excludes research-log notes. A code fix the triage prompts is judged on its own merits.

© 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/kernel-watch-triage of antoinecellerier/speaker-tuning-to-easyeffects.

Open the folder on GitHubat commit 3000a2a

Compare with similar skills

Kernel Watch Triage 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.

Kernel Watch Triage compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Kernel Watch Triage this skillantoinecellerier/speaker-tuning-to-easyeffects143—~2.6kAutomated safety check: PassMIT
Draft Release Notesjamiepine/voicebox57k—~941Automated safety check: PassMIT
Mole Release Notes Publishertw93/Mole70k—~1.9kAutomated safety check: PassGPL-3.0
Release Bumpjamiepine/voicebox57k—~1.1kAutomated safety check: PassMIT
Cut Releasejfernandez/bpftop2.7k—~2kAutomated safety check: PassApache-2.0
Verdaccio Pull Request Workflowverdaccio/verdaccio18k—~1.9kAutomated safety check: PassMIT

Similar skills

  • Draft Release Notes

    jamiepine/voicebox

    Writes or refreshes the Unreleased section of CHANGELOG.md as a themed narrative built from the commits, PRs and diff since the last version tag.

    57k GitHub stars~941 tokensUpdated 3 days ago
    DevelopmentAuto-check passed
  • Publishes curated, bilingual release notes for an existing Mole version tag with gh release edit, including contributor thanks and reactions, after the release workflow finishes.

    70k GitHub stars~1.9k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Release Bump

    jamiepine/voicebox

    Ends a release cycle by moving the Unreleased changelog notes under a dated version heading, bumping version files with bumpversion and tagging the commit.

    57k GitHub stars~1.1k tokensUpdated 3 days ago
    DevelopmentAuto-check passed
  • Cut Release

    jfernandez/bpftop

    Cut a new versioned release of bpftop — pick the version, open a version-bump PR, sign-tag the merge commit on main, and draft GitHub release notes in the project's established format.

    2.7k GitHub stars~2k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • Takes a change through a verdaccio pull request: branch, local checks, changeset, title and body, labels, CI and review rounds, and ports to other release lines.

    18k GitHub stars~1.9k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Official

    Prepares a go-redis release locally: picks the next semver, gathers merged PRs, writes the RELEASE-NOTES entry and bumps versions, without publishing.

    22k GitHub stars~1.1k tokensUpdated yesterday
    DevelopmentAuto-check passed

More from antoinecellerier/speaker-tuning-to-easyeffects

  • Copy Audit

    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.

    143 GitHub stars~2.2k tokensUpdated yesterday
    Auto-check passed
  • 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…

    143 GitHub stars~1.2k tokensUpdated yesterday
    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…

    143 GitHub stars~1.5k tokensUpdated yesterday
    Auto-check passed
  • Issue Replies

    antoinecellerier/speaker-tuning-to-easyeffects

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

    143 GitHub stars~2k tokensUpdated yesterday
    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.

    143 GitHub stars~4.3k tokensUpdated yesterday
    Auto-check passed
  • Audio Validate

    antoinecellerier/speaker-tuning-to-easyeffects

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

    143 GitHub stars~1.7k tokensUpdated yesterday
    Auto-check passed

Works with

Categories

Questions about Kernel Watch Triage

What does Kernel Watch Triage do?

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…. Kernel Watch Triage is an agent skill from antoinecellerier/speaker-tuning-to-easyeffects.txt grep hits against a new tiwai/sound pull tag.

When should I use Kernel Watch Triage?

Kernel Watch Triage fits situations like: tasks that involve Changelog and release notes.

How do I install Kernel Watch Triage in Claude Code?

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

How do I install Kernel Watch Triage in Codex?

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

Can I use Kernel Watch Triage 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 kernel-watch-triage -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/kernel-watch-triage, .gemini/skills/kernel-watch-triage, .github/skills/kernel-watch-triage and .opencode/skills/kernel-watch-triage in your project.

What does Kernel Watch Triage need to run?

Going by SKILL.md and its folder, Kernel Watch Triage needs the command-line tools its instructions call (git, python3 and gh). Our summary lists: Python 3.

Does Kernel Watch Triage access the network?

SKILL.md names 1 domain. In commands or code: git.kernel.org; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Kernel Watch Triage 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 Kernel Watch Triage use?

Kernel Watch Triage 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 Kernel Watch Triage use?

About 2.6k tokens (SKILL.md is roughly 10k 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 Kernel Watch Triage?

Skills that share tags, products or a category with Kernel Watch Triage: Draft Release Notes (jamiepine/voicebox, 57k stars), Mole Release Notes Publisher (tw93/Mole, 70k stars), Release Bump (jamiepine/voicebox, 57k stars) and Cut Release (jfernandez/bpftop, 2.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Kernel Watch Triage?

antoinecellerier (a GitHub user) maintains it in antoinecellerier/speaker-tuning-to-easyeffects, which has 143 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 8, 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.