Module: RubyLLM::Skills::ChatExtensions

Defined in:
lib/ruby_llm/skills/chat_extensions.rb

Overview

Extensions for RubyLLM::Chat to enable skill integration.

Examples:

Default (app/skills)

chat.with_skills

Custom path

chat.with_skills("lib/skills")

Multiple sources (auto-detected)

chat.with_skills("app/skills", "app/commands", user.skills)

Filter skills

chat.with_skills(only: [:pdf_report])

Instance Method Summary collapse

Instance Method Details

#with_skills(*sources, only: nil) ⇒ self

Add skills to this chat.

Parameters:

  • sources (Array) —

    skill sources - auto-detects type (directory, zip, collection)

  • only (Array<Symbol, String>, nil) (defaults to: nil) —

    include only these skills

Returns:

  • (self) —

    for chaining



27
28
29
30
31
32
33
34
35
36
# File 'lib/ruby_llm/skills/chat_extensions.rb', line 27

def with_skills(*sources, only: nil)
  sources = [RubyLLM::Skills.default_path] if sources.empty?
  loaders = sources.map { |s| to_loader(s) }

  loader = (loaders.length == 1) ? loaders.first : RubyLLM::Skills.compose(*loaders)
  loader = FilteredLoader.new(loader, only) if only

  skill_tool = RubyLLM::Skills::SkillTool.new(loader)
  with_tool(skill_tool)
end