.github/skills/validate-skills/SKILL.md
Validate that commands documented in skill files actually work. Use when creating, updating, or reviewing skills to ensure all documented commands exit with code 0.
npx skillsauth add microsoft/vstest validate-skillsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Verify every executable command in a skill runs successfully on the current OS.
Determine which platform commands to extract:
# PowerShell (Windows)
$os = "Windows"
# Bash (Linux / macOS)
OS=$(uname -s) # "Linux" or "Darwin"
Parse the target skill's SKILL.md and list every shell command for the detected OS:
# Windows or # Linux / macOS, only run the one for your OS.<path-to-csproj>, <skill-name>) with real values from the repo. If no sensible value exists, skip the command.ls -la should be adapted to PowerShell equivalents (Get-ChildItem) on Windows when no native Windows command is documented.Use the SQL tool to create a tracking table:
CREATE TABLE skill_commands (
id INTEGER PRIMARY KEY AUTOINCREMENT,
skill TEXT NOT NULL,
command TEXT NOT NULL,
expected_exit INTEGER DEFAULT 0,
actual_exit INTEGER,
status TEXT DEFAULT 'pending',
notes TEXT
);
For every extracted command:
CRITICAL: Never run unfiltered integration/acceptance tests. They take hours.
test.sh --integrationTestortest.cmd -IntegrationMUST include a--filteror-pflag.test.sh -p smokeis acceptable (scoped to smoke tests), but expect it to be slow.
After all commands finish, print a summary:
=== Skill Validation Report ===
Skill: <skill-name>
OS: <Linux|Darwin|Windows>
Commands tested: N
PASS: X
ENV_ISSUE: Y (list with reasons)
ERROR: Z (list failed commands with exit codes)
SKILL.md to fix the command.development
Best practices for writing MSTest 3.x/4.x unit tests. Use when the user needs to write, improve, fix, or review MSTest tests, including modern assertions, data-driven tests, test lifecycle, and common anti-patterns. Also use when fixing test issues like swapped Assert.AreEqual arguments, incorrect assertion usage, or modernizing legacy test code. Covers MSTest.Sdk, sealed classes, Assert.Throws, DynamicData with ValueTuples, TestContext, and conditional execution.
development
Build, test, and validate changes in the vstest repository. Use when building vstest projects, running unit tests, smoke tests, or acceptance tests, or when deploying locally built vstest.console for manual testing.
testing
Parse and analyze Visual Studio TRX test result files. Use when asked about slow tests, test durations, test frequency, flaky tests, failure analysis, or test execution patterns from TRX files.
development
Quick pragmatic review of .NET test code for anti-patterns that undermine reliability and diagnostic value. Use when asked to review tests, find test problems, check test quality, or audit tests for common mistakes. Catches assertion gaps, flakiness indicators, over-mocking, naming issues, and structural problems with actionable fixes. Use for periodic test code reviews and PR feedback. For a deep formal audit based on academic test smell taxonomy, use exp-test-smell-detection instead. Works with MSTest, xUnit, NUnit, and TUnit.