瀏覽代碼

feat: fmode-skillhub 总技能库 v0.2 - 15个纯接口驱动子技能 + ESM installer

- 服务级(9): account/enterprise/cloud-functions/cloud-resources/static-publish/git-archive/vision/listen/storage
- 应用级(6): voc-intelligence/tihao/product-lab/pay/courseware/report-publish
- installer.mjs: 检测宿主自动落盘(wb/cc/hermes)
- 纯接口驱动: 只依赖公开HTTP接口+token(env)+agent原生工具
- 剔除: fmode-ffmpeg(本地二进制)/fmode-qiwei(企微网关)
- 元数据: slug/version/level/tags/license(MPL-2.0) 全规范
liuyuyang 1 天之前
當前提交
174f3baa5a
共有 46 個文件被更改,包括 1750 次插入 和 0 次删除
  1. 95 0
      README.md
  2. 105 0
      SKILL.md
  3. 22 0
      package.json
  4. 121 0
      scripts/gen-app-skills.py
  5. 22 0
      scripts/gen-dirs.sh
  6. 37 0
      scripts/gen-inventory.py
  7. 86 0
      scripts/gen-published-skills.py
  8. 209 0
      scripts/gen-service-skills.py
  9. 89 0
      scripts/installer.mjs
  10. 51 0
      skills/fmode-account/SKILL.md
  11. 5 0
      skills/fmode-account/references/endpoints.md
  12. 30 0
      skills/fmode-account/scripts/index.mjs
  13. 49 0
      skills/fmode-cloud-functions/SKILL.md
  14. 3 0
      skills/fmode-cloud-functions/references/endpoints.md
  15. 28 0
      skills/fmode-cloud-functions/scripts/index.mjs
  16. 49 0
      skills/fmode-cloud-resources/SKILL.md
  17. 3 0
      skills/fmode-cloud-resources/references/endpoints.md
  18. 28 0
      skills/fmode-cloud-resources/scripts/index.mjs
  19. 36 0
      skills/fmode-courseware/SKILL.md
  20. 3 0
      skills/fmode-courseware/references/source.md
  21. 51 0
      skills/fmode-enterprise/SKILL.md
  22. 5 0
      skills/fmode-enterprise/references/endpoints.md
  23. 30 0
      skills/fmode-enterprise/scripts/index.mjs
  24. 52 0
      skills/fmode-git-archive/SKILL.md
  25. 5 0
      skills/fmode-git-archive/references/endpoints.md
  26. 30 0
      skills/fmode-git-archive/scripts/index.mjs
  27. 34 0
      skills/fmode-listen/SKILL.md
  28. 3 0
      skills/fmode-listen/references/source.md
  29. 36 0
      skills/fmode-pay/SKILL.md
  30. 3 0
      skills/fmode-pay/references/source.md
  31. 36 0
      skills/fmode-product-lab/SKILL.md
  32. 3 0
      skills/fmode-product-lab/references/source.md
  33. 36 0
      skills/fmode-report-publish/SKILL.md
  34. 3 0
      skills/fmode-report-publish/references/source.md
  35. 51 0
      skills/fmode-static-publish/SKILL.md
  36. 5 0
      skills/fmode-static-publish/references/endpoints.md
  37. 30 0
      skills/fmode-static-publish/scripts/index.mjs
  38. 34 0
      skills/fmode-storage/SKILL.md
  39. 3 0
      skills/fmode-storage/references/source.md
  40. 36 0
      skills/fmode-tihao/SKILL.md
  41. 3 0
      skills/fmode-tihao/references/source.md
  42. 34 0
      skills/fmode-vision/SKILL.md
  43. 3 0
      skills/fmode-vision/references/source.md
  44. 36 0
      skills/fmode-voc-intelligence/SKILL.md
  45. 3 0
      skills/fmode-voc-intelligence/references/source.md
  46. 114 0
      skills/inventory.json

+ 95 - 0
README.md

@@ -0,0 +1,95 @@
+# 📦 Fmode 总技能库(fmode-skillhub)
+
+> **让AI进化提前发生,让AI落地快人一步**
+> 未来飞马 — 一次安装,全部 Fmode 能力自动落盘。
+
+Fmode 总技能库是一个**元技能 / Meta Skill**:本身不执行业务,而是承载
+`installer.mjs`,检测宿主 Agent 后把仓库内全部子技能**自动分发到对应技能目录**。
+用户只需安装本技能,其他所有技能自动完成安装。
+
+## 核心定位
+
+- **一套技能库**统一承载 FMODE 全部可公开业务能力(数字分身初始化、云资源领取、前后端发布、VOC 情报、企微、支付、课件、报告)
+- **ESM-first 多端兼容**:同一份技能兼容 WorkBuddy / Claude Code / Hermes
+- **密钥剥离**:公开技能只描述接口/端点/流程,token 一律走环境变量,不含任何内部密钥
+- 系统层运维技能(含密钥)剥离在内部仓库,不进公开 skillhub
+
+## 快速开始
+
+### 方式 1:仓库安装(Gogs / GitHub)
+
+```bash
+git clone https://git.fmode.cn/fmode/fmode-skillhub.git
+cd fmode-skillhub
+node scripts/installer.mjs --all        # 分发全部子技能到宿主技能目录
+node scripts/installer.mjs --check      # 检查现状(只读)
+```
+
+### 方式 2:skillhub 检索安装
+
+在 skillhub.cn 检索 `fmode-skillhub`,安装后运行仓库内 installer。
+
+## 安装器行为
+
+| 宿主 | 落盘目录 |
+|------|---------|
+| WorkBuddy | `~/.workbuddy/skills/` |
+| Claude Code / FmodeCode | `~/.claude/skills/` |
+| Hermes Agent | `~/.hermes/skills/` |
+
+## 子技能清单(15 个,纯接口驱动)
+
+> 所有子技能只依赖「公开 HTTP 接口 + 用户 token(env) + Agent 原生工具」,不依赖任何需另行安装的软件/fmode-studio。
+
+### 服务级(Platform Services)
+- `fmode-account` — 手机验证码注册/登录/sessionToken
+- `fmode-enterprise` — 企业开通状态/独立部署
+- `fmode-cloud-functions` — 云函数部署与调用(/api/functions)
+- `fmode-cloud-resources` — 云资源领取(华为云 STS)
+- `fmode-static-publish` — 静态站发布(OBS+CDN)
+- `fmode-git-archive` — 项目 Git 归档(Gitea)
+- `fmode-vision` — 视觉识别(公开 API)
+- `fmode-listen` — 录音转写(公开网关 API)
+- `fmode-storage` — 对象存储与公开分享
+
+### 应用级(Business Applications)
+- `fmode-voc-intelligence` — 小红书/抖音/视频号 VOC 情报
+- `fmode-tihao` — 提号 SOP 达人研究
+- `fmode-product-lab` — 新品研发
+- `fmode-pay` — 微信特约商户进件
+- `fmode-courseware` — 课程课件生产
+- `fmode-report-publish` — HTML 报告发布
+
+> 已剔除(依赖本地/软件):`fmode-ffmpeg`(本地 ffmpeg 二进制)、`fmode-qiwei`(企微网关部署)。
+
+## FAQ
+
+**Q: 为什么用"总技能库"形态?**
+用户只需安装一个技能(fmode-skillhub),installer 自动落盘全部子技能,避免逐个安装。
+
+**Q: 技术框架是什么?**
+ESM(ECMAScript Modules),`installer.mjs` 零 npm 依赖(Node>=18 自带 fetch),
+每个子技能含 `SKILL.md` + `scripts/` + `references/`,符合 skill-core-guide 规范。
+
+**Q: 和 skill-core-guide 的关系?**
+skill-core-guide 是母技能(定义平台规范/分类体系/打包标准),本库是**总技能库**
+(承载全部子技能并按宿主分发)。两者互补。
+
+**Q: 开源协议?**
+MPL-2.0。
+
+## License
+
+MPL-2.0 © 2026 Fmode (未来飞马)
+
+> MPL-2.0 governs copyright for source code only. This license does NOT grant
+> any right to use our trademarks: 未来飞马, Harness Loop, RSI, and the slogan
+> "让AI进化提前发生,让AI落地快人一步". You may not use these trademarks in your
+> product name, marketing, documentation, or public promotion unless you obtain
+> separate written permission from 未来飞马.
+
+## 相关项目
+
+- `skill-core-guide` — Fmode Harness 平台技能开发规范母技能
+- `skill-heterarchy` — 内异层认知协同
+- `fmode-loop` — Fmode 交付循环(本库服务层接口的源头)

+ 105 - 0
SKILL.md

