~/lab/sharpener
Sharpener
Turn my corrections into a skill patch and regression cases
claude --plugin-dir /path/to/hidkit| Signal | What it looks like | Weight |
|---|---|---|
| Correction | The user asks to change one part of the output. | 1 |
| Repeated correction | The user asks for the same kind of change in 2 or more uses. | Strong |
| Rejection | The user discards the output and asks again. | Strong |
| Approval | The user says that the output is good, or keeps it and moves on. | Keep |
| Workaround | The model fixed an error of a script, or skipped a step of the skill. | 1 |
| Missed trigger | The user named the skill because it did not load. | 1 |Why I built it
When I correct a skill three times in one session, that session holds the best data about its defects. Each correction shows a gap in the skill. Each approval shows a behavior to keep.
Without a step that captures them, the next session repeats the same corrections. Sharpener is that step. I call it with /hidkit:sharpener, or with a phrase such as “sharpen this skill” or “afila la skill”.
From signals to findings
Sharpener reads each use of the target skill in order, with my reaction to it. The snippet lists the signals and their weight.
It needs 2 or more uses with a reaction. With less data it tells me so and stops, because it does not invent findings.
Each finding gets one of three kinds:
- Skill defect: the skill text, a default, or a script caused the problem. Only this kind becomes a patch.
- Task preference: I wanted something special for this one task. Sharpener records it and does not patch it.
- Model slip: the skill was clear and the model did not follow it. Sharpener patches it only after 2 or more slips of the same kind.
Each fix is a general rule, with its reason, and not a copy of this one example.
Proposal first, then the patch
Sharpener shows me the iterations, the findings with quoted evidence, the diff of the skill, the regression cases, and what it did not patch. Then it asks for approval. It applies only the parts that I approve.
Regression cases
Each skill defect becomes a regression case in the skill-creator schema. Its expectations fail on the old skill and pass on the patched skill. Each approved behavior that the patch could break gets a keep case.
Sharpener appends new cases and never changes a case that exists, then checks the file:
node <skill-dir>/scripts/cases.mjs <cases-file>
The first check costs no tokens: for each case, Sharpener names the line of the patched skill that makes it pass. A run with models happens only when I ask for it. I used it to sharpen rolling-boil after a real drawing session.