feat(skills): load config sources in runtime discovery

This commit is contained in:
YeonGyu-Kim
2026-02-13 11:08:22 +09:00
parent aab8a23243
commit 0001bc87c2
11 changed files with 273 additions and 13 deletions
@@ -0,0 +1,55 @@
import { describe, expect, it } from "bun:test"
import type { BuiltinSkill } from "../builtin-skills/types"
import type { CommandDefinition } from "../claude-code-command-loader/types"
import { mergeSkills } from "./merger"
import type { LoadedSkill, SkillScope } from "./types"
function createLoadedSkill(scope: SkillScope, name: string, description: string): LoadedSkill {
const definition: CommandDefinition = {
name,
description,
template: "template",
}
return {
name,
definition,
scope,
}
}
describe("mergeSkills", () => {
it("gives higher scopes priority over config source skills", () => {
// given
const builtinSkills: BuiltinSkill[] = [
{
name: "priority-skill",
description: "builtin",
template: "builtin-template",
},
]
const configSourceSkills: LoadedSkill[] = [
createLoadedSkill("config", "priority-skill", "config source"),
]
const userSkills: LoadedSkill[] = [
createLoadedSkill("user", "priority-skill", "user skill"),
]
// when
const merged = mergeSkills(
builtinSkills,
undefined,
configSourceSkills,
userSkills,
[],
[],
[],
)
// then
expect(merged).toHaveLength(1)
expect(merged[0]?.scope).toBe("user")
expect(merged[0]?.definition.description).toBe("user skill")
})
})