@@ -0,0 +1,105 @@
+---
+slug: fmode-skill-fmode-skillhub
+displayName: fmode-skillhub
+version: 0.1.0
+name: fmode-skillhub
+description: |
+  Fmode 总技能库(Meta 技能)。一次安装,所有 Fmode 子技能自动落盘:
+  数字分身初始化(手机注册/登录/企业开通)、云资源领取(华为云 STS 部署)、
+  前后端项目发布(函数云函数 + 静态 OBS+CDN)、Git 归档、VOC 情报
+  (小红书/抖音/视频号)、企微办公、录音转写、视觉分析、媒体处理、微信支付进件等。
+  用户只需安装本技能,运行 installer 后全部子技能按宿主自动分发到
+  ~/.workbuddy/skills/ 或 ~/.claude/skills/。
+tags: [FmodeAgent, HermesAgent, FmodeCode, 系统级, 技能库, 安装器, meta]
+platform: Both
+level: 系统级
+category: 平台基础设施
+icon: 📦
+license: MPL-2.0
+author: Fmode (未来飞马)
+---
+
+# 📦 Fmode 总技能库(fmode-skillhub)
+
+> 「让AI进化提前发生,让AI落地快人一步」
+> 未来飞马 — 一次安装,全部 Fmode 能力自动落盘。
+
+## 这是什么
+
+**Fmode 总技能库**是一个**元技能(Meta Skill)**:本身不实现业务,而是承载
+`installer.mjs` —— 检测宿主 Agent 后,把仓库内全部子技能**自动分发到对应技能目录**。
+
+用户只需要安装一个技能(本技能),其他所有技能自动完成安装。
+
+## 快速开始
+
+### 方式 1:仓库安装(Gogs / GitHub)
+
+```bash
+git clone https://git.fmode.cn/fmode/fmode-skillhub.git
+cd fmode-skillhub
+node scripts/installer.mjs --all        # 分发全部子技能到当前宿主
+node scripts/installer.mjs --check      # 检查现状(不写文件)
+```
+
+### 方式 2:skillhub 安装(检索/一键)
+
+在 skillhub.cn 检索 `fmode-skillhub`,按平台指引安装后运行仓库内 installer。
+
+## 安装器行为
+
+| 宿主 | 落盘目录 | 说明 |
+|------|---------|------|
+| WorkBuddy | `~/.workbuddy/skills/` | 纯 SKILL.md 兼容 |
+| Claude Code / FmodeCode | `~/.claude/skills/` | ESM 技能目录 |
+| Hermes Agent | `~/.hermes/skills/` | SKILL.md + scripts |
+
+每个子技能目录结构(ESM 标准):
+
+```text
+fmode-<skill>/
+├── SKILL.md            # 触发词 + 完整流程
+├── scripts/            # 可执行助手(fetch 封装,零 npm 依赖)
+└── references/         # 可选:参考数据
+```
+
+## 包含的子技能(v0.2,纯接口驱动)
+
+> **架构铁律**:所有子技能只依赖「公开 HTTP 接口 + 用户 token(从环境变量读取)+ Agent 原生工具」,
+> **不依赖任何需另行安装的桌面软件、本地二进制或 fmode-studio**。
+> 用户只需要在 Agent 工具里安装本技能库,AI 即可调用已封装的公开接口完成任务。
+
+| # | 子技能 | 层级 | 能力 |
+|---|--------|------|------|
+| 1 | `fmode-account` | 服务级 | 手机验证码注册/登录/sessionToken |
+| 2 | `fmode-enterprise` | 服务级 | 企业开通状态/Company 查询 |
+| 3 | `fmode-cloud-functions` | 服务级 | 云函数部署与调用(/api/functions)|
+| 4 | `fmode-cloud-resources` | 服务级 | 云资源领取(华为云 STS)|
+| 5 | `fmode-static-publish` | 服务级 | 静态站/课件发布(OBS+CDN)|
+| 6 | `fmode-git-archive` | 服务级 | 项目 Git 归档(Gitea)|
+| 7 | `fmode-vision` | 服务级 | 视觉识别(公开 API)|
+| 8 | `fmode-listen` | 服务级 | 录音转写(公开网关 API)|
+| 9 | `fmode-storage` | 服务级 | 对象存储与公开分享 |
+| 10 | `fmode-voc-intelligence` | 应用级 | 小红书/抖音/视频号 VOC 情报 |
+| 11 | `fmode-tihao` | 应用级 | 提号 SOP 达人研究 |
+| 12 | `fmode-product-lab` | 应用级 | 新品研发 |
+| 13 | `fmode-pay` | 应用级 | 微信特约商户进件 |
+| 14 | `fmode-courseware` | 应用级 | 课程课件生产 |
+| 15 | `fmode-report-publish` | 应用级 | HTML 报告发布 |
+
+> **已剔除**(依赖本地/软件,违反纯接口铁律):`fmode-ffmpeg`(需本地 ffmpeg 二进制)、`fmode-qiwei`(需企微网关部署)。如需这些能力,由用户自行安装单独包。
+> 系统层(s 级运维技能)剥离在内部仓库,不进公开 skillhub。
+
+## 分发到其他库
+
+- Gogs:`git.fmode.cn/fmode/fmode-skillhub`
+- skillhub:`fmode-skill-fmode-skillhub`
+- GitHub:`github.com/fmodecn/fmode-skillhub`(可选镜像)
+
+## License
+
+MPL-2.0 © 2026 Fmode (未来飞马)
+
+> MPL-2.0 governs copyright for source code only. This license does NOT grant
+> any right to use our trademarks: 未来飞马, Harness Loop, RSI, and the slogan
+> "让AI进化提前发生,让AI落地快人一步".

+ 22 - 0
package.json

@@ -0,0 +1,22 @@
+{
+  "name": "fmode-skillhub",
+  "version": "0.1.0",
+  "description": "Fmode 总技能库 —— 一次安装,全部 Fmode 技能自动落盘(数字分身初始化、云资源领取、前后端发布、VOC 情报、企微、支付等)。安装后由 installer.mjs 按宿主分发子技能。",
+  "type": "module",
+  "main": "scripts/installer.mjs",
+  "bin": {
+    "fmode-skillhub": "scripts/installer.mjs"
+  },
+  "license": "MPL-2.0",
+  "keywords": [
+    "fmode", "harness", "skillhub", "agent-skills",
+    "未来飞马", "技能库", "智能体技能", "数字分身", "云资源", "VOC"
+  ],
+  "engines": {
+    "node": ">=18"
+  },
+  "scripts": {
+    "install:all": "node scripts/installer.mjs --all",
+    "smoke": "node scripts/installer.mjs --check"
+  }
+}

+ 121 - 0
scripts/gen-app-skills.py

@@ -0,0 +1,121 @@
+#!/usr/bin/env python3
+"""批量生成应用层子技能(ESM 结构,含 references 指向 VOC 包)"""
+import os
+
+BASE = '/opt/data/projects/fmode-skillhub/skills'
+
+skills = [
+    {
+        "dir": "fmode-voc-intelligence",
+        "slug": "fmode-skill-fmode-voc-intelligence",
+        "version": "0.3.38",
+        "title": "VOC 用户经营洞察",
+        "summary": "小红书/抖音/视频号 VOC 情报:趋势情报、问题池、单点深挖、竞品图谱、7天内容计划、口播脚本、成本测算、用量账单。",
+        "triggers": "VOC、小红书趋势、抖音趋势、视频号、问题池、竞品、内容计划、口播脚本、用户声音、经营洞察、趋势情报",
+        "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"],
+        "src": "npm @vocmarket/voc-skill 0.3.38",
+    },
+    {
+        "dir": "fmode-tihao",
+        "slug": "fmode-skill-fmode-tihao",
+        "version": "1.0.19",
+        "title": "提号 SOP 达人/博主研究",
+        "summary": "达人/博主候选研究:读取brief、调用VOC电商代理、豆包视觉分析、达人排名、导出商务可用名单。",
+        "triggers": "提号、达人、博主、创作者研究、brief、商务名单、红人、kol",
+        "sub_skills": ["tihao-creator-sourcing"],
+        "src": "npm @vocmarket/tihao 1.0.19",
+    },
+    {
+        "dir": "fmode-pay",
+        "slug": "fmode-skill-fmode-pay",
+        "version": "0.1.0",
+        "title": "微信特约商户自动化进件",
+        "summary": "微信服务商特约商户进件:资料收集 → APIv3 签名 → 云函数提交 → 二维码签约 → 归档。",
+        "triggers": "微信商户、进件、特约商户、fmode-pay、商户开通、支付开通",
+        "sub_skills": ["wxpay-merchant-apply", "wxpay-merchant-status", "wxpay-merchant-upload", "wxpay-merchant-archive"],
+        "src": "本次 fmode-pay 开发",
+    },
+    {
+        "dir": "fmode-courseware",
+        "slug": "fmode-skill-fmode-courseware",
+        "version": "0.1.0",
+        "title": "课程课件生产标准",
+        "summary": "课件/报告 HTML 生产标准:委派 FmodeCode、基准学习、素材归档、证据链、分层验收。",
+        "triggers": "课件、课程、导入课、课纲、验收、skill-present",
+        "sub_skills": ["skill-present-course-production", "html-course-delivery", "html-report-delivery"],
+        "src": "skill-present 抽取",
+    },
+    {
+        "dir": "fmode-report-publish",
+        "slug": "fmode-skill-fmode-report-publish",
+        "version": "0.1.0",
+        "title": "HTML 报告制作发布",
+        "summary": "网页报告交付:手机侧边栏 + 区块化 + 数据优先,交付到 S3 公开 URL。",
+        "triggers": "出报告、HTML报告、可视化报告、S3、报告交付、发布链接",
+        "sub_skills": ["html-report-delivery", "fmode-storage"],
+        "src": "Hermes html-report-delivery 抽取",
+    },
+    {
+        "dir": "fmode-product-lab",
+        "slug": "fmode-skill-fmode-product-lab",
+        "version": "0.2.0",
+        "title": "新品研发实验室",
+        "summary": "新品研发:VOC 采集 + KANO + 市场分析 + 竞争 + 定位 + 错位竞争全流程。",
+        "triggers": "新品研发、产品开发、健康快消、VOC、KANO、市场分析、定位、竞品",
+        "sub_skills": ["product-lab-workflow"],
+        "src": "npm fmode-product-lab 0.2.0",
+    },
+]
+
+for s in skills:
+    d = os.path.join(BASE, s['dir'])
+    os.makedirs(os.path.join(d, 'scripts'), exist_ok=True)
+    os.makedirs(os.path.join(d, 'references'), exist_ok=True)
+
+    sub_lines = "\n".join(f"- `{sub}`" for sub in s['sub_skills'])
+    ref_lines = f"- 原始来源: {s['src']}"
+
+    skill_md = f"""---
+slug: {s['slug']}
+displayName: {s['dir']}
+version: {s['version']}
+name: {s['dir']}
+description: {s['summary']} 触发词:{s['triggers']}
+tags: [FmodeAgent, FmodeCode, 应用级, {s['dir'].replace('fmode-','')}]
+platform: Both
+level: 应用级
+category: 平台基础设施
+icon: 🏢
+license: MPL-2.0
+author: Fmode (未来飞马)
+---
+
+# {s['title']}
+
+## 触发词
+
+{s['triggers']}
+
+## 能力分解
+
+{s['sub_skills']}
+
+{ref_lines}
+
+## 使用规则
+
+- 用户只需要自然语言描述业务场景,不要强迫了解参数
+- 未明确要求真实采集前,先使用演示样例(sample);明确 live 时再检查凭证/余额
+- 首轮输出采用"初步判断、机会假设、待校准"口径,附证据
+
+## License
+
+MPL-2.0 © 2026 Fmode (未来飞马)
+"""
+    with open(os.path.join(d, 'SKILL.md'), 'w', encoding='utf-8') as f:
+        f.write(skill_md)
+    with open(os.path.join(d, 'references', 'source.md'), 'w', encoding='utf-8') as f:
+        f.write(f"# {s['title']} 参考\n\n{ref_lines}\n")
+    print(f"✅ 生成 {s['dir']}")
+
+print("🎉 应用层子技能生成完毕")

+ 22 - 0
scripts/gen-dirs.sh

