Class: Botiasloop::Skills::Loader
- Inherits:
-
Object
- Object
- Botiasloop::Skills::Loader
- Defined in:
- lib/botiasloop/skills/loader.rb
Overview
Discovers and loads skills from gem and user directories
Class Method Summary collapse
-
.find_by_name(name) ⇒ Skill?
Find a specific skill by name.
-
.load_all_skills ⇒ Array<Skill>
All loaded skills (default + user).
-
.load_default_skills ⇒ Array<Skill>
Skills shipped with the gem.
-
.load_from_directory(dir) ⇒ Array<Skill>
Load skills from a specific directory.
-
.load_user_skills ⇒ Array<Skill>
Skills from user’s ~/skills/ directory.
Class Method Details
.find_by_name(name) ⇒ Skill?
Find a specific skill by name
53 54 55 |
# File 'lib/botiasloop/skills/loader.rb', line 53 def self.find_by_name(name) load_all_skills.find { |skill| skill.name == name } end |
.load_all_skills ⇒ Array<Skill>
Returns All loaded skills (default + user).
8 9 10 |
# File 'lib/botiasloop/skills/loader.rb', line 8 def self.load_all_skills load_default_skills + load_user_skills end |
.load_default_skills ⇒ Array<Skill>
Returns Skills shipped with the gem.
13 14 15 16 |
# File 'lib/botiasloop/skills/loader.rb', line 13 def self.load_default_skills skills_dir = File.join(Botiasloop.root, "data", "skills") load_from_directory(skills_dir) end |
.load_from_directory(dir) ⇒ Array<Skill>
Load skills from a specific directory
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/botiasloop/skills/loader.rb', line 27 def self.load_from_directory(dir) return [] unless File.directory?(dir) skills = [] Dir.entries(dir).each do |entry| next if entry == "." || entry == ".." skill_path = File.join(dir, entry) next unless File.directory?(skill_path) skill_md_path = File.join(skill_path, "SKILL.md") next unless File.exist?(skill_md_path) begin skills << Skill.new(skill_path) rescue Error => e warn "Failed to load skill from #{skill_path}: #{e.}" end end skills end |
.load_user_skills ⇒ Array<Skill>
Returns Skills from user’s ~/skills/ directory.
19 20 21 22 |
# File 'lib/botiasloop/skills/loader.rb', line 19 def self.load_user_skills user_skills_dir = File.("~/skills") load_from_directory(user_skills_dir) end |