Repository navigation
Add instructions, skills and MCP configuration for AI coding agents - #54
Open
xperiandri wants to merge 9 commits into
Open
xperiandri wants to merge 9 commits into
xperiandri wants to merge 9 commits into
Conversation
`dotnet sln migrate` produced `StringResourceVisualizer.slnx` from `StringResourceVisualizer.sln`, and the old file is removed. The projects and the solution items are the same. The project ids are the ones of the old solution, which is what Visual Studio writes into the file itself. The `.slnx` format is XML, much shorter than the `.sln`, and designed to reduce merge conflicts (https://devblogs.microsoft.com/visualstudio/new-simpler-solution-file-format/). Building it needs the .NET SDK 9.0.200 or later, or MSBuild from Visual Studio or Build Tools 17.13 or later. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
`.github/copilot-instructions.md` is the single source for GitHub Copilot, Claude Code and other agents: the build and test commands, the structure, how the adornments work, the parts that belong to the original author, the rules for Visual Studio extensions and the C# guidelines. `CLAUDE.md` imports it and `AGENTS.md` points to it. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
`create-pr-description.prompt.md` compares the branch with `origin/main` and fills in the pull request template. This repository has no template, so the prompt falls back to a default structure. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
A custom agent for the extension code, based on `madskristensen/CustomAgents`. It refers to the project instructions and to the skills instead of repeating them. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Six skills of `madskristensen/vs-agent-plugins` (commit e971073e2163d4bc66d3e455e102c316e01c94c6) that apply to this extension: `handling-async-threading`, `handling-extension-errors`, `adding-editor-adornments`, `listening-text-view-events`, `adding-options-settings` and `handling-solution-events`. The content is unchanged. The Apache License 2.0 of the upstream repository comes with them, and `README.md` names the source. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Git cannot store a Windows junction, so `Directory.Build.targets` creates it when Visual Studio loads the project, and `.gitignore` excludes it. A command-line build skips the target. `Directory.Build.targets` is a solution item. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
`.claude/settings.json` registers the `vs-agent-plugins` marketplace and enables `vs-extensibility-skills`, the whole catalogue of 40 skills. If Claude Code does not offer to install it, `claude plugin install vs-extensibility-skills@vs-agent-plugins --scope project` does. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The job runs on `windows-2022`: the VSIX builds only with the MSBuild of Visual Studio, and the extension targets Visual Studio 2022. The integrated firewall of the agent is not compatible with Windows, so the agent runs without it. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
`.mcp.json` lists `GitHub` for Visual Studio and Claude Code, and `Microsoft Learn` for Claude Code only, because Visual Studio bundles that server itself. The GitHub server does not support the OAuth dynamic client registration that Claude Code needs, so `.claude/scripts/github-mcp-headers.ps1` passes it the token that Git Credential Manager already stores. `.mcp.json` is a solution item. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This was referenced Oct 27, 2026
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.
Summary
Stacked on #53. The branch contains the commits of #53 and of the pull requests before it, so the last 8 commits are new here.
This pull request adds instructions and configuration for AI coding agents (GitHub Copilot, Claude Code and others), so that they build, test and change the extension the way the project expects. It requires #53 (the
.slnxsolution): the instructions, the setup steps and the solution items nameStringResourceVisualizer.slnx. This replaces #50, which also contained the.slnxconversion; that is a separate pull request of the chain now. The new commits are the eight afterSwitch the solution to the .slnx format, fromAdd the instructions for AI agentstoAdd the MCP servers for AI agents; the extension code and the project files do not change.Chain, changes, things to know and verification
Chain
This pull request is part of a chain of small pull requests that are stacked on each other. The branch of each one contains the commits of the earlier ones, so GitHub lists those commits here until the earlier pull requests are merged. All of them target
main. Merge them in this order and review only the commits that are new in each pull request:.slnxformat #53 – Switch the solution to the.slnxformat (first in the chain, no dependencies).slnxformat #53) – this pull requestdotnet build#58 – Build withdotnet build(stacked on Set the C# language version to 14 #57)What is added
.github/copilot-instructions.mdis the single source of the project instructions: the build and test commands, the layout of the repository, how the adornments are created and refreshed, the shared static state that the resource loading touches, and the rules for Visual Studio extensions. It also tells agents to leave the parts that belong to the original author alone: the sponsorship message, the telemetry and the signing of the release build.CLAUDE.mdandAGENTS.mdpoint to it..github/agents/vs-extension-expert.agent.mdis a custom agent for the extension code (it refers to the instructions and the skills), and.github/prompts/create-pr-description.prompt.mdis a prompt that writes pull request descriptions..github/skills/holds six Visual Studio extension skills (handling-async-threading,handling-extension-errors,adding-editor-adornments,listening-text-view-events,adding-options-settings,handling-solution-events), copied unchanged from madskristensen/vs-agent-plugins at commite971073e2163d4bc66d3e455e102c316e01c94c6. That repository is licensed under Apache-2.0, and its license text is included next to the skills..claude/settings.jsonlets Claude Code offer the whole catalogue of that repository as a plugin..mcp.jsonlists the GitHub and Microsoft Learn MCP servers..claude/scripts/github-mcp-headers.ps1gives the GitHub server the token that Git Credential Manager already stores, because that server does not support the OAuth registration that Claude Code needs. Claude Code asks for approval before it starts a server of a project..github/workflows/copilot-setup-steps.ymlrestores the packages for the Copilot coding agent. It runs onwindows-2022, like the existing build, because the extension targets Visual Studio 2022.Directory.Build.targetscreates.claude/skillsas a junction to.github/skillswhen Visual Studio loads the project (a command-line build skips it), and.gitignoreexcludes the junction..mcp.jsonandDirectory.Build.targetsare added to the solution items.The eight commits can be reviewed one by one.
Things to know
.mcp.json: Visual Studio reads the repository-level MCP configuration from the folder of the solution, and Claude Code reads it from the root of the repository.Directory.Build.targets, whose target runs in a design-time build only.Verification
main(37 entries), and the 4 tests pass (the machine builds the old-style projects with-p:TargetFrameworkVersion=v4.8, as it has no .NET Framework 4.8.1 targeting pack). A design-time call of theClaudeSkillsLinktarget creates the junction with the six skill folders,git statusstays clean because the link is ignored, and removing the link leaves the skills in place.Buildbuilds, tests and uploads the VSIX with the same 37 entries and sizes asmain, andCopilot Setup Stepspasses. The stepPublish Test Resultsthen fails, because the third-party actionEnricoMi/publish-unit-test-result-action/windows@v2finds no Python interpreter on the image (No python3 interpreter found); it fails in the same way on the unchanged code ofmain(run in the fork), so it is not caused by this change and not fixed here.🤖 Generated with Claude Code