Class: FeishuSkillsInstaller
- Inherits:
-
Object
- Object
- FeishuSkillsInstaller
- 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
-
#initialize ⇒ FeishuSkillsInstaller
constructor
A new instance of FeishuSkillsInstaller.
- #run ⇒ Object
Constructor Details
#initialize ⇒ FeishuSkillsInstaller
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
#run ⇒ Object
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 |