From 137980b46e09a2b19ee83f0e8ee2d542d5737360 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 20 Dec 2025 13:31:24 +0000 Subject: [PATCH] fix(agents): support loadSkillsFromDir result --- src/agents/skills-install.ts | 17 +++++++++++------ src/agents/skills.ts | 22 ++++++++++++++++++---- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/src/agents/skills-install.ts b/src/agents/skills-install.ts index a031bfb0a..804fae219 100644 --- a/src/agents/skills-install.ts +++ b/src/agents/skills-install.ts @@ -147,12 +147,17 @@ export async function installSkill( }; } - const result = command.shell - ? await runShell(command.shell, timeoutMs) - : await runCommandWithTimeout(command.argv, { - timeoutMs, - cwd: command.cwd, - }); + const result = await (async () => { + if (command.shell) return runShell(command.shell, timeoutMs); + const argv = command.argv; + if (!argv || argv.length === 0) { + return { code: null, stdout: "", stderr: "invalid install command" }; + } + return runCommandWithTimeout(argv, { + timeoutMs, + cwd: command.cwd, + }); + })(); const success = result.code === 0; return { diff --git a/src/agents/skills.ts b/src/agents/skills.ts index 9340484d5..98a910575 100644 --- a/src/agents/skills.ts +++ b/src/agents/skills.ts @@ -412,6 +412,20 @@ function loadSkillEntries( bundledSkillsDir?: string; }, ): SkillEntry[] { + const loadSkills = (params: { dir: string; source: string }): Skill[] => { + const loaded = loadSkillsFromDir(params); + if (Array.isArray(loaded)) return loaded; + if ( + loaded && + typeof loaded === "object" && + "skills" in loaded && + Array.isArray((loaded as { skills?: unknown }).skills) + ) { + return (loaded as { skills: Skill[] }).skills; + } + return []; + }; + const managedSkillsDir = opts?.managedSkillsDir ?? path.join(CONFIG_DIR, "skills"); const workspaceSkillsDir = path.join(workspaceDir, "skills"); @@ -422,23 +436,23 @@ function loadSkillEntries( .filter(Boolean); const bundledSkills = bundledSkillsDir - ? loadSkillsFromDir({ + ? loadSkills({ dir: bundledSkillsDir, source: "clawdis-bundled", }) : []; const extraSkills = extraDirs.flatMap((dir) => { const resolved = resolveUserPath(dir); - return loadSkillsFromDir({ + return loadSkills({ dir: resolved, source: "clawdis-extra", }); }); - const managedSkills = loadSkillsFromDir({ + const managedSkills = loadSkills({ dir: managedSkillsDir, source: "clawdis-managed", }); - const workspaceSkills = loadSkillsFromDir({ + const workspaceSkills = loadSkills({ dir: workspaceSkillsDir, source: "clawdis-workspace", });