fix: correct skill priority order and improve test coverage

- Changed priority order to: opencode-project > opencode > project > user
  (OpenCode Global skills now take precedence over legacy Claude project skills)
- Updated JSDoc comments to reflect correct priority order
- Fixed test to use actual discoverSkills() for deduplication verification
- Changed test assertion from 'source' to 'scope' (correct field name)
This commit is contained in:
YeonGyu-Kim
2026-02-05 02:33:56 +09:00
parent 86ac39fb78
commit 18e941b6be
2 changed files with 17 additions and 40 deletions

View File

@@ -235,7 +235,8 @@ export interface DiscoverSkillsOptions {
/**
* Deduplicates skills by name, keeping the first occurrence (higher priority).
* Priority order: opencode-project > project > opencode > user
* Priority order: opencode-project > opencode > project > user
* (OpenCode Global skills take precedence over legacy Claude project skills)
*/
function deduplicateSkills(skills: LoadedSkill[]): LoadedSkill[] {
const seen = new Set<string>()
@@ -257,8 +258,8 @@ export async function discoverAllSkills(): Promise<LoadedSkill[]> {
discoverUserClaudeSkills(),
])
// Priority: opencode-project > project > opencode > user
return deduplicateSkills([...opencodeProjectSkills, ...projectSkills, ...opencodeGlobalSkills, ...userSkills])
// Priority: opencode-project > opencode > project > user
return deduplicateSkills([...opencodeProjectSkills, ...opencodeGlobalSkills, ...projectSkills, ...userSkills])
}
export async function discoverSkills(options: DiscoverSkillsOptions = {}): Promise<LoadedSkill[]> {
@@ -279,8 +280,8 @@ export async function discoverSkills(options: DiscoverSkillsOptions = {}): Promi
discoverUserClaudeSkills(),
])
// Priority: opencode-project > project > opencode > user
return deduplicateSkills([...opencodeProjectSkills, ...projectSkills, ...opencodeGlobalSkills, ...userSkills])
// Priority: opencode-project > opencode > project > user
return deduplicateSkills([...opencodeProjectSkills, ...opencodeGlobalSkills, ...projectSkills, ...userSkills])
}
export async function getSkillByName(name: string, options: DiscoverSkillsOptions = {}): Promise<LoadedSkill | undefined> {