Skip to content

Add F# support to migrate-dotnet* skills#406

Open
Copilot wants to merge 9 commits intomainfrom
copilot/update-dotnet-skills-for-fsharp
Open

Add F# support to migrate-dotnet* skills#406
Copilot wants to merge 9 commits intomainfrom
copilot/update-dotnet-skills-for-fsharp

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Mar 19, 2026

  • Update migrate-dotnet8-to-dotnet9/SKILL.md — add .fsproj references, make C# compiler refs conditional, add F# compiler refs
  • Update migrate-dotnet9-to-dotnet10/SKILL.md — add .fsproj references, make C# compiler refs conditional, add F# compiler refs
  • Update migrate-dotnet10-to-dotnet11/SKILL.md — add .fsproj references, make C# compiler refs conditional, add F# compiler refs
  • Create references/fsharp-compiler-dotnet8to9.md — F# 9 compiler breaking changes
  • Create references/fsharp-compiler-dotnet9to10.md — F# 10 compiler breaking changes
  • Create references/fsharp-compiler-dotnet10to11.md — F# 11 compiler breaking changes
  • Fix CI: add github.com/dotnet/fsharp to known-domains.txt (reference scanner)
  • Fix CI: shorten migrate-dotnet9-to-dotnet10 description from 1,097 to 990 chars (max 1,024)
  • Address @danmoseley review: simplify compiler bullet in migrate-dotnet10-to-dotnet11
  • Address @danmoseley review: remove duplicate Step 3 reference-loading table in migrate-dotnet8-to-dotnet9
  • Address @danmoseley review: remove duplicate Step 3 reference-loading table in migrate-dotnet9-to-dotnet10
  • Address @danmoseley review: remove duplicate Step 3 reference-loading table in migrate-dotnet10-to-dotnet11
  • Resolve merge conflicts: known-domains.txt moved from eng/reference-scanner/ to eng/
Original prompt

This section details on the original issue you should resolve

<issue_title>dotnet-upgrade/.../migrate-dotnet* skills are missing F# vs. C#</issue_title>
<issue_description>The migrate-dotnet* skills are missing F# differentiation. The skills are written C# focused rather than being generic .NET skills.

Examples:

