
Chat Customizations Editor
Contribute safely to VS Code’s Chat Customizations editor for agents, skills, MCP servers, hooks, and plugins.
Install
npx skills add https://github.com/microsoft/vscode --skill chat-customizations-editorWhat is this skill?
- Authoritative spec: src/vs/sessions/AI_CUSTOMIZATIONS.md—read before edits, update after
- IHarnessDescriptor drives hidden sections, filters, and agent gating declaratively
- Harness filters: Local, Copilot CLI, Claude across workspace, user, extension, plugin storage
- Cross-check core vs sessions registrations when changing harness descriptor factories
- Playwright CLI allowed for verification (metadata allowed-tools)
Adoption & trust: 132 installs on skills.sh; 186k GitHub stars; 3/3 security scanners passed (skills.sh audits).
Recommended Skills
Microsoft Foundrymicrosoft/azure-skills
Azure Aimicrosoft/azure-skills
Azure Hosted Copilot Sdkmicrosoft/azure-skills
Lark Eventlarksuite/cli
Running Claude Code Via Litellm Copilotxixu-me/skills
Setup Matt Pocock Skillsmattpocock/skills
Journey fit
Primary fit
Build agent-tooling is the right shelf because the skill targets engineers changing the management UI that powers Copilot/Claude harness customization. Agent-tooling captures split-view editing of skills and MCP—not generic workbench theming or unrelated extensions.
Common Questions / FAQ
Is Chat Customizations Editor safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - Chat Customizations Editor
# Chat Customizations Editor Split-view management pane for AI customization items across workspace, user, extension, and plugin storage. Supports harness-based filtering (Local, Copilot CLI, Claude). ## Spec **`src/vs/sessions/AI_CUSTOMIZATIONS.md`** — always read before making changes, always update after. ## Key Folders | Folder | What | |--------|------| | `src/vs/workbench/contrib/chat/common/` | `ICustomizationHarnessService`, `ISectionOverride`, `IStorageSourceFilter` — shared interfaces and filter helpers | | `src/vs/workbench/contrib/chat/browser/aiCustomization/` | Management editor, list widgets (prompts, MCP, plugins), harness service registration | | `src/vs/sessions/contrib/chat/browser/` | Sessions-window overrides (harness service, workspace service) | | `src/vs/sessions/contrib/sessions/browser/` | Sessions tree view counts and toolbar | When changing harness descriptor interfaces or factory functions, verify both core and sessions registrations compile. ## Key Interfaces - **`IHarnessDescriptor`** — drives all UI behavior declaratively (hidden sections, button overrides, file filters, agent gating). See spec for full field reference. - **`ISectionOverride`** — per-section button customization (command invocation, root file creation, type labels, file extensions). - **`IStorageSourceFilter`** — controls which storage sources and user roots are visible per harness/type. - **`IExternalCustomizationItemProvider`** / **`IExternalCustomizationItem`** — internal interfaces (in `customizationHarnessService.ts`) for extension-contributed providers that supply items directly. These mirror the proposed extension API types. Principle: the UI widgets read everything from the descriptor — no harness-specific conditionals in widget code. ## Extension API (`chatSessionCustomizationProvider`) The proposed API in `src/vscode-dts/vscode.proposed.chatSessionCustomizationProvider.d.ts` lets extensions register customization providers. Changes to `IExternalCustomizationItem` or `IExternalCustomizationItemProvider` must be kept in sync across the full chain: | Layer | File | Type | |-------|------|------| | Extension API | `vscode.proposed.chatSessionCustomizationProvider.d.ts` | `ChatSessionCustomizationItem` | | IPC DTO | `extHost.protocol.ts` | `IChatSessionCustomizationItemDto` | | ExtHost mapping | `extHostChatAgents2.ts` | `$provideChatSessionCustomizations()` | | MainThread mapping | `mainThreadChatAgents2.ts` | `provideChatSessionCustomizations` callback | | Internal interface | `customizationHarnessService.ts` | `IExternalCustomizationItem` | When adding fields to `IExternalCustomizationItem`, update all five layers. The proposed API `.d.ts` is additive-only (new optional fields are backward-compatible and do not require a version bump). ## Testing Component explorer fixtures (see `component-fixtures` skill): `aiCustomizationListWidget.fixture.ts`, `aiCustomizationManagementEditor.fixture.ts` under `src/vs/workbench/test/browser/componentFixtures/`. ### Screenshotting specific tabs The management editor fixture supports a `selectedSection` option to render any tab. Each tab has Dark/Light variants auto-generated by `defineThemedFixtureGroup`. **Available fixture IDs** (use with `mcp_component-exp_screenshot`): | Fixture ID pattern | Tab shown | |---|---| | `chat/aiCustomizations/aiCustomizationManagementEditor/AgentsTab/{Dark,Light}` | Agents | | `chat/aiCustomizations/aiCustomizationManagementEditor/SkillsTab/{Dark,Light}` | Skills | | `chat/aiCustomizations/aiCustomizationManagementEditor/InstructionsTab/{Dark,Light}` | Instructions | | `chat/aiCustomizations/aiCustomizationManagementEditor/HooksTab/{Dark,Light}` | Hooks | | `chat/aiCustomizations/ai