diff --git a/docs/users/extension/introduction.md b/docs/users/extension/introduction.md index a0f39d957..1d7160768 100644 --- a/docs/users/extension/introduction.md +++ b/docs/users/extension/introduction.md @@ -2,7 +2,7 @@ Qwen Code extensions package prompts, MCP servers, subagents, skills and custom commands into a familiar and user-friendly format. With extensions, you can expand the capabilities of Qwen Code and share those capabilities with others. They are designed to be easily installable and shareable. -Extensions and plugins from [Gemini CLI Extensions Gallery](https://geminicli.com/extensions/) and [Claude Code Marketplace](https://claudemarketplaces.com/) can be directly installed into Qwen Code.This cross-platform compatibility gives you access to a rich ecosystem of extensions and plugins, dramatically expanding Qwen Code's capabilities without requiring extension authors to maintain separate versions. +Extensions and plugins from [Gemini CLI Extensions Gallery](https://geminicli.com/extensions/) and [Claude Code Marketplace](https://claudemarketplaces.com/) can be directly installed into Qwen Code. This cross-platform compatibility gives you access to a rich ecosystem of extensions and plugins, dramatically expanding Qwen Code's capabilities without requiring extension authors to maintain separate versions. ## Extension management @@ -42,7 +42,7 @@ qwen extensions install qwen extensions install ``` -If you want to install a specific pulgin, you can use the format with plugin name: +If you want to install a specific plugin, you can use the format with plugin name: ```bash qwen extensions install : diff --git a/packages/cli/package.json b/packages/cli/package.json index 4136e600f..8c198fc61 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -40,7 +40,6 @@ "@iarna/toml": "^2.2.5", "@modelcontextprotocol/sdk": "^1.25.1", "@qwen-code/qwen-code-core": "file:../core", - "@types/prompts": "^2.4.9", "@types/update-notifier": "^6.0.8", "ansi-regex": "^6.2.2", "command-exists": "^1.2.9", @@ -86,6 +85,7 @@ "@types/semver": "^7.7.0", "@types/shell-quote": "^1.7.5", "@types/yargs": "^17.0.32", + "@types/prompts": "^2.4.9", "archiver": "^7.0.1", "ink-testing-library": "^4.0.0", "jsdom": "^26.1.0", diff --git a/packages/core/src/extension/extensionManager.ts b/packages/core/src/extension/extensionManager.ts index bd618b411..921d34739 100644 --- a/packages/core/src/extension/extensionManager.ts +++ b/packages/core/src/extension/extensionManager.ts @@ -690,7 +690,7 @@ export class ExtensionManager { if (!config.name) { throw new Error( - `Invalid configuration in ${configFilePath}: missing "name"}`, + `Invalid configuration in ${configFilePath}: missing "name"`, ); } validateName(config.name); diff --git a/packages/core/src/extension/marketplace.ts b/packages/core/src/extension/marketplace.ts index 20b7736ef..dec525579 100644 --- a/packages/core/src/extension/marketplace.ts +++ b/packages/core/src/extension/marketplace.ts @@ -239,8 +239,12 @@ export async function parseInstallSource( }; // Try to fetch marketplace config from GitHub - const [owner, repoName] = repo.split('/'); - marketplaceConfig = await fetchGitHubMarketplaceConfig(owner, repoName); + try { + const [owner, repoName] = repo.split('/'); + marketplaceConfig = await fetchGitHubMarketplaceConfig(owner, repoName); + } catch { + // Not a valid GitHub URL or failed to fetch, continue without marketplace config + } } else { // Local path try {