From 3321626663a9dd7a61f409de206322bef64f43e9 Mon Sep 17 00:00:00 2001 From: Kc Date: Mon, 27 Jul 2026 12:16:38 +0800 Subject: [PATCH 1/3] fix(codex): install skills under .agents --- cli/assets/templates/platforms/codex.json | 2 +- cli/src/utils/detect.ts | 2 +- src/ui-ux-pro-max/templates/platforms/codex.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cli/assets/templates/platforms/codex.json b/cli/assets/templates/platforms/codex.json index 42643ca..4374993 100644 --- a/cli/assets/templates/platforms/codex.json +++ b/cli/assets/templates/platforms/codex.json @@ -3,7 +3,7 @@ "displayName": "Codex", "installType": "full", "folderStructure": { - "root": ".codex", + "root": ".agents", "skillPath": "skills/ui-ux-pro-max", "filename": "SKILL.md" }, diff --git a/cli/src/utils/detect.ts b/cli/src/utils/detect.ts index be4b1b6..b15274c 100755 --- a/cli/src/utils/detect.ts +++ b/cli/src/utils/detect.ts @@ -94,7 +94,7 @@ export function getAITypeDescription(aiType: AIType): string { case 'kiro': return 'Kiro (.kiro/steering/)'; case 'codex': - return 'Codex (.codex/skills/)'; + return 'Codex (.agents/skills/)'; case 'roocode': return 'RooCode (.roo/skills/)'; case 'qoder': diff --git a/src/ui-ux-pro-max/templates/platforms/codex.json b/src/ui-ux-pro-max/templates/platforms/codex.json index 42643ca..4374993 100644 --- a/src/ui-ux-pro-max/templates/platforms/codex.json +++ b/src/ui-ux-pro-max/templates/platforms/codex.json @@ -3,7 +3,7 @@ "displayName": "Codex", "installType": "full", "folderStructure": { - "root": ".codex", + "root": ".agents", "skillPath": "skills/ui-ux-pro-max", "filename": "SKILL.md" }, From 38e3de0bfeb1a56f5d97463f57fe84bb6677a8d2 Mon Sep 17 00:00:00 2001 From: Kc Date: Mon, 27 Jul 2026 12:29:21 +0800 Subject: [PATCH 2/3] fix(cli): handle shared .agents targets --- cli/src/utils/detect.ts | 14 ++++++++++++-- cli/src/utils/template.ts | 10 ++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/cli/src/utils/detect.ts b/cli/src/utils/detect.ts index b15274c..ccc94b3 100755 --- a/cli/src/utils/detect.ts +++ b/cli/src/utils/detect.ts @@ -19,7 +19,10 @@ export function detectAIType(cwd: string = process.cwd()): DetectionResult { if (existsSync(join(cwd, '.windsurf'))) { detected.push('windsurf'); } - if (existsSync(join(cwd, '.agents')) || existsSync(join(cwd, '.agent'))) { + if (existsSync(join(cwd, '.agents'))) { + detected.push('antigravity'); + detected.push('codex'); + } else if (existsSync(join(cwd, '.agent'))) { detected.push('antigravity'); } if (existsSync(join(cwd, '.github'))) { @@ -28,7 +31,7 @@ export function detectAIType(cwd: string = process.cwd()): DetectionResult { if (existsSync(join(cwd, '.kiro'))) { detected.push('kiro'); } - if (existsSync(join(cwd, '.codex'))) { + if (existsSync(join(cwd, '.codex')) && !detected.includes('codex')) { detected.push('codex'); } if (existsSync(join(cwd, '.roo'))) { @@ -72,6 +75,13 @@ export function detectAIType(cwd: string = process.cwd()): DetectionResult { let suggested: AIType | null = null; if (detected.length === 1) { suggested = detected[0]; + } else if ( + detected.length === 2 && + detected.includes('antigravity') && + detected.includes('codex') + ) { + // Both platforms share `.agents`; avoid suggesting an install for every AI. + suggested = 'codex'; } else if (detected.length > 1) { suggested = 'all'; } diff --git a/cli/src/utils/template.ts b/cli/src/utils/template.ts index 273e703..743e833 100755 --- a/cli/src/utils/template.ts +++ b/cli/src/utils/template.ts @@ -294,10 +294,20 @@ export async function generatePlatformFiles( */ export async function generateAllPlatformFiles(targetDir: string, isGlobal = false, force = false): Promise { const allFolders = new Set(); + const generatedSkillFiles = new Set(); for (const aiType of Object.keys(AI_TO_PLATFORM)) { try { + const config = await loadPlatformConfig(aiType); + const skillFile = join( + config.folderStructure.root, + config.folderStructure.skillPath, + config.folderStructure.filename + ); + if (generatedSkillFiles.has(skillFile)) continue; + const folders = await generatePlatformFiles(targetDir, aiType, isGlobal, force); + generatedSkillFiles.add(skillFile); folders.forEach(f => allFolders.add(f)); } catch { // Skip if generation fails for a platform From 310810de9a5c9acefcc3314199b531c2750ebff0 Mon Sep 17 00:00:00 2001 From: Kc Date: Mon, 27 Jul 2026 12:31:40 +0800 Subject: [PATCH 3/3] docs: label shared .agents uninstall path --- README.md | 2 +- README.zh.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 81e1488..27f53f5 100755 --- a/README.md +++ b/README.md @@ -579,7 +579,7 @@ uipro uninstall --global rm -rf .claude/skills/ui-ux-pro-max # Claude Code rm -rf .cursor/skills/ui-ux-pro-max # Cursor rm -rf .windsurf/skills/ui-ux-pro-max # Windsurf -rm -rf .agents/skills/ui-ux-pro-max # Antigravity +rm -rf .agents/skills/ui-ux-pro-max # Antigravity / Codex ``` ### Claude Marketplace install fails with "Zip file contains a symbolic link" diff --git a/README.zh.md b/README.zh.md index 1376073..1b28083 100644 --- a/README.zh.md +++ b/README.zh.md @@ -572,7 +572,7 @@ uipro uninstall --global rm -rf .claude/skills/ui-ux-pro-max # Claude Code rm -rf .cursor/skills/ui-ux-pro-max # Cursor rm -rf .windsurf/skills/ui-ux-pro-max # Windsurf -rm -rf .agents/skills/ui-ux-pro-max # Antigravity +rm -rf .agents/skills/ui-ux-pro-max # Antigravity / Codex ``` ### Claude Marketplace 安装失败,提示 "Zip file contains a symbolic link"