Commit Graph

17 Commits

Author SHA1 Message Date
Viktor Hofer a895c226b3 Fix agents field in plugin.json to use explicit file paths (#419)
* Fix agents field in plugin.json to use explicit file paths

Claude Code's manifest validator rejects directory paths in the agents
field. Replace directory references with explicit .agent.md file paths
in all affected plugins (dotnet-diag, dotnet-msbuild, dotnet-template-engine).

Fixes https://github.com/dotnet/skills/issues/416

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

* Validate that agents paths are explicit files, not directories

Claude Code's manifest validator rejects directory paths in the agents
field. Update PluginValidator to error when an agent path resolves to a
directory, guiding authors to use explicit .agent.md file paths instead.

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-23 08:36:20 +00:00
Copilot 6face98ff6 Change agents and skills fields in plugin.json to array format for Claude Code CLI compatibility (#407)
* Initial plan

* Remove agents string field from plugin.json and handle array format in parser

Claude Code CLI validates `agents` as array-of-strings per its plugin manifest
schema. Our plugin.json files had `"agents": "./agents/"` (a string), which
caused "agents: Invalid input" validation errors on install.

Remove the field from the 3 affected plugin.json files — agents are still
discovered by convention from the `agents/` directory. Also make ParsePluginJson
resilient to both string and array formats for forward-compatibility.

Co-authored-by: ViktorHofer <7412651+ViktorHofer@users.noreply.github.com>

* Remove `agents` string field from plugin.json for Claude Code CLI compatibility

Co-authored-by: ViktorHofer <7412651+ViktorHofer@users.noreply.github.com>

* Change agents field to array format in plugin.json, update validator to read array-first with string fallback

Plugin.json files now declare agents as an array of file paths:
  "agents": ["./agents/foo.agent.md", "./agents/bar.agent.md"]

ParsePluginJson reads the array first (preferred, Claude Code schema),
falls back to a string path (legacy). PluginInfo gains an AgentPaths
field. Validator and discovery use the array when present, else fall
back to directory-based convention.

Co-authored-by: ViktorHofer <7412651+ViktorHofer@users.noreply.github.com>

* Simplify agents to directory-path array form ["./agents/"], handle directories in array entries

Per Copilot CLI spec, agents field values are "Path(s) to agent directories"
— no need to list individual files. Use ["./agents/"] to mirror how
skills uses "./skills/". Updated validator and discovery to handle both
directory and file entries in the array.

Co-authored-by: ViktorHofer <7412651+ViktorHofer@users.noreply.github.com>

* Delete .nuget/nuget.exe

* Apply suggestions from code review

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Convert skills field to array format in plugin.json, update validator to handle both forms

Co-authored-by: ViktorHofer <7412651+ViktorHofer@users.noreply.github.com>

* Align AgentPaths null checks to use { Count: > 0 } pattern for consistency

Co-authored-by: ViktorHofer <7412651+ViktorHofer@users.noreply.github.com>

* Change `agents` and `skills` fields in plugin.json to array format for Claude Code CLI compatibility

Co-authored-by: ViktorHofer <7412651+ViktorHofer@users.noreply.github.com>

* Delete .nuget/nuget.exe

* Consolidate SkillsPath/SkillPaths and AgentsPath/AgentPaths into single array fields

Remove dual string/array fields from PluginInfo. The parser now
normalizes legacy string values into single-element arrays, so all
downstream code uses only SkillPaths and AgentPaths (IReadOnlyList<string>).
This eliminates all array-vs-string fallback branching.

Co-authored-by: ViktorHofer <7412651+ViktorHofer@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: ViktorHofer <7412651+ViktorHofer@users.noreply.github.com>
Co-authored-by: Viktor Hofer <viktor.hofer@microsoft.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-20 10:27:28 +01:00
YuliiaKovalova 14346ff3b2 Enrich build-perf-diagnostics skill with MSBuild team and community insights (#342)
* Enrich build-perf-diagnostics skill with MSBuild team and community insights

Additions (pure knowledge, no MCP dependency):
- RAR: dotnet/msbuild#2015 context, DisableTransitiveProjectReferences, ReferenceOutputAssembly
- Copy tasks: SkipCopyUnchangedFiles, --artifacts-path, Copy batching (dotnet/msbuild#12884)
- Dev Drive (ReFS): copy-on-write + reduced Defender scans, OrchardCore 7257 Copy tasks benchmark
- Evaluation: NuGetSdkResolver 180-400ms overhead (dotnet/msbuild#4025), EnableDefaultItems
- NuGet: RestoreUseStaticGraphEvaluation (20s+ savings in large builds)
- Project graph shape: wide vs deep (40% faster clean, 20% faster incremental)
- MSBuild Server: MSBUILDUSESERVER=1 for CLI caching
- Inline task overhead: 1s vs 3ms (RoslynCodeTaskFactory vs compiled)
- Misleading ResolveProjectReferences time (dotnet/msbuild#3135)
- Incrementality anti-patterns (dotnet/msbuild#13206)
- Impact categorization (HIGH/MEDIUM/QUICK WINS)
- Quick Wins: expanded to 15 items (from 7)

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

* Fix minor issues from review comments

- Fix missing closing XML tag for CreateHardLinksForCopyFilesToOutputDirectoryIfPossible in Quick Wins checklist
- Clarify confusing Copy task batching wording per reviewer feedback

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

* Trim skill to reduce token overhead

Remove standalone sections (MSBuild Server, Inline Tasks,
ResolveProjectReferences, Incrementality Anti-patterns) that add
~1400 extra tokens without benefiting the evaluated scenario.
Consolidate Quick Wins checklist accordingly.

These sections can be contributed as separate skills in follow-up PRs.

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

* Add separate skills for MSBuild server, inline tasks, and ResolveProjectReferences

Extract content removed from build-perf-diagnostics into standalone skills
to keep each skill focused and avoid token budget bloat:

- msbuild-server: MSBUILDUSESERVER=1 for CLI incremental caching
- inline-task-overhead: RoslynCodeTaskFactory ~1s overhead vs ~3ms compiled
- resolve-project-references: misleading Target Performance Summary time
  (dotnet/msbuild#3135), guides users to Task Performance Summary instead

Incrementality anti-patterns content was not extracted as a separate skill
because the existing incremental-build skill already covers that area.

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

* Add github.com/dotnet/msbuild to known-domains.txt

Required by reference scanner for MSBuild issue links in
build-perf-diagnostics and resolve-project-references skills.

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

* Replace full dotnet/msbuild URLs with shorthand notation

The reference scanner reads known-domains.txt from upstream main,
not from the PR branch. Use shorthand 'dotnet/msbuild#NNNN' format
(consistent with the rest of the file) instead of full URLs.

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

* Address review comments and fix reference scanner errors

- Remove https://aka.ms/devdrive URLs that trigger reference scanner
- Soften unsourced benchmark claims (OrchardCore Copy tasks, 20s+
  restore savings, 40%/20% graph shape improvements) per reviewer
  feedback to use workload-dependent language instead

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

* Add eval tests for new skills; remove inline-task-overhead

Add eval.yaml and test fixtures for msbuild-server and
resolve-project-references skills:
- msbuild-server: tests CLI build perf scenario with developer report
- resolve-project-references: tests misleading target perf summary
  with multi-project setup and perf report

Remove inline-task-overhead skill: failed 3 evaluation iterations
(avg +2.7%) because the baseline LLM already knows about
RoslynCodeTaskFactory overhead — the skill doesn't add enough
unique value to meet the 10% improvement threshold.

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

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Address review comments

- Add caveat that DisableTransitiveProjectReferences may require
  adding direct references for consumed types
- Fix escaped quotes in Quick Wins RunAnalyzers checklist item
- Add OutputType=Exe and Main entry point to msbuild-server fixture
- Change 'solution' to 'project' in resolve-project-references report
- Trim trailing spaces in developer-report.md

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

* Restore accidentally removed known-domains.txt

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

* Fix remaining review comments

- Quote -flp argument in resolve-project-references bash example
  to handle semicolons in POSIX shells
- Format LibA/Class1.cs and LibB/Class1.cs across multiple lines
  for consistency with other test fixtures
- Rename msbuild-server/Program.cs to Calculator.cs to match content

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

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-17 15:55:44 +01:00
Jan Krivanek 7e7dabd343 [WIP] Improve msbuild skills descriptions (#384)
* Improve msbuild skills descriptions

* Improve descriptions
2026-03-17 14:30:58 +01:00
Dan Moseley d5bd687cf6 Fix msbuild spec conformance violations (#247)
- msbuild-antipatterns: Move AP-16 through AP-21 and checklist to
  references/additional-antipatterns.md (body: 384 lines, was 583)
- directory-build-organization: Replace cross-skill reference to
  ../msbuild-antipatterns/SKILL.md with local reference file
  references/targetframework-props-pitfall.md

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-06 14:15:50 +01:00
Viktor Hofer 887dafdbb4 Fix typos and grammar in msbuild.agent.md (#191)
* Fix typos and grammar in msbuild.agent.md

- Close unclosed backtick on #tool:web/fetch reference
- Fix 'help user to troubleshoot' -> 'help the user troubleshoot'
- Fix 'nor' -> 'or' (no preceding 'neither')
- Fix 'a sub-agents' -> 'sub-agents'

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

* Update plugins/dotnet-msbuild/agents/msbuild.agent.md

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

* Update plugins/dotnet-msbuild/agents/msbuild.agent.md

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

* Fix incorrect skill reference in build-perf-baseline

Replace non-existent 'analyzer-performance' skill reference with
'build-perf-diagnostics' which contains the analyzer performance guidance.

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>
2026-03-04 14:44:00 +01:00
Jared Parsons 4793aa27e9 Replace binlog mcp with replay to textlog (#162)
Co-authored-by: Jan Krivanek <jankrivanek@microsoft.com>
2026-03-02 21:32:23 +01:00
Viktor Hofer 29033c459d Reset plugin verisons to 0.1.0 (#145) 2026-02-28 08:38:03 +01:00
Viktor Hofer 24fa12656b Remove .mcp.json and mcpServers from plugin.json
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-27 20:19:46 +01:00
Viktor Hofer 7115c467d7 Move build.ps1 to agentic-workflows and update paths
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-27 20:19:46 +01:00
Viktor Hofer 2dacda5600 Remove AGENTS.md and README.md from dotnet-msbuild plugin
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-27 20:19:46 +01:00
Viktor Hofer 077ca9155f Remove prompts folder and distribution templates section
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-27 20:19:46 +01:00
Viktor Hofer 1e44eef4f1 Remove copilot-extension folder and all references
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-27 20:19:46 +01:00
Viktor Hofer 7d0a329aee Move agentic-workflows to repo root
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-27 20:19:46 +01:00
Viktor Hofer 6e2ad53e88 Move plugin tests out of plugins folder into a root tests/ folder 2026-02-27 20:19:46 +01:00
Viktor Hofer 0b249be6b6 Rename from components to plugins 2026-02-27 20:19:46 +01:00
Viktor Hofer 250b1c2bbc Rename src/ to plugins/ folder 2026-02-27 20:19:46 +01:00