fix(cli): handle shared .agents targets

This commit is contained in:
Kc 2026-07-27 12:29:21 +08:00
parent 3321626663
commit 38e3de0bfe
2 changed files with 22 additions and 2 deletions

View File

@ -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';
}

View File

@ -294,10 +294,20 @@ export async function generatePlatformFiles(
*/
export async function generateAllPlatformFiles(targetDir: string, isGlobal = false, force = false): Promise<string[]> {
const allFolders = new Set<string>();
const generatedSkillFiles = new Set<string>();
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