Mature skill evaluation infrastructure - #68628
Merged
PureWeen merged 5 commits intoAug 19, 2026
Merged
Conversation
Establish a pinned Vally entry point, parser-free repository validation, and deterministic runner self-tests while preserving the generic baseline experiment. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 76b0da69-a4eb-4350-a6a9-d877400c7200
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 76b0da69-a4eb-4350-a6a9-d877400c7200
Contributor
There was a problem hiding this comment.
Pull request overview
Establishes a repository-level contract and tooling for evaluating ASP.NET Core Copilot skills using a standard baseline-vs-skilled Vally experiment lane, with a pinned Vally CLI version and a model-free local validation workflow.
Changes:
- Standardizes discovery around
eng/skill-evals/<skill>/eval.vally.yamland a sharedskills-vs-baseline.experiment.yamlA/B experiment. - Adds a cross-platform PowerShell runner (
run.ps1) plus self-tests for layout validation and runner dispatch without model calls. - Updates existing eval specs to remove the deprecated per-stimulus
pairwisegrader (now owned by experiment-level--compare).
Show a summary per file
| File | Description |
|---|---|
| eng/skill-evals/validate-blazor-feature/eval.vally.yaml | Removes per-stimulus pairwise grader to align with experiment-level comparison. |
| eng/skill-evals/review-public-api/eval.vally.yaml | Removes per-stimulus pairwise grader to align with experiment-level comparison. |
| eng/skill-evals/skills-vs-baseline.experiment.yaml | Keeps comparison centralized; removes experiment-level runs override so specs own trial count. |
| eng/skill-evals/run.ps1 | Adds the pinned Vally entry point, layout validation, linting, dry-run experiment validation, and run dispatch. |
| eng/skill-evals/README.md | Documents the eval layout contract, standard vs specialized suite boundary, and local validation/run workflow. |
| eng/skill-evals/test_validate.ps1 | Adds deterministic layout validation self-tests via failure injection. |
| eng/skill-evals/test_run.ps1 | Adds runner isolation/dispatch self-test using a fake Vally command. |
Review details
💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.
- Files reviewed: 7/7 changed files
- Comments generated: 1
- Review effort level: Lite
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
ASP.NET Core is starting to ship repository-specific Copilot skills, but we do not yet have a shared way to prove that a skill improves agent behavior or continues working as the repository changes. The existing evals are useful, but their layout, discovery rules, tool version, comparison behavior, and local validation path are implicit. Each new skill would otherwise need to invent those decisions again, and results could silently depend on different tooling or mix model infrastructure failures with actual skill regressions.
This PR makes skill evaluation a small repository-level contract. It defines one standard baseline-vs-skilled lane, keeps specialized suites explicit, pins the Vally version used to interpret the specs, and provides a safe local validation path that does not call a model. It also keeps eval-only fixtures and tooling separate from the runtime skills agents actually load.
That gives maintainers a repeatable way to review and evolve repository skills, and gives future agentic work a common foundation instead of a collection of one-off harnesses.
Relationship to #68625
Draft PR #68625 publishes fix-challenge/try-fix reviewer skills and specialized reviewer evaluations. This PR deliberately does not cherry-pick, modify, or depend on that draft. It is based on the existing evals on current main and defines the general repository convention first.
If this structure proves useful, #68625 can conform to it later:
eng/skill-evals/<skill>/eval.vally.yamland is auto-discovered by the repository experiment and runner;*.vally.yamlfiles invoked explicitly;eng/skill-evals, not in runtime skill directories;Keeping these changes separate lets the general infrastructure be evaluated on its own merits and avoids making the broader reviewer-skill draft the source of repository-wide conventions. This PR also does not claim to validate the quality of the reviewer skills in #68625; it only provides the topology and local tooling those evals can later use.
Summary
eng/skill-evals/<skill>/eval.vally.yamlconvention and specialized-suite boundary@microsoft/vally-cli@0.13.0identity--compare --dry-runpairwisegraders to Vally 0.13 experiment-level comparisonValidation
pwsh -NoLogo -NoProfile -File eng/skill-evals/run.ps1 Testpwsh -NoLogo -NoProfile -File eng/skill-evals/run.ps1 Validategit diff --checkNo hosted model or judge calls were made. Parser-dependent policy checks are explicitly documented as follow-ups rather than approximated with regex or prose heuristics.