mirror of
https://github.com/dotnet/skills.git
synced 2026-09-20 09:49:54 +08:00
eval-exec-opus48
7 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
52ba152ed6 | Update to Vally 0.7.0 (#854) | ||
|
|
fe11dec69d |
Update .NET 10→11 migration skill for Preview 2 and 3 (#628)
* Update .NET 10→11 migration skill for Preview 2 and 3 Add breaking changes from .NET 11 Preview 2 and Preview 3 to the migrate-dotnet10-to-dotnet11 skill. The skill previously covered only Preview 1. Changes: - Add 15 new breaking changes across all reference files - Create new aspnetcore-dotnet10to11.md reference (OpenAPI v3, Blazor) - Update SKILL.md workflow steps, assessment checklist, and patterns - Add 4 new eval scenarios covering high-impact P2/P3 changes - Add github.com/dotnet/aspnetcore to known-domains.txt Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address review feedback - Replace prompt-echoable 'corrupt' in ZipArchive eval regex with 'checksum' - Update EF Core reference note to say 'Preview 1 through Preview 3' - Add missing Source link for Zstandard entry Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address review feedback: tighten eval regex, fix raw HTML - Tighten OverscanCount grader regex to require 'OverscanCount' with a number, instead of matching bare '3' anywhere - Wrap Blazor component snippet in backticks so it renders as code Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> |
||
|
|
9433a31e67 | Initial port of evals to Vally (#615) | ||
|
|
3923c078b9 |
Add migrate-dotnet9-to-dotnet10 skill (#180)
* Add migrate-dotnet9-to-dotnet10 skill Adds a new migration skill that guides upgrading .NET 9 projects to .NET 10, covering TFM updates, NuGet package upgrades, and source-breaking changes across the full .NET 10 surface area. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address PR review feedback: fix eval/reference consistency and CODEOWNERS - Fix ExecuteUpdateAsync rubric: use 'regular lambda/delegate instead of expression tree' instead of incorrect 'Func instead of Expression' - Fix config null binding eval prompt: .NET 9 bound null as empty string, not preserving constructor default - Clarify .NET 10 null binding overwrites constructor default in reference - Add @ViktorHofer as CODEOWNER for migrate-dotnet9-to-dotnet10 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Suffix reference filenames with -dotnet9to10 to avoid collisions Rename all reference files under migrate-dotnet9-to-dotnet10/references/ from e.g. efcore.md to efcore-dotnet9to10.md so they don't collide with reference files from other version migration skills. Update all references in SKILL.md to match. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address BrennanConroy review: ForwardedHeaders KnownIpNetworks example and IApiEndpointMetadata guidance - Show KnownIpNetworks property with UseForwardedHeaders context in example - Add IApiEndpointMetadata explanation for cookie login redirect behavior - Link to aspnetcore#62883 for details on influencing the behavior Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Shorten skill description to fit 1024-char limit Reduce description from 1,370 to 1,017 characters by trimming redundant phrasing while preserving all key search terms. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Update CODEOWNERS --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> |
||
|
|
db33912b98 |
Add migrate-dotnet10-to-dotnet11 skill (#181)
* Add migrate-dotnet10-to-dotnet11 skill (Preview 1 coverage) Adds a new migration skill that guides upgrading .NET 10 projects to .NET 11, covering TFM updates, NuGet package upgrades, and breaking changes across the .NET 11 Preview 1 surface area. Sources: - https://learn.microsoft.com/en-us/dotnet/core/compatibility/11 - https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-11.0/breaking-changes - https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/breaking-changes/compiler%20breaking%20changes%20-%20dotnet%2011 - https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-11/overview Skill coverage: - C# 15 compiler: Span safe-context, ref readonly InAttribute, nameof(this.), with() parsing, dynamic &&/|| with interfaces - Core libraries: DeflateStream/GZipStream empty payloads, MemoryStream capacity, TAR checksum validation, ZipArchive.CreateAsync eager loading, Environment.TickCount consistency - EF Core 11: Cosmos DB sync I/O fully removed - Cryptography: DSA removed from macOS - Runtime/JIT: x86-64-v2 minimum, Arm64 LSE requirement on Windows - SDK: Mono launch target removed for .NET Framework apps 6 reference files loaded based on project type + 7 eval scenarios. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add SYSLIB0063 NamedPipeClientStream breaking change to 10→11 skill Add documentation for the NamedPipeClientStream constructor obsoletion (SYSLIB0063) which was merged in dotnet/runtime#120328 for .NET 11 but not yet documented on learn.microsoft.com. The isConnected parameter overload is obsoleted, and projects with TreatWarningsAsErrors will fail to build. Changes: - core-libraries.md: Add Obsoleted APIs section with SYSLIB0063 - SKILL.md: Add to description, Step 1 assessment, Step 3 patterns Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Tune skill description and eval prompts for activation - Add explicit migration framing to skill description to differentiate from csharp-scripts skill (SDK was routing to wrong skill) - Add 'Use the migrate-dotnet10-to-dotnet11 skill' to eval prompts, matching real-world usage where users explicitly invoke migration skills Eval results (3 runs each, explicit skill invocation): Haiku: 6/7 activated, best +1.3 (compression/TAR scenario) Sonnet: 7/7 activated, best +0.3 (EF Core, TFM update scenarios) Skill activates reliably now. Quality gains are modest because the skill covers only Preview 1 breaking changes (training data already includes MS Learn docs). Expect larger gains as content grows with later previews. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Update plugins/dotnet/skills/migrate-dotnet10-to-dotnet11/references/csharp-compiler.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Split nameof(this.) example into before/after code blocks Separate the breaking and fixed code into distinct blocks to avoid ambiguity about which line to use vs remove. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address PR review feedback: fix code examples and global.json guidance - SKILL.md: Show global.json as a diff edit preserving existing keys (rollForward, other settings) instead of replacing the entire file - csharp-compiler.md: Fix ref readonly lambda example to use a static field instead of a captured local (which won't compile in a lambda) - csharp-compiler.md: Declare missing local variable x in ref readonly local function example - eval.yaml: Fix ref readonly lambda snippet to use a class with a static field, matching the reference file fix Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address PR feedback: add second CODEOWNER, add preview version to EF Core - Add @ViktorHofer as second owner for migrate-dotnet10-to-dotnet11 and migrate-nullable-references paths per CONTRIBUTING.md requirements - Add Preview 1 annotation to EF Core reference file per reviewer feedback Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Suffix reference filenames with -dotnet10to11 to avoid collisions Rename e.g. efcore.md to efcore-dotnet10to11.md so names won't collide with reference files from other version migration skills. Update all paths in SKILL.md to match. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Remove explicit skill name from eval prompts to reduce overfitting The eval prompts were explicitly saying 'Use the migrate-dotnet10-to-dotnet11 skill' which biases baseline runs — the agent wastes time searching for a nonexistent skill, guaranteeing worse performance. Rephrased all 7 prompts to describe the migration task naturally without naming the skill. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address review feedback: fix with/when label, add exit_success assertions - Rename 'with()' to 'when' in switch-expression-arm parsing label (SKILL.md and csharp-compiler reference) to match the actual breaking change - Add exit_success assertion to all 7 eval scenarios to match repo convention Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Move Japanese Calendar breaking change to core-libraries reference The globalization change was in the runtime-jit reference, which is only conditionally loaded for older-hardware deployments. Since this affects all projects regardless of hardware, move it to core-libraries (always loaded) so it is not missed. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Clarify workflow note: allow local repo inspection, forbid only external sources The previous wording ("Do not search the filesystem") was too broad — the agent needs to read .csproj, solution, and source files to determine which breaking changes apply. Reword to explicitly allow local repository inspection while forbidding web/external sources for breaking change info. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Shorten skill description to fit 1,024-char limit (762 chars) Remove granular breaking change names (covered in body/references), drop LOADS REFERENCES (implementation detail), remove unsupported ASP.NET Core 11 claim (no reference docs shipped), and tighten DO NOT USE FOR section. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Update CODEOWNERS to use @dotnet/compat team instead of individual Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Move 'when' parsing change from Step 4 to Step 3 The when switch-expression-arm parsing change is a source/compilation breaking change, not a runtime behavioral change. It belongs in Step 3 (source-breaking changes) alongside other C# 15 compiler changes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> |
||
|
|
e9370fe663 |
Add migrate-dotnet8-to-dotnet9 skill (#182)
* Add migrate-dotnet8-to-dotnet9 skill with references and eval scenarios Mirrors the structure and approach of the existing migrate-dotnet9-to-dotnet10 skill. Covers all .NET 8→9 breaking changes organized by technology area: - C# 13 compiler (InlineArray records, iterator safe context, collection expressions) - Core libraries (params span overloads, BinaryFormatter removal, BigInteger, TimeSpan) - SDK/MSBuild (Terminal Logger, version requirements, .NET 7/Standard warnings) - ASP.NET Core (HostBuilder validation, forwarded headers, middleware constructors) - EF Core (pending migrations, explicit transactions, Cosmos DB changes) - Cryptography (X509Certificate2 SYSLIB0057, SafeEvpPKeyHandle) - Serialization/Networking (BinaryFormatter, JsonDocument null, HttpClientFactory) - WinForms/WPF (security analyzers, StatusStrip, PictureBox, XmlNamespaceMaps) - Containers/Interop (zlib removal, CET support) - Deployment/Runtime (env var precedence, FP-to-int saturation, MonoVM deprecated) 12 eval scenarios covering all technology areas with assertions and rubrics. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * BinaryFormatter: stop and ask user for replacement strategy BinaryFormatter migration is a major architectural decision affecting data format, backward compatibility, and stored data migration. The skill should present options and let the user decide rather than picking a serializer. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Trim SKILL.md to delegate BinaryFormatter detail to reference Keep SKILL.md as concise index; full guidance lives in serialization-networking.md reference. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Trim SKILL.md: delegate fix details to references, remove BinaryFormatter duplicate - Remove BinaryFormatter duplicate from Step 4 (already covered in Step 3) - Delegate inline fix details for EF Core, FP saturation, HttpClientFactory to references - Collapse niche SYSLIB0055/0056 into one-liner pointing to reference - Shorten params span and String.Trim entries Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Improve eval scenarios: setup files, task-oriented prompts, expect_activation - Add setup files (csproj, .cs, Dockerfile, etc.) to 10/12 scenarios so agent works with real code instead of pure knowledge questions - Make prompts task-oriented ('Migrate this app to .NET 9') instead of knowledge-oriented ('What breaks?') - Set expect_activation: false on all scenarios — this is a pure knowledge/ reference skill with no MCP tools, so activation via SkillInvokedEvent is unreliable - Increase timeouts to 420s to avoid penalizing skilled runs that do more work Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Refocus eval scenarios on Opus blind spots Replace easy scenarios (BinaryFormatter/X509) where Opus always ties with harder ones targeting areas where the skill adds measurable value: - Empty env var behavior on Unix (null vs empty string) - ZipArchiveEntry UTF-8 bit flag mechanism - FromKeyedServices no-fallback behavior - Cosmos DB id format change (discriminator no longer embedded) - Env var precedence reversal with concrete GC/ThreadPool impact Keep scenarios where skill consistently helps: Cosmos DB id format, container zlib removal, CI pipeline net7.0 warnings, WinForms PictureBox. Increase timeouts to 420s to avoid penalizing skilled runs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add forward-chaining guidance to migrate-dotnet8-to-dotnet9 skill Tell the agent about the migrate-dotnet9-to-dotnet10 skill so it knows to continue the chain after completing the 8-to-9 migration. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix EF Core eval scenarios to start with 8.0.0 package versions The eval scenarios claim to test a .NET 8 to .NET 9 migration but the starting csproj files already reference EF Core 9.0.0 packages. This reduces test signal since the package upgrade step is already done. Change all EF Core package versions to 8.0.0 in scenarios 4, 5, and 10. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix InlineArray eval to actually exceed 1 MiB size limit The rubric expects the model to warn about the InlineArray 1 MiB runtime size limit, but the example was only 8 KiB (InlineArray(1024) with byte element). Increase to 1,048,577 bytes so the breaking change is concretely applicable. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix non-compiling ConfigurePrimaryHttpMessageHandler in eval The eval used a non-existent overload of ConfigurePrimaryHttpMessageHandler with a (handler, _) => {} lambda that doesn't return a handler. Replace with ConfigureHttpMessageHandlerBuilder which correctly casts PrimaryHandler to HttpClientHandler -- the pattern that actually breaks when the default switches to SocketsHttpHandler in .NET 9. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix non-compiling HttpClientFactory example in reference doc The breaking change example used a non-existent overload of ConfigurePrimaryHttpMessageHandler. Replace with ConfigureHttpMessageHandlerBuilder which is the actual API that casts PrimaryHandler and would break when the default changes to SocketsHttpHandler. Also fix Option 2 to use the same correct API. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Remove unsafe KnownProxies.Clear() guidance from aspnet-core reference Clearing KnownProxies and KnownNetworks accepts forwarded headers from any source, enabling attackers to spoof X-Forwarded-For/Proto/Host headers. Replace with a warning against this pattern and steer toward registering only trusted proxy addresses. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Remove unsafe RedactLoggedHeaders guidance from reference doc Disabling header redaction globally with RedactLoggedHeaders(_ => false) logs Authorization tokens, cookies, and other credentials in cleartext. Replace with guidance to whitelist only specific non-sensitive headers and add an explicit warning against disabling redaction. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Remove insecure BinaryFormatter re-enablement option from guidance Replace the unsupported NuGet package option with a clear security warning that BinaryFormatter deserialization enables remote code execution and should not be re-enabled. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add security warning against suppressing WFO1000 analyzer WFO1000 guards against insecure deserialization of WinForms control properties. Replace the suppression option with a warning explaining the security risk and recommend the attribute-based fix instead. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add security warning to CET opt-out guidance Warn that disabling CET removes hardware-enforced control-flow integrity (protection against ROP/JOP exploits) and should only be done when a specific native library is confirmed incompatible. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Label EF Core warning suppressions as temporary workarounds Add context that suppressing PendingModelChangesWarning risks silent schema drift and that MigrationsUserTransactionWarning suppression has transaction safety implications. Both are temporary workarounds. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Prioritize behavioral changes and add global.json rollForward guidance Mark behavioral changes that can cause runtime exceptions with a warning indicator and move them to the top of the list so agents address them first. Add rollForward policy guidance to the global.json update step to prevent SDK resolution issues. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Split BinaryFormatter code snippet into separate serialize/deserialize blocks The combined snippet used obj before declaration, which was misleading. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix SYSLIB heading to include full range SYSLIB0054-SYSLIB0057 Previously listed only SYSLIB0054 and SYSLIB0057, omitting 0055 and 0056. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix eval rubric to match setup code: Migrate/MigrateAsync Setup code uses synchronous Migrate(), not MigrateAsync(). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Use distinct variable names in X509CertificateLoader examples Duplicate 'var cert' declarations would cause compilation errors if pasted as-is. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Remove misleading 'backported from .NET 8' from ForwardedHeaders section The claim is confusing in an 8-to-9 migration guide context. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Clarify GetXmlNamespaceMaps InvalidCastException explanation Previous wording was logically inconsistent about the direction of the type change. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Update plugins/dotnet/skills/migrate-dotnet8-to-dotnet9/references/efcore.md Co-authored-by: Andriy Svyryd <AndriySvyryd@users.noreply.github.com> * Fix ReadOnlySpan<char> String.Trim example and eval scenario The code example incorrectly used ReadOnlySpan<char> as a static field, which is impossible (ref struct). The eval scenario used a local ReadOnlySpan<char> variable which actually compiles fine on .NET 9 GA, so it didn't demonstrate the breaking change. Updated both to correctly show the RC2-to-GA overload removal issue. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add -dotnet8to9 suffix to reference filenames to avoid cross-skill collisions Other version migration skills (e.g., 9-to-10) have similarly named reference files. Adding the suffix disambiguates them. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Shorten skill description to fit 1024-char limit Remove LOADS REFERENCES section (implementation detail already covered by the reference loading table in the body) and tighten wording. All USE FOR activation keywords and DO NOT USE FOR rejection keywords preserved. Description is now 1006 characters. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address PR review feedback - CODEOWNERS: Replace @ViktorHofer with @jeffschwMSFT for migrate-dotnet8-to-dotnet9 - SKILL.md: Shorten description from 1,400 to 671 chars (max 1,024) - sdk-msbuild-dotnet8to9.md: Clarify VS 17.11 SDK targeting phrasing - core-libraries-dotnet8to9.md: Fix cross-reference to serialization-networking-dotnet8to9.md - serialization-networking-dotnet8to9.md: Replace 'whitelist' with 'allowlist' - winforms-wpf-dotnet8to9.md: Rename heading to cover both Get/SetXmlNamespaceMaps - eval.yaml: Use ReadOnlySpan<char> to properly demonstrate String.Trim RC2 breakage Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * CODEOWNERS: Use solo @danmoseley (consistent with migrate-nullable-references) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Update CODEOWNERS to use @dotnet/compat team instead of individual Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address review feedback: fix factual errors in references and eval - Fix URL with %20 spaces to use hyphens (csharp-compiler ref) - Fix DOTNET_GCConcurrent -> DOTNET_gcConcurrent casing (eval.yaml) - Remove invalid [StructLayout] combined with [InlineArray] (eval.yaml) - Move JSON comment outside code fence (deployment-runtime ref) - Remove confusing preview-era sentence (winforms-wpf ref) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Revert URL change: %20 encoding is correct for this MS Learn page The original URL with percent-encoded spaces is the actual working URL; the hyphenated version returns 404. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Improve EF Core reference doc to help failing eval scenarios - Promote HasIndex from Low to Medium Impact with crash detail and removal guidance (Scenario 5 missed this causing quality regression) - Expand id format change section with data migration implications and HasRootDiscriminatorInJsonId mitigation (Scenario 5 rubric) - Add concrete DateTime.UtcNow in HasData before/after example (Scenario 4 missed connecting HasData to pending changes exception) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add explicit HasData search action for pending model changes The agent reads the reference doc but doesn't connect DateTime.UtcNow in HasData to the pending changes exception. Make the SKILL.md workflow step prescriptive: search for non-deterministic values and replace them. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Andriy Svyryd <AndriySvyryd@users.noreply.github.com> |
||
|
|
042a9d2b2c |
Reorganize plugins into domain-specific groupings (#274)
* Reorganize plugins per agreed structure (#271) Split the dotnet plugin into domain-specific plugins per discussion in #271: - dotnet: narrowed to common everyday C#/.NET coding tasks - dotnet-diag: perf investigations, debugging, incident analysis - dotnet-data: data access and Entity Framework - dotnet-aspnet, dotnet-wpf, dotnet-winforms, dotnet-maui: scaffolded empty to convey intent for future framework-specific skills Moved skills, tests, and CODEOWNERS entries accordingly. No file content was changed; all skill/test moves are pure renames. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Improve dotnet-diag and dotnet-winforms descriptions - dotnet-diag: add '.NET' qualifier to clarify scope - dotnet-winforms: use official 'Windows Forms (WinForms)' name Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add .NET qualifier to dotnet-data description Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Remove empty plugins; list them in CONTRIBUTING.md as future options Remove the four empty placeholder plugins (dotnet-aspnet, dotnet-wpf, dotnet-winforms, dotnet-maui) that had only plugin.json and no skills. Add a 'Plugin organization' section to CONTRIBUTING.md that describes the domain-specific plugin groupings introduced in this PR and lists the four removed plugin names as reserved candidates for future contributions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Create dotnet-upgrade plugin with migration/upgrade skills Move migrate-nullable-references, thread-abort-migration, and dotnet-aot-compat from dotnet to the new dotnet-upgrade plugin. Update CODEOWNERS paths (same owners), CONTRIBUTING.md plugin table, and fix the thread-abort-migration SKILL.md link in CONTRIBUTING.md. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> |