Official agent skill

Vstest Build Test

by microsoft in microsoft/vstest

Build, test, and validate changes in the vstest repository. An agent skill from microsoft/vstest.

OfficialMITAuto-check passedTesting & QA

Install Vstest Build Test

skills CLI
$ npx skills add microsoft/vstest --skill vstest-build-test -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install microsoft/vstest vstest-build-test --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/microsoft/vstest.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/vstest-build-test .claude/skills/vstest-build-test && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
vstest-build-test
GitHub stars
969
Token cost
~1.9k tokens
SKILL.md length
579 words
Files
1
Skills in repo
5
Repo updated
First seen
Licence
MIT

At a glance

Build, test, and validate changes in the vstest repository. An agent skill from microsoft/vstest.

  • Works in 3 steps: Locate the package:… → Unzip it (.nupkg files are ZIP archives) → Run the local vstest.console against a…
  • Building vstest projects
  • SKILL.md covers Pre-Build: Environment Setup, Build, Test and Manual Validation with…, plus 2 more sections
  • Calls dotnet

What it does

Vstest Build Test is an agent skill from microsoft/vstest, published by the product's own GitHub organization. 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.

Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Testing & QA, covering QA and bug reports, Unit testing and End-to-end testing. It works with .NET. The repository describes itself as: Visual Studio Test Platform is the runner and engine that powers test explorer and vstest.console. The licence is MIT.

When your agent uses it

  • Building vstest projects
  • Running unit tests
  • Acceptance tests
  • Deploying locally built vstest.console for manual testing

Example prompts

  • “/vstest-build-test”

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Locate the package: artifacts/packages/Debug/Shipping/Microsoft.TestPlatform.-dev.nupkg
  2. Unzip it (.nupkg files are ZIP archives)
  3. Run the local vstest.console against a test project

What it can do on your machine

Read from SKILL.md and the folder at commit 05cd781. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • dotnet

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • microsoft.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Vstest Build Test loads about 1.9k tokens when it runs. Until then it costs about 58 tokens; SKILL.md has 579 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~58
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from microsoft/vstest at commit 05cd781, republished under its MIT licence (© microsoft). 579 words, ~1,906 tokens.

