From c7b8b20303e39feee8cbbe8dbd4784d4c39b78b3 Mon Sep 17 00:00:00 2001 From: "Tao Sun (from Dev Box)" Date: Mon, 20 Jul 2026 16:16:57 +0800 Subject: [PATCH] fix(skills): hide catalog-only managed skills that aren't installed (#58) The skills:list IPC handler appended managed skills defined in managed_skill_catalog.json but not present on disk, marking them installed: false. Since there is no in-app install action for these skills, they surfaced as permanently "Not installed"/greyed entries the user could never enable. Only return managed skills that are actually installed on disk. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- desktop/src/main.ts | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/desktop/src/main.ts b/desktop/src/main.ts index edd89af..3ba410e 100644 --- a/desktop/src/main.ts +++ b/desktop/src/main.ts @@ -2545,22 +2545,9 @@ function registerIpcHandlers(): void { const custom = scanSkills(customDir, "custom"); const managedOnDisk = scanSkills(managedDir, "managed"); - // Also list catalog-only managed skills (defined in catalog but not yet on disk) - const onDiskIds = new Set(managedOnDisk.map((s) => s.id)); - for (const [id, info] of Object.entries(managedCatalog)) { - if (!onDiskIds.has(id)) { - const enabled = entries[id]?.enabled ?? info.platform?.includes("windows") ?? false; - managedOnDisk.push({ - id, - name: id, - description: info.description, - source: "managed" as const, - platform: info.platform ?? [], - enabled, - installed: false, - }); - } - } + // Only expose managed skills that are actually installed on disk. Catalog-only + // entries (defined in managed_skill_catalog.json but not present on disk) are + // intentionally omitted because there is no in-app install action for them. See #58. return { builtin, custom, managed: managedOnDisk }; });