Module: SpaceArchitect::SkillInstaller
- Defined in:
- lib/space_architect/skill_installer.rb
Constant Summary collapse
- PROVIDERS =
%w[claude codex opencode pi].freeze
Class Method Summary collapse
- .dest_root(provider, project:, env:, cwd: Dir.pwd) ⇒ Object
- .install(provider, project:, force:, env:, cwd: Dir.pwd, dry_run: false) ⇒ Object
- .source_root ⇒ Object
- .source_skills ⇒ Object
Class Method Details
.dest_root(provider, project:, env:, cwd: Dir.pwd) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/space_architect/skill_installer.rb', line 15 def dest_root(provider, project:, env:, cwd: Dir.pwd) case provider.to_s when "claude" base = project ? Pathname.new(cwd) : Pathname.new(XDG.home(env: env)) base.join(".claude", "skills") when "codex" base = project ? Pathname.new(cwd) : Pathname.new(XDG.home(env: env)) base.join(".agents", "skills") when "opencode" project ? Pathname.new(cwd).join(".opencode", "skills") : XDG.config_home(env: env).join("skills") when "pi" base = project ? Pathname.new(cwd) : Pathname.new(pi_agent_dir(env: env)) base.join("skills") else raise Error, "Unknown provider '#{provider}'. Expected one of: #{PROVIDERS.join(', ')}" end end |
.install(provider, project:, force:, env:, cwd: Dir.pwd, dry_run: false) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/space_architect/skill_installer.rb', line 33 def install(provider, project:, force:, env:, cwd: Dir.pwd, dry_run: false) validate_provider!(provider) dest = dest_root(provider, project: project, env: env, cwd: cwd) results = [] source_skills.each do |skill_dir| name = skill_dir.basename.to_s skill_dest = dest.join(name) results << install_skill(skill_dir, skill_dest, force: force, dry_run: dry_run) end { dest_root: dest, skills: results, dry_run: dry_run } end |
.source_root ⇒ Object
11 12 13 |
# File 'lib/space_architect/skill_installer.rb', line 11 def source_root Pathname.new(__dir__).parent.parent.join("skill") end |
.source_skills ⇒ Object
47 48 49 |
# File 'lib/space_architect/skill_installer.rb', line 47 def source_skills source_root.children.select(&:directory?) end |