Class: SkillBench::Services::SkillResolverService

Inherits:
Object
  • Object
show all
Defined in:
lib/skill_bench/services/skill_resolver_service.rb

Overview

Resolves skills from names, supporting both direct resolution and pack-based resolution.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(skill_names, pack: nil, registry_manifest: nil) ⇒ SkillResolverService

Returns a new instance of SkillResolverService.

Parameters:

  • skill_names (Array<String>)

    Names of the skills

  • pack (String, nil) (defaults to: nil)

    Optional pack name

  • registry_manifest (String, nil) (defaults to: nil)

    Optional registry.json path



29
30
31
32
33
# File 'lib/skill_bench/services/skill_resolver_service.rb', line 29

def initialize(skill_names, pack: nil, registry_manifest: nil)
  @skill_names = skill_names
  @pack = pack
  @registry_manifest = registry_manifest
end

Class Method Details

.call(skill_names, pack: nil, registry_manifest: nil) ⇒ Array<SkillBench::Models::Skill>

Resolves skills from names.

Parameters:

  • skill_names (Array<String>)

    Names of the skills to resolve

  • pack (String, nil) (defaults to: nil)

    Optional pack name for registry-based skill resolution

  • registry_manifest (String, nil) (defaults to: nil)

    Optional path to registry.json manifest

Returns:

Raises:

  • (ArgumentError)

    when a skill cannot be resolved



22
23
24
# File 'lib/skill_bench/services/skill_resolver_service.rb', line 22

def self.call(skill_names, pack: nil, registry_manifest: nil)
  new(skill_names, pack: pack, registry_manifest: registry_manifest).call
end

Instance Method Details

#callArray<SkillBench::Models::Skill>

Resolves the skills from names.

Returns:

Raises:

  • (ArgumentError)

    when a skill cannot be resolved



39
40
41
42
43
44
45
46
47
# File 'lib/skill_bench/services/skill_resolver_service.rb', line 39

def call
  return @call if defined?(@call)

  @call = if @pack && !@pack.empty?
            resolve_pack_skills
          else
            @skill_names.map { |name| Services::SkillResolver.call(name) }
          end
end