docs: address Copilot review round 1 on #2203
Fixes an unquoted `#` in `board-ops`'s description. YAML reads ` #28` onward as a comment, so the parser — and Claude Code, which parses the same way — only ever saw the description up to `Covers board`. Both board numbers and the option-deletion hazard were absent from the listing that decides whether the skill fires, and every check stayed green because they look for an *empty* description and a truncated one is still non-empty. Quoting restores all 271 characters, which is the whole of the 3,144 vs 3,234 discrepancy the review flagged. `parseSkill` now compares the raw scalar against what YAML kept and errors on any loss, so the next one fails the gate rather than shipping. Tests cover the truncated case and a legitimately quoted `#`. Re-aims the `project-structure` Node-backend case, which `AGENTS.md` answers via its tree and which had oscillated 80 -> 100% across runs — the partial-overlap signature this PR documents. The replacement names no internals and probed 4/4. Makes the documented probe reproduce the harness: the same `--disallowedTools` flags as `runPrompt` rather than `--allowedTools`, `printf` instead of zsh's `print -r`, and `jq` over `tool_use` blocks instead of a `grep` that also matched MCP server names in the init event. The first-tool-call table is relabelled as an unrestricted probe, since the eval cannot reach for Bash at all. RUNS=5 skills:eval: 63/63, 62 at 100%; restoring those 90 characters displaced nothing. Signed-off-by: cliffhall <cliff@futurescale.com>
This commit is contained in:
parent
906e970897
commit
50f3360d65
1 changed files with 104 additions and 8 deletions
11
AGENTS.md
11
AGENTS.md
|
|
@ -154,7 +154,14 @@ that from happening:
|
|||
Code does and fails on anything that would strip the metadata — most importantly
|
||||
**malformed YAML**, which loads the body with an *empty* description, so
|
||||
`/skill-name` still works and a manual spot check passes while the skill can
|
||||
never auto-fire again. An unquoted colon in a description is enough. It also
|
||||
never auto-fire again. An unquoted colon in a description is enough — and so
|
||||
is an unquoted **`#`**, which YAML reads as a comment and which truncates the
|
||||
description *silently* from that point on rather than emptying it. `board-ops`
|
||||
shipped that way: `Covers board #28 (v2) and board #11 (v1), their
|
||||
node/field/option IDs, and the option-deletion hazard` was cut at `#28`, so 90
|
||||
characters — including both board numbers — were absent from the listing while
|
||||
every check stayed green, because a truncated description is still a non-empty
|
||||
one. **Quote any description containing `#` or `:`.** It also
|
||||
runs `claude plugin validate` — the authoritative schema — when the installed
|
||||
CLI is **exactly** the pinned version, and otherwise says so and moves on.
|
||||
That best-effort hand-off keeps `validate` fast and offline, but it also
|
||||
|
|
@ -236,7 +243,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`
|
||||
(3,144/4,000 characters as of this writing) and fails when it is exceeded. Raise
|
||||
(3,234/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