Download SKILL.mdSave it as .claude/skills/vstest-build-test/SKILL.md (or your agent's skills folder).
name
vstest-build-test
description
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.

Building and Testing vstest

Pre-Build: Environment Setup

Before building, verify the .dotnet toolchain matches the current OS. The repo bootstraps its own .NET SDK into .dotnet/.

Detect OS vs .dotnet Mismatch

Run this check before every first build in a session:

bash
# Determine current OS
OS=$(uname -s)   # "Linux", "Darwin" (macOS), or contains "MINGW"/"MSYS" (Windows/Git Bash)

if [ -d ".dotnet" ]; then
  if [ "$OS" = "Linux" ] || [ "$OS" = "Darwin" ]; then
    # On Linux/macOS the dotnet binary must be an ELF/Mach-O executable, not .exe
    if [ -f ".dotnet/dotnet.exe" ] && [ ! -f ".dotnet/dotnet" ]; then
      echo "MISMATCH: .dotnet contains Windows binaries but OS is $OS"
      rm -rf .dotnet .packages artifacts
      echo "Cleaned .dotnet, .packages, and artifacts for fresh bootstrap"
    fi
  else
    # On Windows the dotnet binary should be dotnet.exe
    if [ -f ".dotnet/dotnet" ] && [ ! -f ".dotnet/dotnet.exe" ]; then
      echo "MISMATCH: .dotnet contains Linux/macOS binaries but OS is Windows"
      rm -rf .dotnet .packages artifacts
      echo "Cleaned .dotnet, .packages, and artifacts for fresh bootstrap"
    fi
  fi
fi

After cleanup (or if .dotnet doesn't exist), the build script automatically downloads the correct SDK version from global.json.

Build

Platform Commands
ActionWindowsLinux / macOS
Restore + Build./build.cmd./build.sh
Restore only./restore.cmd./restore.sh
Build + Pack./build.cmd -pack./build.sh --pack
Release config./build.cmd -c Release -pack./build.sh -c Release --pack
Single project./build.cmd -project <csproj>./build.sh --projects <csproj>

For projects with many cross-project dependencies (e.g., HtmlLogger, TrxLogger, vstest.console):

bash
# Linux / macOS
./build.sh --pack

# Windows
./build.cmd -pack

This produces NuGet packages under artifacts/packages/Debug/Shipping/.

Single Project Build

For isolated projects with few dependencies:

bash
# Linux / macOS
./build.sh --projects <path-to-csproj>

# Windows
./build.cmd -project <path-to-csproj>

Warning: This does NOT work for projects like HtmlLogger that have many transitive dependencies. Use --pack / -pack instead.

Test

Unit Tests (Default)
bash
# Linux / macOS
./test.sh

# Windows
./test.cmd
Specific Project(s)

-projects / --projects takes a resolvable path or glob — it is passed through Resolve-Path, so a bare project nickname or category (e.g. smoke, htmllogger) fails with Cannot find path. Point it at the csproj(s):

bash
# Windows
./test.cmd -projects "test\**\*HtmlLogger*\*.csproj"

# Linux / macOS
./test.sh --projects "test/**/*HtmlLogger*/*.csproj"

For a single project you can also build+test its csproj directly with the bootstrapped SDK:

bash
# Windows
./.dotnet/dotnet.exe test test/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests/*.csproj -c Debug

# Linux / macOS
./.dotnet/dotnet test test/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests/*.csproj -c Debug
Test Categories (smoke / integration / performance / compatibility)

These are switches handled by eng/build.ps1 — NOT -projects values:

bash
# Windows
./test.cmd -smokeTest           # TestCategory=Smoke (a subset of integration tests)
./test.cmd -integrationTest     # full acceptance / integration suite
./test.cmd -performanceTest
./test.cmd -compatibilityTest

# Linux / macOS: only --integrationTest and --performanceTest exist, because test.sh
# calls arcade's eng/common/build.sh directly and never goes through eng/build.ps1.
./test.sh --integrationTest     # includes smoke; there is no -smokeTest switch here

-smokeTest and -integrationTest are mutually exclusive (smoke is a subset); passing both throws.

Filter by Test Name

On Windows use the -filter parameter. Do not pass --filter inside TestRunnerAdditionalArguments — eng/build.ps1 explicitly throws if you do.

On Linux/macOS test.sh has no -filter parameter, so the filter goes in as an MSBuild property. The single quotes are required, otherwise bash interprets &, |, and the inner quotes.

bash
# Windows
./test.cmd -integrationTest -filter "FullyQualifiedName~MyScenario"

# Linux / macOS
./test.sh --integrationTest --property:'TestRunnerAdditionalArguments=--filter "FullyQualifiedName~MyScenario"'

See CONTRIBUTING.md for more filtering examples.

Running tests locally (DOTNET_ROOT gotcha)

Test executables are built against the repo's preview TFM (e.g. net11.0), and integration and smoke tests additionally launch test-asset apphosts built the same way. An apphost resolves its shared runtime from DOTNET_ROOT, falling back to the machine-wide install (C:\Program Files\dotnet), which usually lacks the preview runtime — so it fails instantly with "You must install or update .NET to run this application." This hits plain unit test runs too, not only integration and smoke tests.

  • test.sh (Linux/macOS) sets DOTNET_ROOT to the repo .dotnet automatically.
  • test.cmd (Windows) does not — set it yourself before running:
powershell
$env:DOTNET_ROOT = "$PWD\.dotnet"
${env:DOTNET_ROOT(x86)} = "$PWD\.dotnet\dotnet-sdk-x86"   # only if x86 test hosts run
$env:DOTNET_MULTILEVEL_LOOKUP = "0"
./test.cmd -smokeTest
Show full SKILL.md (200 more words)Show less

Manual Validation with vstest.console

After building with --pack / -pack, validate vstest.console changes by unzipping the built package:

  1. Locate the package: artifacts/packages/Debug/Shipping/Microsoft.TestPlatform.<version>-dev.nupkg
  2. Unzip it (.nupkg files are ZIP archives)
  3. Run the local vstest.console against a test project
Alternative: Direct Artifact Paths
  • xplat (netcoreapp): artifacts/<Configuration>/netcoreapp1.0/vstest.console.dll
  • Windows desktop: artifacts/<Configuration>/net46/win7-x64/vstest.console.exe

Test Categories

CategorySpeedWhat it testsHow to run
Unit testsFastIndividual units./test.cmd / ./test.sh (default)
Smoke testsSlowP0 end-to-end scenarios-smokeTest switch
Acceptance / integrationSlowestExtensive coverage-integrationTest switch

Troubleshooting

  • OS mismatch errors: If you see SDK load failures, run the mismatch detection script above to clean and re-bootstrap.
  • Toolset version <version> has not been restored.: test.cmd / test.sh do not restore. Build once (./build.cmd -c Release) first, or pass -restore -build to the test command.
  • Tests fail instantly on Windows with "You must install or update .NET to run this application": test.cmd does not set DOTNET_ROOT, so the preview-TFM apphosts look in C:\Program Files\dotnet (which lacks the preview runtime). Set $env:DOTNET_ROOT = "$PWD\.dotnet" before running — see "Running tests locally".
  • If build fails asking for .NET 4.6 targeting pack, install it from Microsoft Downloads
  • Enable verbose diagnostics: see docs/diagnose.md
  • For debugging, add Debugger.Launch at process entry points (testhost.exe, vstest.console.exe)

© microsoft, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .github/skills/vstest-build-test of microsoft/vstest.

Open the folder on GitHubat commit 05cd781

Compare with similar skills

Vstest Build Test next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Vstest Build Test compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Vstest Build Test this skillmicrosoft/vstest969—~1.9kAutomated safety check: PassMIT
Dotnet Testingnovotnyllc/dotnet-artisan233—~972Automated safety check: PassMIT
Dotnet Testingmacalbert/envilder138—~1.6kAutomated safety check: PassMIT
Claude Code QAPramodDutta/qaskills232—~2.3kAutomated safety check: PassMIT
Specx Testsmaksimzayats/specx202—~1.9kAutomated safety check: PassMIT
Testing QAaiskillstore/marketplace4303 repos~1.2kAutomated safety check: PassNone

Similar skills

  • Dotnet Testing

    novotnyllc/dotnet-artisan

    Defines .NET test strategy and implementation patterns across xUnit v3 (Facts, Theories, fixtures, IAsyncLifetime), integration testing (WebApplicationFactory, Testcontainers), Aspire testing…

    233 GitHub stars~972 tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Dotnet Testing

    macalbert/envilder

    Mandatory testing conventions for .NET (xUnit, AwesomeAssertions).

    138 GitHub stars~1.6k tokensUpdated 3 days ago
    Testing & QAAuto-check passed
  • Claude Code QA

    PramodDutta/qaskills

    The complete QA skill for Claude Code — turn Claude into an expert QA engineer that picks the right test type, writes reliable Playwright, Cypress, and pytest tests, eliminates flaky tests, enforces…

    232 GitHub stars~2.3k tokensUpdated 4 days ago
    Testing & QAAuto-check passed
  • Specx Tests

    maksimzayats/specx

    Add or refine tests for specx Python services. An agent skill from maksimzayats/specx.

    202 GitHub stars~1.9k tokensUpdated 2 mo ago
    Testing & QAAuto-check passed
  • Testing QA

    aiskillstore/marketplace

    Comprehensive testing and QA workflow covering unit testing, integration testing, E2E testing, browser automation, and quality assurance.

    430 GitHub starsUsed in 3 repos~1.2k tokens
    Testing & QAAuto-check passed
  • CodexBar Live QA

    steipete/CodexBar

    Runs live QA for the CodexBar app: provider usage matrix checks through its packaged CLI, config validation and menu checks, with 1Password-backed credentials handled safely.

    22k GitHub stars~1.2k tokensUpdated today
    Testing & QAAuto-check passed

More from microsoft/vstest

  • Trx Analysis

    microsoft/vstest

    Official

    Parse and analyze Visual Studio TRX test result files. An agent skill from microsoft/vstest.

    969 GitHub stars~1.8k tokensUpdated yesterday
    Auto-check passed
  • Validate Skills

    microsoft/vstest

    Official

    Validate that commands documented in skill files actually work.

    969 GitHub stars~759 tokensUpdated yesterday
    Auto-check passed
  • Creating Skills

    microsoft/vstest

    Official

    Create custom agent capabilities when discovering novel tools, receiving task-agnostic tips from reviewers, or after researching specialized workflows not covered in existing instructions.

    969 GitHub stars~1.5k tokensUpdated yesterday
    Auto-check passed
  • Expert Reviewing

    microsoft/vstest

    Official

    Route code and dependency changes to relevant review dimensions based on affected files and folders.

    969 GitHub stars~2k tokensUpdated yesterday
    Auto-check passed

Works with

Categories

Questions about Vstest Build Test

What does Vstest Build Test do?

Build, test, and validate changes in the vstest repository. An agent skill from microsoft/vstest. Vstest Build Test is an agent skill from microsoft/vstest, published by the product's own GitHub organization. Build, test, and validate changes in the vstest repository.

When should I use Vstest Build Test?

Vstest Build Test fits situations like: building vstest projects; running unit tests; acceptance tests; deploying locally built vstest.console for manual testing.

How do I install Vstest Build Test in Claude Code?

Run `npx skills add microsoft/vstest --skill vstest-build-test -a claude-code`. Or copy the skill folder (.github/skills/vstest-build-test in microsoft/vstest) into .claude/skills/vstest-build-test in your project. Claude Code loads it when a task matches its description.

How do I install Vstest Build Test in Codex?

Run `npx skills add microsoft/vstest --skill vstest-build-test -a codex`. Or copy the skill folder (.github/skills/vstest-build-test in microsoft/vstest) into .agents/skills/vstest-build-test in your project. Codex loads it when a task matches its description.

Can I use Vstest Build Test in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add microsoft/vstest --skill vstest-build-test -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/vstest-build-test, .gemini/skills/vstest-build-test, .github/skills/vstest-build-test and .opencode/skills/vstest-build-test in your project.

What does Vstest Build Test need to run?

Going by SKILL.md and its folder, Vstest Build Test needs the command-line tools its instructions call (dotnet).

Does Vstest Build Test access the network?

SKILL.md names 1 domain. As links in the text: microsoft.com. This is read from the text; nothing was executed.

Is Vstest Build Test safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Vstest Build Test use?

Vstest Build Test is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Vstest Build Test use?

About 1.9k tokens (SKILL.md is roughly 7.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Vstest Build Test?

Skills that share tags, products or a category with Vstest Build Test: Dotnet Testing (novotnyllc/dotnet-artisan, 233 stars), Dotnet Testing (macalbert/envilder, 138 stars), Claude Code QA (PramodDutta/qaskills, 232 stars) and Specx Tests (maksimzayats/specx, 202 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Vstest Build Test?

microsoft (a GitHub organization, an official publisher) maintains it in microsoft/vstest, which has 969 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 7, 2026.

Source: microsoft/vstest on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.