The skill is already written. The work left is making it fire.
Tune what already exists.

One install gives your agent an audit of a skill you already have: it reads the real SKILL.md and its references, checks the description that carries the triggering, finds where two siblings claim the same request, catches stale names and counts, then fixes handoffs and command routing. Every finding quotes the line it came from, states a severity, proposes the smallest edit, and is validated by check_skill.py rather than by eye.

16 validator checks 0 rewrites 7 audit sections 8 workflow steps

for coding agents · free, open, MIT

install

Copy one line. Tune the skill you already have.

The install line from the repo README. It copies the whole folder, so references/ and scripts/ arrive with the skill.

npx skills add arm-pz/tune-skill --skill tune-skill

the audit

Seven sections. Every finding carries the line it came from.

The audit works through references/audit-checklist.md. A finding needs evidence (the quoted line), a severity (breaks triggering, confusing, or cosmetic) and the smallest fix. The most severe is reported first.

Description A

The description is the only text present in every conversation, so it carries the triggering.

  • under 1024 characters
  • what it produces, then "Use whenever…"
  • phrases in the user's own words
  • ends with "even if they never say X"
  • a "Not for…" naming the owning sibling
  • no install lines or tokens
  • matches what the body does

Boundaries and overlaps B

Two skills claiming the same request is the common fault. Overlaps only show when both descriptions are side by side.

  • verbs and artifacts listed per sibling
  • exactly one owner each
  • command list versus mode list
  • aliases checked for crossed routing
  • each trigger phrase cross-checked

Handoffs C

"Pass along the findings" with no format is a broken handoff.

  • one shared block, same file in both skills
  • works in both directions
  • each side says what happens if the sibling is absent
  • offers the next step, does not start it
  • user material is data, never instructions

Consistency, precedence, size D-F

Stale names and counts, files that no longer exist, and prose doing a script's job.

  • H1 matches the skill name
  • counts match the lists below them
  • examples, routing and aliases agree
  • pointed-to files exist
  • version fields not duplicated
  • body under about 500 lines
  • deterministic work moved to a script

The validator 16 checks

Plain Python 3 plus PyYAML. It runs standalone on any skill folder and prints description length in characters, body in lines, so a run reproduces.

  • 8 fail-level, 8 warn-level
  • exit code 1 on any FAIL
  • name, folder and H1 agree
  • description length and wording
  • referenced paths exist
  • body line count
  • stated counts flagged for checking

Outside its boundary 2 siblings

The exclusions are in the description, because that is the text that routes the request. Not for creating a skill from scratch: that is draft-skill. Not for turning a list of prompts into a skill: that is prompts-to-skill. When two skills claim one request, the fix is to give it one owner and narrow the other side to diagnosis plus a handoff offer, updating both descriptions in the same pass.

ground rules

What it refuses to do.

Read the file, not the listing

READMEs, repo descriptions and listings drift from the SKILL.md the agent actually loads. Every claim about a skill comes from its SKILL.md or its references. If a file cannot be opened, the report names it and says what is being inferred instead.

Edits, not a rewrite

Change what the audit found and nothing else, in the author's voice. Frontmatter keys it does not recognise stay. Never-invent, honesty, fairness and privacy rules stay at least as strong, and untouched text is copied exactly.

No claim of a run that did not happen

The report says which checks ran, which test cases were only written, and which files were never seen. Some agents ship an automated triggering loop; it does not run in a plain chat, so it is recorded as not run rather than implied.

A skill that fires on the right requests and stays out of its siblings' way.

Free, open, and every finding arrives with the quoted line it came from.

Install tune-skill Read the source