From 199cdc1052c13c55ba40754fbf5c22803c463da4 Mon Sep 17 00:00:00 2001 From: Shakker Date: Sat, 30 May 2026 04:33:46 +0100 Subject: [PATCH] fix: enforce canonical workshop skill names --- src/skills/workshop/service.test.ts | 7 ++++--- src/skills/workshop/service.ts | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/skills/workshop/service.test.ts b/src/skills/workshop/service.test.ts index ba342280d824..a4cd7cba3c9b 100644 --- a/src/skills/workshop/service.test.ts +++ b/src/skills/workshop/service.test.ts @@ -59,6 +59,7 @@ describe("skill workshop proposals", () => { expect(proposal.record.status).toBe("pending"); expect(proposal.record.scan.state).toBe("clean"); + expect(proposal.content).toContain('name: "weather-helper"'); expect(proposal.record.supportFiles?.map((file) => file.path)).toEqual([ "references/weather-api.md", "scripts/check-weather.js", @@ -85,7 +86,7 @@ describe("skill workshop proposals", () => { }); expect(applied.targetSkillFile).toBe(proposal.record.target.skillFile); await expect(fs.readFile(applied.targetSkillFile, "utf8")).resolves.toBe( - '---\nname: "Weather Helper"\ndescription: "Check weather before planning outdoor tasks"\n---\n\n# Weather Helper\n\nUse the weather provider before answering.\n', + '---\nname: "weather-helper"\ndescription: "Check weather before planning outdoor tasks"\n---\n\n# Weather Helper\n\nUse the weather provider before answering.\n', ); await expect( fs.readFile( @@ -101,8 +102,8 @@ describe("skill workshop proposals", () => { ).resolves.toContain("parseWeather"); const status = buildWorkspaceSkillStatus(workspaceDir); - expect(status.skills.find((skill) => skill.name === "Weather Helper")).toMatchObject({ - name: "Weather Helper", + expect(status.skills.find((skill) => skill.name === "weather-helper")).toMatchObject({ + name: "weather-helper", source: "openclaw-workspace", filePath: applied.targetSkillFile, }); diff --git a/src/skills/workshop/service.ts b/src/skills/workshop/service.ts index 7f04b12700dc..dae592e9b72e 100644 --- a/src/skills/workshop/service.ts +++ b/src/skills/workshop/service.ts @@ -135,7 +135,7 @@ export async function proposeCreateSkill( const supportFiles = prepareSkillProposalSupportFiles(input.supportFiles); const proposalContent = renderProposalMarkdown({ - name, + name: target.skillKey, description, content: input.content, }); @@ -192,7 +192,7 @@ export async function proposeUpdateSkill( const supportFiles = prepareSkillProposalSupportFiles(input.supportFiles); const proposalContent = renderProposalMarkdown({ - name: targetSkill.name, + name: targetSkill.skillKey, description: targetSkill.description, content: input.content, });