skill-update-check
功能介绍
- 来源识别:自动判断每个本地 skill 的安装来源——skillhub 市场(目录以
__skillhub结尾)、git(目录含.git)、还是 zip/未知来源。 - 版本对比:对比本地
version与最新版本,判定「有更新 / 已是最新 / 本地高于市场 / 无法判断」四种状态。 - 功能级 diff:对可获取最新内容的 skill,提取新增功能点(优先读取作者维护的更新日志段,再对比各章节要点)。
- 场景化升级建议:对每一项新增功能给出「如果你常做 X 场景,此功能能帮你 Y → 建议升级 / 不建议升级」的语境化建议,而非简单二元。
- 汇总报告:输出 5 列表格(仅列需更新项)+ 总结性计数文案,并可落盘 markdown 报告。
- 安全边界:全程只读,绝不自动安装或升级;若用户要求升级,仅告知来源与升级方法。
使用场景
- 你装了一批 skillhub / git 来源的 skill,担心长期没更新、落后官方版本,想知道「我现在该升级哪些」。
- 官方 skill 持续迭代,你想在升级前先看清「新版本到底多了什么功能、对我有没有用」。
- 对话里随口一问「我这几个 skill 要不要升级」,希望立即得到一份体检报告。
- 维护个人 skill 清单时,想快速区分哪些能自动比对、哪些(zip 装的非市场 skill)需要手动核查。
如何使用
触发方式
- 手动:在对话中输入
/skill-update-check。 - 自然语言自动触发:当对话出现疑似关注 skill 升级的提问(如「帮我看下现在的 skill 是不是有更新」「这些 skill 要不要升级」「检查下本地 skill 版本」),直接调用本技能。
执行流程(agent 应遵循)
- 确定扫描目录:默认扫描用户已安装 skill 的根目录(即本技能所在
skills的同级目录,通常包含各*__skillhub、*(git/zip)子目录)。 - 获取 skillhub 最新数据:对市场来源的 skill,调用市场技能查询接口,读取每个已安装 skill 的
version/installedVersion/updateAvailable/description;若接口支持返回最新SKILL.md内容则一并获取。将结果整理为 latest-json,形如:
json { "skill名": { "version": "1.1.0", "description": "…", "content": "最新 SKILL.md 全文(可选)" } } - 运行核心引擎:执行本技能目录内的比对脚本
bash python3 <本技能目录>/scripts/check.py \ --skills-dir <已安装skill根目录> \ --latest-json <上一步生成的文件> \ --report <报告路径> \ --json-out <结构化结果路径>
git 来源的 skill 由脚本自动git fetch取最新SKILL.md,无需在 latest-json 中提供。 - 补全场景化建议:读取
--json-out的结构化结果,对status == "update_available"的每个 skill,结合其new_features生成场景化升级建议(见「问答对话示例」口径)。 - 输出报告:将 5 列表格(skill 名称 | 是否有升级 | 升级的功能 | 来源类型 | 升级建议)与总结性计数文案呈现给用户,并按需落盘
skill-update-report.md。
当用户说「帮我升级 XXX」
不要代为安装。改为告知:
- 该 skill 的安装来源(skillhub / git / zip);
- 对应的升级方法:
- skillhub → 走市场安装器升级;
- git → 在该目录执行 git pull 或重新 clone 原 remote;
- zip → 回到原下载处重新获取。
问答对话示例
Q1:帮我看下现在的 skill 是不是有更新?
A:自动触发 → 扫描本地 skill → 输出报告:
> 本次一共扫描 12 个 skill,3 个有更新,8 个已经是最新版本(其中 1 个本地版本高于市场),1 个无法判断是否有更新。
> 需更新表格:web-helper(1.0.0→1.1.0)| 是 | 新增:智能摘要 | skillhub | 建议升级(若你常做网页信息整理,此功能能省去手动总结)…
Q2:web-helper 这个 skill 要不要升级?
A:该 skill 来源为 skillhub,本地 1.0.0、最新 1.1.0,新增「智能摘要」功能。如果你经常需要把抓取的网页内容浓缩成要点,建议升级;若只用基础抓取,可不升。
Q3:帮我升级 web-helper。
A:我不会自动安装。它的来源是 skillhub,你可以通过市场安装器执行升级(或运行 /marketplace-skill-installer 重新安装该 skill 的最新版)。
Q4:那个 git 装的 skill 说有更新,怎么办?
A:进入该 skill 目录执行 git pull 即可拉取最新版;本技能已通过 git fetch 确认存在新版本与新增功能。
流程说明
- 扫描(scan):遍历 skills 根目录下含
SKILL.md的子目录,解析 frontmatter 得到名称与版本,记录目录名与是否含.git。 - 分类(classify):
__skillhub后缀 → skillhub;含.git→ git;其余 → zip/未知。 - 取最新(fetch latest):skillhub 用 agent 提供的 latest-json;git 用
git fetch+git show origin/<分支>:SKILL.md无损获取;zip/未知直接判为无法判断。 - 比对(compare):对比双方
version(semver 风格解析);对可获取内容的 skill 做章节/要点 diff,优先抽取更新日志段得到新增功能。 - 汇总(report):生成 5 列主表(仅需更新项)+ 总结性计数,并落盘 markdown 草稿供 agent 补全建议。
架构
skill-update-check/
├── SKILL.md # 本说明(含触发场景、执行流程、边界)
├── README.md # 面向使用者的完整文档
└── scripts/
└── check.py # 核心比对引擎(确定性逻辑,可独立测试)
# - scan_local_skills:扫描+来源识别
# - analyze_record:单条版本/功能比对
# - extract_new_features:内容 diff
# - build_summary / build_report:汇总与报告
核心引擎与对话智能分离:确定性逻辑(来源识别、版本判定、内容 diff、计数)全部在 scripts/check.py,可脱离运行时用 fixture 做对抗测试;场景化升级建议由对话中的 agent(LLM)在读取结构化结果后补全,保证建议的语境相关性。
能力边界
- skillhub 来源:支持最佳。可识别、可版本对比;若市场接口返回最新
SKILL.md全文,则能做功能级 diff;若仅返回描述,则降级为描述对比并注明「详情请查看市场」。 - git 来源:仅当本地目录保留
.git时可自动git fetch取最新SKILL.md做对比(功能 diff 往往比 skillhub 更全);无.git时无法恢复远程地址,判为「无法判断」,且不提示用户提供 URL。 - zip / 未知来源:无来源线索,无法自动比对,明确标记「需手动核查」。
- 本地高于市场:本地版本号高于市场时,单独标注「本地高于市场(可能自行改过/装了未发布版)」,不推荐更新。
- 内容 diff 局限:功能提取基于 markdown 章节与要点文本差异,可能无法捕获纯语义改动;作者维护的更新日志段准确度最高。
- 绝不自动安装/升级:所有更新动作由用户自行执行。
免责声明
- 本技能仅做只读体检与建议,不修改、不安装、不升级任何 skill。
- 版本与功能差异结论基于本地
SKILL.md与市场/远程返回的元数据,仅供参考;是否升级由你自行判断与执行,本技能不对升级带来的任何后果负责。 - 市场接口的字段覆盖(能否返回最新
SKILL.md全文)可能因平台而异,功能级对比深度以实际可得数据为准。 - 报告中的场景化建议为基于功能描述的启发式推断,不构成强制升级指令。