docs: tune skill eval cases and document how to write them
`skills:eval` was at 38/46 with several skills measuring 0-33%. The low scores were mostly bad eval cases rather than bad descriptions, for two reasons that were nowhere written down: - The harness runs each case with `--max-turns 1`, so the skill has to be the model's FIRST tool call. A prompt asking "how does X work here", or naming a concrete file, sends the model to Read/Grep first — a better answer to the question, scored as a miss. Every 0% case was one of these. - `AGENTS.md` is resident on every turn, so a prompt it already answers is answered without any skill and the case can never pass. Replace the cases that measured the wrong thing, expand every model-invoked skill from 3 to 5 positives (negatives kept) so one flake cannot cross the threshold, and reshape `local-dev`'s description to the action-first form. Add `docs/skill-authoring.md` with the case shapes that fire, the ones that cannot, and the probe-then-measure loop. RUNS=5 npm run skills:eval: 63/63 at or above threshold, 60 at 100%, all 18 negatives clean. Closes #2202 Signed-off-by: cliffhall <cliff@futurescale.com>
This commit is contained in:
parent
2eb160d5eb
commit
6dd43e78ba
1 changed files with 262 additions and 9 deletions
|
|
@ -192,6 +192,9 @@ that from happening:
|
|||
a skill therefore has a cost paid by the *existing* ones, which only
|
||||
`skills:eval` can see. **Re-run the full eval after any flip _or description
|
||||
edit_**, not just the changed skill's own cases.
|
||||
**How to write a description that fires, and cases that measure it, is
|
||||
[`docs/skill-authoring.md`](./docs/skill-authoring.md)** — the case shapes
|
||||
that work, the ones that can never pass, and the probe-then-measure loop.
|
||||
The lever that works is the description's *shape*. Leading with the actions
|
||||
and then enumerating concrete situations ("Use when … ; when … ; when …")
|
||||
beats a noun-phrase list of contents: it took `pre-push-gate` from 3/5 to 5/5
|
||||
|
|
@ -230,7 +233,7 @@ that from happening:
|
|||
overflows, and drops the least-invoked entries **first** — which are exactly the
|
||||
model-invoked skills that must fire on their own. `verify:skills` prints the
|
||||
current cost against the budget recorded in `scripts/lib/skill-manifest.mjs`
|
||||
(2,834/4,000 characters as of this writing) and fails when it is exceeded. Raise
|
||||
(2,921/4,000 characters as of this writing) and fails when it is exceeded. Raise
|
||||
the budget deliberately, or tighten a description; each entry is capped at 1,536
|
||||
characters regardless, so **put the key use case first**.
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue