fix(coding-agent): keep ~/.agents skills user-scoped\n\ncloses #1915

This commit is contained in:
Mario Zechner
2026-03-07 12:21:54 +01:00
parent c99b9940e1
commit e80692bcb6
3 changed files with 43 additions and 1 deletions

View File

@@ -213,6 +213,42 @@ Content`,
expect(result.skills.some((r) => r.path === rootSkill && r.enabled)).toBe(true);
expect(result.skills.some((r) => r.path === middleSkill && r.enabled)).toBe(true);
});
it("should keep ~/.agents/skills user-scoped when cwd is under home in a non-git directory", async () => {
const previousHome = process.env.HOME;
process.env.HOME = tempDir;
try {
const cwd = join(tempDir, "scratch", "nested");
const localAgentDir = join(tempDir, ".pi", "agent");
const localSettingsManager = SettingsManager.inMemory();
mkdirSync(cwd, { recursive: true });
mkdirSync(localAgentDir, { recursive: true });
const homeSkill = join(tempDir, ".agents", "skills", "home-skill", "SKILL.md");
mkdirSync(join(tempDir, ".agents", "skills", "home-skill"), { recursive: true });
writeFileSync(homeSkill, "---\nname: home-skill\ndescription: home\n---\n");
const pm = new DefaultPackageManager({
cwd,
agentDir: localAgentDir,
settingsManager: localSettingsManager,
});
const result = await pm.resolve();
const matchingSkills = result.skills.filter((r) => r.path === homeSkill);
expect(matchingSkills).toHaveLength(1);
expect(matchingSkills[0]?.enabled).toBe(true);
expect(matchingSkills[0]?.metadata.scope).toBe("user");
expect(matchingSkills[0]?.metadata.source).toBe("auto");
} finally {
if (previousHome === undefined) {
delete process.env.HOME;
} else {
process.env.HOME = previousHome;
}
}
});
});
describe("ignore files", () => {