gen-app-skills.py 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. #!/usr/bin/env python3
  2. """批量生成应用层子技能(ESM 结构,含 references 指向 VOC 包)"""
  3. import os
  4. BASE = '/opt/data/projects/fmode-skills/skills'
  5. skills = [
  6. {
  7. "dir": "fmode-voc-intelligence",
  8. "slug": "fmode-skill-fmode-voc-intelligence",
  9. "version": "0.3.38",
  10. "title": "VOC 用户经营洞察",
  11. "summary": "小红书/抖音/视频号 VOC 情报:趋势情报、问题池、单点深挖、竞品图谱、7天内容计划、口播脚本、成本测算、用量账单。",
  12. "triggers": "VOC、小红书趋势、抖音趋势、视频号、问题池、竞品、内容计划、口播脚本、用户声音、经营洞察、趋势情报",
  13. "sub_skills": ["xiaohongshu-trend-intelligence", "douyin-trend-intelligence", "voc-issue-pool", "voc-problem-deep-dive", "voc-competitor-map", "voc-content-plan", "voc-speaking-script", "voc-cost-controller", "voc-api-catalog", "voc-business-workflow", "fmode-image-analysis"],
  14. "src": "npm @vocmarket/voc-skill 0.3.38",
  15. },
  16. {
  17. "dir": "fmode-tihao",
  18. "slug": "fmode-skill-fmode-tihao",
  19. "version": "1.0.19",
  20. "title": "提号 SOP 达人/博主研究",
  21. "summary": "达人/博主候选研究:读取brief、调用VOC电商代理、豆包视觉分析、达人排名、导出商务可用名单。",
  22. "triggers": "提号、达人、博主、创作者研究、brief、商务名单、红人、kol",
  23. "sub_skills": ["tihao-creator-sourcing"],
  24. "src": "npm @vocmarket/tihao 1.0.19",
  25. },
  26. {
  27. "dir": "fmode-pay",
  28. "slug": "fmode-skill-fmode-pay",
  29. "version": "0.1.0",
  30. "title": "微信特约商户自动化进件",
  31. "summary": "微信服务商特约商户进件:资料收集 → APIv3 签名 → 云函数提交 → 二维码签约 → 归档。",
  32. "triggers": "微信商户、进件、特约商户、fmode-pay、商户开通、支付开通",
  33. "sub_skills": ["wxpay-merchant-apply", "wxpay-merchant-status", "wxpay-merchant-upload", "wxpay-merchant-archive"],
  34. "src": "本次 fmode-pay 开发",
  35. },
  36. {
  37. "dir": "fmode-courseware",
  38. "slug": "fmode-skill-fmode-courseware",
  39. "version": "0.1.0",
  40. "title": "课程课件生产标准",
  41. "summary": "课件/报告 HTML 生产标准:委派 FmodeCode、基准学习、素材归档、证据链、分层验收。",
  42. "triggers": "课件、课程、导入课、课纲、验收、skill-present",
  43. "sub_skills": ["skill-present-course-production", "html-course-delivery", "html-report-delivery"],
  44. "src": "skill-present 抽取",
  45. },
  46. {
  47. "dir": "fmode-report-publish",
  48. "slug": "fmode-skill-fmode-report-publish",
  49. "version": "0.1.0",
  50. "title": "HTML 报告制作发布",
  51. "summary": "网页报告交付:手机侧边栏 + 区块化 + 数据优先,交付到 S3 公开 URL。",
  52. "triggers": "出报告、HTML报告、可视化报告、S3、报告交付、发布链接",
  53. "sub_skills": ["html-report-delivery", "fmode-storage"],
  54. "src": "Hermes html-report-delivery 抽取",
  55. },
  56. {
  57. "dir": "fmode-product-lab",
  58. "slug": "fmode-skill-fmode-product-lab",
  59. "version": "0.2.0",
  60. "title": "新品研发实验室",
  61. "summary": "新品研发:VOC 采集 + KANO + 市场分析 + 竞争 + 定位 + 错位竞争全流程。",
  62. "triggers": "新品研发、产品开发、健康快消、VOC、KANO、市场分析、定位、竞品",
  63. "sub_skills": ["product-lab-workflow"],
  64. "src": "npm fmode-product-lab 0.2.0",
  65. },
  66. ]
  67. for s in skills:
  68. d = os.path.join(BASE, s['dir'])
  69. os.makedirs(os.path.join(d, 'scripts'), exist_ok=True)
  70. os.makedirs(os.path.join(d, 'references'), exist_ok=True)
  71. sub_lines = "\n".join(f"- `{sub}`" for sub in s['sub_skills'])
  72. ref_lines = f"- 原始来源: {s['src']}"
  73. skill_md = f"""---
  74. slug: {s['slug']}
  75. displayName: {s['dir']}
  76. version: {s['version']}
  77. name: {s['dir']}
  78. description: {s['summary']} 触发词:{s['triggers']}
  79. tags: [FmodeAgent, FmodeCode, 应用级, {s['dir'].replace('fmode-','')}]
  80. platform: Both
  81. level: 应用级
  82. category: 平台基础设施
  83. icon: 🏢
  84. license: MPL-2.0
  85. author: Fmode (未来飞马)
  86. ---
  87. # {s['title']}
  88. ## 触发词
  89. {s['triggers']}
  90. ## 能力分解
  91. {s['sub_skills']}
  92. {ref_lines}
  93. ## 使用规则
  94. - 用户只需要自然语言描述业务场景,不要强迫了解参数
  95. - 未明确要求真实采集前,先使用演示样例(sample);明确 live 时再检查凭证/余额
  96. - 首轮输出采用"初步判断、机会假设、待校准"口径,附证据
  97. ## License
  98. MPL-2.0 © 2026 Fmode (未来飞马)
  99. """
  100. with open(os.path.join(d, 'SKILL.md'), 'w', encoding='utf-8') as f:
  101. f.write(skill_md)
  102. with open(os.path.join(d, 'references', 'source.md'), 'w', encoding='utf-8') as f:
  103. f.write(f"# {s['title']} 参考\n\n{ref_lines}\n")
  104. print(f"✅ 生成 {s['dir']}")
  105. print("🎉 应用层子技能生成完毕")