@@ -0,0 +1,22 @@
+#!/usr/bin/env bash
+# 批量生成 fmode-skillhub 服务层子技能骨架(ESM)
+set -e
+cd /opt/data/projects/fmode-skillhub/skills
+
+# 定义每个子技能: 目录|name|description(触发词+行为)
+SKILLS='
+accounts|fmode-account|fmode账号。手机验证码注册/登录/sessionToken管理。发送验证码、校验登录、校验会话、保存token到受保护profile
+enterprise|fmode-enterprise|fmode企业。企业开通状态查询、独立部署sub-standalone申请、Company订阅状态。手机号注册后确认是否在企业
+cloud-functions|fmode-cloud-functions|fmode云函数。在Function合同表部署业务云函数并通过/api/functions调用。动态函数源进Function合同表,不建用户维护服务器
+cloud-resources|fmode-cloud-resources|fmode云资源。领取/部署到华为云。调/api/functions+deploy/huaweicloud拿到平台签发STS应用到用户项目
+static-publish|fmode-static-publish|fmode静态发布。前后端构建产物发布到OBS+CDN拿公开URL。调deploy/huaweicloud+huaweicloud-cdn-refresh,obsutil同步
+git-archive|fmode-git-archive|fmode Git归档。项目源码归档到Fmode Git(git.fmode.cn)。建gogs账号personal token建仓推代码,验证SHA
+'
+
+echo "$SKILLS" | while IFS='|' read -r _name name desc; do
+  [ -z "$name" ] && continue
+  dir="$name"
+  mkdir -p "$dir/scripts" "$dir/references"
+  echo "=== 生成 $dir ==="
+done
+echo "✅ 目录骨架完成"

+ 37 - 0
scripts/gen-inventory.py

@@ -0,0 +1,37 @@
+#!/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']}")

+ 86 - 0
scripts/gen-published-skills.py

@@ -0,0 +1,86 @@
+#!/usr/bin/env python3
+"""生成服务层已发布技能(fmode-vision/listen/ffmpeg/qiwei/storage) + inventory.json"""
+import os, json
+
+BASE = '/opt/data/projects/fmode-skillhub/skills'
+
+skills = [
+    {"dir":"fmode-vision","slug":"fmode-skill-fmode-vision","ver":"0.1.1","title":"视觉识别","summary":"图片/视频结构化视觉分析:宿主多模态优先,回落 Fmode API(豆包/Doubao)。","triggers":"看图、识图、截图分析、UI截图、视觉识别、图片文字、图像分析、doubao、vision","src":"npm fmode-vision","endpoint":"POST https://api.fmode.cn/v1/chat/completions"},
+    {"dir":"fmode-listen","slug":"fmode-skill-fmode-listen","ver":"0.1.2","title":"录音转写","summary":"录音/视频音轨转文字(讯飞 LFASR × Fmode 网关),多语种/方言/说话人分离,服务端计费。","triggers":"转写、录音、语音转文字、ASR、讯飞、说话人分离、meeting转写","src":"npm fmode-listen","endpoint":"POST https://server.fmode.cn/api/listen/transcribe"},
+    {"dir":"fmode-ffmpeg","slug":"fmode-skill-fmode-ffmpeg","ver":"0.1.1","title":"音视频处理","summary":"FFmpeg 音视频处理:抽音轨、转码、压缩、裁剪、截图。捆绑静态二进制零系统依赖。","triggers":"ffmpeg、抽音轨、转码、压缩、裁剪视频、截图、音视频处理、media","src":"npm fmode-ffmpeg","endpoint":"CLI 本地执行"},
+    {"dir":"fmode-qiwei","slug":"fmode-skill-fmode-qiwei","ver":"0.5.2","title":"企微网关 SDK","summary":"企业微信网关:消息收发、通讯录、应用管理封装。","triggers":"企微、企业微信、WeCom、qiwei、公众号、消息推送、通讯录","src":"npm fmode-qiwei","endpoint":"gateway"},
+    {"dir":"fmode-storage","slug":"fmode-skill-fmode-storage","ver":"1.1.0","title":"对象存储与公开分享","summary":"二进制大文件上云,本地零占用,一键生成公开分享链接(S3/OBS)。","triggers":"上传、存储、对象存储、S3、OBS、分享链接、公开URL、托管文件","src":"skill-storage 1.1.0","endpoint":"https://s3.fmode.cn/<key>"},
+]
+
+inven = []
+for s in skills:
+    d = os.path.join(BASE, s['dir'])
+    os.makedirs(os.path.join(d,'scripts'),exist_ok=True)
+    os.makedirs(os.path.join(d,'references'),exist_ok=True)
+    skill_md = f"""---
+slug: {s['slug']}
+displayName: {s['dir']}
+version: {s['ver']}
+name: {s['dir']}
+description: {s['summary']} 触发词:{s['triggers']}
+tags: [FmodeAgent, FmodeCode, 服务级, {s['dir'].replace('fmode-','')}]
+platform: Both
+level: 服务级
+category: 平台基础设施
+icon: 🛠️
+license: MPL-2.0
+author: Fmode (未来飞马)
+---
+
+# {s['title']}
+
+## 触发词
+{s['triggers']}
+
+## 快速开始
+```bash
+node scripts/index.mjs <action>
+```
+或按 {s['src']} 的官方命令(`npx --yes {s['src'].split(' ')[-1]}@latest workspace`)。
+
+## 端点
+- {s['endpoint']}
+
+## 来源
+- {s['src']}
+
+## License
+MPL-2.0 © 2026 Fmode (未来飞马)
+"""
+    open(os.path.join(d,'SKILL.md'),'w',encoding='utf-8').write(skill_md)
+    open(os.path.join(d,'references','source.md'),'w',encoding='utf-8').write(f"# 来源\n{s['src']}\n端点: {s['endpoint']}\n")
+    inven.append({"name":s['dir'],"slug":s['slug'],"version":s['ver'],"tier":"service","source":s['src']})
+    print(f"✅ {s['dir']}")
+
+# 汇总全部技能到 inventory.json
+all_skills = sorted(os.listdir(BASE))
+inventory = {
+    "name": "fmode-skillhub",
+    "version": "0.1.0",
+    "generatedAt": __import__('datetime').datetime.now().isoformat(),
+    "format": "esm",
+    "skills": [],
+}
+for name in all_skills:
+    full = os.path.join(BASE, name)
+    if not os.path.isdir(full): continue
+    # 读 SKILL.md frontmatter 的 slug/version/level
+    slug=version=level=""
+    try:
+        md = open(os.path.join(full,'SKILL.md'),encoding='utf-8').read()
+        for line in md.split('\n')[:20]:
+            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()
+    except: pass
+    inventory["skills"].append({"name":name,"slug":slug or f"fmode-skill-{name}","version":version,"level":level})
+
+with open('/opt/data/projects/fmode-skillhub/skills/inventory.json','w',encoding='utf-8') as f:
+    json.dump(inventory, f, ensure_ascii=False, indent=2)
+print(f"\n📊 inventory.json 生成: {len(inventory['skills'])} 个子技能")
+print("🎉 服务层已发布技能补齐")

+ 209 - 0
scripts/gen-service-skills.py

