| 12345678910111213141516171819202122232425262728293031323334353637 |
- #!/usr/bin/env python3
- """重生成 inventory (剔除 ffmpeg/qiwei 后) + 更新文档描述"""
- import os, json, datetime
- BASE = '/opt/data/projects/fmode-skillhub/skills'
- # 删除旧的 inventory 保留目录
- all_skills = sorted(os.listdir(BASE))
- all_skills = [s for s in all_skills if os.path.isdir(os.path.join(BASE, s))]
- inventory = {
- "name": "fmode-skillhub",
- "version": "0.2.0",
- "generatedAt": datetime.datetime.now().isoformat(),
- "format": "esm",
- "architecture": "纯接口驱动: 子技能只依赖公开HTTP接口+用户token(env)+agent原生工具, 不依赖任何需另行安装的软件/本地二进制",
- "skills": [],
- }
- for name in all_skills:
- full = os.path.join(BASE, name)
- slug=version=level=summary=""
- try:
- md = open(os.path.join(full,'SKILL.md'),encoding='utf-8').read()
- fm = md.split('---')[1]
- for line in fm.split('\n'):
- if line.startswith('slug:'): slug = line.split(':',1)[1].strip()
- if line.startswith('version:'): version = line.split(':',1)[1].strip()
- if line.startswith('level:'): level = line.split(':',1)[1].strip()
- if line.startswith('description:'): summary = line.split(':',1)[1].strip()[:60]
- except: pass
- inventory["skills"].append({"name":name,"slug":slug or f"fmode-skill-{name}","version":version,"level":level,"summary":summary})
- with open(os.path.join(BASE,'inventory.json'),'w',encoding='utf-8') as f:
- json.dump(inventory, f, ensure_ascii=False, indent=2)
- print(f"✅ inventory.json 更新: {len(inventory['skills'])} 个子技能")
- for s in inventory['skills']:
- print(f" {s['name']} [{s['level']}] v{s['version']}")
|