This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
These rules override all other instructions:
- NEVER commit directly to main - Always create a feature branch and submit a pull request
- Conventional commits - Format:
type(scope): description - GitHub Issues for TODOs - Use
ghCLI to manage issues, no local TODO files. Use conventional commit format for issue titles - Pull Request titles - Use conventional commit format (same as commits)
- Branch naming - Use format:
type/scope/short-description(e.g.,feat/tools/add-debug-tools) - Working an issue - Always create a new branch from an updated main branch
- Check branch status before pushing - Verify the remote tracking branch still exists. If a PR was merged/deleted, create a new branch from main instead
- Microsoft coding guidelines - Follow Microsoft C# coding conventions and .NET library design guidelines
- WPF for all UI - All UI must be implemented using WPF (XAML/C#). No web-based technologies (HTML, JavaScript, WebView)
- Write tests - All new/refactored code requires tests where applicable
- Run validation before commits - Run
dotnet buildand verify no errors before committing - No co-authors - Do not add co-author information on commits or pull requests
- No "generated by" statements - Do not add generated-by statements on pull requests
gh issue list # List open issues
gh issue view <number> # View details
gh issue create --title "type(scope): description" --body "..."
gh issue close <number>| Type | Description |
|---|---|
feat |
New feature |
fix |
Bug fix |
docs |
Documentation only |
refactor |
Code change that neither fixes a bug nor adds a feature |
test |
Adding or updating tests |
chore |
Maintenance tasks |
perf |
Performance improvement |
ci |
CI/CD changes |
Solution & Project Structure:
- SLNX solution files only (no legacy .sln)
- Solution naming:
CodingWithCalvin.<ProjectFolder> - Primary project naming:
CodingWithCalvin.<ProjectFolder> - Additional project naming:
CodingWithCalvin.<ProjectFolder>.<Classifier>
Build Configuration:
- Configurations: Debug and Release
- Platform: AnyCPU (or x64 where required)
- Build Tools: Latest 17.* release
- VSSDK: Latest 17.* release
Target Frameworks:
- Main VSIX project: .NET Framework 4.8
- Server project: .NET 10.0
- Shared library: Multi-target net48;net10.0
VSIX Manifest:
- Version range:
[17.0,19.0)— supports VS 2022 through VS 2026 - Architectures: AMD64 and ARM64
- Prerequisites: List Community edition only (captures Pro/Enterprise)
CI/CD:
- Build workflow: Automated build on push/PR
- Publish workflow: Automated marketplace publishing
- Marketplace config:
publish.manifest.jsonfor automated publishing
Development Environment:
- Required extension: Extensibility Essentials 2022
- Helper library: Community.VisualStudio.Toolkit
Documentation:
- README should be exciting and use emojis
VS-VSMCP is a Visual Studio 2022/2026 extension that exposes Visual Studio features as an MCP (Model Context Protocol) server, allowing AI assistants like Claude to interact with VS programmatically via HTTP/SSE.
┌─────────────────┐ ┌─────────────────────┐ named pipes ┌─────────────────┐
│ Claude Desktop │ HTTP/SSE │ VSMCP.Server.exe │ ◄────────────────► │ VS Extension │
│ (MCP Client) │ ◄────────────► │ (MCP Server) │ JSON-RPC │ (Tool Impl) │
└─────────────────┘ :5050 └─────────────────────┘ └─────────────────┘
| Project | Purpose |
|---|---|
CodingWithCalvin.VSMCP |
Main VSIX extension - runs inside Visual Studio |
CodingWithCalvin.VSMCP.Server |
MCP server process - hosts HTTP/SSE endpoint |
CodingWithCalvin.VSMCP.Shared |
Shared DTOs and RPC contracts |
# Build the solution
dotnet build src/CodingWithCalvin.VSMCP.slnx
# Build Release
dotnet build src/CodingWithCalvin.VSMCP.slnx -c Release
# Build specific project
dotnet build src/CodingWithCalvin.VSMCP/CodingWithCalvin.VSMCP.csprojVSMCPPackage.cs- Package initialization and service registrationVSCommandTable.vsct- Defines menu commands for Tools > VSMCPsource.extension.vsixmanifest- VSIX package metadataServices/VisualStudioService.cs- VS API wrapper for all VS operationsServices/RpcServer.cs- Named pipe JSON-RPC serverServices/ServerProcessManager.cs- Server process lifecycle managementServer/Tools/*.cs- MCP tool definitions
solution_info- Get current solution informationsolution_open- Open a solution filesolution_close- Close the current solutionproject_list- List all projectsproject_info- Get project details
document_list- List open documentsdocument_active- Get active documentdocument_open- Open a filedocument_close- Close a documentdocument_read- Read document contentdocument_write- Write document contentselection_get- Get current selectionselection_set- Set selection rangeeditor_insert- Insert text at cursoreditor_replace- Find and replace texteditor_goto_line- Navigate to lineeditor_find- Search in document
build_solution- Build entire solutionbuild_project- Build specific projectclean_solution- Clean solutionbuild_cancel- Cancel buildbuild_status- Get build status
- .NET Framework 4.8 (VSIX)
- .NET 10.0 (Server)
- Visual Studio SDK 17.x (VS 2022/2026)
- Community.VisualStudio.Toolkit.17
- ModelContextProtocol C# SDK
- StreamJsonRpc for named pipe communication
- WPF for UI
- MSBuild + NuGet for builds
- VSIX packaging format
- Visual Studio 2022 with "Visual Studio extension development" workload
- .NET 10.0 SDK