microsoft/validate-skills
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 skills add https://github.com/microsoft/vstest --skill validate-skills
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 --integrationTest or test.cmd -Integration MUST include a --filter or -p flag.
> - test.sh -p smoke is 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.Take microsoft/validate-skills from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.