Repository navigation
test-servers skill points to scripts/ensure-test-servers.mjs, which does not exist (it lives at scripts/lib/ensure-test-servers.mjs) #2523
Description
Which version line? v2 — current
Which client? All / shared core (repo dev tooling: .claude/skills/test-servers/SKILL.md)
Inspector version: 2.8.0 — checked at main @ 1e31c78 and v2/main @ 1716af1
Node version: n/a (documentation defect, no runtime involved)
Transport: Not applicable / never connected
MCP server under inspection: n/a
Steps to reproduce
- Check out
v2/main(ormain). - Open
.claude/skills/test-servers/SKILL.md. Line 201 onv2/main(line 190 onmain) reads:Scripts reach this through
scripts/ensure-test-servers.mjs, which builds unconditionally (once per process per repo root). test -e scripts/ensure-test-servers.mjs || echo missingprintsmissing.git ls-files | grep ensure-test-serverslists onlyscripts/lib/ensure-test-servers.mjsandscripts/lib/ensure-test-servers.test.mjs.
Expected behavior
The skill names the helper that the scripts actually import. The repo's own imports use lib/:
scripts/pack-and-verify.mjs:62:} from "./lib/ensure-test-servers.mjs";scripts/smoke-cli.mjs:48:import { ensureTestServers } from "./lib/ensure-test-servers.mjs";
The script comments cite it the same way, e.g. scripts/smoke-cli.mjs:40: "scripts/lib/ensure-test-servers.mjs for why presence isn't freshness."
Actual behavior
The skill gives scripts/ensure-test-servers.mjs, a path that has never existed on v2/main: the commits API returns no history for it. This skill is model-invoked, and its description says it applies "when a fixture keeps serving stale code after an edit". That is the case where an agent follows this sentence to the helper, and it gets sent to a file that isn't there.
The lib/ segment seems to have been dropped when the recipe was extracted from AGENTS.md into skills (73447c72d, #2189). Before that commit, AGENTS.md listed ensure-test-servers.mjs under scripts/'s "lib/ shared helpers" in the tree comment, without a directory prefix.
Logs, errors, or screenshots
$ test -e scripts/ensure-test-servers.mjs || echo missing
missing
$ grep -rn 'ensure-test-servers.mjs' .claude/skills
.claude/skills/test-servers/SKILL.md:201:Scripts reach this through `scripts/ensure-test-servers.mjs`, which builds
Already prototyped a fix?
No local change and no diff. A one-line prompt that should produce the fix:
In
.claude/skills/test-servers/SKILL.md, changescripts/ensure-test-servers.mjstoscripts/lib/ensure-test-servers.mjs(the pathscripts/pack-and-verify.mjsandscripts/smoke-cli.mjsimport it from). No other file references the unprefixed path.
Before you submit
- I searched existing issues and this is not a duplicate. (Searched
ensure-test-servers,scripts/ensure-test-servers.mjs,test-servers SKILL.md. The smokes rebuild test-servers only when it is MISSING, so a stale fixture silently tests the wrong thing #2111 and chore(scripts): build test-servers unconditionally from one shared helper (#2111) #2120 cover the rebuild behavior, not this path.) - This is not a security vulnerability report.
This contribution was autonomously selected and produced by agents through Hermes Labs’ engineering infrastructure. Rolando Bosch is the responsible human contributor and authorized publication from his personal GitHub account.
Activity
[-]test-servers skill points to , which does not exist (it lives at )[/-][+]test-servers skill points to `scripts/ensure-test-servers.mjs`, which does not exist (it lives at `scripts/lib/ensure-test-servers.mjs`)[/+]cliffhall commentedon Oct 12, 2026
Triage: Priority Low (total 2)
.claude/skills/test-servers/SKILL.md(scripts/ensure-test-servers.mjs→scripts/lib/ensure-test-servers.mjs); still present onv2/mainBoard: #28, Status
Incoming(awaiting maintainer review — no milestone yet).Merge pull request #2678 from modelcontextprotocol/v2/docs/2523-test-…
cliffhall commentedon Oct 12, 2026
Fixed by #2678.