Skip to content

feat: group chat extension customizations under 'Built-in' in managem…#303584

Merged
joshspicer merged 1 commit intomainfrom
joshspicer/builtin-customization-grouping
Mar 20, 2026
Merged

feat: group chat extension customizations under 'Built-in' in managem…#303584
joshspicer merged 1 commit intomainfrom
joshspicer/builtin-customization-grouping

Conversation

@joshspicer
Copy link
Member

@joshspicer joshspicer commented Mar 20, 2026

closes #303584

…ent editor

Items contributed by the default chat extension (GitHub Copilot Chat) are now shown under a 'Built-in' group header instead of 'Extensions' in the Chat Customizations editor. This applies to agents, skills, prompts, and instructions — matching the existing pattern used by the MCP list widget.

The grouping is determined at the UI layer using IProductService to identify the chat extension ID, setting groupKey on matching items. No data model changes needed.

  • Move BUILTIN_STORAGE/AICustomizationPromptsStorage to common layer
  • Add BUILTIN_STORAGE to VS Code harness filter sources
  • Add isChatExtensionItem() helper using productService.defaultChatAgent
  • Set groupKey: BUILTIN_STORAGE for items from the chat extension
  • Add tests for builtin source filtering
  • Update AI_CUSTOMIZATIONS.md spec

Copilot AI review requested due to automatic review settings March 20, 2026 18:45
@vs-code-engineering vs-code-engineering bot added this to the 1.113.0 milestone Mar 20, 2026
@joshspicer joshspicer force-pushed the joshspicer/builtin-customization-grouping branch from 3cde4fd to 76accb6 Compare March 20, 2026 18:49
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the Chat Customizations management editor to visually group items contributed by the default chat extension (GitHub Copilot Chat) under a “Built-in” header (instead of “Extensions”), aligning with existing MCP list grouping patterns.

Changes:

  • Move BUILTIN_STORAGE / AICustomizationPromptsStorage into the common AI customization workspace service and re-export from existing entrypoints.
  • Extend the core Local harness’ storage source list to include builtin, and add tests ensuring the storage-source filter respects it.
  • Add UI-layer detection (IProductService.defaultChatAgent.chatExtensionId) to set groupKey: BUILTIN_STORAGE for items coming from the default chat extension.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/vs/workbench/contrib/chat/test/browser/aiCustomization/applyStorageSourceFilter.test.ts Adds coverage for builtin source behavior in applyStorageSourceFilter.
src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.ts Defines AICustomizationPromptsStorage and BUILTIN_STORAGE in the common layer.
src/vs/workbench/contrib/chat/browser/aiCustomization/customizationHarnessService.ts Includes BUILTIN_STORAGE in the core Local harness sources.
src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.ts Re-exports BUILTIN_STORAGE and the storage union type from common.
src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.ts Implements built-in grouping for default chat extension items via groupKey.
src/vs/sessions/contrib/chat/common/builtinPromptsStorage.ts Re-exports the shared built-in storage discriminator/type for sessions compatibility.
src/vs/sessions/AI_CUSTOMIZATIONS.md Documents the new built-in grouping behavior and updated source list.
Comments suppressed due to low confidence (1)

src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.ts:1056

  • In the Skills section, this now always calls listPromptFiles(PromptsType.skill, ...) to build an extensionId lookup. That can be noticeably more expensive than needed (it enumerates all storages) and is a regression from the previous behavior where the call only happened when disabled skills needed to be included. Consider building the lookup via listPromptFilesForStorage(PromptsType.skill, PromptsStorage.extension, ...) (and only when there are any extension skills), keeping the full listPromptFiles call inside the disabled-skills path if still required for that.
			for (const agent of agents) {
				const filename = basename(agent.uri);
				const isChatExt = agent.source.storage === PromptsStorage.extension && this.isChatExtensionItem(agent.source.extensionId);
				items.push({
					id: agent.uri.toString(),
					uri: agent.uri,
					name: agent.name,

@joshspicer joshspicer force-pushed the joshspicer/builtin-customization-grouping branch from 76accb6 to 11f53b9 Compare March 20, 2026 18:55
…ent editor

Items contributed by the default chat extension (GitHub Copilot Chat) are
now shown under a 'Built-in' group header instead of 'Extensions' in the
Chat Customizations editor. This applies to agents, skills, prompts, and
instructions — matching the existing pattern used by the MCP list widget.

The grouping is determined at the UI layer using IProductService to
identify the chat extension ID, setting groupKey on matching items.
No data model changes needed.

- Move BUILTIN_STORAGE/AICustomizationPromptsStorage to common layer
- Add BUILTIN_STORAGE to VS Code harness filter sources
- Add isChatExtensionItem() helper using productService.defaultChatAgent
- Set groupKey: BUILTIN_STORAGE for items from the chat extension
- Add tests for builtin source filtering
- Update AI_CUSTOMIZATIONS.md spec
@joshspicer joshspicer force-pushed the joshspicer/builtin-customization-grouping branch from 11f53b9 to ffd28f7 Compare March 20, 2026 19:06
@joshspicer joshspicer enabled auto-merge (squash) March 20, 2026 19:09
@joshspicer joshspicer merged commit 1e6a57b into main Mar 20, 2026
19 checks passed
@joshspicer joshspicer deleted the joshspicer/builtin-customization-grouping branch March 20, 2026 19:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants