skill-tune
Skill1 starsChanged 3 days agoMITView on GitHub
Diagnoses and fixes when an Agent Skill is selected, by testing its description against realistic requests and rewriting it. Use when a skill does not trigger or is ignored, when a skill fires on requests it should not handle, when two skills compete for the same request, or when asked to improve, optimise or rewrite a skill description.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- mattdweigand-sketch/agent-skillstheir own version, first seen Oct 7, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- mattdweigand-sketch/agent-skills★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository6 other files it gives its agents.
- skill-auditSkill
- skill-distillSkill
- skill-inventorySkill
- skill-lintSkill
- skill-portSkill
- skill-retroSkill
The file
We split this skill into the rules it gives an agent
9 rules. About 0 are common, 9 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈9
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 42
Write 16 to 20 requests as a user would type them: varied length, some terse, some with typos or indirect phrasing, most not naming the …
- Distinctive: line 64
Real runs: If the harness can run headless or spawn a fresh session, send each request to a new session and record whether the skill loaded.
- Distinctive: line 67
Blind judge: If subagents are available, give a subagent only the list of names and descriptions of all installed skills, plus one request, …
- Distinctive: line 71
Self-review: If neither is available, judge each request yourself against the full list of descriptions, and tell the user this is the …
- Distinctive: line 88
Add the situations and words from the missed requests.
- Distinctive: line 91
Put the main use first. Listings can cut a long description short.
- Distinctive: line 103
If the two skills cannot be told apart in a sentence each, they should probably be one skill.
- Distinctive: line 109
Do not summarise the body's steps in the description.
- Distinctive: line 118
Run the same test with the new description.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Skill tune
An agent chooses a skill from its name and description alone. The body is not read until after that choice. So a skill that never fires, or fires at the wrong time, has a description problem, and the fix is tested the way any classifier is: against examples.
This skill changes the description only. If the skill triggers correctly and
then does the wrong thing, the problem is in the body; use skill-retro if it
is installed.
1. Name the symptom
| Symptom | Meaning |
| Never fires on requests it should handle | Under-triggering: the description lacks the words and situations users bring. |
| Fires on requests it should not handle | Over-triggering: the description is broader than the skill. |
| A different skill fires instead | Collision: two descriptions claim the same ground. |
Get one or two real requests where it went wrong. Without a concrete failure there is nothing to tune against.
First rule out causes that are not the description: the skill is not installed where the harness looks, its frontmatter does not parse, or the harness has it disabled. Listing the available skills in a fresh session settles all three.
2. Build a test set
Write 16 to 20 requests as a user would type them: varied length, some terse, some with typos or indirect phrasing, most not naming the skill.
- Should trigger (half). Cover each distinct use of the skill. Include the real failures from step 1. Include indirect requests that describe the problem and not the solution.
- Should not trigger (half). Near misses are the only useful negatives: requests that share vocabulary with the skill but belong to another skill or to no skill. "What is the weather" tests nothing.
Save the set next to the skill, outside the skill directory, using the format in assets/trigger-evals.template.json. Set aside a quarter of each half as a holdout and do not look at those while rewriting.
Show the set to the user before going on. They know which requests are realistic.
3. Measure the current description
Pick the strongest method available and use the same one before and after.
- Real runs. If the harness can run headless or spawn a fresh session, send each request to a new session and record whether the skill loaded. Repeat each request three times; triggering is not deterministic.
- Blind judge. If subagents are available, give a subagent only the list of names and descriptions of all installed skills, plus one request, and ask which skill, if any, it would load. It must not see the expected answer or the skill bodies.
- Self-review. If neither is available, judge each request yourself against the full list of descriptions, and tell the user this is the weakest method because you know the intended answer.
For collisions, the other skills' descriptions must be in the list. If the
skill-inventory skill is installed, it produces that list and flags
overlapping pairs.
Record a score for each half: how many should-trigger requests fired, how many should-not requests stayed quiet.
4. Rewrite
Change the description to fix the failures seen in step 3, not in general.
For under-triggering:
- Add the situations and words from the missed requests. Users describe symptoms ("the build is red"), not skill names.
- Name the file types, tools and artefacts involved.
- Put the main use first. Listings can cut a long description short.
For over-triggering:
- Replace category words ("documents", "data") with the specific things the skill handles.
- State the boundary: "Not for X; use Y for that."
For collisions:
- Edit both descriptions so each names what the other is for. A boundary stated on one side only still leaves the choice ambiguous.
- If the two skills cannot be told apart in a sentence each, they should probably be one skill.
Always:
- What it does, then when to use it. Third person.
- Do not summarise the body's steps in the description. An agent may act on the summary and never read the body.
- Stay within 1024 characters, and avoid unquoted
:and#, which break YAML. A folded block scalar (description: >-) avoids the quoting problem. - Resist adding "ALWAYS" and "MUST" to force a trigger. It raises false triggers and competes with every other skill doing the same.
5. Re-measure and iterate
Run the same test with the new description. Keep the change only if the score improved without the other half getting worse. Up to three rounds; if it is not converging, the skill's scope is the problem, not its wording. Say so.
Then run the holdout once. A description that passes the working set and fails the holdout was fitted to the examples; generalise it and re-test.
6. Report
Show the user the old and new description, the scores before and after for both halves and the holdout, the method used, and any request that still fails. Apply the change only when they agree. Keep the test set; it is the regression test for the next edit.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