@@ -0,0 +1,209 @@
+#!/usr/bin/env python3
+"""批量生成 fmode-skillhub 服务层子技能 ESM 结构(统一规范)"""
+import os, textwrap
+
+BASE = '/opt/data/projects/fmode-skillhub/skills'
+
+skills = [
+    {
+        "dir": "fmode-account",
+        "name": "fmode-account",
+        "slug": "fmode-skill-fmode-account",
+        "version": "0.1.0",
+        "title": "Fmode 账号(手机验证码注册/登录)",
+        "summary": "Fmode 账号注册登录:手机验证码 → sessionToken → 企业开通。数字分身初始化第一步。",
+        "triggers": "注册、登录、验证码、sessionToken、账号、手机号、数字分身初始化、fmod账号",
+        "endpoints": [
+            ("POST https://server.fmode.cn/api/apig/message", "发送验证码 {mobile,company}"),
+            ("GET https://server.fmode.cn/api/fmode/mobile", "验证码登录 {mobile,code} → data.token/data.newapiToken"),
+            ("GET https://server.fmode.cn/parse/users/me", "校验会话 Bearer token"),
+        ],
+        "keypoints": ["token 走受保护 profile(0700),不进聊天/project/Git/日志", "验证码只用于立即登录请求", "Windows 用当前用户目录,POSIX 0700/0600"],
+    },
+    {
+        "dir": "fmode-enterprise",
+        "name": "fmode-enterprise",
+        "slug": "fmode-skill-fmode-enterprise",
+        "version": "0.1.0",
+        "title": "Fmode 企业(开通状态/独立部署)",
+        "summary": "Fmode 企业状态:查询订阅、申请独立部署、轮询开通。数字分身企业开通。",
+        "triggers": "企业、开通、订阅、enterprise、Company、独立部署、sub、trial",
+        "endpoints": [
+            ("POST https://server.fmode.cn/api/fmode/enterprise/subscription/status", "查企业状态 {sessionToken}"),
+            ("POST https://server.fmode.cn/api/fmode/enterprise/subscription/trial-standalone", "申请独立部署 {name,sessionToken}"),
+            ("POST https://server.fmode.cn/api/fmode/enterprise/subscription/provision/retry", "重试开通(仅失败后)"),
+        ],
+        "keypoints": ["不在企业时问人名(非企业名)再trial-standalone", "仅 provision pending/running 时轮询状态", "绝不索要数据库URI"],
+    },
+    {
+        "dir": "fmode-cloud-functions",
+        "name": "fmode-cloud-functions",
+        "slug": "fmode-skill-fmode-cloud-functions",
+        "version": "0.1.0",
+        "title": "Fmode 云函数(Function 合同 + /api/functions)",
+        "summary": "Fmode 云函数部署与调用:Function 合同表存动态函数源,/api/functions 发布执行。",
+        "triggers": "云函数、Function、/api/functions、后端函数、业务接口、动态函数",
+        "endpoints": [
+            ("POST https://server.fmode.cn/api/functions", "调用/注册云函数 {token, path, params}"),
+        ],
+        "keypoints": ["CRUD 不建用户维护服务器,动态函数进 Function 合同表", "handler(request,response) 签名 + 会话鉴权 + 租户校验 + 幂等", "masterKey/dbURI/平台session 绝不进浏览器 bundle"],
+    },
+    {
+        "dir": "fmode-cloud-resources",
+        "name": "fmode-cloud-resources",
+        "slug": "fmode-skill-fmode-cloud-resources",
+        "version": "0.1.0",
+        "title": "Fmode 云资源(华为云 STS 部署)",
+        "summary": "Fmode 云资源领取:平台签发项目级 STS,华为云 OBS 部署,无需用户华为账号。",
+        "triggers": "云资源、领取、部署、华为云、STS、obs、huaweicloud、deploy",
+        "endpoints": [
+            ("POST https://server.fmode.cn/api/apig/deploy/huaweicloud", "取 STS {token, projectId} → accessKey/secretKey/securityToken/expiresAt/obsPath"),
+        ],
+        "keypoints": ["STS 平台签发,非用户华为账号,用户无需华为账号/服务器", "过期(<5min)丢弃整套后重取,最多重试2次", "绝不替换为永久密钥"],
+    },
+    {
+        "dir": "fmode-static-publish",
+        "name": "fmode-static-publish",
+        "slug": "fmode-skill-fmode-static-publish",
+        "version": "0.1.0",
+        "title": "Fmode 静态发布(OBS+CDN 公开 URL)",
+        "summary": "Fmode 前后端发布:构建 → 注册 Project → STS → obsutil 同步 OBS → CDN 刷新 → 验证公开 URL。",
+        "triggers": "发布、部署、上线、静态站、前端、课件、CDN、obsutil、public URL、huaweicloud-cdn-refresh",
+        "endpoints": [
+            ("POST https://server.fmode.cn/api/functions", "注册 Project {token,path:/fmode/project-register,params:{name,version,gitUrl}}"),
+            ("POST https://server.fmode.cn/api/apig/deploy/huaweicloud", "取 STS {token,projectId}"),
+            ("POST https://server.fmode.cn/api/apig/deploy/huaweicloud-cdn-refresh", "CDN 刷新 {token,projectId,path}"),
+        ],
+        "keypoints": ["注册Project→构建→扫token→取STS→上传obsPath→CDN刷新→验证URL 逐门禁报告", "obsPath 必须是 dev/<projectId>/", "会话过期先重播登录再取新STS,不求华为凭据"],
+    },
+    {
+        "dir": "fmode-git-archive",
+        "name": "fmode-git-archive",
+        "slug": "fmode-skill-fmode-git-archive",
+        "version": "0.1.0",
+        "title": "Fmode Git 归档(Gitea + 源码入库)",
+        "summary": "Fmode 项目归档:源码进 git.fmode.cn,建 Gogs 账号/个人 token/建仓/推送/验证 SHA。",
+        "triggers": "归档、git、Gogs、Gitea、git.fmode.cn、仓库、源码入库、git archive",
+        "endpoints": [
+            ("POST https://server.fmode.cn/api/functions", "Gogs admin proxy 建用户 {token,path:/gogs/admin/proxy,params:{method:POST,path:/admin/users,...}}"),
+            ("POST https://git.fmode.cn/api/v1/users/<username>/tokens", "创建个人 token"),
+            ("POST https://git.fmode.cn/api/v1/user/repos", "创建私有仓库"),
+        ],
+        "keypoints": ["用户名强制 fmode-<phone>,请求值忽略占位", "token 绝不进 remote URL,用 HTTPS + token 密码", "排除 .env/密钥/构建产物/日志", "git ls-remote 验证远端 SHA,发布与归档分开报告"],
+    },
+]
+
+# 通用 ESM 脚本模板(fetch 封装)
+FETCH_TMPL = '''#!/usr/bin/env node
+/**
+ * {title} — 辅助脚本(零 npm 依赖,Node>=18 自带 fetch)
+ * Copyright (c) 未来飞马  MPL-2.0
+ *
+ * 用法:node index.mjs <action> [jsonPayload]
+ */
+const BASE = "https://server.fmode.cn";
+
+async function call(method, path, body, token) {{
+  const headers = {{ "content-type": "application/json" }};
+  if (token) headers["authorization"] = "Bearer " + token;
+  const res = await fetch(BASE + path, {{
+    method, headers, body: body ? JSON.stringify(body) : undefined,
+  }});
+  const text = await res.text();
+  // 脱敏输出:token/密钥不打印
+  const safe = text.replace(/(token|authorization|accessKey|secretKey|securityToken)["'\\s:]+([^",}}]+)/gi, "$1:***");
+  console.log(safe);
+  return res;
+}}
+
+const [action, raw] = process.argv.slice(2);
+let payload = {{}};
+try {{ if (raw) payload = JSON.parse(raw); }} catch {{ payload = {{ _raw: raw }}; }}
+
+{actions}
+
+'''
+
+def actions_for(epoints):
+    lines = []
+    for ep in epoints:
+        method, path = ep[0].split(' ')
+        parts = path.replace('https://server.fmode.cn','').strip()
+        # 生成一个如 call("<METHOD>","<PATH>", payload) 的示例
+        lines.append(f'// 示例端点: {method} {ep[1]}')
+    return "\n".join(lines)
+
+for s in skills:
+    d = os.path.join(BASE, s['dir'])
+    os.makedirs(os.path.join(d, 'scripts'), exist_ok=True)
+    os.makedirs(os.path.join(d, 'references'), exist_ok=True)
+
+    # SKILL.md
+    ep_lines = "\n".join(f"| `{m} {p}` | {desc} |" for m, p, desc in [
+        (m, p, dsc) for m, p, dsc in [(ep[0].split(' ')[0], ep[0].split(' ')[1], ep[1]) for ep in s['endpoints']]
+    ])
+    kp_lines = "\n".join(f"- ⚠️ {k}" for k in s['keypoints'])
+
+    skill_md = f"""---
+slug: {s['slug']}
+displayName: {s['dir']}
+version: {s['version']}
+name: {s['dir']}
+description: {s['summary']} 触发词:{s['triggers']}
+tags: [FmodeAgent, FmodeCode, 服务级, {s['dir'].replace('fmode-','')}]
+platform: Both
+level: 服务级
+category: 平台基础设施
+icon: ⚙️
+license: MPL-2.0
+author: Fmode (未来飞马)
+---
+
+# {s['title']}
+
+## 触发词
+
+{s['triggers']}
+
+## 快速开始(ESM)
+
+```bash
+node scripts/index.mjs <action> '{{"...": ...}}'
+```
+
+或 Agent 直接按流程调用下述端点。
+
+## 端点清单
+
+| 端点 | 作用 |
+|------|------|
+{ep_lines}
+
+## 关键纪律
+
+{kp_lines}
+
+## References
+
+- 详见 `references/` 目录
+- 完整平台规范见 skill-core-guide(`fmode-skillhub` 自带)
+
+## License
+
+MPL-2.0 © 2026 Fmode (未来飞马)
+"""
+    with open(os.path.join(d, 'SKILL.md'), 'w', encoding='utf-8') as f:
+        f.write(skill_md)
+
+    # scripts/index.mjs(零依赖 fetch 封装)
+    fetch_js = FETCH_TMPL.format(title=s['title'], actions=actions_for(s['endpoints']))
+    with open(os.path.join(d, 'scripts', 'index.mjs'), 'w', encoding='utf-8') as f:
+        f.write(fetch_js)
+
+    # references/endpoints.md
+    with open(os.path.join(d, 'references', 'endpoints.md'), 'w', encoding='utf-8') as f:
+        f.write(f"# {s['title']} 端点参考\n\n" + ep_lines + "\n")
+
+    print(f"✅ 生成 {s['dir']}")
+
+print("🎉 服务层子技能生成完毕")

+ 89 - 0
scripts/installer.mjs

@@ -0,0 +1,89 @@
+#!/usr/bin/env node
+/**
+ * fmode-skillhub installer.mjs
+ * 检测宿主 Agent,把仓库内 skills/ 下所有子技能分发到宿主技能目录。
+ * Copyright (c) 未来飞马  MPL-2.0
+ *
+ * 用法:
+ *   node installer.mjs --all      分发全部子技能到检测到的宿主目录
+ *   node installer.mjs --check    检查现状(只读,不写文件)
+ *   node installer.mjs --host wb  指定宿主 wb|cc|hermes(跳过自动检测)
+ */
+import { existsSync, readdirSync, mkdirSync, cpSync, writeFileSync } from 'node:fs';
+import { join, dirname } from 'node:path';
+import { homedir } from 'node:os';
+import { fileURLToPath } from 'node:url';
+
+const __dirname = dirname(fileURLToPath(import.meta.url));
+const ROOT = join(__dirname, '..');
+const SKILLS_DIR = join(ROOT, 'skills');
+
+// 宿主 -> 技能目录 映射(ESM 技能放在各宿主全局技能位置)
+const HOSTS = {
+  wb:     { name: 'WorkBuddy',   dir: () => join(homedir(), '.workbuddy', 'skills') },
+  cc:     { name: 'Claude Code', dir: () => join(homedir(), '.claude', 'skills') },
+  hermes: { name: 'Hermes Agent', dir: () => join(homedir(), '.hermes', 'skills') },
+};
+
+function detectHost() {
+  // 探测哪个宿主目录存在
+  if (existsSync(join(homedir(), '.workbuddy', 'skills')) ||
+      existsSync(join(homedir(), '.workbuddy'))) return 'wb';
+  if (existsSync(join(homedir(), '.claude', 'skills')) ||
+      existsSync(join(homedir(), '.claude')) ||
+      process.env.CLAUDE_CODE_ENTRYPOINT) return 'cc';
+  if (existsSync(join(homedir(), '.hermes', 'skills')) ||
+      process.env.HERMES_HOME) return 'hermes';
+  return 'cc'; // 默认 Claude-compatible
+}
+
+function listSkills() {
+  if (!existsSync(SKILLS_DIR)) return [];
+  return readdirSync(SKILLS_DIR, { withFileTypes: true })
+    .filter(e => e.isDirectory())
+    .map(e => e.name)
+    .filter(n => n.startsWith('fmode-'));
+}
+
+function main() {
+  const args = process.argv.slice(2);
+  const check = args.includes('--check');
+  const hostArg = args.find(a => a.startsWith('--host'));
+  const hostKey = (hostArg ? hostArg.split('=')[1] || process.argv[process.argv.indexOf(hostArg)+1] : detectHost()) || detectHost();
+  const host = HOSTS[hostKey];
+  if (!host) { console.error(`未知宿主: ${hostKey}`); process.exit(1); }
+
+  const skills = listSkills();
+  console.log(`[fmode-skillhub] 检测到宿主: ${host.name}`);
+  console.log(`[fmode-skillhub] 发现子技能: ${skills.length} 个 -> ${skills.join(', ')}`);
+  if (skills.length === 0) { console.error('未找到子技能(打开 /skills 目录检查)'); process.exit(1); }
+
+  if (check) {
+    const target = host.dir();
+    console.log(`[check] 目标目录: ${target}`);
+    console.log(`[check] 已存在: ${Object.keys(HOSTS).map(k => `${k}:${existsSync(join(homedir(), k === 'wb' ? '.workbuddy' : k === 'cc' ? '.claude' : '.hermes'))}`).join(' ')}`);
+    process.exit(0);
+  }
+
+  const target = host.dir();
+  console.log(`[fmode-skillhub] 安装到: ${target}`);
+  const installed = [];
+  for (const skill of skills) {
+    const src = join(SKILLS_DIR, skill);
+    const dest = join(target, skill);
+    if (!existsSync(src)) continue;
+    mkdirSync(target, { recursive: true });
+    cpSync(src, dest, { recursive: true, force: true });
+    installed.push(skill);
+  }
+  writeFileSync(join(target, 'fmode-skillhub.installed.json'), JSON.stringify({
+    installedAt: new Date().toISOString(),
+    host: hostKey,
+    count: installed.length,
+    skills: installed,
+  }, null, 2));
+  console.log(`✅ 安装完成: ${installed.length} 个子技能已落盘到 ${target}`);
+  console.log(`清单: fmode-skillhub.installed.json`);
+}
+
+main();

