Skip to content

Get Copilot's testing → test-servers hand-off to 100% on both chain cases #2459

Description

@cliffhall

Summary

Bring Copilot's testing → test-servers hand-off to 100% on both chain cases in .claude/skills/test-servers/evals/evals.json. Claude already makes both hand-offs 100% of the time. Copilot makes the integration-test one every time, but the pagination one only 3 times in 5.

Current state (v2.8.0 release smoke, Copilot CLI 1.0.88)

AGENT=copilot RUNS=5 npm run skills:eval -- test-servers on the v2.8.0 merge tree (#2456):

PASS 100%  testing → test-servers     Write an integration test that exercises tool listing end to end.
PASS  60%  testing → test-servers     Add end-to-end coverage for the tool-list pagination path.

That matches what #2402 recorded after the #2399 wording change (40% → 60%). A single full-suite pass (RUNS=1) hit both hand-offs, and all 71 first-move cases were at 100%.

How it misses

From #2402's recorded runs on the pagination prompt, the two failure shapes are:

  • Loads testing, then greps for an existing test, finds test-servers/configs/pagination-http.json, and copies from it without following the pointer. The pointer reads as conditional on whether the test uses a fixture, and the model answers that question by searching instead of loading the skill.
  • Greps first and loads no skill at all, sometimes reaching testing → test-servers late.

"End to end" in a prompt apparently isn't a strong enough cue for Copilot, while "integration test" is.

Levers to try

Measure each one separately (probe, then measure, per docs/skill-authoring.md):

  1. The testing body: move the test-servers pointer to the top of the body, and make it unconditional for "end-to-end / integration coverage of an MCP operation" rather than conditional on a fixture question.
  2. The testing description: name "end-to-end coverage" and "pagination" among its trigger situations, so the first link fires before any grep.
  3. The test-servers description: add "end-to-end coverage of an MCP operation" as a situation. That can help Copilot reach it directly, but a first-move test-servers load is not what the chain case scores, so it only helps if the chain still goes through testing.

⚠️ Per AGENTS.md (Maintaining the skills), any description edit can lower other skills' trigger rates, so re-run the full eval under both agents after each change, not just these two cases.

Acceptance

  • AGENT=copilot RUNS=5 npm run skills:eval -- test-servers reports 100% on both hand-off cases, on two separate runs (at n=5, one run at 100% could be luck)
  • AGENT=claude (the default) still reports 100% on both hand-offs
  • The full suite stays clean under both agents: every first-move case at or above threshold, every negative case clean
  • npm run verify:skills passes, and the listing budget stays within 4,000 characters
  • Per the The testing → test-servers hand-off lands on the wrong half of the procedure #2264 lesson, read the test-servers body as a caller arriving from the pagination prompt would, and confirm it answers that task, not just that it loaded

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

choreMaintenance: deps, build tooling, CI, cleanup — no user-facing behavior changev2Issues and PRs for v2

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions