feat: add skill storage location toggle between CC Switch and ~/.agents/skills

Allow users to choose between storing skills in CC Switch's managed
directory (~/.cc-switch/skills/) or the Agent Skills open standard
directory (~/.agents/skills/). Includes migration logic that safely
moves files before updating settings, with confirmation dialog for
non-empty installations.
This commit is contained in:
Jason
2026-04-05 20:21:51 +08:00
parent 6d220b2528
commit 8cfce8abfc
12 changed files with 383 additions and 5 deletions
+14
View File
@@ -88,6 +88,13 @@ export interface SkillUpdateInfo {
remoteHash: string;
}
/** 存储位置迁移结果 */
export interface MigrationResult {
migratedCount: number;
skippedCount: number;
errors: string[];
}
/** 仓库配置 */
export interface SkillRepo {
owner: string;
@@ -169,6 +176,13 @@ export const skillsApi = {
return await invoke("update_skill", { id });
},
/** 迁移 Skill 存储位置 */
async migrateStorage(
target: "cc_switch" | "unified",
): Promise<MigrationResult> {
return await invoke("migrate_skill_storage", { target });
},
// ========== 兼容旧 API ==========
/** 获取技能列表(兼容旧 API) */
+1
View File
@@ -29,6 +29,7 @@ export const settingsSchema = z.object({
// Skill 同步设置
skillSyncMethod: z.enum(["auto", "symlink", "copy"]).optional(),
skillStorageLocation: z.enum(["cc_switch", "unified"]).optional(),
// WebDAV v2 同步设置(通过专用命令保存,schema 仅用于读取)
webdavSync: z