Class: AgentsSkillVault::SkillScanner
- Inherits:
-
Object
- Object
- AgentsSkillVault::SkillScanner
- Defined in:
- lib/agents_skill_vault/skill_scanner.rb
Overview
Scans directories for SKILL.md files.
Recursively searches for SKILL.md files and extracts metadata including the skill name and folder path.
Constant Summary collapse
- SKILL_FILE_NAME =
"SKILL.md"
Class Method Summary collapse
-
.extract_skill_metadata(skill_file_path, base_path) ⇒ Hash
Extracts skill metadata from a SKILL.md file path.
-
.scan_directory(base_path) ⇒ Array<Hash>
Scans a directory for all SKILL.md files.
-
.scan_recursive(current_dir, base_path, skills) ⇒ Object
Recursively scans directory for SKILL.md files.
Class Method Details
.extract_skill_metadata(skill_file_path, base_path) ⇒ Hash
Extracts skill metadata from a SKILL.md file path.
61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/agents_skill_vault/skill_scanner.rb', line 61 def self.(skill_file_path, base_path) skill_dir = File.dirname(skill_file_path) skill_name = File.basename(skill_dir) relative_path = Pathname.new(skill_dir).relative_path_from(Pathname.new(base_path)).to_s { relative_path:, skill_folder: relative_path, skill_name:, folder_path: relative_path } end |
.scan_directory(base_path) ⇒ Array<Hash>
Scans a directory for all SKILL.md files.
29 30 31 32 33 34 35 36 |
# File 'lib/agents_skill_vault/skill_scanner.rb', line 29 def self.scan_directory(base_path) raise ArgumentError, "base_path cannot be nil" if base_path.nil? raise ArgumentError, "base_path does not exist: #{base_path}" unless Dir.exist?(base_path) skills = [] scan_recursive(base_path, base_path, skills) skills end |
.scan_recursive(current_dir, base_path, skills) ⇒ Object
Recursively scans directory for SKILL.md files.
44 45 46 47 48 49 50 51 52 53 |
# File 'lib/agents_skill_vault/skill_scanner.rb', line 44 def self.scan_recursive(current_dir, base_path, skills) # Check if current directory has a SKILL.md file skill_file = File.join(current_dir, SKILL_FILE_NAME) skills << (skill_file, base_path) if File.exist?(skill_file) # Scan subdirectories Dir.glob(File.join(current_dir, "*")).each do |entry| scan_recursive(entry, base_path, skills) if File.directory?(entry) end end |