From f39be25bd2ed7ae1d37c964829c4e83daeb71840 Mon Sep 17 00:00:00 2001 From: Mikkel Georgsen Date: Wed, 1 Apr 2026 03:46:58 +0200 Subject: [PATCH] =?UTF-8?q?fix(11):=20default=20agentSkillsDir=20server-si?= =?UTF-8?q?de=20=E2=80=94=20GROUP-03/GROUP-04=20gap=20closure?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/src/routes/skill-registry-groups.ts | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/server/src/routes/skill-registry-groups.ts b/server/src/routes/skill-registry-groups.ts index 1e4d6f6f..f16f88c7 100644 --- a/server/src/routes/skill-registry-groups.ts +++ b/server/src/routes/skill-registry-groups.ts @@ -1,7 +1,14 @@ import { Router } from "express"; +import os from "node:os"; +import path from "node:path"; import { skillGroupService } from "../services/skill-registry-groups.js"; import { assertBoard } from "./authz.js"; +/** Default skills directory when client doesn't provide one */ +function defaultSkillsDir(): string { + return path.join(os.homedir(), ".claude", "skills"); +} + /** * REST routes for skill groups. * @@ -165,10 +172,11 @@ export function skillGroupRoutes(): Router { assertBoard(req); try { const { groupId, agentSkillsDir } = req.body as { groupId?: string; agentSkillsDir?: string }; - if (!groupId || !agentSkillsDir) { - return res.status(400).json({ error: "groupId and agentSkillsDir required" }); + if (!groupId) { + return res.status(400).json({ error: "groupId required" }); } - const result = await svc.assignGroup(groupId, req.params.agentId, agentSkillsDir); + const resolvedDir = agentSkillsDir || defaultSkillsDir(); + const result = await svc.assignGroup(groupId, req.params.agentId, resolvedDir); res.status(201).json(result); } catch (err) { handleError(res, err); @@ -179,10 +187,8 @@ export function skillGroupRoutes(): Router { assertBoard(req); try { const { agentSkillsDir } = req.body as { agentSkillsDir?: string }; - if (!agentSkillsDir) { - return res.status(400).json({ error: "agentSkillsDir required" }); - } - await svc.removeGroup(req.params.groupId, req.params.agentId, agentSkillsDir); + const resolvedDir = agentSkillsDir || defaultSkillsDir(); + await svc.removeGroup(req.params.groupId, req.params.agentId, resolvedDir); res.status(204).end(); } catch (err) { handleError(res, err);