diff --git a/docs/users/configuration/settings.md b/docs/users/configuration/settings.md index c814633b7..85902eaf2 100644 --- a/docs/users/configuration/settings.md +++ b/docs/users/configuration/settings.md @@ -274,7 +274,6 @@ If you are experiencing performance issues with file searching (e.g., with `@` c | `tools.truncateToolOutputThreshold` | number | Truncate tool output if it is larger than this many characters. Applies to Shell, Grep, Glob, ReadFile and ReadManyFiles tools. | `25000` | Requires restart: Yes | | `tools.truncateToolOutputLines` | number | Maximum lines or entries kept when truncating tool output. Applies to Shell, Grep, Glob, ReadFile and ReadManyFiles tools. | `1000` | Requires restart: Yes | | `tools.autoAccept` | boolean | Controls whether the CLI automatically accepts and executes tool calls that are considered safe (e.g., read-only operations) without explicit user confirmation. If set to `true`, the CLI will bypass the confirmation prompt for tools deemed safe. | `false` | | -| `tools.experimental.skills` | boolean | Enable experimental Agent Skills feature | `false` | | #### mcp @@ -311,6 +310,12 @@ If you are experiencing performance issues with file searching (e.g., with `@` c > > **Note about advanced.tavilyApiKey:** This is a legacy configuration format. For Qwen OAuth users, DashScope provider is automatically available without any configuration. For other authentication types, configure Tavily or Google providers using the new `webSearch` configuration format. +#### experimental + +| Setting | Type | Description | Default | +| --------------------- | ------- | -------------------------------- | ------- | +| `experimental.skills` | boolean | Enable experimental Agent Skills | `false` | + #### mcpServers Configures connections to one or more Model-Context Protocol (MCP) servers for discovering and using custom tools. Qwen Code attempts to connect to each configured MCP server to discover available tools. If multiple MCP servers expose a tool with the same name, the tool names will be prefixed with the server alias you defined in the configuration (e.g., `serverAlias__actualToolName`) to avoid conflicts. Note that the system might strip certain schema properties from MCP tool definitions for compatibility. At least one of `command`, `url`, or `httpUrl` must be provided. If multiple are specified, the order of precedence is `httpUrl`, then `url`, then `command`. diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts index 74d15522b..818cc0122 100755 --- a/packages/cli/src/config/config.ts +++ b/packages/cli/src/config/config.ts @@ -332,7 +332,14 @@ export async function parseArguments(settings: Settings): Promise { .option('experimental-skills', { type: 'boolean', description: 'Enable experimental Skills feature', - default: settings.tools?.experimental?.skills ?? false, + default: (() => { + const legacySkills = ( + settings as Settings & { + tools?: { experimental?: { skills?: boolean } }; + } + ).tools?.experimental?.skills; + return settings.experimental?.skills ?? legacySkills ?? false; + })(), }) .option('channel', { type: 'string', diff --git a/packages/cli/src/config/settings.ts b/packages/cli/src/config/settings.ts index d9e5edb30..9d6e7c8e3 100644 --- a/packages/cli/src/config/settings.ts +++ b/packages/cli/src/config/settings.ts @@ -921,6 +921,21 @@ export function migrateDeprecatedSettings( loadedSettings.setValue(scope, 'extensions', newExtensionsValue); } + + const legacySkills = ( + settings as Settings & { + tools?: { experimental?: { skills?: boolean } }; + } + ).tools?.experimental?.skills; + if ( + legacySkills !== undefined && + settings.experimental?.skills === undefined + ) { + console.log( + `Migrating deprecated tools.experimental.skills setting from ${scope} settings...`, + ); + loadedSettings.setValue(scope, 'experimental.skills', legacySkills); + } }; processScope(SettingScope.User); diff --git a/packages/cli/src/config/settingsSchema.ts b/packages/cli/src/config/settingsSchema.ts index 1e72ad48b..cae4d2c66 100644 --- a/packages/cli/src/config/settingsSchema.ts +++ b/packages/cli/src/config/settingsSchema.ts @@ -972,27 +972,6 @@ const SETTINGS_SCHEMA = { description: 'The number of lines to keep when truncating tool output.', showInDialog: true, }, - experimental: { - type: 'object', - label: 'Experimental', - category: 'Tools', - requiresRestart: true, - default: {}, - description: 'Experimental tool features.', - showInDialog: false, - properties: { - skills: { - type: 'boolean', - label: 'Skills', - category: 'Tools', - requiresRestart: true, - default: false, - description: - 'Enable experimental Agent Skills feature. When enabled, Qwen Code can use Skills from .qwen/skills/ and ~/.qwen/skills/.', - showInDialog: true, - }, - }, - }, }, }, @@ -1219,6 +1198,16 @@ const SETTINGS_SCHEMA = { description: 'Setting to enable experimental features', showInDialog: false, properties: { + skills: { + type: 'boolean', + label: 'Skills', + category: 'Experimental', + requiresRestart: true, + default: false, + description: + 'Enable experimental Agent Skills feature. When enabled, Qwen Code can use Skills from .qwen/skills/ and ~/.qwen/skills/.', + showInDialog: true, + }, extensionManagement: { type: 'boolean', label: 'Extension Management',