Skip to content

Reorganize plugins into domain-specific groupings - #274

Merged
danmoseley merged 5 commits into
dotnet:mainfrom
danmoseley:plugin-reorg
Mar 7, 2026
Merged

Reorganize plugins into domain-specific groupings#274
danmoseley merged 5 commits into
dotnet:mainfrom
danmoseley:plugin-reorg

Conversation

@danmoseley

@danmoseley danmoseley commented Mar 6, 2026

Copy link
Copy Markdown
Contributor

Fixes #271
Reorganize plugins into domain-specific groupings per the structure agreed in #271.

Changes

New plugins with skills moved from dotnet:

  • dotnet-diag (perf investigations, debugging, incident analysis) — 6 skills + 1 agent
  • dotnet-data (data access, Entity Framework) — 1 skill

Narrowed dotnet plugin to common everyday C#/.NET coding skills.

dotnet-msbuild is unchanged.

CONTRIBUTING.md updated with a "Plugin organization" section describing the domain groupings and listing dotnet-aspnet, dotnet-wpf, dotnet-winforms, and dotnet-maui as reserved plugin names for future contributions.

Skill placement

Plugin Skills Agents
dotnet csharp-scripts, dotnet-aot-compat, dotnet-pinvoke, migrate-nullable-references, nuget-trusted-publishing, thread-abort-migration
dotnet-diag analyzing-dotnet-performance, android-tombstone-symbolication, clr-activation-debugging, dotnet-trace-collect, dump-collect, microbenchmarking optimizing-dotnet-performance
dotnet-data optimizing-ef-core-queries
dotnet-msbuild (unchanged) (unchanged)

What this does NOT change

  • No skill content was modified — all moves are pure renames (100% similarity)
  • dotnet-msbuild plugin is untouched
  • Tests and CODEOWNERS updated to match new paths

Split the dotnet plugin into domain-specific plugins per discussion
in dotnet#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>
- 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>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Reorganizes the repository’s .NET skills/tests into more domain-focused plugins (e.g., dotnet-diag, dotnet-data) and updates metadata/ownership to match the new layout.