+ 51 - 0
skills/fmode-account/SKILL.md

@@ -0,0 +1,51 @@
+---
+slug: fmode-skill-fmode-account
+displayName: fmode-account
+version: 0.1.0
+name: fmode-account
+description: Fmode 账号注册登录:手机验证码 → sessionToken → 企业开通。数字分身初始化第一步。 触发词:注册、登录、验证码、sessionToken、账号、手机号、数字分身初始化、fmod账号
+tags: [FmodeAgent, FmodeCode, 服务级, account]
+platform: Both
+level: 服务级
+category: 平台基础设施
+icon: ⚙️
+license: MPL-2.0
+author: Fmode (未来飞马)
+---
+
+# Fmode 账号(手机验证码注册/登录)
+
+## 触发词
+
+注册、登录、验证码、sessionToken、账号、手机号、数字分身初始化、fmod账号
+
+## 快速开始(ESM)
+
+```bash
+node scripts/index.mjs <action> '{"...": ...}'
+```
+
+或 Agent 直接按流程调用下述端点。
+
+## 端点清单
+
+| 端点 | 作用 |
+|------|------|
+| `POST https://server.fmode.cn/api/apig/message` | 发送验证码 {mobile,company} |
+| `GET https://server.fmode.cn/api/fmode/mobile` | 验证码登录 {mobile,code} → data.token/data.newapiToken |
+| `GET https://server.fmode.cn/parse/users/me` | 校验会话 Bearer token |
+
+## 关键纪律
+
+- ⚠️ token 走受保护 profile(0700),不进聊天/project/Git/日志
+- ⚠️ 验证码只用于立即登录请求
+- ⚠️ Windows 用当前用户目录,POSIX 0700/0600
+
+## References
+
+- 详见 `references/` 目录
+- 完整平台规范见 skill-core-guide(`fmode-skillhub` 自带)
+
+## License
+
+MPL-2.0 © 2026 Fmode (未来飞马)

+ 5 - 0
skills/fmode-account/references/endpoints.md

@@ -0,0 +1,5 @@
+# Fmode 账号(手机验证码注册/登录) 端点参考
+
+| `POST https://server.fmode.cn/api/apig/message` | 发送验证码 {mobile,company} |
+| `GET https://server.fmode.cn/api/fmode/mobile` | 验证码登录 {mobile,code} → data.token/data.newapiToken |
+| `GET https://server.fmode.cn/parse/users/me` | 校验会话 Bearer token |

+ 30 - 0
skills/fmode-account/scripts/index.mjs

@@ -0,0 +1,30 @@
+#!/usr/bin/env node
+/**
+ * Fmode 账号(手机验证码注册/登录) — 辅助脚本(零 npm 依赖,Node>=18 自带 fetch)
+ * Copyright (c) 未来飞马  MPL-2.0
+ *
+ * 用法:node index.mjs <action> [jsonPayload]
+ */
+const BASE = "https://server.fmode.cn";
+
+async function call(method, path, body, token) {
+  const headers = { "content-type": "application/json" };
+  if (token) headers["authorization"] = "Bearer " + token;
+  const res = await fetch(BASE + path, {
+    method, headers, body: body ? JSON.stringify(body) : undefined,
+  });
+  const text = await res.text();
+  // 脱敏输出:token/密钥不打印
+  const safe = text.replace(/(token|authorization|accessKey|secretKey|securityToken)["'\s:]+([^",}]+)/gi, "$1:***");
+  console.log(safe);
+  return res;
+}
+
+const [action, raw] = process.argv.slice(2);
+let payload = {};
+try { if (raw) payload = JSON.parse(raw); } catch { payload = { _raw: raw }; }
+
+// 示例端点: POST 发送验证码 {mobile,company}
+// 示例端点: GET 验证码登录 {mobile,code} → data.token/data.newapiToken
+// 示例端点: GET 校验会话 Bearer token
+

+ 49 - 0
skills/fmode-cloud-functions/SKILL.md

@@ -0,0 +1,49 @@
+---
+slug: fmode-skill-fmode-cloud-functions
+displayName: fmode-cloud-functions
+version: 0.1.0
+name: fmode-cloud-functions
+description: Fmode 云函数部署与调用:Function 合同表存动态函数源,/api/functions 发布执行。 触发词:云函数、Function、/api/functions、后端函数、业务接口、动态函数
+tags: [FmodeAgent, FmodeCode, 服务级, cloud-functions]
+platform: Both
+level: 服务级
+category: 平台基础设施
+icon: ⚙️
+license: MPL-2.0
+author: Fmode (未来飞马)
+---
+
+# Fmode 云函数(Function 合同 + /api/functions)
+
+## 触发词
+
+云函数、Function、/api/functions、后端函数、业务接口、动态函数
+
+## 快速开始(ESM)
+
+```bash
+node scripts/index.mjs <action> '{"...": ...}'
+```
+
+或 Agent 直接按流程调用下述端点。
+
+## 端点清单
+
+| 端点 | 作用 |
+|------|------|
+| `POST https://server.fmode.cn/api/functions` | 调用/注册云函数 {token, path, params} |
+
+## 关键纪律
+
+- ⚠️ CRUD 不建用户维护服务器,动态函数进 Function 合同表
+- ⚠️ handler(request,response) 签名 + 会话鉴权 + 租户校验 + 幂等
+- ⚠️ masterKey/dbURI/平台session 绝不进浏览器 bundle
+
+## References
+
+- 详见 `references/` 目录
+- 完整平台规范见 skill-core-guide(`fmode-skillhub` 自带)
+
+## License
+
+MPL-2.0 © 2026 Fmode (未来飞马)

+ 3 - 0
skills/fmode-cloud-functions/references/endpoints.md

@@ -0,0 +1,3 @@
+# Fmode 云函数(Function 合同 + /api/functions) 端点参考
+
+| `POST https://server.fmode.cn/api/functions` | 调用/注册云函数 {token, path, params} |

+ 28 - 0
skills/fmode-cloud-functions/scripts/index.mjs

@@ -0,0 +1,28 @@
+#!/usr/bin/env node
+/**
+ * Fmode 云函数(Function 合同 + /api/functions) — 辅助脚本(零 npm 依赖,Node>=18 自带 fetch)
+ * Copyright (c) 未来飞马  MPL-2.0
+ *
+ * 用法:node index.mjs <action> [jsonPayload]
+ */
+const BASE = "https://server.fmode.cn";
+
+async function call(method, path, body, token) {
+  const headers = { "content-type": "application/json" };
+  if (token) headers["authorization"] = "Bearer " + token;
+  const res = await fetch(BASE + path, {
+    method, headers, body: body ? JSON.stringify(body) : undefined,
+  });
+  const text = await res.text();
+  // 脱敏输出:token/密钥不打印
+  const safe = text.replace(/(token|authorization|accessKey|secretKey|securityToken)["'\s:]+([^",}]+)/gi, "$1:***");
+  console.log(safe);
+  return res;
+}
+
+const [action, raw] = process.argv.slice(2);
+let payload = {};
+try { if (raw) payload = JSON.parse(raw); } catch { payload = { _raw: raw }; }
+
+// 示例端点: POST 调用/注册云函数 {token, path, params}
+

+ 49 - 0
skills/fmode-cloud-resources/SKILL.md

@@ -0,0 +1,49 @@
+---
+slug: fmode-skill-fmode-cloud-resources
+displayName: fmode-cloud-resources
+version: 0.1.0
+name: fmode-cloud-resources
+description: Fmode 云资源领取:平台签发项目级 STS,华为云 OBS 部署,无需用户华为账号。 触发词:云资源、领取、部署、华为云、STS、obs、huaweicloud、deploy
+tags: [FmodeAgent, FmodeCode, 服务级, cloud-resources]
+platform: Both
+level: 服务级
+category: 平台基础设施
+icon: ⚙️
+license: MPL-2.0
+author: Fmode (未来飞马)
+---
+
+# Fmode 云资源(华为云 STS 部署)
+
+## 触发词
+
+云资源、领取、部署、华为云、STS、obs、huaweicloud、deploy
+
+## 快速开始(ESM)
+
+```bash
+node scripts/index.mjs <action> '{"...": ...}'
+```
+
+或 Agent 直接按流程调用下述端点。
+
+## 端点清单
+
+| 端点 | 作用 |
+|------|------|
+| `POST https://server.fmode.cn/api/apig/deploy/huaweicloud` | 取 STS {token, projectId} → accessKey/secretKey/securityToken/expiresAt/obsPath |
+
+## 关键纪律
+
+- ⚠️ STS 平台签发,非用户华为账号,用户无需华为账号/服务器
+- ⚠️ 过期(<5min)丢弃整套后重取,最多重试2次
+- ⚠️ 绝不替换为永久密钥
+
+## References
+
+- 详见 `references/` 目录
+- 完整平台规范见 skill-core-guide(`fmode-skillhub` 自带)
+
+## License
+
+MPL-2.0 © 2026 Fmode (未来飞马)

+ 3 - 0
skills/fmode-cloud-resources/references/endpoints.md

@@ -0,0 +1,3 @@
+# Fmode 云资源(华为云 STS 部署) 端点参考
+
+| `POST https://server.fmode.cn/api/apig/deploy/huaweicloud` | 取 STS {token, projectId} → accessKey/secretKey/securityToken/expiresAt/obsPath |

+ 28 - 0
skills/fmode-cloud-resources/scripts/index.mjs

@@ -0,0 +1,28 @@
+#!/usr/bin/env node
+/**
+ * Fmode 云资源(华为云 STS 部署) — 辅助脚本(零 npm 依赖,Node>=18 自带 fetch)
+ * Copyright (c) 未来飞马  MPL-2.0
+ *
+ * 用法:node index.mjs <action> [jsonPayload]
+ */
+const BASE = "https://server.fmode.cn";
+
+async function call(method, path, body, token) {
+  const headers = { "content-type": "application/json" };
+  if (token) headers["authorization"] = "Bearer " + token;
+  const res = await fetch(BASE + path, {
+    method, headers, body: body ? JSON.stringify(body) : undefined,
+  });
+  const text = await res.text();
+  // 脱敏输出:token/密钥不打印
+  const safe = text.replace(/(token|authorization|accessKey|secretKey|securityToken)["'\s:]+([^",}]+)/gi, "$1:***");
+  console.log(safe);
+  return res;
+}
+
+const [action, raw] = process.argv.slice(2);
+let payload = {};
+try { if (raw) payload = JSON.parse(raw); } catch { payload = { _raw: raw }; }
+
+// 示例端点: POST 取 STS {token, projectId} → accessKey/secretKey/securityToken/expiresAt/obsPath
+

