SkillAgentSearch skills...

claude_code_vs

Bring Claude Code to Visual Studio 2026: A native diff with accept/reject, a live debugger Claude can drive autonomously, Roslyn code navigation, and Test Explorer integration. The IDE half of Claude Code's integration protocol. Community-built, unofficial.

Install / Use

npx skills add firish/claude_code_vs

Installs into whichever agent you are using.

About this skill
📦

Other

Other agent config

Quality Score

85/100

Supported Platforms

Claude Code

Tags

Claude Code for Visual Studio

Bring Claude Code into Visual Studio 2026. The claude CLI does the agent work. This extension is the IDE half of Claude Code's integration protocol: a native diff window with accept and reject, automatic selection and compiler-diagnostics context, a live debugger Claude can read and drive, Roslyn code navigation with decompile, and a test runner that catches failures under the debugger.

Claude drives the Visual Studio debugger, stepping through a scoring loop to find a bug that never shows in the output, then its fix opens in the diff viewer

A fresh Claude session driving the Visual Studio debugger to find a bug that is invisible in the output, then opening the fix in the native diff.

Status: community project, not affiliated with Anthropic. Visual Studio 2026 only for now. Tested against claude 2.1.221.

Jump to a feature: Native diff · Drive the debugger · Data breakpoints · Catch flaky tests · Semantic navigation · Integrated terminal · Attach files · Claude's eyes · The panel

More: What you get · Requirements · Install · Quickstart · How it works · Privacy and security · Limitations · Troubleshooting · Build from source

Why

Claude Code ships first-class IDE integration for VS Code and JetBrains, but not Visual Studio. This extension implements that same integration protocol natively for VS, so the CLI drives a real Visual Studio diff window and reads your selection and build errors instead of you copy-pasting into a terminal.

The demand for this is on the Claude Code tracker. These requests ask for what the extension provides:

  • Visual Studio support: #15942 for VS 2026, and #70516 for VS 2022+.
  • A debugger Claude can use: #13865 for an interactive debug mode aimed at hard-to-reproduce runtime bugs, and #27110 to expose debugger state, the variables and call stack, to Claude.
  • Reaching more IDEs, and stronger C#/.NET code intelligence: #1234 for IDEs beyond VS Code and JetBrains, and #16360 for the C# code intelligence our Roslyn navigation provides.

What you get

  • Native diff with a single accept/reject gate - Claude's edits open in Visual Studio's diff viewer, and approving there is the only step (no duplicate y/n prompt in the terminal).
  • Reject with feedback - reject an edit and tell Claude what to change, and it reconsiders with your note.
  • Run wild (auto-accept) - a panel toggle that applies edits without opening the diff, for when you want to let it cook. Resets each session.
  • Diagnostics sharing - Claude reads Visual Studio's compiler errors and warnings (C# and C++) and fixes them.
  • Semantic code navigation - Claude asks Visual Studio's compiler (Roslyn) for the resolved meaning of your C# instead of grepping text: find-all-references, go-to-definition, find-implementations, and call/type hierarchies. These are the ground-truth answers text search gets wrong, like indirect and interface-dispatched references, the right overload, explicit interface implementations, and transitive callers for impact analysis. No debug session needed; it works whenever a C#/VB solution is loaded. Full reference: docs/SEMANTIC.md.
  • Live debugger - while you are paused at a breakpoint, Claude sees your program's runtime state (call stack, variable values, threads) and, opt-in, can drive the debugger: continue, step, set breakpoints, break at the throw site of an exception, set a data breakpoint that breaks (or traces the full change history) the moment a value changes, attach to a running app (a hosted web service or desktop app, not just F5), and pause a hung process to untangle a deadlock by following the lock-ownership chain across threads to the exact cycle. Full reference: docs/DEBUGGER.md.
  • Test integration - Claude discovers, runs, and debugs your unit tests through Visual Studio's Test Explorer engine: real per-test results (outcome, message, stack), re-run just the failures, and run a failing test under the debugger to stop at the fault, or hammer a flaky test until it fails and catch that iteration red-handed, paused inside the failure. Because it is the debugger's own session, a red test becomes a live investigation. Full reference: docs/TESTING.md.
  • Selection context - Claude automatically knows the file and lines you are looking at.
  • Claude in the IDE's own terminal - Launch opens claude inside Visual Studio's docked Terminal tool window (the same group as Developer PowerShell), already connected - it docks and tabs like any other VS terminal instead of floating over your desktop. An External console button keeps the standalone-window option. Full reference: docs/QOL.md.
  • Attach screenshots and files - the Windows CLI cannot take a pasted screenshot at all, so the panel is the paste point: Win+Shift+S, click Paste (or drop files from Explorer), and an @ reference lands directly in the CLI's input box with the real image attached. Every attachment shows an estimated token cost before you send, Excel/video/archives attach too (Claude gets the path and reaches for a script), and staged copies live in a gitignored .claude/attachments/. Full reference: docs/QOL.md.
  • Screen capture: Claude takes its own screenshots (opt-in) - two gated tools give Claude eyes: capture the debugged app's window, any window by title (the browser showing your site), the VS window, or the whole screen. Captures land in the attachment tray as visible chips with a token estimate, and the tool returns a path Claude Reads with real vision - UI layouts, images, rendered pages, text in windows that are not files. Off by default behind an Allow screen capture toggle; every capture is logged. Full reference: docs/VISION.md.
  • Notifications - an in-IDE heads-up when Claude finishes responding or needs your input (a permission prompt, or it went idle waiting for you): a notification bar in Visual Studio, plus a taskbar flash when VS is in the background. For working in another window while it cooks. A panel toggle mutes it. Full reference: docs/QOL.md.
  • Live panel - a dockable Claude Code panel: connection status, edit decisions, and token usage with estimated cost (latest call vs cumulative session).

