From a05a52f5c4e363d0daf8764f5ec7038ec70b2a83 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 20 Jun 2026 22:48:54 +0000 Subject: [PATCH] Extract skill deduplication helper Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- agent/skills/provider.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/agent/skills/provider.go b/agent/skills/provider.go index 8d68ccb4..2ba0d4f2 100644 --- a/agent/skills/provider.go +++ b/agent/skills/provider.go @@ -308,18 +308,22 @@ func (p *providerState) loadSkills(ctx context.Context) ([]*Skill, error) { if p.options.DisableSourceDeduplication { return loaded, nil } - seen := make(map[string]struct{}, len(loaded)) - deduplicated := loaded[:0] - for _, skill := range loaded { + return deduplicateSkillsByName(loaded, p.logger), nil +} + +func deduplicateSkillsByName(skills []*Skill, logger *slog.Logger) []*Skill { + seen := make(map[string]struct{}, len(skills)) + deduplicated := skills[:0] + for _, skill := range skills { resolvedKey := strings.ToLower(skill.Frontmatter.Name) if _, ok := seen[resolvedKey]; ok { - p.logger.Warn("Duplicate skill name: subsequent skill skipped in favor of first occurrence", "skillName", skill.Frontmatter.Name) + logger.Warn("Duplicate skill name: subsequent skill skipped in favor of first occurrence", "skillName", skill.Frontmatter.Name) continue } seen[resolvedKey] = struct{}{} deduplicated = append(deduplicated, skill) } - return deduplicated, nil + return deduplicated } func indexSkills(skills []*Skill) providedSkillSet {