From 82b11d407f9e0be656b5c92e7844647ab60ea227 Mon Sep 17 00:00:00 2001 From: MorikawaSouma Date: Sun, 15 Mar 2026 18:04:05 +0800 Subject: [PATCH] fix(skills): show correct source for workspace-installed skills Previously, the Control Panel displayed workspace-installed skills as 'bundled' when they shared names with bundled skills (e.g., summarize, nano-pdf, video-frames). This was because the bundled check used bundledNames.has(entry.skill.name) instead of checking the actual source path. Now the bundled property is determined solely by the skill's source field, which correctly reflects where the skill was loaded from. Fixes #47139 --- src/agents/skills-status.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/agents/skills-status.ts b/src/agents/skills-status.ts index 02ff68e2efc..08fdd7c4c35 100644 --- a/src/agents/skills-status.ts +++ b/src/agents/skills-status.ts @@ -186,10 +186,10 @@ function buildSkillStatus( (skillConfig?.apiKey && entry.metadata?.primaryEnv === envName), ); const isConfigSatisfied = (pathStr: string) => isConfigPathTruthy(config, pathStr); - const bundled = - bundledNames && bundledNames.size > 0 - ? bundledNames.has(entry.skill.name) - : entry.skill.source === "openclaw-bundled"; + // Only mark as bundled if the actual source path is openclaw-bundled. + // Previously this checked bundledNames.has(entry.skill.name), which incorrectly + // marked workspace-installed skills as bundled when they shared names with bundled skills. + const bundled = entry.skill.source === "openclaw-bundled"; const { emoji, homepage, required, missing, requirementsSatisfied, configChecks } = evaluateEntryRequirementsForCurrentPlatform({