A closer look

A few of these are hard to picture from a bullet. Here they are running in the IDE.

A native diff with one approval step

Claude's edits open in Visual Studio's own diff viewer, and approving there is the only step. There is no second yes/no prompt in the terminal. You can reject an edit and leave a note, and Claude reconsiders with your feedback. A panel toggle applies edits without the diff for when you want it to run ahead, and it resets each session so it is never silently left on.

A Claude edit open in the Visual Studio diff viewer with Accept, Reject, and Reject with feedback buttons

A debugger Claude can drive

While you are paused at a breakpoint, Claude reads your program's runtime state: the call stack, variable values, and threads. With driving turned on it also steps, sets breakpoints, and runs your code to corner a bug instead of guessing from the source. The clip above is a scoring function that returns the wrong total. Claude stopped inside the loop, stepped through the rounds, and watched a counter that should reset but did not.

It kept a running trace of what it saw at each round, which is how it caught the reset it was missing. For the input {5, 3, 0, 4, 2, 0, 6}:

| round | points | combo (after) | total | should be | |---|---|---|---|---| | 0 | 5 | 1 | 5 | 5 | | 1 | 3 | 2 | 11 | 11 | | 2 | 0 | 2, stays | 11 | 11 | | 3 | 4 | 3 | 23 | 15 | | 4 | 2 | 4 | 31 | 19 | | 5 | 0 | 4, stays | 31 | 19 | | 6 | 6 | 5 | 61 | 25 |

It has grown well past stepping. Claude can attach to a program that is already running (a hosted web service or a desktop app, not just F5), break at the throw site of an exception instead of the catch that swallows it, and pause a hung process to walk a deadlock back to the exact cycle. Full tool list and worked walkthroughs are in docs/DEBUGGER.md.

Break when a value changes

Point Claude at a field and it stops the moment that field is written, or traces every value the field takes, in order. It can watch conditionally (break only when the value goes below zero, for example) and on several fields at once. Visual Studio's own UI can set this, but there is no automation API for it, so the extension arms it through a bundled debug-engine component. That makes it new ground for catching the write that corrupts your state.

The plain watch records every write, so the corrupting step is obvious at a glance, and the conditional watch (< 0) breaks on exactly that one:

| # | value (cents) | written by | | |---|---|---|---| | 1-3 | 0 → 30000 → 42000 → 54000 | AddItems | three line items | | 4 | 54000 → 48600 | ApplyBulkDiscount | 10% off | | 5 | 48600 → 52488 | ApplyTax | +8% tax | | 6 | 52488 → -47512 | ApplyLoyaltyCredit | the corruption |

The full data-breakpoint reference is in docs/DEBUGGER.md.

Catch a failing test, even the flaky ones

Claude discovers, runs, and debugs your unit tests through Visual Studio's Test Explorer engine. You get real per-test results (outcome, message, and stack), and after a fix it re-runs only the tests that failed. The test tools sit on top of the debugger, so a red test becomes a live investigation: Claude can launch one failing test and stop at the throw with the exception and locals in view. It can also loop a flaky test until the failing run happens and leave you paused inside that run, holding the state that caused it.

The Visual Studio debugger paused inside a flaky test at the throw site, with the exception live in the frame

Full tool list and the worked flow are in docs/TESTING.md.

Read code the way the compiler does

Most assistants navigate code by searching text, which misses indirect references and over-counts on comments and same-named symbols. This gives Claude Visual Studio's resolved model of your C# (Roslyn): find-all-references, go-to-definition, find-implementations, and call and type hierarchies, resolved through interfaces, overrides, and overloads. It also reads the decompiled body of a method inside a referenced DLL, which searching your repo cannot do. Point it at a framework or NuGet call and it returns the real decompiled C#, and for core .NET types it fetches the actual runtime source via SourceLink.

| Tool | What it caught that a text search misses | |---|---| | find-implementations | Triangle's explicit IShape.Area, which .Area() or : IShape never tie

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars94
CategoryAI
Updated13d ago
Forks15

Languages

C#

Security Score

100/100

Audited on Sep 8, 2026

No findings