+ 36 - 0
skills/fmode-courseware/SKILL.md

@@ -0,0 +1,36 @@
+---
+slug: fmode-skill-fmode-courseware
+displayName: fmode-courseware
+version: 0.1.0
+name: fmode-courseware
+description: 课件/报告 HTML 生产标准:委派 FmodeCode、基准学习、素材归档、证据链、分层验收。 触发词:课件、课程、导入课、课纲、验收、skill-present
+tags: [FmodeAgent, FmodeCode, 应用级, courseware]
+platform: Both
+level: 应用级
+category: 平台基础设施
+icon: 🏢
+license: MPL-2.0
+author: Fmode (未来飞马)
+---
+
+# 课程课件生产标准
+
+## 触发词
+
+课件、课程、导入课、课纲、验收、skill-present
+
+## 能力分解
+
+['skill-present-course-production', 'html-course-delivery', 'html-report-delivery']
+
+- 原始来源: skill-present 抽取
+
+## 使用规则
+
+- 用户只需要自然语言描述业务场景,不要强迫了解参数
+- 未明确要求真实采集前,先使用演示样例(sample);明确 live 时再检查凭证/余额
+- 首轮输出采用"初步判断、机会假设、待校准"口径,附证据
+
+## License
+
+MPL-2.0 © 2026 Fmode (未来飞马)

+ 3 - 0
skills/fmode-courseware/references/source.md

@@ -0,0 +1,3 @@
+# 课程课件生产标准 参考
+
+- 原始来源: skill-present 抽取

+ 51 - 0
skills/fmode-enterprise/SKILL.md

@@ -0,0 +1,51 @@
+---
+slug: fmode-skill-fmode-enterprise
+displayName: fmode-enterprise
+version: 0.1.0
+name: fmode-enterprise
+description: Fmode 企业状态:查询订阅、申请独立部署、轮询开通。数字分身企业开通。 触发词:企业、开通、订阅、enterprise、Company、独立部署、sub、trial
+tags: [FmodeAgent, FmodeCode, 服务级, enterprise]
+platform: Both
+level: 服务级
+category: 平台基础设施
+icon: ⚙️
+license: MPL-2.0
+author: Fmode (未来飞马)
+---
+
+# Fmode 企业(开通状态/独立部署)
+
+## 触发词
+
+企业、开通、订阅、enterprise、Company、独立部署、sub、trial
+
+## 快速开始(ESM)
+
+```bash
+node scripts/index.mjs <action> '{"...": ...}'
+```
+
+或 Agent 直接按流程调用下述端点。
+
+## 端点清单
+
+| 端点 | 作用 |
+|------|------|
+| `POST https://server.fmode.cn/api/fmode/enterprise/subscription/status` | 查企业状态 {sessionToken} |
+| `POST https://server.fmode.cn/api/fmode/enterprise/subscription/trial-standalone` | 申请独立部署 {name,sessionToken} |
+| `POST https://server.fmode.cn/api/fmode/enterprise/subscription/provision/retry` | 重试开通(仅失败后) |
+
+## 关键纪律
+
+- ⚠️ 不在企业时问人名(非企业名)再trial-standalone
+- ⚠️ 仅 provision pending/running 时轮询状态
+- ⚠️ 绝不索要数据库URI
+
+## References
+
+- 详见 `references/` 目录
+- 完整平台规范见 skill-core-guide(`fmode-skillhub` 自带)
+
+## License
+
+MPL-2.0 © 2026 Fmode (未来飞马)

+ 5 - 0
skills/fmode-enterprise/references/endpoints.md

@@ -0,0 +1,5 @@
+# Fmode 企业(开通状态/独立部署) 端点参考
+
+| `POST https://server.fmode.cn/api/fmode/enterprise/subscription/status` | 查企业状态 {sessionToken} |
+| `POST https://server.fmode.cn/api/fmode/enterprise/subscription/trial-standalone` | 申请独立部署 {name,sessionToken} |
+| `POST https://server.fmode.cn/api/fmode/enterprise/subscription/provision/retry` | 重试开通(仅失败后) |

+ 30 - 0
skills/fmode-enterprise/scripts/index.mjs

@@ -0,0 +1,30 @@
+#!/usr/bin/env node
+/**
+ * Fmode 企业(开通状态/独立部署) — 辅助脚本(零 npm 依赖,Node>=18 自带 fetch)
+ * Copyright (c) 未来飞马  MPL-2.0
+ *
+ * 用法:node index.mjs <action> [jsonPayload]
+ */
+const BASE = "https://server.fmode.cn";
+
+async function call(method, path, body, token) {
+  const headers = { "content-type": "application/json" };
+  if (token) headers["authorization"] = "Bearer " + token;
+  const res = await fetch(BASE + path, {
+    method, headers, body: body ? JSON.stringify(body) : undefined,
+  });
+  const text = await res.text();
+  // 脱敏输出:token/密钥不打印
+  const safe = text.replace(/(token|authorization|accessKey|secretKey|securityToken)["'\s:]+([^",}]+)/gi, "$1:***");
+  console.log(safe);
+  return res;
+}
+
+const [action, raw] = process.argv.slice(2);
+let payload = {};
+try { if (raw) payload = JSON.parse(raw); } catch { payload = { _raw: raw }; }
+
+// 示例端点: POST 查企业状态 {sessionToken}
+// 示例端点: POST 申请独立部署 {name,sessionToken}
+// 示例端点: POST 重试开通(仅失败后)
+

+ 52 - 0
skills/fmode-git-archive/SKILL.md

@@ -0,0 +1,52 @@
+---
+slug: fmode-skill-fmode-git-archive
+displayName: fmode-git-archive
+version: 0.1.0
+name: fmode-git-archive
+description: Fmode 项目归档:源码进 git.fmode.cn,建 Gogs 账号/个人 token/建仓/推送/验证 SHA。 触发词:归档、git、Gogs、Gitea、git.fmode.cn、仓库、源码入库、git archive
+tags: [FmodeAgent, FmodeCode, 服务级, git-archive]
+platform: Both
+level: 服务级
+category: 平台基础设施
+icon: ⚙️
+license: MPL-2.0
+author: Fmode (未来飞马)
+---
+
+# Fmode Git 归档(Gitea + 源码入库)
+
+## 触发词
+
+归档、git、Gogs、Gitea、git.fmode.cn、仓库、源码入库、git archive
+
+## 快速开始(ESM)
+
+```bash
+node scripts/index.mjs <action> '{"...": ...}'
+```
+
+或 Agent 直接按流程调用下述端点。
+
+## 端点清单
+
+| 端点 | 作用 |
+|------|------|
+| `POST https://server.fmode.cn/api/functions` | Gogs admin proxy 建用户 {token,path:/gogs/admin/proxy,params:{method:POST,path:/admin/users,...}} |
+| `POST https://git.fmode.cn/api/v1/users/<username>/tokens` | 创建个人 token |
+| `POST https://git.fmode.cn/api/v1/user/repos` | 创建私有仓库 |
+
+## 关键纪律
+
+- ⚠️ 用户名强制 fmode-<phone>,请求值忽略占位
+- ⚠️ token 绝不进 remote URL,用 HTTPS + token 密码
+- ⚠️ 排除 .env/密钥/构建产物/日志
+- ⚠️ git ls-remote 验证远端 SHA,发布与归档分开报告
+
+## References
+
+- 详见 `references/` 目录
+- 完整平台规范见 skill-core-guide(`fmode-skillhub` 自带)
+
+## License
+
+MPL-2.0 © 2026 Fmode (未来飞马)

+ 5 - 0
skills/fmode-git-archive/references/endpoints.md

@@ -0,0 +1,5 @@
+# Fmode Git 归档(Gitea + 源码入库) 端点参考
+
+| `POST https://server.fmode.cn/api/functions` | Gogs admin proxy 建用户 {token,path:/gogs/admin/proxy,params:{method:POST,path:/admin/users,...}} |
+| `POST https://git.fmode.cn/api/v1/users/<username>/tokens` | 创建个人 token |
+| `POST https://git.fmode.cn/api/v1/user/repos` | 创建私有仓库 |

+ 30 - 0
skills/fmode-git-archive/scripts/index.mjs

@@ -0,0 +1,30 @@
+#!/usr/bin/env node
+/**
+ * Fmode Git 归档(Gitea + 源码入库) — 辅助脚本(零 npm 依赖,Node>=18 自带 fetch)
+ * Copyright (c) 未来飞马  MPL-2.0
+ *
+ * 用法:node index.mjs <action> [jsonPayload]
+ */
+const BASE = "https://server.fmode.cn";
+
+async function call(method, path, body, token) {
+  const headers = { "content-type": "application/json" };
+  if (token) headers["authorization"] = "Bearer " + token;
+  const res = await fetch(BASE + path, {
+    method, headers, body: body ? JSON.stringify(body) : undefined,
+  });
+  const text = await res.text();
+  // 脱敏输出:token/密钥不打印
+  const safe = text.replace(/(token|authorization|accessKey|secretKey|securityToken)["'\s:]+([^",}]+)/gi, "$1:***");
+  console.log(safe);
+  return res;
+}
+
+const [action, raw] = process.argv.slice(2);
+let payload = {};
+try { if (raw) payload = JSON.parse(raw); } catch { payload = { _raw: raw }; }
+
+// 示例端点: POST Gogs admin proxy 建用户 {token,path:/gogs/admin/proxy,params:{method:POST,path:/admin/users,...}}
+// 示例端点: POST 创建个人 token
+// 示例端点: POST 创建私有仓库
+

+ 34 - 0
skills/fmode-listen/SKILL.md

@@ -0,0 +1,34 @@
+---
+slug: fmode-skill-fmode-listen
+displayName: fmode-listen
+version: 0.1.2
+name: fmode-listen
+description: 录音/视频音轨转文字(讯飞 LFASR × Fmode 网关),多语种/方言/说话人分离,服务端计费。 触发词:转写、录音、语音转文字、ASR、讯飞、说话人分离、meeting转写
+tags: [FmodeAgent, FmodeCode, 服务级, listen]
+platform: Both
+level: 服务级
+category: 平台基础设施
+icon: 🛠️
+license: MPL-2.0
+author: Fmode (未来飞马)
+---
+
+# 录音转写
+
+## 触发词
+转写、录音、语音转文字、ASR、讯飞、说话人分离、meeting转写
+
+## 快速开始
+```bash
+node scripts/index.mjs <action>
+```
+或按 npm fmode-listen 的官方命令(`npx --yes fmode-listen@latest workspace`)。
+
+## 端点
+- POST https://server.fmode.cn/api/listen/transcribe
+
+## 来源
+- npm fmode-listen
+
+## License
+MPL-2.0 © 2026 Fmode (未来飞马)

