Official agent skill

Eval Performance

by microsoft in microsoft/testfx

Guide for diagnosing and improving MSBuild project evaluation performance.

OfficialMITAuto-check passedDevelopment

Install Eval Performance

skills CLI
$ npx skills add microsoft/testfx --skill eval-performance -a claude-code

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

GitHub CLI
$ gh skill install microsoft/testfx eval-performance --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/testfx.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/eval-performance .claude/skills/eval-performance && 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
eval-performance
GitHub stars
1k
Used in
3 other repos
Token cost
~1.3k tokens
SKILL.md length
545 words
Files
1
Skills in repo
44
Repo updated
First seen
Licence
MIT

At a glance

Guide for diagnosing and improving MSBuild project evaluation performance.

  • Works in 5 steps: Initial properties: environment… → Imports and property evaluation: process… → Item definition evaluation: metadata… → …
  • : builds slow before any compilation starts
  • SKILL.md covers MSBuild Evaluation Phases, Diagnosing Evaluation…, Expensive Glob Patterns and Import Chain Analysis, plus 4 more sections
  • Calls dotnet

What it does

Eval Performance is an agent skill from microsoft/testfx, published by the product's own GitHub organization. Guide for diagnosing and improving MSBuild project evaluation performance. USE FOR: builds slow before any compilation starts, high evaluation time in binlog analysis, expensive glob patterns walking large directories (nodemodules, .git, bin/obj), deep import chains (20 levels), preprocessed output 10K lines indicating heavy evaluation, property functions with file I/O ($([System.IO.File]::ReadAllText(...))), multiple evaluations per project. Covers the 5 MSBuild evaluation phases, glob optimization via…

Its SKILL.md is about 1.3k 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 Development. It works with Git and Model Context Protocol. The repository describes itself as: This repository holds the source code of Microsoft.Testing.Platform (MTP), a lightweight alternative to VSTest, as well as MSTest adapter and framework. The licence is MIT.

