Class: RubyCoded::Skills::Catalog
- Inherits:
-
Object
- Object
- RubyCoded::Skills::Catalog
- Defined in:
- lib/ruby_coded/skills/catalog.rb
Overview
Loads, validates, and caches project-local skill definitions.
Instance Method Summary collapse
- #all_skills ⇒ Object
-
#initialize(project_root:) ⇒ Catalog
constructor
A new instance of Catalog.
- #last_reload_report ⇒ Object
- #relevant_skills_for(mode:, input: nil) ⇒ Object
- #reload! ⇒ Object
- #skills_for_mode(mode) ⇒ Object
Constructor Details
#initialize(project_root:) ⇒ Catalog
Returns a new instance of Catalog.
10 11 12 13 |
# File 'lib/ruby_coded/skills/catalog.rb', line 10 def initialize(project_root:) @project_root = project_root @last_reload_report = nil end |
Instance Method Details
#all_skills ⇒ Object
15 16 17 |
# File 'lib/ruby_coded/skills/catalog.rb', line 15 def all_skills valid_skills.sort_by { |skill| [-skill.priority, skill.name.downcase] } end |
#last_reload_report ⇒ Object
38 39 40 |
# File 'lib/ruby_coded/skills/catalog.rb', line 38 def last_reload_report @last_reload_report || default_reload_report end |
#relevant_skills_for(mode:, input: nil) ⇒ Object
23 24 25 26 27 28 29 |
# File 'lib/ruby_coded/skills/catalog.rb', line 23 def relevant_skills_for(mode:, input: nil) mode_skills = skills_for_mode(mode) return mode_skills if input.to_s.strip.empty? matched = mode_skills.select { |skill| matches_input?(skill, input) } matched.empty? ? mode_skills : matched.sort_by { |skill| [-skill.priority, skill.name.downcase] } end |
#reload! ⇒ Object
31 32 33 34 35 36 |
# File 'lib/ruby_coded/skills/catalog.rb', line 31 def reload! previous_names = cached_skill_names clear_cached_reports! current_names = valid_skills.map { |skill| skill.name.downcase } @last_reload_report = build_reload_report(previous_names, current_names) end |
#skills_for_mode(mode) ⇒ Object
19 20 21 |
# File 'lib/ruby_coded/skills/catalog.rb', line 19 def skills_for_mode(mode) all_skills.select { |skill| skill.applies_to_mode?(mode) } end |