-| Project or solution path | Yes | The `.csproj`, `.sln`, or `.slnx` entry point to migrate |
+| Project or solution path | Yes | The `.csproj`, `.fsproj`, `.sln`, or `.slnx` entry point to migrate |
-1. In each `.csproj` (or `Directory.Build.props` if centralized), change:
+1. In each `.csproj`/`.fsproj` (or `Directory.Build.props` if centralized), change:
-| `references/csharp-compiler-dotnet9to10.md` | Always (C# 14 compiler breaking changes) |
+| `references/csharp-compiler-dotnet9to10.md` | Project uses C# (C# 14 compiler breaking changes) |
+| `references/fsharp-compiler-dotnet9to10.md` | Project uses F# (F# 10 compiler breaking changes) |

A few minor tweaks like this and the skills will be useful in both C#, F#, and mixed solutions.</issue_description>

Comments on the Issue (you are @copilot in this section)


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Update migrate-dotnet8-to-dotnet9, migrate-dotnet9-to-dotnet10, and
migrate-dotnet10-to-dotnet11 skills to support F# projects alongside C#:

- Add .fsproj alongside .csproj in all project file references
- Make C# compiler reference entries conditional on project language
- Add F# compiler reference entries for each migration skill
- Update frontmatter descriptions to mention F# versions

Co-authored-by: ViktorHofer <7412651+ViktorHofer@users.noreply.github.com>
Copilot AI changed the title [WIP] Update migrate-dotnet skills to include F# differentiation Add F# support to migrate-dotnet* skills Mar 19, 2026
Copilot AI requested a review from ViktorHofer March 19, 2026 13:35
Comment thread plugins/dotnet-upgrade/skills/migrate-dotnet10-to-dotnet11/SKILL.md Outdated
Create fsharp-compiler-dotnet8to9.md, fsharp-compiler-dotnet9to10.md,
and fsharp-compiler-dotnet10to11.md with documented F# compiler breaking
changes for each migration version, so the reference table entries added
in the previous commit point to actual files.

Co-authored-by: ViktorHofer <7412651+ViktorHofer@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Mar 19, 2026

Just as a heads up, I was blocked by some firewall rules while working on your feedback. Expand below for details.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • fsharp.github.io
    • Triggering command: /home/REDACTED/work/_temp/ghcca-node/node/bin/node /home/REDACTED/work/_temp/ghcca-node/node/bin/node --enable-source-maps /home/REDACTED/work/_temp/copilot-developer-action-main/dist/index.js (dns block)
  • learn.microsoft.com
    • Triggering command: /home/REDACTED/work/_temp/ghcca-node/node/bin/node /home/REDACTED/work/_temp/ghcca-node/node/bin/node --enable-source-maps /home/REDACTED/work/_temp/copilot-developer-action-main/dist/index.js (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Copilot AI requested a review from ViktorHofer March 19, 2026 13:46
@ViktorHofer ViktorHofer requested a review from T-Gro March 19, 2026 13:49
@ViktorHofer ViktorHofer marked this pull request as ready for review March 19, 2026 13:49
@ViktorHofer ViktorHofer requested a review from danmoseley as a code owner March 19, 2026 13:49
Copilot AI review requested due to automatic review settings March 19, 2026 13:49
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the migrate-dotnet* upgrade skills under plugins/dotnet-upgrade to better support F# (and mixed C#/F# solutions) by broadening project file inputs and adding F# compiler breaking-change references alongside the existing C# ones.

Changes:

  • Expanded skill instructions/inputs from .csproj-only to .csproj/.fsproj across the migration workflows.
  • Made compiler reference loading language-conditional (C# vs F#) and added new F# compiler reference documents for affected migrations.
  • Updated skill frontmatter descriptions to include corresponding F# language versions.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
plugins/dotnet-upgrade/skills/migrate-dotnet9-to-dotnet10/SKILL.md Adds .fsproj support and introduces F# compiler reference loading alongside C#
plugins/dotnet-upgrade/skills/migrate-dotnet9-to-dotnet10/references/fsharp-compiler-dotnet9to10.md New reference doc capturing F# 10 breaking changes for .NET 10
plugins/dotnet-upgrade/skills/migrate-dotnet8-to-dotnet9/SKILL.md Adds .fsproj support and introduces F# compiler reference loading alongside C#
plugins/dotnet-upgrade/skills/migrate-dotnet8-to-dotnet9/references/fsharp-compiler-dotnet8to9.md New reference doc capturing F# 9 breaking changes for .NET 9
plugins/dotnet-upgrade/skills/migrate-dotnet10-to-dotnet11/SKILL.md Adds .fsproj support and introduces F# compiler reference loading alongside C#
plugins/dotnet-upgrade/skills/migrate-dotnet10-to-dotnet11/references/fsharp-compiler-dotnet10to11.md New reference doc capturing F# 11 breaking changes for .NET 11

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Comment thread plugins/dotnet-upgrade/skills/migrate-dotnet9-to-dotnet10/SKILL.md Outdated
Comment thread plugins/dotnet-upgrade/skills/migrate-dotnet9-to-dotnet10/SKILL.md Outdated
Comment thread plugins/dotnet-upgrade/skills/migrate-dotnet10-to-dotnet11/SKILL.md Outdated
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@ViktorHofer
Copy link
Copy Markdown
Member

@copilot address the CI failures (scan external references and skill-check)

… migrate-dotnet9-to-dotnet10 description to under 1024 chars

Co-authored-by: ViktorHofer <7412651+ViktorHofer@users.noreply.github.com>
Copilot AI requested a review from JanKrivanek as a code owner March 20, 2026 09:30
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Mar 20, 2026

@copilot address the CI failures (scan external references and skill-check)

Fixed both in 4138ea3:

  1. Reference Validation: Added github.com/dotnet/fsharp to eng/reference-scanner/known-domains.txt (the URL https://github.com/dotnet/fsharp/pull/19143 in fsharp-compiler-dotnet10to11.md referenced a repo not in the allowlist).
  2. skill-check: Shortened the migrate-dotnet9-to-dotnet10 description from 1,097 → 990 chars (max 1,024) by trimming verbose phrasing while keeping all F# mentions.

@ViktorHofer
Copy link
Copy Markdown
Member

/evaluate

@dotnet dotnet deleted a comment from github-actions bot Mar 20, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Skill Validation Results

Skill Scenario Quality (Isolated) Quality (Plugin) Skills Loaded Overfit Verdict
migrate-dotnet9-to-dotnet10 Console app with System.Linq.Async, SIGTERM, and BufferedStream 5.0/5 → 5.0/5 5.0/5 → 5.0/5 ✅ migrate-dotnet9-to-dotnet10; tools: skill, view / ✅ migrate-dotnet9-to-dotnet10; tools: skill, view
migrate-dotnet9-to-dotnet10 Expression tree code broken by C# 14 span overload resolution 5.0/5 → 5.0/5 5.0/5 → 5.0/5 ✅ migrate-dotnet9-to-dotnet10; tools: report_intent, skill, grep, view, bash / ✅ migrate-dotnet9-to-dotnet10; tools: report_intent, skill, bash, view [1]
migrate-dotnet9-to-dotnet10 ASP.NET Core app with WebHostBuilder, OpenAPI, and forwarded headers 3.7/5 → 4.7/5 🟢 3.7/5 → 5.0/5 🟢 ✅ migrate-dotnet9-to-dotnet10; tools: report_intent, skill, view / ✅ migrate-dotnet9-to-dotnet10; tools: skill, report_intent, view
migrate-dotnet9-to-dotnet10 ASP.NET Core app with OpenAPI transformers using Microsoft.OpenApi v1 APIs 3.0/5 → 5.0/5 🟢 3.0/5 → 5.0/5 🟢 ✅ migrate-dotnet9-to-dotnet10; tools: report_intent, skill, bash, view / ✅ migrate-dotnet9-to-dotnet10; tools: skill, report_intent, view, bash
migrate-dotnet9-to-dotnet10 EF Core app with Azure SQL JSON columns and parameterized collections 4.7/5 → 4.7/5 4.7/5 → 5.0/5 🟢 ✅ migrate-dotnet9-to-dotnet10; tools: skill, view / ✅ migrate-dotnet9-to-dotnet10; tools: skill, view [2]
migrate-dotnet9-to-dotnet10 EF Core app with dynamic ExecuteUpdate and complex types 5.0/5 → 5.0/5 5.0/5 → 5.0/5 ✅ migrate-dotnet9-to-dotnet10; tools: skill, view / ✅ migrate-dotnet9-to-dotnet10; tools: skill, view [3]
migrate-dotnet9-to-dotnet10 SQLite app with DateTimeOffset timezone handling 5.0/5 → 5.0/5 5.0/5 → 5.0/5 ✅ migrate-dotnet9-to-dotnet10; tools: skill, bash, view / ✅ migrate-dotnet9-to-dotnet10; tools: skill, view, grep [4]
migrate-dotnet9-to-dotnet10 Worker service with config null array binding and ProviderAlias assembly change 4.7/5 → 5.0/5 🟢 4.7/5 → 5.0/5 🟢 ✅ migrate-dotnet9-to-dotnet10; tools: skill / ✅ migrate-dotnet9-to-dotnet10; tools: skill
migrate-dotnet9-to-dotnet10 Cryptography app with OpenSSL, X.509, and Rfc2898DeriveBytes 5.0/5 → 5.0/5 5.0/5 → 5.0/5 ✅ migrate-dotnet9-to-dotnet10; tools: skill, view / ✅ migrate-dotnet9-to-dotnet10; tools: skill, view [5]
migrate-dotnet9-to-dotnet10 SDK and NuGet obscure tooling changes 4.3/5 → 4.7/5 🟢 4.3/5 → 5.0/5 🟢 ✅ migrate-dotnet9-to-dotnet10; tools: skill / ✅ migrate-dotnet9-to-dotnet10; tools: skill [6]
migrate-dotnet9-to-dotnet10 JSON polymorphism with conflicting property names and XmlSerializer 4.3/5 → 5.0/5 🟢 4.3/5 → 5.0/5 🟢 ✅ migrate-dotnet9-to-dotnet10; tools: skill, view, report_intent / ✅ migrate-dotnet9-to-dotnet10; tools: skill, view, report_intent [7]
migrate-dotnet9-to-dotnet10 WinForms and WPF desktop app with System.Drawing and DynamicResource 4.3/5 → 5.0/5 🟢 4.3/5 → 5.0/5 🟢 ✅ migrate-dotnet9-to-dotnet10; tools: skill / ✅ migrate-dotnet9-to-dotnet10; tools: skill
migrate-dotnet9-to-dotnet10 Containerized single-file app with P/Invoke and IDispatchEx 3.7/5 → 5.0/5 🟢 3.7/5 → 5.0/5 🟢 ✅ migrate-dotnet9-to-dotnet10; tools: report_intent, skill, view / ✅ migrate-dotnet9-to-dotnet10; tools: report_intent, skill, view
migrate-dotnet9-to-dotnet10 App using SslStream properties and SystemEvents 5.0/5 → 5.0/5 5.0/5 → 4.0/5 🔴 ✅ migrate-dotnet9-to-dotnet10; tools: skill, view, bash / ✅ migrate-dotnet9-to-dotnet10; tools: skill
migrate-dotnet9-to-dotnet10 Library with NuGet auditing, transitive deps, and InlineArray 4.3/5 → 5.0/5 🟢 4.3/5 → 5.0/5 🟢 ✅ migrate-dotnet9-to-dotnet10; tools: report_intent, skill, view, task / ✅ migrate-dotnet9-to-dotnet10; tools: report_intent, skill, view [8]
migrate-dotnet9-to-dotnet10 C# 14 compiler breaking changes — field keyword, extension keyword, disposal 4.0/5 → 5.0/5 🟢 4.0/5 → 5.0/5 🟢 ✅ migrate-dotnet9-to-dotnet10; tools: report_intent, skill, view / ✅ migrate-dotnet9-to-dotnet10; tools: report_intent, skill, view
migrate-dotnet9-to-dotnet10 Blazor WASM app with generic math shift masking and tar operations 4.3/5 → 4.3/5 4.3/5 → 3.7/5 🔴 ✅ migrate-dotnet9-to-dotnet10; tools: report_intent, skill, view / ✅ migrate-dotnet9-to-dotnet10; tools: report_intent, skill, view
migrate-dotnet8-to-dotnet9 App with empty environment variables, ZIP encoding, and keyed DI services 2.3/5 → 4.0/5 🟢 2.3/5 → 4.3/5 🟢 ✅ migrate-dotnet8-to-dotnet9; tools: skill, bash, grep / ✅ migrate-dotnet8-to-dotnet9; tools: skill, bash ✅ 0.08
migrate-dotnet8-to-dotnet9 C# 13 compiler breaking changes — InlineArray on record, iterator safe context, collection expressions 3.0/5 → 5.0/5 🟢 3.0/5 → 5.0/5 🟢 ✅ migrate-dotnet8-to-dotnet9; tools: skill, view, report_intent / ✅ migrate-dotnet8-to-dotnet9; tools: skill, view, report_intent ✅ 0.08
migrate-dotnet8-to-dotnet9 ASP.NET Core app with DI validation, forwarded headers, and HttpClientFactory casting 1.7/5 ⏰ → 5.0/5 🟢 1.7/5 ⏰ → 4.7/5 🟢 ✅ migrate-dotnet8-to-dotnet9; tools: skill / ✅ migrate-dotnet8-to-dotnet9; tools: skill, create ✅ 0.08
migrate-dotnet8-to-dotnet9 EF Core app with migration patterns and Cosmos DB discriminator 3.3/5 → 5.0/5 🟢 3.3/5 → 5.0/5 🟢 ✅ migrate-dotnet8-to-dotnet9; tools: skill, bash / ✅ migrate-dotnet8-to-dotnet9; tools: skill, bash ✅ 0.08
migrate-dotnet8-to-dotnet9 EF Core Cosmos DB app with existing documents and composite id format 4.3/5 → 4.3/5 4.3/5 → 4.7/5 🟢 ✅ migrate-dotnet8-to-dotnet9; tools: skill / ✅ migrate-dotnet8-to-dotnet9; tools: skill ✅ 0.08
migrate-dotnet8-to-dotnet9 App with JsonDocument null deserialization and BinaryFormatter fallback 5.0/5 → 5.0/5 5.0/5 → 5.0/5 ✅ migrate-dotnet8-to-dotnet9; tools: skill / ✅ migrate-dotnet8-to-dotnet9; tools: skill ✅ 0.08 [9]
migrate-dotnet8-to-dotnet9 CI pipeline with Terminal Logger parsing and version constraints 2.3/5 → 2.3/5 2.3/5 → 5.0/5 🟢 ℹ️ not activated (expected) / ✅ migrate-dotnet8-to-dotnet9; tools: skill ✅ 0.08
migrate-dotnet8-to-dotnet9 WinForms app with custom UserControls and PictureBox URL loading 3.3/5 → 5.0/5 🟢 3.3/5 → 5.0/5 🟢 ✅ migrate-dotnet8-to-dotnet9; tools: skill / ✅ migrate-dotnet8-to-dotnet9; tools: skill ✅ 0.08 [10]
migrate-dotnet8-to-dotnet9 Containerized app with zlib dependency and runtime configuration 4.7/5 → 5.0/5 🟢 4.7/5 → 4.7/5 ✅ migrate-dotnet8-to-dotnet9; tools: skill, bash / ✅ migrate-dotnet8-to-dotnet9; tools: skill ✅ 0.08
migrate-dotnet8-to-dotnet9 EF Core Cosmos DB app with discriminator and sync I/O 3.7/5 → 5.0/5 🟢 3.7/5 → 5.0/5 🟢 ✅ migrate-dotnet8-to-dotnet9; tools: skill, bash / ✅ migrate-dotnet8-to-dotnet9; tools: skill, bash ✅ 0.08
migrate-dotnet8-to-dotnet9 Library with String.Trim span overload, keyed services, and InlineArray 5.0/5 → 5.0/5 5.0/5 → 5.0/5 ✅ migrate-dotnet8-to-dotnet9; tools: skill, bash / ✅ migrate-dotnet8-to-dotnet9; tools: skill, bash ✅ 0.08 [11]
migrate-dotnet8-to-dotnet9 Containerized app with env var precedence reversal and zlib removal 4.7/5 → 5.0/5 🟢 4.7/5 → 5.0/5 🟢 ✅ migrate-dotnet8-to-dotnet9; tools: skill / ✅ migrate-dotnet8-to-dotnet9; tools: skill ✅ 0.08
migrate-dotnet10-to-dotnet11 Console app with compression and TAR operations 3.0/5 ⏰ → 4.3/5 🟢 3.0/5 ⏰ → 4.7/5 🟢 ✅ migrate-dotnet10-to-dotnet11; tools: skill / ✅ migrate-dotnet10-to-dotnet11; tools: skill ✅ 0.05
migrate-dotnet10-to-dotnet11 C# 15 compiler breaking changes — Span safe-context, nameof, with() 3.0/5 → 5.0/5 🟢 3.0/5 → 5.0/5 🟢 ✅ migrate-dotnet10-to-dotnet11; tools: skill, view, report_intent / ✅ migrate-dotnet10-to-dotnet11; tools: skill, view, report_intent ✅ 0.05
migrate-dotnet10-to-dotnet11 EF Core app with Cosmos DB provider using sync APIs 4.0/5 → 5.0/5 🟢 4.0/5 → 5.0/5 🟢 ✅ migrate-dotnet10-to-dotnet11; tools: skill, report_intent, view / ✅ migrate-dotnet10-to-dotnet11; tools: skill, report_intent, view ✅ 0.05
migrate-dotnet10-to-dotnet11 Deployment to older hardware with minimum requirement changes 2.7/5 → 5.0/5 🟢 2.7/5 → 5.0/5 🟢 ✅ migrate-dotnet10-to-dotnet11; tools: skill, report_intent, view / ✅ migrate-dotnet10-to-dotnet11; tools: report_intent, skill, view ✅ 0.05
migrate-dotnet10-to-dotnet11 Cryptography app using DSA on macOS 3.0/5 → 4.7/5 🟢 3.0/5 → 5.0/5 🟢 ✅ migrate-dotnet10-to-dotnet11; tools: report_intent, skill, view / ✅ migrate-dotnet10-to-dotnet11; tools: report_intent, skill, view ✅ 0.05
migrate-dotnet10-to-dotnet11 Basic TFM update with Docker and global.json 3.0/5 → 4.0/5 🟢 3.0/5 → 4.3/5 🟢 ✅ migrate-dotnet10-to-dotnet11; tools: skill / ✅ migrate-dotnet10-to-dotnet11; tools: skill ✅ 0.05
migrate-dotnet10-to-dotnet11 C# 15 dynamic operator and ref readonly delegate issues 2.3/5 → 4.7/5 🟢 2.3/5 → 4.0/5 🟢 ✅ migrate-dotnet10-to-dotnet11; tools: report_intent, skill, view, task, grep, bash, stop_bash / ✅ migrate-dotnet10-to-dotnet11; tools: report_intent, skill, view ✅ 0.05

[1] (Isolated) Quality unchanged but weighted score is -5.9% due to: tokens (16217 → 100658), tool calls (0 → 6)
[2] (Plugin) Quality improved but weighted score is -0.6% due to: tokens (29055 → 56245), tool calls (2 → 4), time (22.8s → 29.5s)
[3] (Plugin) Quality unchanged but weighted score is -6.7% due to: tokens (30456 → 57066), tool calls (2 → 3), quality
[4] (Plugin) Quality unchanged but weighted score is -2.6% due to: tokens (49730 → 84778), time (20.3s → 26.1s), tool calls (4 → 5)
[5] (Isolated) Quality unchanged but weighted score is -17.2% due to: judgment, quality
[6] (Isolated) Quality improved but weighted score is -19.1% due to: quality, judgment
[7] (Isolated) Quality improved but weighted score is -16.5% due to: judgment, quality, tokens (38035 → 52036)
[8] (Isolated) Quality improved but weighted score is -32.1% due to: quality, judgment, tokens (29928 → 61876), tool calls (4 → 7)
[9] (Plugin) Quality unchanged but weighted score is -3.4% due to: tokens (185023 → 327037), tool calls (20 → 26)
[10] (Isolated) Quality improved but weighted score is -13.0% due to: judgment, quality
[11] (Plugin) Quality unchanged but weighted score is -5.1% due to: tokens (105640 → 210734), tool calls (17 → 22), time (80.0s → 98.2s)

timeout — run hit the scenario timeout limit; scoring may be impacted by aborting model execution before it could produce its full output

Model: claude-opus-4.6 | Judge: claude-opus-4.6

Full results

@ViktorHofer
Copy link
Copy Markdown
Member

@danmoseley I think you are the second best person to review after @T-Gro who already approved :)

Comment on lines +29 to +30
- Fixing C# 15 compiler breaking changes after SDK upgrade (see the C#-specific “Common patterns” list in Step 3)
- Fixing F# 11 compiler breaking changes after SDK upgrade (see the F# 11 “What’s new” documentation at https://learn.microsoft.com/dotnet/fsharp/whats-new/fsharp-11)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Fixing C# 15 compiler breaking changes after SDK upgrade (see the C#-specific “Common patterns” list in Step 3)
- Fixing F# 11 compiler breaking changes after SDK upgrade (see the F# 11 “What’s new” documentation at https://learn.microsoft.com/dotnet/fsharp/whats-new/fsharp-11)
- Fixing C# 15 and F# 11 compiler breaking changes after SDK upgrade.

I pulled out all docs links because they added tokens for no benefit. It can find docs. And the extra text here is surely not necessary

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Applied in e95247e — combined both bullets into a single line and removed the docs link.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I pulled out all docs links because they added tokens for no benefit. It can find docs. And the extra text here is surely not necessary

Are you sure on that? I assume that without the link, the LLM will not always initiate a web_fetch call. In other words, doesn't the omission of the links make the process less deterministic?

| If the project uses… | Load reference |
|-----------------------|----------------|
| Any .NET 9 project | `references/csharp-compiler-dotnet8to9.md` |
| C# project | `references/csharp-compiler-dotnet8to9.md` |
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this duplicates the "when to load" at the end. I don't remember doing that-- maybe I forgot? But seems one should be deleted.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed the duplicate Step 3 table in e95247e. The Reference Documents section at the bottom is now the single source of truth. Step 3 just says to load from that table. Applied to all three skills.

| Any .NET 10 project | `references/csharp-compiler-dotnet9to10.md` |
| If your solution contains… | Load reference |
|----------------------------|----------------|
| C# projects | `references/csharp-compiler-dotnet9to10.md` |
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same comment about duplicating when to load table below

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in e95247e — same approach as dotnet8-to-dotnet9.

@danmoseley
Copy link
Copy Markdown
Member

@copilot address feedback

…erence tables

Co-authored-by: danmoseley <6385855+danmoseley@users.noreply.github.com>
Agent-Logs-Url: https://github.com/dotnet/skills/sessions/0a773675-198f-4b82-98c4-75d53d1c76a0
Copilot AI requested a review from danmoseley March 23, 2026 03:36
@ViktorHofer
Copy link
Copy Markdown
Member

@copilot resolve the merge conflicts (the known-domains.txt got moved under /eng)

Copy link
Copy Markdown
Contributor Author

Copilot AI commented Mar 23, 2026

@copilot resolve the merge conflicts (the known-domains.txt got moved under /eng)

Resolved in aba457b — merged main which moved known-domains.txt from eng/reference-scanner/ to eng/. The github.com/dotnet/fsharp entry is preserved in the new location.

@danmoseley
Copy link
Copy Markdown
Member

/evaluate

@github-actions
Copy link
Copy Markdown
Contributor

Skill Validation Results

Skill Scenario Quality Skills Loaded Overfit Verdict
migrate-dotnet8-to-dotnet9 App with empty environment variables, ZIP encoding, and keyed DI services 2.0/5 → 3.0/5 🟢 ℹ️ not activated (expected) / ✅ migrate-dotnet8-to-dotnet9; tools: skill, bash
migrate-dotnet8-to-dotnet9 C# 13 compiler breaking changes — InlineArray on record, iterator safe context, collection expressions 3.0/5 → 3.0/5 ℹ️ not activated (expected) / ✅ migrate-dotnet8-to-dotnet9; tools: report_intent, skill, view [1]
migrate-dotnet8-to-dotnet9 ASP.NET Core app with DI validation, forwarded headers, and HttpClientFactory casting 2.0/5 → 4.7/5 🟢 ✅ migrate-dotnet8-to-dotnet9; tools: skill / ✅ migrate-dotnet8-to-dotnet9; tools: skill
migrate-dotnet8-to-dotnet9 EF Core app with migration patterns and Cosmos DB discriminator 3.3/5 → 4.7/5 🟢 ✅ migrate-dotnet8-to-dotnet9; tools: skill, bash / ✅ migrate-dotnet8-to-dotnet9; tools: skill, bash
migrate-dotnet8-to-dotnet9 EF Core Cosmos DB app with existing documents and composite id format 4.0/5 → 4.7/5 🟢 ✅ migrate-dotnet8-to-dotnet9; tools: skill, read_bash / ✅ migrate-dotnet8-to-dotnet9; tools: skill [2]
migrate-dotnet8-to-dotnet9 App with JsonDocument null deserialization and BinaryFormatter fallback 4.7/5 → 5.0/5 🟢 ✅ migrate-dotnet8-to-dotnet9; tools: skill / ✅ migrate-dotnet8-to-dotnet9; tools: skill [3]
migrate-dotnet8-to-dotnet9 CI pipeline with Terminal Logger parsing and version constraints 2.3/5 → 2.3/5 ℹ️ not activated (expected) / ✅ migrate-dotnet8-to-dotnet9; tools: skill [4]
migrate-dotnet8-to-dotnet9 WinForms app with custom UserControls and PictureBox URL loading 3.3/5 → 4.0/5 🟢 ✅ migrate-dotnet8-to-dotnet9; tools: skill, bash / ✅ migrate-dotnet8-to-dotnet9; tools: skill, bash [5]
migrate-dotnet8-to-dotnet9 Containerized app with zlib dependency and runtime configuration 4.7/5 → 5.0/5 🟢 ✅ migrate-dotnet8-to-dotnet9; tools: skill, bash / ✅ migrate-dotnet8-to-dotnet9; tools: skill [6]
migrate-dotnet8-to-dotnet9 EF Core Cosmos DB app with discriminator and sync I/O 4.7/5 → 5.0/5 🟢 ✅ migrate-dotnet8-to-dotnet9; tools: skill, bash / ✅ migrate-dotnet8-to-dotnet9; tools: skill, bash [7]
migrate-dotnet8-to-dotnet9 Library with String.Trim span overload, keyed services, and InlineArray 5.0/5 → 4.7/5 🔴 ✅ migrate-dotnet8-to-dotnet9; tools: skill, bash / ✅ migrate-dotnet8-to-dotnet9; tools: skill, bash [8]
migrate-dotnet8-to-dotnet9 Containerized app with env var precedence reversal and zlib removal 4.7/5 → 4.3/5 🔴 ✅ migrate-dotnet8-to-dotnet9; tools: skill, edit, bash / ✅ migrate-dotnet8-to-dotnet9; tools: skill, edit [9]
migrate-dotnet10-to-dotnet11 Console app with compression and TAR operations 3.3/5 → 4.0/5 🟢 ✅ migrate-dotnet10-to-dotnet11; tools: skill / ✅ migrate-dotnet10-to-dotnet11; tools: skill ✅ 0.05
migrate-dotnet10-to-dotnet11 C# 15 compiler breaking changes — Span safe-context, nameof, with() 3.0/5 → 5.0/5 🟢 ✅ migrate-dotnet10-to-dotnet11; tools: skill, report_intent, view / ✅ migrate-dotnet10-to-dotnet11; tools: skill, report_intent, view ✅ 0.05
migrate-dotnet10-to-dotnet11 EF Core app with Cosmos DB provider using sync APIs 4.7/5 → 5.0/5 🟢 ✅ migrate-dotnet10-to-dotnet11; tools: report_intent, skill, view / ✅ migrate-dotnet10-to-dotnet11; tools: report_intent, skill, view ✅ 0.05 [10]
migrate-dotnet10-to-dotnet11 Deployment to older hardware with minimum requirement changes 2.3/5 → 5.0/5 🟢 ✅ migrate-dotnet10-to-dotnet11; tools: report_intent, skill, view / ✅ migrate-dotnet10-to-dotnet11; tools: report_intent, skill, view ✅ 0.05
migrate-dotnet10-to-dotnet11 Cryptography app using DSA on macOS 4.3/5 → 5.0/5 🟢 ✅ migrate-dotnet10-to-dotnet11; tools: report_intent, skill, view / ✅ migrate-dotnet10-to-dotnet11; tools: report_intent, skill, view ✅ 0.05 [11]
migrate-dotnet10-to-dotnet11 Basic TFM update with Docker and global.json 4.0/5 → 4.0/5 ✅ migrate-dotnet10-to-dotnet11; tools: skill, report_intent, view / ✅ migrate-dotnet10-to-dotnet11; tools: skill ✅ 0.05
migrate-dotnet10-to-dotnet11 C# 15 dynamic operator and ref readonly delegate issues 2.7/5 → 2.7/5 ✅ migrate-dotnet10-to-dotnet11; tools: report_intent, task, view, glob, grep, bash, skill / ✅ migrate-dotnet10-to-dotnet11; tools: report_intent, skill, view ✅ 0.05 [12]
migrate-dotnet9-to-dotnet10 Console app with System.Linq.Async, SIGTERM, and BufferedStream 5.0/5 → 5.0/5 ✅ migrate-dotnet9-to-dotnet10; tools: skill, view / ✅ migrate-dotnet9-to-dotnet10; tools: skill, view
migrate-dotnet9-to-dotnet10 Expression tree code broken by C# 14 span overload resolution 5.0/5 → 5.0/5 ✅ migrate-dotnet9-to-dotnet10; tools: report_intent, skill, view, bash, grep / ✅ migrate-dotnet9-to-dotnet10; tools: report_intent, skill, view [13]
migrate-dotnet9-to-dotnet10 ASP.NET Core app with WebHostBuilder, OpenAPI, and forwarded headers 3.7/5 → 5.0/5 🟢 ✅ migrate-dotnet9-to-dotnet10; tools: skill, report_intent, view / ✅ migrate-dotnet9-to-dotnet10; tools: report_intent, skill, view
migrate-dotnet9-to-dotnet10 ASP.NET Core app with OpenAPI transformers using Microsoft.OpenApi v1 APIs 3.3/5 → 5.0/5 🟢 ✅ migrate-dotnet9-to-dotnet10; tools: skill, view, report_intent, bash / ✅ migrate-dotnet9-to-dotnet10; tools: skill, bash, report_intent, view [14]
migrate-dotnet9-to-dotnet10 EF Core app with Azure SQL JSON columns and parameterized collections 3.0/5 → 4.0/5 🟢 ✅ migrate-dotnet9-to-dotnet10; tools: report_intent, skill, view / ✅ migrate-dotnet9-to-dotnet10; tools: report_intent, skill, view
migrate-dotnet9-to-dotnet10 EF Core app with dynamic ExecuteUpdate and complex types 5.0/5 → 5.0/5 ✅ migrate-dotnet9-to-dotnet10; tools: skill, view / ✅ migrate-dotnet9-to-dotnet10; tools: skill, view [15]
migrate-dotnet9-to-dotnet10 SQLite app with DateTimeOffset timezone handling 5.0/5 → 5.0/5 ✅ migrate-dotnet9-to-dotnet10; tools: skill, view, grep / ✅ migrate-dotnet9-to-dotnet10; tools: skill, view, bash [16]
migrate-dotnet9-to-dotnet10 Worker service with config null array binding and ProviderAlias assembly change 4.0/5 → 5.0/5 🟢 ✅ migrate-dotnet9-to-dotnet10; tools: skill, view / ✅ migrate-dotnet9-to-dotnet10; tools: skill, view
migrate-dotnet9-to-dotnet10 Cryptography app with OpenSSL, X.509, and Rfc2898DeriveBytes 5.0/5 → 5.0/5 ✅ migrate-dotnet9-to-dotnet10; tools: skill, view / ✅ migrate-dotnet9-to-dotnet10; tools: skill, view [17]
migrate-dotnet9-to-dotnet10 SDK and NuGet obscure tooling changes 4.0/5 → 4.0/5 ✅ migrate-dotnet9-to-dotnet10; tools: skill, view / ✅ migrate-dotnet9-to-dotnet10; tools: skill, view [18]
migrate-dotnet9-to-dotnet10 JSON polymorphism with conflicting property names and XmlSerializer 3.3/5 → 5.0/5 🟢 ✅ migrate-dotnet9-to-dotnet10; tools: report_intent, skill, view / ✅ migrate-dotnet9-to-dotnet10; tools: report_intent, skill, view
migrate-dotnet9-to-dotnet10 WinForms and WPF desktop app with System.Drawing and DynamicResource 2.0/5 → 4.0/5 🟢 ✅ migrate-dotnet9-to-dotnet10; tools: skill, report_intent, view / ✅ migrate-dotnet9-to-dotnet10; tools: report_intent, skill, view
migrate-dotnet9-to-dotnet10 Containerized single-file app with P/Invoke and IDispatchEx 3.3/5 → 5.0/5 🟢 ✅ migrate-dotnet9-to-dotnet10; tools: report_intent, skill, view / ✅ migrate-dotnet9-to-dotnet10; tools: report_intent, skill, view
migrate-dotnet9-to-dotnet10 App using SslStream properties and SystemEvents 5.0/5 → 5.0/5 ✅ migrate-dotnet9-to-dotnet10; tools: skill, view / ✅ migrate-dotnet9-to-dotnet10; tools: skill, view [19]
migrate-dotnet9-to-dotnet10 Library with NuGet auditing, transitive deps, and InlineArray 4.0/5 → 4.3/5 🟢 ✅ migrate-dotnet9-to-dotnet10; tools: skill, report_intent, task, view, grep / ✅ migrate-dotnet9-to-dotnet10; tools: skill, report_intent, view [20]
migrate-dotnet9-to-dotnet10 C# 14 compiler breaking changes — field keyword, extension keyword, disposal 4.3/5 → 4.7/5 🟢 ✅ migrate-dotnet9-to-dotnet10; tools: report_intent, skill, view / ✅ migrate-dotnet9-to-dotnet10; tools: report_intent, skill, view
migrate-dotnet9-to-dotnet10 Blazor WASM app with generic math shift masking and tar operations 4.0/5 → 4.0/5 ✅ migrate-dotnet9-to-dotnet10; tools: skill, view, report_intent / ✅ migrate-dotnet9-to-dotnet10; tools: skill, view, report_intent [21]

[1] (Isolated) Quality unchanged but weighted score is -2.3% due to: tokens (13275 → 18679)
[2] (Isolated) Quality improved but weighted score is -1.3% due to: quality
[3] (Plugin) Quality improved but weighted score is -1.6% due to: tokens (176361 → 366745), tool calls (19 → 29), time (117.9s → 141.9s)
[4] (Isolated) Quality unchanged but weighted score is -9.6% due to: completion (✓ → ✗), tokens (65683 → 138477), time (156.3s → 225.0s)
[5] (Isolated) Quality improved but weighted score is -14.6% due to: judgment, tokens (166928 → 308255)
[6] (Isolated) Quality improved but weighted score is -3.1% due to: tokens (62053 → 233572), tool calls (15 → 25)
[7] (Isolated) Quality improved but weighted score is -12.2% due to: judgment, quality
[8] (Plugin) Quality unchanged but weighted score is -9.2% due to: tokens (107643 → 417908), time (72.2s → 156.7s), tool calls (18 → 30)
[9] (Plugin) Quality improved but weighted score is -3.3% due to: tokens (48491 → 134727), tool calls (10 → 18)
[10] (Isolated) Quality improved but weighted score is -19.3% due to: judgment, tokens (12939 → 46642), tool calls (0 → 3)
[11] (Isolated) Quality improved but weighted score is -19.2% due to: judgment, quality
[12] (Isolated) Quality unchanged but weighted score is -34.7% due to: quality, judgment, tokens (15570 → 40583), tool calls (0 → 5)
[13] (Isolated) Quality unchanged but weighted score is -5.9% due to: tokens (16824 → 79842), tool calls (0 → 5)
[14] (Isolated) Quality improved but weighted score is -20.3% due to: quality, judgment
[15] (Isolated) Quality unchanged but weighted score is -4.4% due to: tokens (31831 → 54296), tool calls (2 → 3)
[16] (Isolated) Quality unchanged but weighted score is -1.5% due to: tokens (53866 → 65934)
[17] (Isolated) Quality unchanged but weighted score is -15.3% due to: judgment, quality
[18] (Isolated) Quality unchanged but weighted score is -17.3% due to: judgment, quality
[19] (Plugin) Quality unchanged but weighted score is -1.0% due to: tokens (47589 → 56335)
[20] (Isolated) Quality improved but weighted score is -31.4% due to: judgment, quality, tokens (12911 → 101410), tool calls (0 → 8), time (24.6s → 47.4s)
[21] (Isolated) Quality unchanged but weighted score is -15.6% due to: judgment, quality, tokens (50940 → 56423), tool calls (5 → 6)

Model: claude-opus-4.6 | Judge: claude-opus-4.6

📖 See InvestigatingResults.md for how to diagnose failures. Additional debugging guidance may be provided by your workflow.

🔍 Full results — includes quality and agent details

To investigate failures, paste this to your AI coding agent:

For PR 406 in dotnet/skills, download eval artifacts with gh run download 23678315826 --repo dotnet/skills --pattern "skill-validator-results-*" --dir ./eval-results, then fetch https://raw.githubusercontent.com/dotnet/skills/9409400ea82a259713c75236e31478afd52f3b31/eng/skill-validator/InvestigatingResults.md and follow it to analyze the results.json files. Diagnose each failure, suggest fixes to the eval.yaml and skill content, and tell me what to fix first.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

dotnet-upgrade/.../migrate-dotnet* skills are missing F# vs. C#

5 participants