# vsixtoolkit

Направляет GitHub Copilot при создании расширений VSIX через библиотеку Community.VisualStudio.Toolkit. Задаёт совместимость с .NET Framework 4.8 и правила потоков.

- правило · `type=rule` · GitHub Copilot · ★ 40451
- Автор: github · официальный репозиторий GitHub
- Лицензия: MIT · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/github/awesome-copilot/tree/HEAD/instructions/vsixtoolkit.instructions.md
- Обновлён: 2026-10-23
- HTML: https://affpapa.org/nevibecode/rules/vsixtoolkit

## Что делает

Правило направляет модель при создании расширений Visual Studio через `Community.VisualStudio.Toolkit`. Команды должны наследоваться от `BaseCommand<T>`, а базовый класс пакета — от `ToolkitPackage`. Это гарантирует корректную регистрацию компонентов. Интерфейс обязан учитывать системные темы Visual Studio без применения произвольных цветов.

Расширения компилируются под .NET Framework 4.8. Среда накладывает ограничения на исполняемый код. Модель может использовать первичные конструкторы и выражения коллекций. При этом типы `Span<T>` или `Memory<T>` запрещены из-за отсутствия поддержки в рантайме без сторонних полифилов. Если в репозитории присутствует `.editorconfig`, ассистент следует его стилю оформления.

Инструкции не подходят для классического VSSDK с прямым вызовом `AsyncPackage`. Новая архитектура `VisualStudio.Extensibility` также не поддерживается. Правило опирается строго на абстракции тулкита и проверки анализаторов VSTHRD.

## Установка

### GitHub Copilot (родная платформа)

**Вручную: положить файлы**
- Файл: `.github/instructions/vsixtoolkit.instructions.md` — Поле applyTo задаёт, к каким файлам применять

### Claude Code

**Вручную: положить файлы**
- Файл: `.claude/rules/vsixtoolkit.md` — Поле paths во frontmatter ограничивает файлы: applyTo из источника → paths

### Codex

**AGENTS.md**
- Codex читает AGENTS.md: вставьте текст правила туда

### Cursor

**Вручную: положить файлы**
- Файл: `.cursor/rules/vsixtoolkit.mdc` — Во frontmatter: description, globs, alwaysApply. applyTo из источника → globs, иначе правило само не подключится

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/rules/vsixtoolkit.md`

### Cline

**Вручную: положить файлы**
- Файл: `.clinerules/vsixtoolkit.md`

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/github/awesome-copilot/tree/HEAD/instructions/vsixtoolkit.instructions.md

## Когда брать
- Сгенерировать команду меню через класс `BaseCommand<T>`
- Создать страницу параметров расширения на основе `BaseOptionModel<T>`
- Предотвратить блокирующие вызовы `.Result` и `.Wait()` в коде интерфейса
- Исключить неподдерживаемые в среде .NET Framework 4.8 типы вроде `Span<T>`

## Примеры запросов агенту
- Создай команду на базе `BaseCommand<T>`, которая открывает папку с текущим файлом
- Добавь страницу параметров с логическим переключателем через `BaseOptionModel<T>`
- Напиши провайдер тегов для файлов C#, выделяющий комментарии TODO

Из того же набора: [github/awesome-copilot](https://affpapa.org/nevibecode/by/github/awesome-copilot.md) — 928 карточек

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
