Skip to content

Add instructions, skills and MCP configuration for AI coding agents - #54

Open
xperiandri wants to merge 9 commits into
mrlacey:mainfrom
xperiandri:chain/ai-infrastructure
Open

xperiandri wants to merge 9 commits into
mrlacey:mainfrom
xperiandri:chain/ai-infrastructure

Conversation

@xperiandri

@xperiandri xperiandri commented Oct 27, 2026 •

Copy link
Copy Markdown

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 .slnx solution): the instructions, the setup steps and the solution items name StringResourceVisualizer.slnx. This replaces #50, which also contained the .slnx conversion; that is a separate pull request of the chain now. The new commits are the eight after Switch the solution to the .slnx format, from Add the instructions for AI agents to Add 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:

  1. Switch the solution to the .slnx format #53 – Switch the solution to the .slnx format (first in the chain, no dependencies)
  2. Add instructions, skills and MCP configuration for AI coding agents #54 – Add instructions, skills and MCP configuration for AI coding agents (stacked on Switch the solution to the .slnx format #53) – this pull request
  3. Convert the projects to the SDK style #55 – Convert the projects to the SDK style (stacked on Add instructions, skills and MCP configuration for AI coding agents #54)
  4. Move the package versions to central package management #56 – Move the package versions to central package management (stacked on Convert the projects to the SDK style #55)
  5. Set the C# language version to 14 #57 – Set the C# language version to 14 (stacked on Move the package versions to central package management #56)
  6. Build with dotnet build #58 – Build with dotnet build (stacked on Set the C# language version to 14 #57)

What is added

  • .github/copilot-instructions.md is 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.md and AGENTS.md point to it.
  • .github/agents/vs-extension-expert.agent.md is a custom agent for the extension code (it refers to the instructions and the skills), and .github/prompts/create-pr-description.prompt.md is 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 commit e971073e2163d4bc66d3e455e102c316e01c94c6. That repository is licensed under Apache-2.0, and its license text is included next to the skills. .claude/settings.json lets Claude Code offer the whole catalogue of that repository as a plugin.
  • .mcp.json lists the GitHub and Microsoft Learn MCP servers. .claude/scripts/github-mcp-headers.ps1 gives 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.yml restores the packages for the Copilot coding agent. It runs on windows-2022, like the existing build, because the extension targets Visual Studio 2022.
  • Directory.Build.targets creates .claude/skills as a junction to .github/skills when Visual Studio loads the project (a command-line build skips it), and .gitignore excludes the junction. .mcp.json and Directory.Build.targets are added to the solution items.

The eight commits can be reviewed one by one.

Things to know

Verification

  • A full rebuild after the last commit gives no errors, the same 26 distinct warnings and the same VSIX content as 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 the ClaudeSkillsLink target creates the junction with the six skill folders, git status stays clean because the link is ignored, and removing the link leaves the skills in place.
  • The workflows of this repository wait for the approval of a maintainer on a pull request, so the commit ran in a fork. Build builds, tests and uploads the VSIX with the same 37 entries and sizes as main, and Copilot Setup Steps passes. The step Publish Test Results then fails, because the third-party action EnricoMi/publish-unit-test-result-action/windows@v2 finds no Python interpreter on the image (No python3 interpreter found); it fails in the same way on the unchanged code of main (run in the fork), so it is not caused by this change and not fixed here.
  • The extension was not run in the Experimental instance: no code changes.

🤖 Generated with Claude Code

xperiandri and others added 9 commits October 27, 2026 02:21
`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>
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.

1 participant