sessions: convert built-in prompts to skills and add UI Integration badge#305347
Merged
joshspicer merged 4 commits intomainfrom Mar 27, 2026
Merged
sessions: convert built-in prompts to skills and add UI Integration badge#305347joshspicer merged 4 commits intomainfrom
joshspicer merged 4 commits intomainfrom
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR consolidates Sessions “built-in customizations” so they’re discovered exclusively as skills (removing the parallel built-in prompt discovery path), and adds a “UI Integration” badge in the AI Customizations management UI to indicate skills that are invoked directly by UI surfaces.
Changes:
- Convert Sessions bundled built-ins from
.prompt.mdfiles intoskills/{name}/SKILL.mdskills with frontmatter metadata. - Simplify
AgenticPromptsServiceby removing built-in prompt discovery/caching and making built-ins apply only to skills. - Add
IAICustomizationWorkspaceService.getSkillUIIntegrations()and use it in the customization list to show a “UI Integration” badge + tooltip.
Reviewed changes
Copilot reviewed 12 out of 12 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.ts | Adds getSkillUIIntegrations() to the workspace service interface. |
| src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.ts | Core VS Code implementation returns an empty map (no-op). |
| src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.ts | Uses getSkillUIIntegrations() to render a “UI Integration” badge for skills. |
| src/vs/sessions/contrib/chat/browser/promptsService.ts | Removes built-in prompt discovery and makes built-ins apply only to skills. |
| src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.ts | Sessions implementation provides UI-integration mappings for specific built-in skills. |
| src/vs/sessions/skills/act-on-feedback/SKILL.md | Converted bundled customization to a skill with frontmatter + heading. |
| src/vs/sessions/skills/create-draft-pr/SKILL.md | Converted bundled customization to a skill with frontmatter + heading. |
| src/vs/sessions/skills/create-pr/SKILL.md | Converted bundled customization to a skill with frontmatter + heading. |
| src/vs/sessions/skills/generate-run-commands/SKILL.md | Converted bundled customization to a skill with frontmatter + heading. |
| src/vs/sessions/skills/merge-changes/SKILL.md | Converted bundled customization to a skill with frontmatter + heading. |
| src/vs/sessions/skills/update-pr/SKILL.md | Converted bundled customization to a skill with frontmatter + heading. |
| src/vs/sessions/AI_CUSTOMIZATIONS.md | Updates Sessions customization docs to reflect “built-in skills” + documents the new badge. |
Comments suppressed due to low confidence (1)
src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.ts:1182
- Same issue for disabled skills:
uiIntegrations.get(disabledName)usesfile.name(frontmatter) when present. If the frontmatter name diverges from the folder name, the UI Integration badge can disappear for the disabled override even though the underlying skill id is still integrated in the UI. Prefer using the folder name (basename(dirname(file.uri))) for the integration lookup.
const filename = basename(file.uri);
const disabledName = file.name || basename(dirname(file.uri)) || filename;
const uiTooltip = uiIntegrations.get(disabledName);
items.push({
src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.ts
Show resolved
Hide resolved
src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.ts
Show resolved
Hide resolved
src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.ts
Show resolved
Hide resolved
7e5091e to
d20bfeb
Compare
…adge
- Move all 6 built-in prompts from vs/sessions/prompts/ to
vs/sessions/skills/{name}/SKILL.md with proper frontmatter
- Remove the built-in prompt discovery system (discoverBuiltinPrompts,
getBuiltinPromptFiles, BUILTIN_PROMPTS_URI) from AgenticPromptsService
- Simplify listPromptFiles/listPromptFilesForStorage to only handle
skills as the built-in type
- Add getSkillUIIntegrations() to IAICustomizationWorkspaceService
interface, returning a map of skill names with UI surface connections
- Sessions implementation maps act-on-feedback (Submit Feedback button)
and generate-run-commands (Run button) to tooltips
- Show 'UI Integration' badge in the customizations editor for skills
that drive UI surfaces, including user overrides of those skills
- Update AI_CUSTOMIZATIONS.md to reflect the simplified architecture
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…back, shared empty map - Use basename(dirname(skill.uri)) instead of skill.name for UI integration lookup so badge persists even if frontmatter name changes - Return [] for BUILTIN_STORAGE on non-skill types instead of delegating to super (which would throw) - Use a shared static empty map in the core VS Code implementation to avoid repeated allocations Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add create-pr, create-draft-pr, update-pr, merge-changes, and commit to the skill UI integrations map. These are all triggered by buttons in the Changes toolbar. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
d20bfeb to
9e1cd73
Compare
dmitrivMS
approved these changes
Mar 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR simplifies the sessions built-in customization architecture by consolidating two parallel discovery systems into one, and adds a "UI Integration" badge to help users understand when overriding a skill affects a UI surface.
What changed
1. Built-in prompts → skills
All 6 built-in prompt files have been converted from
vs/sessions/prompts/*.prompt.mdtovs/sessions/skills/{name}/SKILL.mdwith proper SKILL.md frontmatter (name,description). This eliminates the separate built-in prompt discovery system entirely — all built-in customizations are now skills.Converted skills:
act-on-feedback,create-draft-pr,create-pr,generate-run-commands,merge-changes,update-pr2. Simplified
AgenticPromptsServiceBUILTIN_PROMPTS_URI,_builtinPromptsCache,getBuiltinPromptFiles(),discoverBuiltinPrompts()listPromptFiles()now early-returns for non-skill types instead of branchinglistPromptFilesForStorage()collapsed to a single conditionalgetCleanPromptNameimport3. "UI Integration" badge in customizations editor
getSkillUIIntegrations(): ReadonlyMap<string, string>to theIAICustomizationWorkspaceServiceinterfaceact-on-feedback→ "Used by the Submit Feedback button in the Changes toolbar"generate-run-commands→ "Used by the Run button in the title bar"Why
disableModelInvocation,userInvocable), so prompts were the weaker abstraction.Testing