From 4b409a8a2178cce4795db8bbda23b6006535f93a Mon Sep 17 00:00:00 2001 From: "paseo-bot[bot]" <266920839+paseo-bot[bot]@users.noreply.github.com> Date: Sat, 24 Oct 2026 17:55:23 +0000 Subject: [PATCH] test(skills): reproduce startup overwrite through linked skill directories Record the #7700 startup maintenance failure without choosing whether linked skill directories should be skipped or rejected. --- .../internal/controller.test.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/packages/server/src/server/orchestration-skills/internal/controller.test.ts b/packages/server/src/server/orchestration-skills/internal/controller.test.ts index 23b541e67d..61a5e04183 100644 --- a/packages/server/src/server/orchestration-skills/internal/controller.test.ts +++ b/packages/server/src/server/orchestration-skills/internal/controller.test.ts @@ -1224,6 +1224,24 @@ describe("skills controller", () => { }); }); + it.skipIf(process.platform === "win32")( + "startup maintenance preserves user-owned skills linked from agent homes", + async () => { + const userSkill = path.join(harness.root, "user-checkout", "paseo"); + await mkdir(userSkill, { recursive: true }); + await writeFile(path.join(userSkill, "SKILL.md"), "locally edited skill"); + for (const root of [harness.targets.agentsDir, harness.targets.claudeDir]) { + await mkdir(root, { recursive: true }); + await symlink(userSkill, path.join(root, "paseo"), "dir"); + } + + await harness.controller.autoUpdate(); + + expect(await readFile(path.join(userSkill, "SKILL.md"), "utf8")).toBe("locally edited skill"); + expect(await readdir(userSkill)).toEqual(["SKILL.md"]); + }, + ); + it("updates a drifted install without touching the saved selection", async () => { await harness.controller.save({ mode: "custom", skills: ["paseo"] }); await writeFile(path.join(harness.targets.agentsDir, "paseo", "SKILL.md"), "stale");