Module: RubyLLM::Skills

Defined in:
lib/ruby_llm/skills/error.rb,
lib/ruby_llm/skills/skill.rb,
lib/ruby_llm/skills/loader.rb,
lib/ruby_llm/skills/parser.rb,
lib/ruby_llm/skills/railtie.rb,
lib/ruby_llm/skills/version.rb,
lib/ruby_llm/skills/validator.rb,
lib/ruby_llm/skills/skill_tool.rb,
lib/ruby_llm/skills/chat_extensions.rb,
lib/ruby_llm/skills/database_loader.rb,
lib/ruby_llm/skills/agent_extensions.rb,
lib/ruby_llm/skills/composite_loader.rb,
lib/ruby_llm/skills/filesystem_loader.rb,
lib/ruby_llm/skills.rb

Defined Under Namespace

Modules: ActiveRecordExtensions, AgentExtensions, ChatExtensions Classes: CompositeLoader, DatabaseLoader, Error, FilesystemLoader, FilteredLoader, InvalidSkillError, LoadError, Loader, NotFoundError, ParseError, Parser, Railtie, Skill, SkillTool, Validator

Constant Summary collapse

VERSION =
"0.3.0"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.default_path ⇒ Object

Returns the value of attribute default_path.



70
71
72
# File 'lib/ruby_llm/skills.rb', line 70

def default_path
  @default_path
end

Class Method Details

.compose(*loaders) ⇒ CompositeLoader

Create a composite loader from multiple sources.

Examples:

RubyLLM::Skills.compose(
  RubyLLM::Skills.from_directory("app/skills"),
  RubyLLM::Skills.from_database(Skill.all)
)

Parameters:

  • loaders (Array<Loader>) —

    loaders to combine

Returns:



117
118
119
120
# File 'lib/ruby_llm/skills.rb', line 117

def compose(*loaders)
  require_relative "skills/composite_loader"
  CompositeLoader.new(loaders)
end

.from_database(records) ⇒ DatabaseLoader

Load skills from database records.

Examples:

RubyLLM::Skills.from_database(Skill.where(active: true))

Parameters:

  • records (ActiveRecord::Relation, Array) —

    collection of skill records

Returns:



103
104
105
106
# File 'lib/ruby_llm/skills.rb', line 103

def from_database(records)
  require_relative "skills/database_loader"
  DatabaseLoader.new(records)
end

.from_directory(path = default_path) ⇒ FilesystemLoader

Load skills from a filesystem directory.

Examples:

RubyLLM::Skills.from_directory("app/skills")

Parameters:

  • path (String) (defaults to: default_path) —

    path to skills directory (defaults to default_path)

Returns:



78
79
80
# File 'lib/ruby_llm/skills.rb', line 78

def from_directory(path = default_path)
  FilesystemLoader.new(path)
end

.load(path) ⇒ Skill

Load a single skill from a directory.

Examples:

RubyLLM::Skills.load("app/skills/my-skill")

Parameters:

  • path (String) —

    path to skill directory (containing SKILL.md)

Returns:

  • (Skill) —

    the loaded skill

Raises:



89
90
91
92
93
94
95
# File 'lib/ruby_llm/skills.rb', line 89

def load(path)
  skill_md = File.join(path, "SKILL.md")
  raise LoadError, "SKILL.md not found in #{path}" unless File.exist?(skill_md)

   = Parser.parse_file(skill_md)
  Skill.new(path: path, metadata: )
end