Fix writing-mstest-tests activation by deflecting sibling skills - #835
Conversation
The writing-mstest-tests skill failed to activate in the plugin arm for six MSTest-specific scenarios (fix swapped Assert.AreEqual, modernize legacy patterns, type/string assertions, DynamicData with ValueTuples) because sibling skills captured the routing. assertion-quality and test-anti-patterns matched these prompts but lacked explicit deflection to writing-mstest-tests. Add DO NOT USE entries pointing MSTest test writing/fixing/modernizing to writing-mstest-tests. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Skill Coverage Report
|
There was a problem hiding this comment.
Pull request overview
This PR updates dotnet-test plugin skill metadata to reduce routing competition that prevents writing-mstest-tests from activating in MSTest-focused scenarios.
Changes:
- Added an explicit MSTest deflection to
test-anti-patternsfrontmatter to route MSTest fix/modernization requests towriting-mstest-tests. - Updated
assertion-qualityfrontmatter to deflect MSTest writing/fixing/modernization requests towriting-mstest-tests.
Show a summary per file
| File | Description |
|---|---|
| plugins/dotnet-test/skills/test-anti-patterns/SKILL.md | Adds MSTest-specific “DO NOT USE FOR” routing deflection in the skill frontmatter description. |
| plugins/dotnet-test/skills/assertion-quality/SKILL.md | Replaces/extends the frontmatter deflection text to steer MSTest writing/fixing/modernization away from this skill. |
Copilot's findings
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 2/2 changed files
- Comments generated: 2
…anti-patterns - assertion-quality: restore the general 'fixing or rewriting assertions' deflection (dropped in the prior edit) alongside the MSTest deflection, and fix punctuation to use comma-separated DO NOT USE items. - test-anti-patterns: align the 'writing new tests' deflection to also point MSTest test-writing to writing-mstest-tests, matching the body guidance. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
/evaluate |
Skill Validation Results
[1] Model: claude-opus-4.6 | Judge: claude-opus-4.6 🔍 Full Results - additional metrics and failure investigation steps
▶ Sessions Visualisation -- interactive replay of all evaluation sessions |
…net#835) * Add MSTest deflection to assertion-quality and test-anti-patterns skills The writing-mstest-tests skill failed to activate in the plugin arm for six MSTest-specific scenarios (fix swapped Assert.AreEqual, modernize legacy patterns, type/string assertions, DynamicData with ValueTuples) because sibling skills captured the routing. assertion-quality and test-anti-patterns matched these prompts but lacked explicit deflection to writing-mstest-tests. Add DO NOT USE entries pointing MSTest test writing/fixing/modernizing to writing-mstest-tests. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address review: restore general assertion-fix deflection, align test-anti-patterns - assertion-quality: restore the general 'fixing or rewriting assertions' deflection (dropped in the prior edit) alongside the MSTest deflection, and fix punctuation to use comma-separated DO NOT USE items. - test-anti-patterns: align the 'writing new tests' deflection to also point MSTest test-writing to writing-mstest-tests, matching the body guidance. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Skill-activation investigation of the dotnet-test plugin arm (using the PR #850 eval session transcripts) showed the dominant failure mode is 'self-serve': in the crowded 16-skill plugin menu the model answers directly and loads no skill, rather than a sibling stealing activation or a budget cutoff. #800/#801/#835 already applied the standard remedies (trigger-phrasing, sibling deflection, DMI on the reference skills, additional_required_skills), so the remaining lever is reducing menu pressure. find-untested-sources is an agent-orchestrated helper: it is invoked by name from code-testing-researcher and the code-testing pipeline, is not listed in the plugin README's skill tables, and has no eval — yet it was still consuming the model-facing skill-menu budget and adding routing noise. Mark it disable-model-invocation: true (it stays invocable by name). This drops the plugin's rendered skill-menu cost from 14,981 to 14,261 of the 15,000-char budget (16 -> 15 model-invocable skills), giving the alphabetically-later user-facing test skills more headroom. skill-validator check passes (all 21 skills, 10 agents, 1 plugin). Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Problem
Six
writing-mstest-testseval scenarios were failing with skill-activation issues in the plugin arm:Root cause
This is not a skill-menu budget-truncation problem. The
dotnet-testplugin's rendered model-invocable menu is ~14.7K chars (< the 15,000SKILL_CHAR_BUDGET), sowriting-mstest-testskeeps its full description in the plugin menu, and that description already contains the relevant keywords.The real cause is routing competition: these MSTest-specific prompts also match sibling skills, and the router was selecting the sibling instead — so
writing-mstest-testsspecifically wasn't indetectedSkills, yieldingactivated: falsefor the plugin arm.Two model-invocable siblings matched but had no explicit deflection:
assertion-quality— ended with a vaguefixing assertions, capturing the type/string-assertion scenarios.test-anti-patterns— broad "audit/review tests, swapped assertions" with no MSTest carve-out, capturing the swapped-Assert.AreEqualand modernize-legacy scenarios.(
code-testing-agentalready defers MSTest writing/attributes towriting-mstest-tests.)Fix
Add explicit
DO NOT USE FOR … (use writing-mstest-tests)deflections to both siblings' frontmatter descriptions:fixing assertionswithwriting, fixing, or modernizing MSTest tests, assertions, or attributes (use writing-mstest-tests).fixing or modernizing MSTest tests, assertions, attributes, or lifecycle (use writing-mstest-tests).Both siblings' own eval suites are audit/evaluate-only (assertion-quality even has a "Decline request to write new tests" scenario), so these deflections reinforce rather than conflict with their existing coverage.
Validation
skill-validator check --plugin plugins/dotnet-testpasses ✅ — aggregate rendered menu 14,907 / 15,000; both edited descriptions remain under the 1,024-char cap.GITHUB_TOKEN); validation was done deterministically viacheckand budget math.Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com