Module: Legion::LLM::Skills::ExternalDiscovery

Extended by:
Legion::Logging::Helper
Defined in:
lib/legion/llm/skills/external_discovery.rb

Class Method Summary collapse

Class Method Details

.claude_auto_discover?Boolean

Returns:

  • (Boolean)


42
43
44
45
46
47
# File 'lib/legion/llm/skills/external_discovery.rb', line 42

def claude_auto_discover?
  Legion::LLM.settings.dig(:skills, :auto_discover, :claude) != false
rescue StandardError => e
  handle_exception(e, level: :debug, operation: 'llm.skills.external_discovery.claude_auto_discover')
  true
end

.claude_directoriesObject



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/legion/llm/skills/external_discovery.rb', line 20

def claude_directories
  home = ::File.expand_path('~')
  dirs = []

  skills_dir = ::File.join(home, '.claude', 'skills')
  dirs << skills_dir if ::File.directory?(skills_dir)

  plugins_dir = ::File.join(home, '.claude', 'plugins')
  if ::File.directory?(plugins_dir)
    ::Dir.glob(::File.join(plugins_dir, '*', 'skills')).each do |skill_subdir|
      dirs << skill_subdir if ::File.directory?(skill_subdir)
    end
  end

  dirs.uniq
end

.codex_auto_discover?Boolean

Returns:

  • (Boolean)


49
50
51
52
53
54
# File 'lib/legion/llm/skills/external_discovery.rb', line 49

def codex_auto_discover?
  Legion::LLM.settings.dig(:skills, :auto_discover, :codex) != false
rescue StandardError => e
  handle_exception(e, level: :debug, operation: 'llm.skills.external_discovery.codex_auto_discover')
  true
end

.codex_directoriesObject



37
38
39
40
# File 'lib/legion/llm/skills/external_discovery.rb', line 37

def codex_directories
  candidate = ::File.join(::File.expand_path('~'), '.codex', 'skills')
  ::File.directory?(candidate) ? [candidate] : []
end

.discoverObject



13
14
15
16
17
18
# File 'lib/legion/llm/skills/external_discovery.rb', line 13

def discover
  dirs = []
  dirs.concat(claude_directories) if claude_auto_discover?
  dirs.concat(codex_directories)  if codex_auto_discover?
  dirs
end