+ 3 - 0
skills/fmode-listen/references/source.md

@@ -0,0 +1,3 @@
+# 来源
+npm fmode-listen
+端点: POST https://server.fmode.cn/api/listen/transcribe

+ 36 - 0
skills/fmode-pay/SKILL.md

@@ -0,0 +1,36 @@
+---
+slug: fmode-skill-fmode-pay
+displayName: fmode-pay
+version: 0.1.0
+name: fmode-pay
+description: 微信服务商特约商户进件:资料收集 → APIv3 签名 → 云函数提交 → 二维码签约 → 归档。 触发词:微信商户、进件、特约商户、fmode-pay、商户开通、支付开通
+tags: [FmodeAgent, FmodeCode, 应用级, pay]
+platform: Both
+level: 应用级
+category: 平台基础设施
+icon: 🏢
+license: MPL-2.0
+author: Fmode (未来飞马)
+---
+
+# 微信特约商户自动化进件
+
+## 触发词
+
+微信商户、进件、特约商户、fmode-pay、商户开通、支付开通
+
+## 能力分解
+
+['wxpay-merchant-apply', 'wxpay-merchant-status', 'wxpay-merchant-upload', 'wxpay-merchant-archive']
+
+- 原始来源: 本次 fmode-pay 开发
+
+## 使用规则
+
+- 用户只需要自然语言描述业务场景,不要强迫了解参数
+- 未明确要求真实采集前,先使用演示样例(sample);明确 live 时再检查凭证/余额
+- 首轮输出采用"初步判断、机会假设、待校准"口径,附证据
+
+## License
+
+MPL-2.0 © 2026 Fmode (未来飞马)

+ 3 - 0
skills/fmode-pay/references/source.md

@@ -0,0 +1,3 @@
+# 微信特约商户自动化进件 参考
+
+- 原始来源: 本次 fmode-pay 开发

+ 36 - 0
skills/fmode-product-lab/SKILL.md

@@ -0,0 +1,36 @@
+---
+slug: fmode-skill-fmode-product-lab
+displayName: fmode-product-lab
+version: 0.2.0
+name: fmode-product-lab
+description: 新品研发:VOC 采集 + KANO + 市场分析 + 竞争 + 定位 + 错位竞争全流程。 触发词:新品研发、产品开发、健康快消、VOC、KANO、市场分析、定位、竞品
+tags: [FmodeAgent, FmodeCode, 应用级, product-lab]
+platform: Both
+level: 应用级
+category: 平台基础设施
+icon: 🏢
+license: MPL-2.0
+author: Fmode (未来飞马)
+---
+
+# 新品研发实验室
+
+## 触发词
+
+新品研发、产品开发、健康快消、VOC、KANO、市场分析、定位、竞品
+
+## 能力分解
+
+['product-lab-workflow']
+
+- 原始来源: npm fmode-product-lab 0.2.0
+
+## 使用规则
+
+- 用户只需要自然语言描述业务场景,不要强迫了解参数
+- 未明确要求真实采集前,先使用演示样例(sample);明确 live 时再检查凭证/余额
+- 首轮输出采用"初步判断、机会假设、待校准"口径,附证据
+
+## License
+
+MPL-2.0 © 2026 Fmode (未来飞马)

+ 3 - 0
skills/fmode-product-lab/references/source.md

@@ -0,0 +1,3 @@
+# 新品研发实验室 参考
+
+- 原始来源: npm fmode-product-lab 0.2.0

+ 36 - 0
skills/fmode-report-publish/SKILL.md

@@ -0,0 +1,36 @@
+---
+slug: fmode-skill-fmode-report-publish
+displayName: fmode-report-publish
+version: 0.1.0
+name: fmode-report-publish
+description: 网页报告交付:手机侧边栏 + 区块化 + 数据优先,交付到 S3 公开 URL。 触发词:出报告、HTML报告、可视化报告、S3、报告交付、发布链接
+tags: [FmodeAgent, FmodeCode, 应用级, report-publish]
+platform: Both
+level: 应用级
+category: 平台基础设施
+icon: 🏢
+license: MPL-2.0
+author: Fmode (未来飞马)
+---
+
+# HTML 报告制作发布
+
+## 触发词
+
+出报告、HTML报告、可视化报告、S3、报告交付、发布链接
+
+## 能力分解
+
+['html-report-delivery', 'fmode-storage']
+
+- 原始来源: Hermes html-report-delivery 抽取
+
+## 使用规则
+
+- 用户只需要自然语言描述业务场景,不要强迫了解参数
+- 未明确要求真实采集前,先使用演示样例(sample);明确 live 时再检查凭证/余额
+- 首轮输出采用"初步判断、机会假设、待校准"口径,附证据
+
+## License
+
+MPL-2.0 © 2026 Fmode (未来飞马)

+ 3 - 0
skills/fmode-report-publish/references/source.md

@@ -0,0 +1,3 @@
+# HTML 报告制作发布 参考
+
+- 原始来源: Hermes html-report-delivery 抽取

+ 51 - 0
skills/fmode-static-publish/SKILL.md

@@ -0,0 +1,51 @@
+---
+slug: fmode-skill-fmode-static-publish
+displayName: fmode-static-publish
+version: 0.1.0
+name: fmode-static-publish
+description: Fmode 前后端发布:构建 → 注册 Project → STS → obsutil 同步 OBS → CDN 刷新 → 验证公开 URL。 触发词:发布、部署、上线、静态站、前端、课件、CDN、obsutil、public URL、huaweicloud-cdn-refresh
+tags: [FmodeAgent, FmodeCode, 服务级, static-publish]
+platform: Both
+level: 服务级
+category: 平台基础设施
+icon: ⚙️
+license: MPL-2.0
+author: Fmode (未来飞马)
+---
+
+# Fmode 静态发布(OBS+CDN 公开 URL)
+
+## 触发词
+
+发布、部署、上线、静态站、前端、课件、CDN、obsutil、public URL、huaweicloud-cdn-refresh
+
+## 快速开始(ESM)
+
+```bash
+node scripts/index.mjs <action> '{"...": ...}'
+```
+
+或 Agent 直接按流程调用下述端点。
+
+## 端点清单
+
+| 端点 | 作用 |
+|------|------|
+| `POST https://server.fmode.cn/api/functions` | 注册 Project {token,path:/fmode/project-register,params:{name,version,gitUrl}} |
+| `POST https://server.fmode.cn/api/apig/deploy/huaweicloud` | 取 STS {token,projectId} |
+| `POST https://server.fmode.cn/api/apig/deploy/huaweicloud-cdn-refresh` | CDN 刷新 {token,projectId,path} |
+
+## 关键纪律
+
+- ⚠️ 注册Project→构建→扫token→取STS→上传obsPath→CDN刷新→验证URL 逐门禁报告
+- ⚠️ obsPath 必须是 dev/<projectId>/
+- ⚠️ 会话过期先重播登录再取新STS,不求华为凭据
+
+## References
+
+- 详见 `references/` 目录
+- 完整平台规范见 skill-core-guide(`fmode-skillhub` 自带)
+
+## License
+
+MPL-2.0 © 2026 Fmode (未来飞马)

+ 5 - 0
skills/fmode-static-publish/references/endpoints.md

@@ -0,0 +1,5 @@
+# Fmode 静态发布(OBS+CDN 公开 URL) 端点参考
+
+| `POST https://server.fmode.cn/api/functions` | 注册 Project {token,path:/fmode/project-register,params:{name,version,gitUrl}} |
+| `POST https://server.fmode.cn/api/apig/deploy/huaweicloud` | 取 STS {token,projectId} |
+| `POST https://server.fmode.cn/api/apig/deploy/huaweicloud-cdn-refresh` | CDN 刷新 {token,projectId,path} |

+ 30 - 0
skills/fmode-static-publish/scripts/index.mjs

@@ -0,0 +1,30 @@
+#!/usr/bin/env node
+/**
+ * Fmode 静态发布(OBS+CDN 公开 URL) — 辅助脚本(零 npm 依赖,Node>=18 自带 fetch)
+ * Copyright (c) 未来飞马  MPL-2.0
+ *
+ * 用法:node index.mjs <action> [jsonPayload]
+ */
+const BASE = "https://server.fmode.cn";
+
+async function call(method, path, body, token) {
+  const headers = { "content-type": "application/json" };
+  if (token) headers["authorization"] = "Bearer " + token;
+  const res = await fetch(BASE + path, {
+    method, headers, body: body ? JSON.stringify(body) : undefined,
+  });
+  const text = await res.text();
+  // 脱敏输出:token/密钥不打印
+  const safe = text.replace(/(token|authorization|accessKey|secretKey|securityToken)["'\s:]+([^",}]+)/gi, "$1:***");
+  console.log(safe);
+  return res;
+}
+
+const [action, raw] = process.argv.slice(2);
+let payload = {};
+try { if (raw) payload = JSON.parse(raw); } catch { payload = { _raw: raw }; }
+
+// 示例端点: POST 注册 Project {token,path:/fmode/project-register,params:{name,version,gitUrl}}
+// 示例端点: POST 取 STS {token,projectId}
+// 示例端点: POST CDN 刷新 {token,projectId,path}
+

+ 34 - 0
skills/fmode-storage/SKILL.md

@@ -0,0 +1,34 @@
+---
+slug: fmode-skill-fmode-storage
+displayName: fmode-storage
+version: 1.1.0
+name: fmode-storage
+description: 二进制大文件上云,本地零占用,一键生成公开分享链接(S3/OBS)。 触发词:上传、存储、对象存储、S3、OBS、分享链接、公开URL、托管文件
+tags: [FmodeAgent, FmodeCode, 服务级, storage]
+platform: Both
+level: 服务级
+category: 平台基础设施
+icon: 🛠️
+license: MPL-2.0
+author: Fmode (未来飞马)
+---
+
+# 对象存储与公开分享
+
+## 触发词
+上传、存储、对象存储、S3、OBS、分享链接、公开URL、托管文件
+
+## 快速开始
+```bash
+node scripts/index.mjs <action>
+```
+或按 skill-storage 1.1.0 的官方命令(`npx --yes 1.1.0@latest workspace`)。
+
+## 端点
+- https://s3.fmode.cn/<key>
+
+## 来源
+- skill-storage 1.1.0
+
+## License
+MPL-2.0 © 2026 Fmode (未来飞马)

