diff --git a/extensions/copilot/src/extension/chatSessions/copilotcli/vscode-node/test/copilotCLICustomizationProvider.spec.ts b/extensions/copilot/src/extension/chatSessions/copilotcli/vscode-node/test/copilotCLICustomizationProvider.spec.ts index e2407ec251874..500e4b1ad3a63 100644 --- a/extensions/copilot/src/extension/chatSessions/copilotcli/vscode-node/test/copilotCLICustomizationProvider.spec.ts +++ b/extensions/copilot/src/extension/chatSessions/copilotcli/vscode-node/test/copilotCLICustomizationProvider.spec.ts @@ -60,7 +60,7 @@ function makeInstruction(uri: URI, name: string, pattern: string | undefined, de /** Creates a ChatSkill stub, deriving the name from the parent directory for SKILL.md files. */ function makeSkill(uri: URI, name: string): vscode.ChatSkill { - return { uri, name: name, source: 'local' }; + return { uri, name: name, source: 'local', disableModelInvocation: false }; } /** Creates a ChatHook stub. */ diff --git a/extensions/copilot/src/extension/chatSessions/vscode-node/test/claudeCustomizationProvider.spec.ts b/extensions/copilot/src/extension/chatSessions/vscode-node/test/claudeCustomizationProvider.spec.ts index 2e2f20e4e1255..3c226eeffd1da 100644 --- a/extensions/copilot/src/extension/chatSessions/vscode-node/test/claudeCustomizationProvider.spec.ts +++ b/extensions/copilot/src/extension/chatSessions/vscode-node/test/claudeCustomizationProvider.spec.ts @@ -23,7 +23,7 @@ function mockAgent(uri: URI, name: string): vscode.ChatCustomAgent { } function mockSkill(uri: URI, name: string): vscode.ChatSkill { - return { uri, name, source: 'local' } satisfies vscode.ChatSkill; + return { uri, name, source: 'local', disableModelInvocation: false } satisfies vscode.ChatSkill; } class FakeChatSessionCustomizationType { diff --git a/src/vs/workbench/api/browser/mainThreadChatAgents2.ts b/src/vs/workbench/api/browser/mainThreadChatAgents2.ts index 166bd01cc10ec..3041af76d2038 100644 --- a/src/vs/workbench/api/browser/mainThreadChatAgents2.ts +++ b/src/vs/workbench/api/browser/mainThreadChatAgents2.ts @@ -251,6 +251,7 @@ export class MainThreadChatAgents2 extends Disposable implements MainThreadChatA pluginUri: skill.pluginUri, sessionTypes: skill.sessionTypes, userInvocable: skill.userInvocable, + disableModelInvocation: skill.disableModelInvocation, }; } diff --git a/src/vs/workbench/api/common/extHost.protocol.ts b/src/vs/workbench/api/common/extHost.protocol.ts index 8282d175cde94..2d06f5a08e22b 100644 --- a/src/vs/workbench/api/common/extHost.protocol.ts +++ b/src/vs/workbench/api/common/extHost.protocol.ts @@ -1713,6 +1713,7 @@ export interface IInstructionDto extends IChatResourceDto { export interface ISkillDto extends IChatResourceDto { readonly userInvocable: boolean; + readonly disableModelInvocation: boolean; } export interface ISlashCommandDto extends IChatResourceDto { diff --git a/src/vs/workbench/api/common/extHostChatAgents2.ts b/src/vs/workbench/api/common/extHostChatAgents2.ts index 1d9d9341a7caf..d22c8ca432727 100644 --- a/src/vs/workbench/api/common/extHostChatAgents2.ts +++ b/src/vs/workbench/api/common/extHostChatAgents2.ts @@ -572,6 +572,7 @@ export class ExtHostChatAgents2 extends Disposable implements ExtHostChatAgentsS pluginUri: dto.pluginUri ? URI.revive(dto.pluginUri) : undefined, sessionTypes: dto.sessionTypes, userInvocable: dto.userInvocable, + disableModelInvocation: dto.disableModelInvocation, }); } diff --git a/src/vscode-dts/vscode.proposed.chatPromptFiles.d.ts b/src/vscode-dts/vscode.proposed.chatPromptFiles.d.ts index 8ba23e42d8f61..30b8777d22a6b 100644 --- a/src/vscode-dts/vscode.proposed.chatPromptFiles.d.ts +++ b/src/vscode-dts/vscode.proposed.chatPromptFiles.d.ts @@ -192,6 +192,12 @@ declare module 'vscode' { * Whether this skill should be shown to users as invocable. */ readonly userInvocable?: boolean; + + /** + * Whether this skill should be excluded from model invocation. + * When true, the skill can only be triggered manually via `/name`. + */ + readonly disableModelInvocation: boolean; } /**