with one click
vs-agent-plugins
vs-agent-plugins contains 41 collected skills from madskristensen, with repository-level occupation coverage and site-owned skill detail pages.
Skills in this repository
Create taggers that mark text spans for squiggles, outlining, text markers, classification, and other editor features. Use when the user asks how to add squiggly underlines, error squiggles, warning markers, code folding, outlining regions, collapsible regions, text markers, tag spans, or ITagger. Covers VisualStudio.Extensibility (out-of-process), VSIX Community Toolkit (in-process), and legacy VSSDK (in-process) approaches.
Add Fluent design system color support to VS theme (.vstheme) files. Use for: vstheme, color theme, fluent theme colors, Shell category, ShellInternal category, AccentFillDefault, EnvironmentBackground, theme pack, custom theme, theme extension, add fluent colors, missing shell colors, theme color tokens.
Control a running Visual Studio IDE instance from the agent's terminal. Use this skill whenever you need to make Visual Studio *do* something — open a file (optionally at a specific line), execute any IDE command (Build.BuildSolution, Edit.FormatDocument, File.SaveAll, Debug.Start, etc.), start or stop the debugger, enumerate or modify projects and documents, or otherwise programmatically operate the live VS instance the user is working in. Works by acquiring the `EnvDTE.DTE` COM automation object from the Windows Running Object Table (ROT) via PowerShell. Triggers on phrases such as "open in Visual Studio", "open file at line", "run VS command", "execute DTE", "build the solution", "save all in VS", "go to line in VS", "start debugging", or any task that requires controlling the live VS IDE. Windows-local only — does not work over SSH, WSL, dev containers, or Codespaces.
Convert a legacy (non-SDK-style) Visual Studio extension (VSIX) project to modern SDK-style csproj format. Use when the user asks how to modernize a VSIX csproj, convert a Visual Studio extension from old-style to SDK-style, simplify a VSIX project file, remove verbose MSBuild XML from an extension project, migrate a VSIX project to Microsoft.NET.Sdk, or update a Visual Studio extension project to use auto-globbing and modern NuGet PackageReferences. This skill is specifically for VSIX extension projects — not general class libraries, console apps, or other project types. Covers VSSDK and VSIX Community Toolkit (in-process) extensions targeting .NET Framework 4.8.
Create custom document editors for domain-specific file types in Visual Studio extensions. Use when the user asks how to create a custom editor, editor factory, document editor pane, open files with a custom UI, implement IVsEditorFactory, use LanguageBase to register a language with an editor, create an EditorPane with IVsPersistDocData, register an editor for a file extension with ProvideEditorFactory, handle document persistence and dirty state, or build a visual designer for a custom file format. Covers VSIX Community Toolkit (LanguageBase), VSSDK (IVsEditorFactory + WindowPane), and VisualStudio.Extensibility (no custom editor API yet).
Add custom CodeLens indicators that display inline information above code elements in the Visual Studio editor. Use when the user asks how to add a CodeLens indicator, show inline data above methods or classes, create a custom CodeLens provider, implement IAsyncCodeLensDataPointProvider, display git history or test status in CodeLens, or add a details popup to CodeLens entries. Covers VSSDK / VSIX Community Toolkit (in-process + out-of-process CodeLens service). VisualStudio.Extensibility (out-of-process) does not have a dedicated CodeLens API.
Add commands (menu items, toolbar buttons) to Visual Studio extensions. Use when the user asks how to create a command, add a menu item, add a toolbar button, register a command handler, wire up a .vsct file, use KnownMonikers icons on buttons, or place commands in menus/toolbars in a Visual Studio IDE extension. Covers VisualStudio.Extensibility (out-of-process), VSIX Community Toolkit (in-process), and legacy VSSDK (in-process) approaches.
Add native-looking context menus to custom WPF UI in Visual Studio extensions (tool windows, custom tree views, list views). Use when the user wants to show a right-click context menu from their own UI that looks native to VS. Covers defining VSCT context menus (type="Context"), grouping commands with separators, and programmatically showing them via IVsUIShell.ShowContextMenu. Do NOT use regular WPF ContextMenu — it won't match VS theming or support command routing. Covers VSSDK and VSIX Community Toolkit (in-process). VisualStudio.Extensibility (out-of-process) does not support VSCT-based context menus on custom UI.
Add visual adornments (decorations, overlays, highlights) to the Visual Studio text editor. Use when the user asks how to draw on the editor, add inline decorations, highlight text visually, add background colors to lines, show icons in the editor, create viewport-relative overlays, or render custom WPF visuals on top of editor text. Covers VisualStudio.Extensibility (out-of-process), VSIX Community Toolkit (in-process), and legacy VSSDK (in-process) approaches.
Add custom syntax highlighting and text classification to the Visual Studio editor. Use when the user asks how to colorize text, add syntax highlighting, create a classifier, highlight keywords, change text colors in the editor, create a custom language colorizer, or implement classification types. Covers VisualStudio.Extensibility (out-of-process), VSIX Community Toolkit (in-process), and legacy VSSDK (in-process) approaches.
Add custom margins to the Visual Studio text editor (gutter icons, side panels, bottom bars). Use when the user asks how to add a gutter, editor margin, side panel, bottom bar, line number gutter, custom glyph margin, or editor chrome. Covers VisualStudio.Extensibility (out-of-process), VSIX Community Toolkit (in-process), and legacy VSSDK (in-process) approaches.
Add custom IntelliSense completion items to the Visual Studio editor. Use when the user asks how to add IntelliSense, provide auto-complete suggestions, create a completion source, add custom completion items, build a completion provider, implement async completion, or extend IntelliSense for a language. Covers VisualStudio.Extensibility (out-of-process), VSIX Community Toolkit (in-process), and legacy VSSDK (in-process) approaches.
Add light bulb code actions, quick fixes, and suggested actions to the Visual Studio editor. Use when the user asks how to add a light bulb, create quick fixes, add suggested actions, implement code actions, show a refactoring suggestion, or add an ISuggestedAction. Covers VisualStudio.Extensibility (out-of-process), VSIX Community Toolkit (in-process), and legacy VSSDK (in-process) approaches.
Add custom settings and options pages to Visual Studio extensions. Use when the user asks how to create a Tools > Options page, store extension settings, read or write user preferences, use BaseOptionModel, DialogPage, or the VisualStudio.Extensibility settings API in a Visual Studio IDE extension. Covers VisualStudio.Extensibility (out-of-process), VSIX Community Toolkit (in-process), and legacy VSSDK (in-process) approaches.
Add custom hover tooltips (Quick Info) to the Visual Studio editor. Use when the user asks how to show a hover tooltip, add Quick Info content, display information on mouse hover, create a QuickInfo source, or implement IAsyncQuickInfoSourceProvider. Covers VisualStudio.Extensibility (out-of-process), VSIX Community Toolkit (in-process), and legacy VSSDK (in-process) approaches.
Add custom nodes to Solution Explorer in Visual Studio extensions using MEF. Use when the user asks about adding custom tree nodes, virtual items, workspace files, or attached collections to the Solution Explorer tree view. Covers the IAttachedCollectionSourceProvider MEF pattern used by both VSSDK and VSIX Community Toolkit (in-process). VisualStudio.Extensibility (out-of-process) does not support this scenario.
Add suggested actions (code fixes, refactorings) to the Visual Studio editor lightbulb using the MEF-based ISuggestedAction API. Use when the user asks how to create a suggested action provider, implement IAsyncSuggestedActionsSource, add lightbulb code fixes for non-Roslyn languages, implement ISuggestedActionsSourceProvider, or stream suggested actions asynchronously. Covers the legacy ISuggestedActionsSource, the ISuggestedActionsSource2 category-based API, and the recommended IAsyncSuggestedActionsSource streaming API. The VSIX Community Toolkit does not wrap this API — Toolkit and VSSDK use the same pattern.
Add lightweight syntax highlighting for custom languages in Visual Studio using TextMate grammars. Use when the user asks how to add colorization for a new language, ship a .tmlanguage file, create a TextMate bundle, register a grammar with a pkgdef, or provide basic editor support (syntax coloring, bracket matching) for a file extension without writing a full classifier. Covers VSSDK / VSIX Community Toolkit (in-process). VisualStudio.Extensibility (out-of-process) does not have a dedicated TextMate grammar API.
Add the native Visual Studio search bar to a tool window. Use when the user asks how to add a search box, search control, search functionality, or IVsWindowSearch to a Visual Studio tool window. Covers enabling the built-in search UI via ToolWindowPane.SearchEnabled, implementing search tasks with VsSearchTask, adding search options and filters, and customizing search behavior. Applies to the VSSDK and VSIX Community Toolkit (in-process) models. The VisualStudio.Extensibility (out-of-process) model does not currently support the native tool window search bar.
Add a toolbar to a custom tool window in Visual Studio extensions. Use when the user asks how to add buttons, toolbar, or command bar to a tool window, or wants to place commands at the top of a tool window pane. The toolbar must be defined declaratively via VSCT (Menus, Groups, Buttons) or ToolbarConfiguration — never by adding a WPF ToolBar control to the UserControl XAML. Covers VisualStudio.Extensibility (out-of-process, ToolbarConfiguration), VSIX Community Toolkit (in-process, VSCT + ToolWindowPane.ToolBar), and legacy VSSDK (in-process, VSCT + ToolWindowPane.ToolBar) approaches.
Create and show tool windows in Visual Studio extensions. Use when the user asks how to add a custom tool window, dockable panel, or tool pane to a Visual Studio IDE extension. Covers VisualStudio.Extensibility (out-of-process, Remote UI), VSIX Community Toolkit (BaseToolWindow with async initialization), and legacy VSSDK (ToolWindowPane) approaches.
Control when commands are visible, enabled, or hidden in Visual Studio extensions. Use when the user asks how to show/hide commands conditionally, use VisibilityConstraints in .vsct, define UIContext rules, use ProvideUIContextRule, use BeforeQueryStatus for dynamic enable/disable, or delegate visibility back to a UIContext rule after package load with Command.Supported. Covers VisualStudio.Extensibility (out-of-process), VSIX Community Toolkit (in-process), and legacy VSSDK (in-process) approaches.
Create dynamic menu items that change at runtime based on data in Visual Studio extensions. Use when the user asks about dynamic menus, runtime-generated menu items, recent files lists, DynamicItemStart, BaseDynamicCommand, OleMenuCommand with MatchedCommandId, or menus that change their items based on runtime state in a Visual Studio IDE extension. Covers VisualStudio.Extensibility (out-of-process), VSIX Community Toolkit (in-process), and legacy VSSDK (in-process) approaches.
Extend Visual Studio's Open Folder mode with custom file scanners, file context providers, file actions, and workspace settings. Use when the user asks how to support Open Folder, add context menu actions to files without a project system, provide symbol scanning for Go To, supply build contexts for custom file types, or store per-folder settings in .vs/VSWorkspaceSettings.json. Covers VSSDK / VSIX Community Toolkit (in-process). VisualStudio.Extensibility (out-of-process) does not have a dedicated Open Folder workspace API.
Correctly handle async/await patterns, thread switching, and JoinableTaskFactory usage in Visual Studio extensions. Use when the user asks about async/await in VS extensions, switching threads, avoiding deadlocks, using ThreadHelper, JoinableTaskFactory, fire-and-forget patterns, blocking the UI thread, VSTHRD analyzer rules, or any threading-related question in Visual Studio extension development. Covers VisualStudio.Extensibility (out-of-process), VSIX Community Toolkit (in-process), and legacy VSSDK (in-process) approaches.
Subscribe to and handle build events in Visual Studio extensions. Use when the user asks how to listen for builds, react to build start or completion, detect build failures, track project build status, run code before or after a build, or use IVsUpdateSolutionEvents in a Visual Studio IDE extension. Covers VisualStudio.Extensibility (out-of-process), VSIX Community Toolkit (in-process), and legacy VSSDK (in-process) approaches.
Handle errors and exceptions in Visual Studio extensions. Use when the user asks about try/catch patterns, logging exceptions, Output Window logging, ActivityLog, TraceSource diagnostics, telemetry, or notifying users about errors in a Visual Studio IDE extension. Covers the VisualStudio.Extensibility (out-of-process) model, VSSDK Community Toolkit, and legacy VSSDK patterns.
Handle custom URI protocol deep links (e.g. myext://open/file) in Visual Studio extensions. Use when the user asks how to register a custom protocol, handle a URI scheme, launch Visual Studio from a URL, implement deep linking, or respond to command-line switches triggered by protocol associations. Covers VSSDK / VSIX Community Toolkit (in-process). VisualStudio.Extensibility (out-of-process) does not have a dedicated protocol handler API.
React to solution and project lifecycle events in Visual Studio extensions. Use when the user asks how to detect when a solution opens, closes, loads, or unloads, how to listen for project added/removed events, how to use IVsSolutionEvents, Microsoft.VisualStudio.Shell.Events.SolutionEvents, VS.Events.SolutionEvents, or workspace notifications in a Visual Studio IDE extension. Covers VisualStudio.Extensibility (out-of-process), VSIX Community Toolkit (in-process), and legacy VSSDK (in-process) approaches.
Push custom errors, warnings, and messages into the Visual Studio Error List window. Use when the user asks about adding items to the Error List, creating an ErrorListProvider, using TableDataSource, reporting diagnostics, validation errors, or navigating to error locations in a Visual Studio IDE extension. Covers VisualStudio.Extensibility (out-of-process), VSIX Community Toolkit (in-process), and legacy VSSDK (in-process) approaches.
Add Language Server Protocol (LSP) support to Visual Studio extensions. Use when the user asks how to integrate a language server, create an LSP client, add language features via LSP, connect a language server to Visual Studio, implement ILanguageClient, create a LanguageServerProvider, add IntelliSense or diagnostics for a custom language via LSP, or wire up a language server executable. Covers VisualStudio.Extensibility (out-of-process), VSIX Community Toolkit (in-process), and legacy VSSDK (in-process) approaches.
Programmatically interact with Solution Explorer in Visual Studio extensions. Use when the user asks about selecting items in Solution Explorer, expanding/collapsing nodes, filtering, getting the active selection, editing labels, navigating solution items, or querying projects/files in a Visual Studio IDE extension. Covers VisualStudio.Extensibility (out-of-process), VSIX Community Toolkit (in-process), and legacy VSSDK (in-process) approaches.
Intercept existing Visual Studio commands to run custom logic before, after, or instead of the default handler. Use when the user asks how to intercept a command, hook into an existing command, override a built-in VS command, run code before/after Save or Build, listen for command execution, or wrap existing command behavior. Covers VisualStudio.Extensibility (out-of-process), VSIX Community Toolkit (in-process), and legacy VSSDK (in-process) approaches.
React to text editor lifecycle events such as open, close, and content changes. Use when the user asks how to detect when an editor opens, listen for file open events, track active editor changes, respond to text changes in the editor, implement IWpfTextViewCreationListener, or use ITextViewOpenClosedListener. Covers VisualStudio.Extensibility (out-of-process), VSIX Community Toolkit (in-process), and legacy VSSDK (in-process) approaches.
Work with files and documents programmatically in Visual Studio extensions. Use when the user asks how to open files, read or modify document text, listen for document events, get the active document, use ITextDocument, DocumentsExtensibility, VS.Documents, IVsInvisibleEditorManager, or manipulate file contents in a Visual Studio IDE extension. Covers VisualStudio.Extensibility (out-of-process), VSIX Community Toolkit (in-process), and legacy VSSDK (in-process) approaches.
Provide and consume services in Visual Studio extensions. Use when the user asks how to create a custom VS service, register a service with ProvideServiceAttribute, consume services via GetServiceAsync or IServiceProvider, share state between extension components, use dependency injection with InitializeServices, proffer global or local services, query built-in VS services like SVsShell or SVsSolution, or use MEF imports to consume services in a Visual Studio IDE extension. Covers VisualStudio.Extensibility (out-of-process), VSIX Community Toolkit (in-process), and legacy VSSDK (in-process) approaches.
Register custom font and color categories on the Tools > Options > Fonts and Colors page. Use when the user asks about user-customizable syntax colors, creating a Fonts and Colors category, BaseFontAndColorCategory, IVsFontAndColorDefaults, ColorDefinition, or reading configured font/color settings at runtime in a Visual Studio IDE extension. Covers VisualStudio.Extensibility (out-of-process), VSIX Community Toolkit (in-process), and legacy VSSDK (in-process) approaches.
Show progress for background tasks in Visual Studio extensions. Use when the user asks how to display a progress bar, use the Task Status Center, show status bar progress, use a threaded wait dialog, report long-running background work, or use WorkProgress in a Visual Studio IDE extension. Covers VisualStudio.Extensibility (out-of-process), VSIX Community Toolkit (in-process), and legacy VSSDK (in-process) approaches.
Show InfoBar (gold bar) notifications in Visual Studio extensions. Use when the user asks how to display an InfoBar, gold bar, yellow bar, non-blocking notification, or inline notification in a tool window, document window, or the main window of a Visual Studio IDE extension. Covers VisualStudio.Extensibility (out-of-process), VSIX Community Toolkit (in-process), and legacy VSSDK (in-process) approaches.
Show message boxes, user prompts, info bars, and other notification dialogs in Visual Studio extensions. Use when the user asks how to display a message, prompt, confirmation dialog, notification, info bar, or status bar message in a Visual Studio IDE extension. Covers both the new VisualStudio.Extensibility (out-of-process) model and the legacy VSSDK / Community Toolkit (in-process) model.