When your agent uses it

  • : builds slow before any compilation starts
  • High evaluation time in binlog analysis
  • Expensive glob patterns walking large directories (nodemodules
  • Deep import chains (20 levels)

Example prompts

  • “/eval-performance”

Workflow steps

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

  1. Initial properties: environment variables, global properties, reserved properties
  2. Imports and property evaluation: process , evaluate top-to-bottom
  3. Item definition evaluation: metadata defaults
  4. Item evaluation: with Include, Remove, Update`, glob expansion
  5. UsingTask evaluation: register custom tasks

What it can do on your machine

Read from SKILL.md and the folder at commit 7c7d590. 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):

    • learn.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

Eval Performance loads about 1.3k tokens when it runs. Until then it costs about 186 tokens; SKILL.md has 545 words of instructions outside code blocks.

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

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/testfx at commit 7c7d590, republished under its MIT licence (© microsoft). 545 words, ~1,338 tokens.

Download SKILL.mdSave it as .claude/skills/eval-performance/SKILL.md (or your agent's skills folder).
name
eval-performance
description
Guide for diagnosing and improving MSBuild project evaluation performance. USE FOR: builds slow before any compilation starts, high evaluation time in binlog analysis, expensive glob patterns walking large directories (node_modules, .git, bin/obj), deep import chains (>20 levels), preprocessed output >10K lines indicating heavy evaluation, property functions with file I/O ($([System.IO.File]::ReadAllText(...))), multiple evaluations per project. Covers the 5 MSBuild evaluation phases, glob optimization via DefaultItemExcludes, import chain analysis with /pp preprocessing. DO NOT USE FOR: compilation-time slowness (use build-perf-diagnostics), incremental build issues (use incremental-build), non-MSBuild build systems.
license
MIT

MSBuild Evaluation Phases

For a comprehensive overview of MSBuild's evaluation and execution model, see Build process overview.

  1. Initial properties: environment variables, global properties, reserved properties
  2. Imports and property evaluation: process <Import>, evaluate <PropertyGroup> top-to-bottom
  3. Item definition evaluation: <ItemDefinitionGroup> metadata defaults
  4. Item evaluation: <ItemGroup> with Include, Remove, Update, glob expansion
  5. UsingTask evaluation: register custom tasks

Key insight: evaluation happens BEFORE any targets run. Slow evaluation = slow build start even when nothing needs compiling.

Diagnosing Evaluation Performance

Primary: binlog MCP (preferred)

Use the binlog MCP server (Microsoft.AITools.BinlogMcp, exposed under the binlog MCP namespace) to analyze evaluation performance:

  1. Use the evaluations tool to list all evaluations and their durations
  2. Use evaluation_global_properties to check for multiple evaluations with differing global properties
  3. Use evaluation_properties to inspect evaluated properties for a specific project+TFM
  4. Use imports tool to analyze the import chain depth and structure
  5. Use properties tool to check for expensive property function evaluations
Fallback: text-log replay and preprocessing (when MCP is unavailable)
Using binlog
  1. Replay the binlog: dotnet msbuild build.binlog -noconlog -fl -flp:v=diag;logfile=full.log
  2. Search for evaluation events: grep -i 'Evaluation started\|Evaluation finished' full.log
  3. Multiple evaluations for the same project = overbuilding
  4. Look for "Project evaluation started/finished" messages and their timestamps
Using /pp (preprocess)
  • dotnet msbuild -pp:full.xml MyProject.csproj
  • Shows the fully expanded project with ALL imports inlined
  • Use to understand: what's imported, import depth, total content volume
  • Large preprocessed output (>10K lines) = heavy evaluation
Using /clp:PerformanceSummary
  • Add to build command for timing breakdown
  • Shows evaluation time separately from target/task execution

Expensive Glob Patterns

  • Globs like **/*.cs walk the entire directory tree
  • Default SDK globs are optimized, but custom globs may not be
  • Problem: globbing over node_modules/, .git/, bin/, obj/ — millions of files
  • Fix: use <DefaultItemExcludes> to exclude large directories
  • Fix: be specific with glob paths: src/**/*.cs instead of **/*.cs
  • Fix: use <EnableDefaultItems>false</EnableDefaultItems> only as last resort (lose SDK defaults)
  • Check: grep for Compile items in the diagnostic log → if Compile items include unexpected files, globs are too broad
Show full SKILL.md (210 more words)Show less

Import Chain Analysis

  • Deep import chains (>20 levels) slow evaluation
  • Each import: file I/O + parse + evaluate
  • Common causes: NuGet packages adding .props/.targets, framework SDK imports, Directory.Build chains
  • Diagnosis: /pp output → search for <!-- Importing comments to see import tree
  • Fix: reduce transitive package imports where possible, consolidate imports

Multiple Evaluations

  • A project evaluated multiple times = wasted work
  • Common causes: referenced from multiple other projects with different global properties
  • Each unique set of global properties = separate evaluation
  • Diagnosis: grep 'Evaluation started.*ProjectName' full.log → if count > 1, check for differing global properties
  • Fix: normalize global properties, use graph build (/graph)

TreatAsLocalProperty

  • Prevents property values from flowing to child projects via MSBuild task
  • Overuse: declaring many TreatAsLocalProperty entries adds evaluation overhead
  • Correct use: only when you genuinely need to override an inherited property

Property Function Cost

  • Property functions execute during evaluation
  • Most are cheap (string operations)
  • Expensive: $([System.IO.File]::ReadAllText(...)) during evaluation — reads file on every evaluation
  • Expensive: network calls, heavy computation
  • Rule: property functions should be fast and side-effect-free

Optimization Checklist

  • Check preprocessed output size: dotnet msbuild -pp:full.xml
  • Verify evaluation count: should be 1 per project per TFM
  • Exclude large directories from globs
  • Avoid file I/O in property functions during evaluation
  • Minimize import depth
  • Use graph build to reduce redundant evaluations
  • Check for unnecessary UsingTask declarations

© 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 .agents/skills/eval-performance of microsoft/testfx.

Open the folder on GitHubat commit 7c7d590

Used in 3 other repositories

We found 4 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 3 other GitHub owners. This page covers the copy in microsoft/testfx, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Eval Performance 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.

Eval Performance compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Eval Performance this skillmicrosoft/testfx1k3 repos~1.3kAutomated safety check: PassMIT
Git Releasewesammustafa/opencode-primer3971 repos~409Automated safety check: PassMIT
Changelogratel-ai/ratel4691 repos~1.6kAutomated safety check: PassMIT
Cut Releasespiculedata/saiku1.3k—~502Automated safety check: PassApache-2.0
Liveagent Code ReviewStack-Cairn/LiveAgent2.2k—~2kAutomated safety check: PassMIT
Zhtw Conventionssysprog21/zhtw-mcp488—~2kAutomated safety check: PassMIT

Similar skills

  • Git Release

    wesammustafa/opencode-primer

    Draft release notes from merged PRs, propose a semver bump, and emit a copy-pasteable gh release create command.

    397 GitHub starsUsed in 1 repo~409 tokens
    DevelopmentAuto-check passed
  • Changelog

    ratel-ai/ratel

    Update per-package CHANGELOG.md files for a Ratel release. An agent skill from ratel-ai/ratel.

    469 GitHub starsUsed in 1 repo~1.6k tokens
    DevelopmentAuto-check passed
  • Cut Release

    spiculedata/saiku

    Cut a Saiku release via Gitflow — version bump, release branch, PR to main, tag, back-merge, and post-release chores.

    1.3k GitHub stars~502 tokensUpdated today
    DevelopmentAuto-check passed
  • Liveagent Code Review

    Stack-Cairn/LiveAgent

    Review an open GitHub pull request or the current local branch and working tree with parallel, independent reviewers and evidence-based validation.

    2.2k GitHub stars~2k tokensUpdated today
    DevelopmentAuto-check passed
  • Zhtw Conventions

    sysprog21/zhtw-mcp

    The zhtw-mcp conventions no gate enforces - the register a comment, a commit message and a PR reply are written in, where Chinese belongs in the tree and where it does not, the untracked working…

    488 GitHub stars~2k tokensUpdated 3 days ago
    DevelopmentAuto-check passed
  • Close Task Commit Push PR

    devoxx/DevoxxGenieIDEAPlugin

    Close the active backlog task (detected from branch name), commit all changes, push to remote, and open a pull request.

    684 GitHub stars~1k tokensUpdated 9 days ago
    DevelopmentAuto-check: notes

More from microsoft/testfx

All 44 skills in this repo
  • Official

    Guide for organizing MSBuild infrastructure with Directory.Build.props, Directory.Build.targets, Directory.Packages.props, and Directory.Build.rsp.

    1k GitHub starsUsed in 1 repo~2.5k tokens
    Auto-check passed
  • Binlog Failure Analysis

    microsoft/testfx

    Official

    Analyze MSBuild binary logs to diagnose build failures. An agent skill from microsoft/testfx.

    1k GitHub starsUsed in 3 repos~730 tokens
    Auto-check passed
  • Coverage Analysis

    microsoft/testfx

    Official

    Project-wide code coverage and CRAP (Change Risk Anti-Patterns) score analysis for .NET projects.

    1k GitHub stars~7.3k tokensUpdated today
    Auto-check passed
  • Incremental Build

    microsoft/testfx

    Official

    Guide for optimizing MSBuild incremental builds. An agent skill from microsoft/testfx.

    1k GitHub starsUsed in 3 repos~3.7k tokens
    Auto-check passed
  • Msbuild Modernization

    microsoft/testfx

    Official

    Guide for modernizing and migrating MSBuild project files to SDK-style format.

    1k GitHub starsUsed in 3 repos~4.3k tokens
    Auto-check passed
  • Msbuild Antipatterns

    microsoft/testfx

    Official

    Catalog of MSBuild anti-patterns with detection rules and fix recipes.

    1k GitHub stars~4.5k tokensUpdated today
    Auto-check passed

Categories

Questions about Eval Performance

What does Eval Performance do?

Guide for diagnosing and improving MSBuild project evaluation performance. Eval Performance is an agent skill from microsoft/testfx, published by the product's own GitHub organization. Guide for diagnosing and improving MSBuild project evaluation performance.

When should I use Eval Performance?

Eval Performance fits situations like: : builds slow before any compilation starts; high evaluation time in binlog analysis; expensive glob patterns walking large directories (nodemodules; deep import chains (20 levels).

How do I install Eval Performance in Claude Code?

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

How do I install Eval Performance in Codex?

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

Can I use Eval Performance 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/testfx --skill eval-performance -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/eval-performance, .gemini/skills/eval-performance, .github/skills/eval-performance and .opencode/skills/eval-performance in your project.

What does Eval Performance need to run?

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

Does Eval Performance access the network?

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

Is Eval Performance 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 Eval Performance use?

Eval Performance is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Eval Performance use?

About 1.3k tokens (SKILL.md is roughly 5.4k 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 Eval Performance?

Skills that share tags, products or a category with Eval Performance: Git Release (wesammustafa/opencode-primer, 397 stars), Changelog (ratel-ai/ratel, 469 stars), Cut Release (spiculedata/saiku, 1.3k stars) and Liveagent Code Review (Stack-Cairn/LiveAgent, 2.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Eval Performance?

microsoft (a GitHub organization, an official publisher) maintains it in microsoft/testfx, which has 1,047 GitHub stars. The repository holds 44 skills in this directory. The repository was last updated on October 8, 2026.

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