Class: FeishuSkillsInstaller

Inherits:
Object
  • Object
show all
Defined in:
lib/clacky/default_skills/channel-manager/install_feishu_skills.rb

Overview

Install Feishu-related skills from the openclacky platform.

Calls GET /api/v1/skills/feishu — same payload shape as /api/v1/skills/builtin:

{ "skills": [{ "name": "lark-doc", "download_url": "https://..." }, ...] }

Each skill is installed sequentially via ZipSkillInstaller into ~/.clacky/skills/<name>/.

Usage:

ruby install_feishu_skills.rb

Output:

Diagnostics   STDERR
Last line     JSON: {"installed":N,"attempted":N}
Exit code     always 0

Constant Summary collapse

PRIMARY_HOST =
ENV.fetch('CLACKY_LICENSE_SERVER', 'https://www.openclacky.com')
FALLBACK_HOST =
'https://openclacky.up.railway.app'
API_HOSTS =
ENV['CLACKY_LICENSE_SERVER'] ? [PRIMARY_HOST] : [PRIMARY_HOST, FALLBACK_HOST]
API_PATH =
'/api/v1/skills/feishu'
API_OPEN_TIMEOUT =
5
API_READ_TIMEOUT =
10

Instance Method Summary collapse

Constructor Details

#initializeFeishuSkillsInstaller

Returns a new instance of FeishuSkillsInstaller.



32
33
34
35
36
37
# File 'lib/clacky/default_skills/channel-manager/install_feishu_skills.rb', line 32

def initialize
  @target_dir = File.join(Dir.home, '.clacky', 'skills')
  @installed  = 0
  @attempted  = 0
  @errors     = []
end

Instance Method Details

#runObject



39
40
41
42
43
44
45
46
47
48
49
# File 'lib/clacky/default_skills/channel-manager/install_feishu_skills.rb', line 39

def run
  skills = fetch_skill_list
  if skills.nil? || skills.empty?
    emit_summary
    return
  end

  skills.each { |skill| install_one(skill) }
ensure
  emit_summary
end