* Deduplicate test skill references and clarify skill boundaries
- Move platform-detection.md and filter-syntax.md to plugins/dotnet-test/shared/,
removing 3 identical copies of each from run-tests, mtp-hot-reload, and
migrate-vstest-to-mtp reference directories.
- Move dotnet.md from exp-test-smell-detection/extensions/ to shared/ as
dotnet-test-frameworks.md in both dotnet-test and dotnet-experimental plugins.
Update exp-assertion-quality, exp-test-boilerplate-detection, exp-test-tagging,
and test-anti-patterns to reference the shared file instead of inlining
framework detection tables.
- Differentiate test-anti-patterns (quick pragmatic review) from
exp-test-smell-detection (deep formal audit with academic taxonomy) by updating
descriptions and cross-referencing each other in When Not to Use sections.
- Update skill-validator to allow ../../shared/ file references while still
blocking other parent-directory traversals. Add tests for the new rule.
* Switch from shared/ directories to hidden reference skills
Replace the plugin-level shared/ directories with non-invocable reference
skills (user-invocable: false) that other skills reference by name.
- Create platform-detection, filter-syntax, and dotnet-test-frameworks as
hidden skills under plugins/dotnet-test/skills/. These contain the
detection tables and syntax references previously duplicated across
run-tests, mtp-hot-reload, and migrate-vstest-to-mtp.
- Create exp-dotnet-test-frameworks as a hidden skill under
plugins/dotnet-experimental/skills/ for the experimental test analysis
skills (exp-test-smell-detection, exp-assertion-quality, etc.).
- Update all consuming skills to reference these by skill name in backtick
notation instead of file links.
- Revert the skill-validator ../../shared/ exception — no longer needed
since all references now use the standard skill name mechanism.
* Merge exp-test-boilerplate-detection into exp-test-maintainability
exp-test-maintainability was only 6 calibration rules with no workflow.
exp-test-boilerplate-detection had the full 5-category detection workflow,
examples, calibration, and validation. Merge the boilerplate content into
exp-test-maintainability (the broader, more user-facing name) and add the
two unique maintainability rules (DisplayName guidance, DataRow vs
DynamicData preference) to Category 3.
- Replace exp-test-maintainability SKILL.md with the merged content
- Move test fixtures from exp-test-boilerplate-detection to exp-test-maintainability
- Merge eval.yaml scenarios (4 total: 2 from each original skill)
- Delete exp-test-boilerplate-detection skill and tests
- Update all cross-references in exp-test-smell-detection, dotnet-test-frameworks,
exp-dotnet-test-frameworks, and CODEOWNERS
* Add cross-references to test-anti-patterns for deep mock and duplication analysis
Point users to exp-mock-usage-analysis from the Over-mocking entry and
to exp-test-maintainability from the Duplicate tests entry.
* Add exp-dotnet-test-frameworks to CODEOWNERS
* Improve run-tests SDK 10 MTP detection for blame-hang scenario
Inline the critical SDK 10 detection signal (global.json test.runner)
directly in Step 1 instead of deferring entirely to the platform-detection
skill. This makes the distinction between SDK 10 (no -- separator) and
SDK 8/9 (requires -- separator) more prominent.
Add a quick detection summary table, strengthen the Common Pitfalls entry
for SDK 10 with a blame-hang-timeout example, and keep the
platform-detection skill reference for the full detection logic.
* Improve skill activation keywords in descriptions
- exp-test-maintainability: Add 'suggest a better test structure',
'consolidate similar test methods', 'convert copy-paste tests to
data-driven parameterized tests' to match prompts like 'each new case
needs a whole new method, suggest a better structure'.
- test-anti-patterns: Add 'review tests', 'find test problems', 'check
test quality', 'audit tests for common mistakes' to match review-style
prompts that don't use the word 'anti-pattern'.
- run-tests: Add 'hang timeout', 'blame-hang', 'blame-crash', 'TUnit'
to match SDK 10 blame scenarios and TUnit filter scenarios that were
intermittently not activating.
New experimental skill that assesses test maintainability: duplication,
test size, data-driven patterns, display names, builder/helper extraction,
and shared setup.