Changes:

  • Split former dotnet diagnostics/perf/content into new plugins (dotnet-diag, dotnet-data) and introduced placeholder plugins (dotnet-aspnet, dotnet-wpf, dotnet-winforms, dotnet-maui).
  • Added/moved evaluation scenarios and fixtures under the new tests/dotnet-diag/** and tests/dotnet-data/** paths.
  • Updated CODEOWNERS and plugin metadata to reflect the new structure.

Reviewed changes

Copilot reviewed 8 out of 74 changed files in this pull request and generated no comments.

Show a summary per file
File Description
.github/CODEOWNERS Reassigns ownership entries to new plugin/test paths.
plugins/dotnet/plugin.json Updates the dotnet plugin description to reflect a narrower “everyday” scope.
plugins/dotnet-aspnet/plugin.json Adds new (empty) ASP.NET plugin metadata.
plugins/dotnet-diag/agents/optimizing-dotnet-performance.agent.md Adds/moves the optimizing performance agent into dotnet-diag.
plugins/dotnet-diag/plugin.json Adds new diagnostics plugin metadata.
plugins/dotnet-diag/skills/analyzing-dotnet-performance/SKILL.md Adds/moves the performance analysis skill under dotnet-diag.
plugins/dotnet-diag/skills/analyzing-dotnet-performance/references/async-patterns.md Reference material for perf scan patterns (async).
plugins/dotnet-diag/skills/analyzing-dotnet-performance/references/collections-and-linq.md Reference material for perf scan patterns (collections/LINQ).
plugins/dotnet-diag/skills/analyzing-dotnet-performance/references/critical-patterns.md Reference material for perf scan patterns (critical).
plugins/dotnet-diag/skills/analyzing-dotnet-performance/references/io-and-serialization.md Reference material for perf scan patterns (I/O/serialization).
plugins/dotnet-diag/skills/analyzing-dotnet-performance/references/memory-and-strings.md Reference material for perf scan patterns (memory/strings).
plugins/dotnet-diag/skills/analyzing-dotnet-performance/references/regex-patterns.md Reference material for perf scan patterns (regex).
plugins/dotnet-diag/skills/analyzing-dotnet-performance/references/structural-patterns.md Reference material for perf scan patterns (structural).
plugins/dotnet-diag/skills/android-tombstone-symbolication/SKILL.md Adds/moves Android tombstone symbolication skill under dotnet-diag.
plugins/dotnet-diag/skills/clr-activation-debugging/references/com-activation.md Adds/moves CLR activation debugging reference content.
plugins/dotnet-diag/skills/dotnet-trace-collect/references/dotnet-monitor.md Adds/moves dotnet-monitor reference content.
plugins/dotnet-diag/skills/dotnet-trace-collect/references/dotnet-trace-collect-linux.md Adds/moves collect-linux reference content.
plugins/dotnet-diag/skills/dotnet-trace-collect/references/dotnet-trace-collect.md Adds/moves dotnet-trace collect reference content.
plugins/dotnet-diag/skills/dotnet-trace-collect/references/perfcollect.md Adds/moves perfcollect reference content.
plugins/dotnet-diag/skills/dotnet-trace-collect/references/perfview.md Adds/moves PerfView reference content.
plugins/dotnet-diag/skills/dump-collect/SKILL.md Adds/moves dump-collect skill under dotnet-diag.
plugins/dotnet-diag/skills/dump-collect/references/coreclr-dumps.md Adds/moves CoreCLR dump collection reference.
plugins/dotnet-diag/skills/microbenchmarking/SKILL.md Adds/moves microbenchmarking skill under dotnet-diag.
plugins/dotnet-diag/skills/microbenchmarking/references/bdn-internals-and-tuning.md Adds/moves BenchmarkDotNet internals/tuning reference.
plugins/dotnet-diag/skills/microbenchmarking/references/comparison-strategies.md Adds/moves benchmark comparison strategies reference.
plugins/dotnet-diag/skills/microbenchmarking/references/diagnosers-and-exporters.md Adds/moves diagnosers/exporters reference.
plugins/dotnet-diag/skills/microbenchmarking/references/project-setup-and-running.md Adds/moves benchmark project setup/running reference.
plugins/dotnet-data/plugin.json Adds new data plugin metadata.
plugins/dotnet-data/skills/optimizing-ef-core-queries/SKILL.md Adds/moves EF Core optimization skill under dotnet-data.
plugins/dotnet-maui/plugin.json Adds new (empty) MAUI plugin metadata.
plugins/dotnet-winforms/plugin.json Adds new (empty) WinForms plugin metadata.
plugins/dotnet-wpf/plugin.json Adds new (empty) WPF plugin metadata.
tests/dotnet-data/optimizing-ef-core-queries/eval.yaml Adds/moves EF Core eval scenario under dotnet-data.
tests/dotnet-diag/analyzing-dotnet-performance/eval.yaml Adds/moves perf-analysis eval scenarios under dotnet-diag.
tests/dotnet-diag/analyzing-dotnet-performance/fixtures/metric-numeral-extensions.cs Fixture source for perf-analysis evals.
tests/dotnet-diag/analyzing-dotnet-performance/fixtures/number-converter-greek.cs Fixture source for perf-analysis evals.
tests/dotnet-diag/analyzing-dotnet-performance/fixtures/string-humanize-and-dehumanize.cs Fixture source for perf-analysis evals.
tests/dotnet-diag/analyzing-dotnet-performance/fixtures/truncation-and-span.cs Fixture source for perf-analysis evals.
tests/dotnet-diag/android-tombstone-symbolication/crashlog_ios.txt iOS crashlog fixture for format-rejection scenario.
tests/dotnet-diag/android-tombstone-symbolication/eval.yaml Adds/moves tombstone symbolication eval scenarios.
tests/dotnet-diag/android-tombstone-symbolication/tombstone_coreclr.txt Tombstone fixture (CoreCLR).
tests/dotnet-diag/android-tombstone-symbolication/tombstone_multi_buildid.txt Tombstone fixture (multiple BuildIds).
tests/dotnet-diag/android-tombstone-symbolication/tombstone_multithread.txt Tombstone fixture (multiple threads).
tests/dotnet-diag/android-tombstone-symbolication/tombstone_nativeaot.txt Tombstone fixture (NativeAOT).
tests/dotnet-diag/android-tombstone-symbolication/tombstone_no_buildid.txt Tombstone fixture (missing BuildId).
tests/dotnet-diag/android-tombstone-symbolication/tombstone_no_dotnet.txt Tombstone fixture (no .NET frames).
tests/dotnet-diag/android-tombstone-symbolication/tombstone_sample.txt Tombstone sample fixture.
tests/dotnet-diag/clr-activation-debugging/eval.yaml Adds/moves CLR activation debugging eval scenarios.
tests/dotnet-diag/clr-activation-debugging/fixtures/csc-healthy.txt CLR activation log fixture.
tests/dotnet-diag/clr-activation-debugging/fixtures/link-fod-suppressed.txt CLR activation log fixture.
tests/dotnet-diag/clr-activation-debugging/fixtures/link-multi-activation.txt CLR activation log fixture.
tests/dotnet-diag/clr-activation-debugging/fixtures/mt-fod-launched.txt CLR activation log fixture.
tests/dotnet-diag/clr-activation-debugging/fixtures/mt-fod-suppressed.txt CLR activation log fixture.
tests/dotnet-diag/clr-activation-debugging/fixtures/tool-with-legacy-policy.txt CLR activation log fixture.
tests/dotnet-diag/dump-collect/eval.yaml Adds/moves dump collection eval scenarios under dotnet-diag.
tests/dotnet-diag/microbenchmarking/eval.yaml Adds/moves microbenchmarking eval scenario.
tests/dotnet-diag/microbenchmarking/TextAnalyzer/TextAnalyzer.cs Test project source used by microbenchmarking eval.
tests/dotnet-diag/microbenchmarking/TextAnalyzer/TextAnalyzer.csproj Test project metadata used by microbenchmarking eval.

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

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@danmoseley

Copy link
Copy Markdown
Contributor Author

This is basically all moving files around + creating the plugin.json's. The description in the plugin.jsons I believe is only for humans, unlike eg skill descriptions which are for LLM's, so I made them short and concise.

@danmoseley

Copy link
Copy Markdown
Contributor Author

Note 4 of the plugins are currently empty -- @ManishJayaswal suggested in the issue to create them anyway and we can populate them later. I think that's reasonable

@danmoseley

Copy link
Copy Markdown
Contributor Author

/validate

@danmoseley
danmoseley requested a review from ViktorHofer March 6, 2026 21:18

@brianrob brianrob left a comment

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.

LGTM

@ManishJayaswal

Copy link
Copy Markdown
Contributor

Perhaps we should add a plugin called dotnet.modernization and move thread-abort-migration there. We will likely add more modernization rules in future.
Otherwise looks good to me.

@ManishJayaswal ManishJayaswal left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Perhaps we should add a plugin called dotnet.modernization and move thread-abort-migration there. We will likely add more modernization rules in future.
Otherwise looks good to me.

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>
@danmoseley
danmoseley requested a review from Copilot March 6, 2026 23:25
@danmoseley

Copy link
Copy Markdown
Contributor Author

Update: removed empty placeholder plugins

Removed the four empty plugins (dotnet-aspnet, dotnet-wpf, dotnet-winforms, dotnet-maui) that had only plugin.json and no skills. Rather than ship empty shells, I added a "Plugin organization" section to CONTRIBUTING.md that:

  1. Documents the domain groupings introduced here (dotnet, dotnet-diag, dotnet-data, dotnet-msbuild)
  2. Lists those four names as reserved candidates so contributors know where to put new ASP.NET, WPF, WinForms, and MAUI skills when they're ready

This keeps the repo clean — plugins only exist when they have content — while still guiding future contributors to the intended structure.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 5 out of 71 changed files in this pull request and generated no new comments.


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

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>
@danmoseley
danmoseley requested a review from agocke as a code owner March 7, 2026 02:04
@danmoseley

Copy link
Copy Markdown
Contributor Author

Update: added dotnet-upgrade plugin

Created a new dotnet-upgrade plugin and moved the three migration/upgrade skills there from dotnet. Current plugin layout:

Plugin Skills Agents
dotnet csharp-scripts, dotnet-pinvoke, nuget-trusted-publishing
dotnet-upgrade dotnet-aot-compat, migrate-nullable-references, thread-abort-migration
dotnet-diag analyzing-dotnet-performance, android-tombstone-symbolication, clr-activation-debugging, dotnet-trace-collect, dump-collect, microbenchmarking optimizing-dotnet-performance
dotnet-data optimizing-ef-core-queries
dotnet-msbuild (unchanged) (unchanged)

CODEOWNERS updated (same owners, new paths). CONTRIBUTING.md updated with the full plugin table and reserved names for future plugins (dotnet-aspnet, dotnet-wpf, dotnet-winforms, dotnet-maui).

@danmoseley
danmoseley requested a review from Copilot March 7, 2026 04:27

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

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


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

Comment thread CONTRIBUTING.md
Comment thread plugins/dotnet-data/plugin.json
@danmoseley
danmoseley enabled auto-merge (squash) March 7, 2026 04:32
@danmoseley
danmoseley merged commit 042a9d2 into dotnet:main Mar 7, 2026
5 checks passed
@danmoseley
danmoseley deleted the plugin-reorg branch March 7, 2026 05:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Consider organizing skills/agents into meaningful plugins

4 participants