feat: Add Qwen Code support

- Add Qwen Code target for converting Claude Code plugins
- Implement claude-to-qwen converter with agent/command/skill mapping
- Write qwen-extension.json config with MCP servers and settings
- Generate QWEN.md context file with plugin documentation
- Support nested commands with colon separator (workflows:plan)
- Extract MCP environment placeholders as settings
- Add --to qwen and --qwen-home CLI options
- Document Qwen installation in README

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
Raymond Lam
2026-02-28 11:51:28 -05:00
parent 9196ed8ad8
commit e1d5bdedb3
6 changed files with 417 additions and 3 deletions

View File

@@ -6,6 +6,7 @@ import type { PiBundle } from "../types/pi"
import type { CopilotBundle } from "../types/copilot"
import type { GeminiBundle } from "../types/gemini"
import type { KiroBundle } from "../types/kiro"
import type { QwenBundle } from "../types/qwen"
import { convertClaudeToOpenCode, type ClaudeToOpenCodeOptions } from "../converters/claude-to-opencode"
import { convertClaudeToCodex } from "../converters/claude-to-codex"
import { convertClaudeToDroid } from "../converters/claude-to-droid"
@@ -13,6 +14,7 @@ import { convertClaudeToPi } from "../converters/claude-to-pi"
import { convertClaudeToCopilot } from "../converters/claude-to-copilot"
import { convertClaudeToGemini } from "../converters/claude-to-gemini"
import { convertClaudeToKiro } from "../converters/claude-to-kiro"
import { convertClaudeToQwen, type ClaudeToQwenOptions } from "../converters/claude-to-qwen"
import { writeOpenCodeBundle } from "./opencode"
import { writeCodexBundle } from "./codex"
import { writeDroidBundle } from "./droid"
@@ -20,6 +22,7 @@ import { writePiBundle } from "./pi"
import { writeCopilotBundle } from "./copilot"
import { writeGeminiBundle } from "./gemini"
import { writeKiroBundle } from "./kiro"
import { writeQwenBundle } from "./qwen"
export type TargetHandler<TBundle = unknown> = {
name: string
@@ -71,4 +74,10 @@ export const targets: Record<string, TargetHandler> = {
convert: convertClaudeToKiro as TargetHandler<KiroBundle>["convert"],
write: writeKiroBundle as TargetHandler<KiroBundle>["write"],
},
qwen: {
name: "qwen",
implemented: true,
convert: convertClaudeToQwen as TargetHandler<QwenBundle>["convert"],
write: writeQwenBundle as TargetHandler<QwenBundle>["write"],
},
}