Class: RubyLLM::Skills::Loader

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_llm/skills/loader.rb

Overview

Base class for skill loaders.

Loaders are responsible for discovering and loading skills from various sources:

  • FilesystemLoader: loads from directory structures
  • ZipLoader: loads from .zip archives
  • DatabaseLoader: loads from ActiveRecord models

Examples:

loader = FilesystemLoader.new("app/skills")
loader.list         # => [skill1, skill2, ...]
loader.find("name") # => Skill or nil
loader.get("name")  # => Skill or raises NotFoundError

Direct Known Subclasses

CompositeLoader, DatabaseLoader, FilesystemLoader

Instance Method Summary collapse

Instance Method Details

#exists?(name) ⇒ Boolean

Check if a skill exists.

Parameters:

  • name (String) —

    skill name

Returns:

  • (Boolean) —

    true if skill exists



50
51
52
# File 'lib/ruby_llm/skills/loader.rb', line 50

def exists?(name)
  !find(name).nil?
end

#find(name) ⇒ Skill?

Find a skill by name.

Parameters:

  • name (String) —

    skill name

Returns:

  • (Skill, nil) —

    skill or nil if not found



30
31
32
# File 'lib/ruby_llm/skills/loader.rb', line 30

def find(name)
  list.find { |skill| skill.name == name }
end

#get(name) ⇒ Skill

Get a skill by name, raising if not found.

Parameters:

  • name (String) —

    skill name

Returns:

  • (Skill) —

    the found skill

Raises:



39
40
41
42
43
44
# File 'lib/ruby_llm/skills/loader.rb', line 39

def get(name)
  skill = find(name)
  raise NotFoundError, "Skill not found: #{name}" unless skill

  skill
end

#list ⇒ Array<Skill>

List all skills from this source.

Returns:

  • (Array<Skill>) —

    collection of skills

Raises:

  • (NotImplementedError)


22
23
24
# File 'lib/ruby_llm/skills/loader.rb', line 22

def list
  raise NotImplementedError, "#{self.class}#list must be implemented"
end

#reload! ⇒ self

Reload all skills, clearing any cache.

Returns:

  • (self)


57
58
59
60
# File 'lib/ruby_llm/skills/loader.rb', line 57

def reload!
  @skills = nil
  self
end