+ 3 - 0
skills/fmode-storage/references/source.md

@@ -0,0 +1,3 @@
+# 来源
+skill-storage 1.1.0
+端点: https://s3.fmode.cn/<key>

+ 36 - 0
skills/fmode-tihao/SKILL.md

@@ -0,0 +1,36 @@
+---
+slug: fmode-skill-fmode-tihao
+displayName: fmode-tihao
+version: 1.0.19
+name: fmode-tihao
+description: 达人/博主候选研究:读取brief、调用VOC电商代理、豆包视觉分析、达人排名、导出商务可用名单。 触发词:提号、达人、博主、创作者研究、brief、商务名单、红人、kol
+tags: [FmodeAgent, FmodeCode, 应用级, tihao]
+platform: Both
+level: 应用级
+category: 平台基础设施
+icon: 🏢
+license: MPL-2.0
+author: Fmode (未来飞马)
+---
+
+# 提号 SOP 达人/博主研究
+
+## 触发词
+
+提号、达人、博主、创作者研究、brief、商务名单、红人、kol
+
+## 能力分解
+
+['tihao-creator-sourcing']
+
+- 原始来源: npm @vocmarket/tihao 1.0.19
+
+## 使用规则
+
+- 用户只需要自然语言描述业务场景,不要强迫了解参数
+- 未明确要求真实采集前,先使用演示样例(sample);明确 live 时再检查凭证/余额
+- 首轮输出采用"初步判断、机会假设、待校准"口径,附证据
+
+## License
+
+MPL-2.0 © 2026 Fmode (未来飞马)

+ 3 - 0
skills/fmode-tihao/references/source.md

@@ -0,0 +1,3 @@
+# 提号 SOP 达人/博主研究 参考
+
+- 原始来源: npm @vocmarket/tihao 1.0.19

+ 34 - 0
skills/fmode-vision/SKILL.md

@@ -0,0 +1,34 @@
+---
+slug: fmode-skill-fmode-vision
+displayName: fmode-vision
+version: 0.1.1
+name: fmode-vision
+description: 图片/视频结构化视觉分析:宿主多模态优先,回落 Fmode API(豆包/Doubao)。 触发词:看图、识图、截图分析、UI截图、视觉识别、图片文字、图像分析、doubao、vision
+tags: [FmodeAgent, FmodeCode, 服务级, vision]
+platform: Both
+level: 服务级
+category: 平台基础设施
+icon: 🛠️
+license: MPL-2.0
+author: Fmode (未来飞马)
+---
+
+# 视觉识别
+
+## 触发词
+看图、识图、截图分析、UI截图、视觉识别、图片文字、图像分析、doubao、vision
+
+## 快速开始
+```bash
+node scripts/index.mjs <action>
+```
+或按 npm fmode-vision 的官方命令(`npx --yes fmode-vision@latest workspace`)。
+
+## 端点
+- POST https://api.fmode.cn/v1/chat/completions
+
+## 来源
+- npm fmode-vision
+
+## License
+MPL-2.0 © 2026 Fmode (未来飞马)

+ 3 - 0
skills/fmode-vision/references/source.md

@@ -0,0 +1,3 @@
+# 来源
+npm fmode-vision
+端点: POST https://api.fmode.cn/v1/chat/completions

+ 36 - 0
skills/fmode-voc-intelligence/SKILL.md

@@ -0,0 +1,36 @@
+---
+slug: fmode-skill-fmode-voc-intelligence
+displayName: fmode-voc-intelligence
+version: 0.3.38
+name: fmode-voc-intelligence
+description: 小红书/抖音/视频号 VOC 情报:趋势情报、问题池、单点深挖、竞品图谱、7天内容计划、口播脚本、成本测算、用量账单。 触发词:VOC、小红书趋势、抖音趋势、视频号、问题池、竞品、内容计划、口播脚本、用户声音、经营洞察、趋势情报
+tags: [FmodeAgent, FmodeCode, 应用级, voc-intelligence]
+platform: Both
+level: 应用级
+category: 平台基础设施
+icon: 🏢
+license: MPL-2.0
+author: Fmode (未来飞马)
+---
+
+# VOC 用户经营洞察
+
+## 触发词
+
+VOC、小红书趋势、抖音趋势、视频号、问题池、竞品、内容计划、口播脚本、用户声音、经营洞察、趋势情报
+
+## 能力分解
+
+['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']
+
+- 原始来源: npm @vocmarket/voc-skill 0.3.38
+
+## 使用规则
+
+- 用户只需要自然语言描述业务场景,不要强迫了解参数
+- 未明确要求真实采集前,先使用演示样例(sample);明确 live 时再检查凭证/余额
+- 首轮输出采用"初步判断、机会假设、待校准"口径,附证据
+
+## License
+
+MPL-2.0 © 2026 Fmode (未来飞马)

+ 3 - 0
skills/fmode-voc-intelligence/references/source.md

@@ -0,0 +1,3 @@
+# VOC 用户经营洞察 参考
+
+- 原始来源: npm @vocmarket/voc-skill 0.3.38

+ 114 - 0
skills/inventory.json

@@ -0,0 +1,114 @@
+{
+  "name": "fmode-skillhub",
+  "version": "0.2.0",
+  "generatedAt": "2026-10-15T10:55:45.176458",
+  "format": "esm",
+  "architecture": "纯接口驱动: 子技能只依赖公开HTTP接口+用户token(env)+agent原生工具, 不依赖任何需另行安装的软件/本地二进制",
+  "skills": [
+    {
+      "name": "fmode-account",
+      "slug": "fmode-skill-fmode-account",
+      "version": "0.1.0",
+      "level": "服务级",
+      "summary": "Fmode 账号注册登录:手机验证码 → sessionToken → 企业开通。数字分身初始化第一步。 触发词:注册、"
+    },
+    {
+      "name": "fmode-cloud-functions",
+      "slug": "fmode-skill-fmode-cloud-functions",
+      "version": "0.1.0",
+      "level": "服务级",
+      "summary": "Fmode 云函数部署与调用:Function 合同表存动态函数源,/api/functions 发布执行。 触发词:云"
+    },
+    {
+      "name": "fmode-cloud-resources",
+      "slug": "fmode-skill-fmode-cloud-resources",
+      "version": "0.1.0",
+      "level": "服务级",
+      "summary": "Fmode 云资源领取:平台签发项目级 STS,华为云 OBS 部署,无需用户华为账号。 触发词:云资源、领取、部署、华"
+    },
+    {
+      "name": "fmode-courseware",
+      "slug": "fmode-skill-fmode-courseware",
+      "version": "0.1.0",
+      "level": "应用级",
+      "summary": "课件/报告 HTML 生产标准:委派 FmodeCode、基准学习、素材归档、证据链、分层验收。 触发词:课件、课程、导"
+    },
+    {
+      "name": "fmode-enterprise",
+      "slug": "fmode-skill-fmode-enterprise",
+      "version": "0.1.0",
+      "level": "服务级",
+      "summary": "Fmode 企业状态:查询订阅、申请独立部署、轮询开通。数字分身企业开通。 触发词:企业、开通、订阅、enterpris"
+    },
+    {
+      "name": "fmode-git-archive",
+      "slug": "fmode-skill-fmode-git-archive",
+      "version": "0.1.0",
+      "level": "服务级",
+      "summary": "Fmode 项目归档:源码进 git.fmode.cn,建 Gogs 账号/个人 token/建仓/推送/验证 SHA。"
+    },
+    {
+      "name": "fmode-listen",
+      "slug": "fmode-skill-fmode-listen",
+      "version": "0.1.2",
+      "level": "服务级",
+      "summary": "录音/视频音轨转文字(讯飞 LFASR × Fmode 网关),多语种/方言/说话人分离,服务端计费。 触发词:转写、录"
+    },
+    {
+      "name": "fmode-pay",
+      "slug": "fmode-skill-fmode-pay",
+      "version": "0.1.0",
+      "level": "应用级",
+      "summary": "微信服务商特约商户进件:资料收集 → APIv3 签名 → 云函数提交 → 二维码签约 → 归档。 触发词:微信商户、进"
+    },
+    {
+      "name": "fmode-product-lab",
+      "slug": "fmode-skill-fmode-product-lab",
+      "version": "0.2.0",
+      "level": "应用级",
+      "summary": "新品研发:VOC 采集 + KANO + 市场分析 + 竞争 + 定位 + 错位竞争全流程。 触发词:新品研发、产品开发"
+    },
+    {
+      "name": "fmode-report-publish",
+      "slug": "fmode-skill-fmode-report-publish",
+      "version": "0.1.0",
+      "level": "应用级",
+      "summary": "网页报告交付:手机侧边栏 + 区块化 + 数据优先,交付到 S3 公开 URL。 触发词:出报告、HTML报告、可视化报"
+    },
+    {
+      "name": "fmode-static-publish",
+      "slug": "fmode-skill-fmode-static-publish",
+      "version": "0.1.0",
+      "level": "服务级",
+      "summary": "Fmode 前后端发布:构建 → 注册 Project → STS → obsutil 同步 OBS → CDN 刷新 "
+    },
+    {
+      "name": "fmode-storage",
+      "slug": "fmode-skill-fmode-storage",
+      "version": "1.1.0",
+      "level": "服务级",
+      "summary": "二进制大文件上云,本地零占用,一键生成公开分享链接(S3/OBS)。 触发词:上传、存储、对象存储、S3、OBS、分享链"
+    },
+    {
+      "name": "fmode-tihao",
+      "slug": "fmode-skill-fmode-tihao",
+      "version": "1.0.19",
+      "level": "应用级",
+      "summary": "达人/博主候选研究:读取brief、调用VOC电商代理、豆包视觉分析、达人排名、导出商务可用名单。 触发词:提号、达人、"
+    },
+    {
+      "name": "fmode-vision",
+      "slug": "fmode-skill-fmode-vision",
+      "version": "0.1.1",
+      "level": "服务级",
+      "summary": "图片/视频结构化视觉分析:宿主多模态优先,回落 Fmode API(豆包/Doubao)。 触发词:看图、识图、截图分析"
+    },
+    {
+      "name": "fmode-voc-intelligence",
+      "slug": "fmode-skill-fmode-voc-intelligence",
+      "version": "0.3.38",
+      "level": "应用级",
+      "summary": "小红书/抖音/视频号 VOC 情报:趋势情报、问题池、单点深挖、竞品图谱、7天内容计划、口播脚本、成本测算、用量账单。 "
+    }
+  ]
+}