HomeBrowseUpload
← Back to registry
// Skill profile

技能更新管理器

name: skills-update-manager

by chsengni · published 2026-04-01

开发工具数据处理
Total installs
0
Stars
★ 0
Last updated
2026-04
// Install command
$ claw add gh:chsengni/chsengni-skills-update-manager
View on GitHub
// Full documentation

---

name: skills-update-manager

description: 管理已安装技能的注册、版本跟踪与自动更新检查;当用户安装新技能、检查技能更新或配置更新策略时使用。

dependency:

python:

- requests==2.31.0

- beautifulsoup4==4.12.2

- packaging==23.2

- PyYAML==6.0.1

---

# 技能更新管理器

任务目标

  • 本 Skill 用于:统一管理所有已安装技能的注册信息与版本跟踪
  • 能力包含:技能注册、版本记录、自动检查更新、更新配置管理
  • 触发条件:安装新技能前、需要检查技能更新时、首次加载本技能
  • 前置准备

    依赖说明

    scripts脚本所需的依赖包及版本:

    requests==2.31.0
    beautifulsoup4==4.12.2
    packaging==23.2
    PyYAML==6.0.1

    配置文件初始化

    首次使用本技能时,需要将已安装的技能注册到skills-update-manager,并需要在工作目录下 `MEMORY.md`文件添加以下:

    # 技能更新管理器配置
    
    ## 更新设置
    - 启用更新检查:是/否
    - 上次检查时间:YYYY-MM-DD HH:MM:SS
    
    ## 使用说明
    1. 每次安装技能前优先加载 skills-update-manager
    2. 更新开启时,启动技能前需加载本管理器检查更新
    3. 更新关闭时,跳过更新检查

    操作步骤

    1. 注册新技能

    **核心流程**:智能体自动从技能文件中提取元数据,无需用户提供详细信息。

    #### 步骤1:提取技能元数据

    当用户安装新技能时,智能体需要从技能文件中提取以下信息:

    **方式A:从 .skill 或者.zip文件提取**

    1. 解压 .skill 文件(ZIP格式)

    2. 读取 `SKILL.md` 文件

    3. 从 YAML 前言区提取:

    - `name`:技能名称

    - `version`:版本号(如果存在)

    4. 从文件路径或内容推断更新地址

    **方式B:从已解压的技能目录提取**

    1. 读取 `SKILL.md` 文件

    2. 从 YAML 前言区提取 name 字段

    **调用脚本**:`scripts/skill_registry.py --action extract --skill-path <路径>`

    **输出示例**:

    {
      "success": true,
      "metadata": {
        "name": "pdf-processor",
        "version": "1.0.0",
        "source": null,
        "update_url": null
      }
    }

    #### 步骤2:识别来源和更新地址

    智能体根据以下信息推断来源类型和更新地址:

    **判断规则**:

  • 如果用户提供 GitHub 仓库地址 → 来源:`github`
  • 如果用户提供 ClawHub 页面链接 → 来源:`clawhub`
  • 如果用户未提供 → 询问用户技能来源
  • **典型场景**:

    用户:"安装这个技能:https://github.com/user/skill-name"
    智能体:识别来源为 github,提取仓库地址
    
    用户:"安装 xxx.skill 文件"
    智能体:提取技能名称后询问:"这个技能的来源是什么?(GitHub/ClawHub/其他)"

    #### 步骤3:注册技能

    **调用脚本**:`scripts/skill_registry.py --action register`

    **必需参数**:

  • `--name`:技能名称(从 SKILL.md 提取)
  • **可选参数**(智能体推断或询问用户):

  • `--version`:当前版本号(从 SKILL.md 提取,默认 "1.0.0")
  • `--source`:来源类型(github/clawhub,默认 "github")
  • `--update-url`:更新地址(根据来源推断或询问用户)
  • **执行示例**:

    # 完整参数(智能体已提取所有信息)
    python scripts/skill_registry.py \
      --action register \
      --name "pdf-processor" \
      --version "1.0.0" \
      --source "github" \
      --update-url "https://github.com/user/pdf-processor"
    
    # 最小参数(仅需名称,其余使用默认值)
    python scripts/skill_registry.py \
      --action register \
      --name "pdf-processor"

    **智能体职责**:

  • 自动从技能文件中提取名称和版本号
  • 根据用户提供的信息推断来源和更新地址
  • 信息不完整时主动询问用户
  • 确保所有必需字段已填充后再调用注册
  • 2. 检查技能更新

    根据 MEMORY.md 中的配置,决定是否检查更新:

    **调用脚本**:`scripts/skill_registry.py --action check_updates`

    **执行逻辑**:

    1. 读取 `MEMORY.md` 配置,判断更新检查是否启用

    2. 如果启用,遍历所有已注册技能

    3. 根据技能来源类型调用对应的版本检查逻辑:

    - **GitHub**:访问 `https://api.github.com/repos/{owner}/{repo}/releases/latest`

    - **ClawHub**:访问技能页面,解析 "Current version" 字段

    4. 对比本地版本与远程版本

    5. 返回有更新的技能列表

    **输出格式**:

    {
      "has_updates": true,
      "updates": [
        {
          "name": "example-skill",
          "current_version": "v1.0.0",
          "latest_version": "v1.2.0",
          "source": "github",
          "update_url": "https://github.com/user/example-skill"
        }
      ]
    }

    **智能体职责**:

  • 解析检查结果,向用户推送更新通知
  • 询问用户是否执行更新操作
  • 如果用户确认更新,使用 `git clone` 或下载方式获取新版本
  • 更新本地技能记录
  • 3. 查看已注册技能

    列出所有已安装技能的详细信息:

    **调用脚本**:`scripts/skill_registry.py --action list`

    **输出内容**:

  • 编号
  • 名称
  • 版本
  • 来源
  • 更新地址
  • 是否可更新
  • 更新状态
  • 4. 更新配置

    修改 MEMORY.md 中的更新设置:

    **调用脚本**:`scripts/skill_registry.py --action update_config`

    **参数说明**:

  • `--enable-updates`: 是否启用更新检查(true/false)
  • **执行方式**:

    python scripts/skill_registry.py --action update_config --enable-updates true

    5. 更新技能记录

    当技能完成更新后,更新本地记录的版本号:

    **调用脚本**:`scripts/skill_registry.py --action update_record`

    **参数说明**:

  • `--name`: 技能名称
  • `--version`: 新版本号
  • 资源索引

    核心脚本

  • [scripts/skill_registry.py](scripts/skill_registry.py) - 技能注册与更新管理核心脚本
  • 参考文档

  • [references/registry_format.md](references/registry_format.md) - 技能记录数据格式规范,包含JSON结构定义、自动提取流程与示例
  • 注意事项

    技能元数据提取

  • 优先从 SKILL.md 的 YAML 前言区提取 name 和 version
  • 如果缺少版本号,使用默认值 "1.0.0"
  • 如果缺少更新地址,必须询问用户或根据上下文推断
  • 版本号格式

  • 推荐使用语义化版本格式:`v1.0.0` 或 `1.0.0`
  • 支持其他格式:`2024.01.01`、`v2.1` 等
  • 版本比较遵循语义化版本规则
  • GitHub更新检查

  • 使用 GitHub API,无需认证
  • 频率限制:每小时60次请求(未认证)
  • 提取 `tag_name` 或 `name` 字段作为版本号
  • ClawHub更新检查

  • 需要解析HTML页面
  • 定位 "Current version" 文本节点
  • 提取版本号字符串
  • 更新策略

  • 建议在安装新技能前检查 MEMORY.md 配置
  • 如果启用更新检查,每次加载技能前调用检查逻辑
  • 批量检查更新时,注意频率限制
  • 错误处理

    脚本已包含以下错误处理:

  • 网络请求失败
  • JSON解析错误
  • 版本号格式不正确
  • 技能不存在
  • 使用示例

    示例1:首次使用技能更新管理器

    **场景**:用户首次加载本技能

    **执行步骤**:

    1. 智能体读取当前工作目录,检查是否存在 `MEMORY.md`

    2. 如果不存在,调用 `update_config` 创建配置文件

    3. 询问用户是否启用更新检查

    4. 根据用户选择写入配置

    示例2:从 GitHub 安装新技能

    **场景**:用户说"安装这个技能:https://github.com/user/pdf-processor"

    **智能体执行流程**:

    1. 识别来源为 GitHub

    2. 克隆仓库或下载 .skill 文件

    3. 读取 SKILL.md 提取元数据:name="pdf-processor", version="1.0.0"

    4. 调用脚本注册:

    ```bash

    python scripts/skill_registry.py --action register \

    --name "pdf-processor" \

    --version "1.0.0" \

    --source "github" \

    --update-url "https://github.com/user/pdf-processor"

    ```

    5. 继续安装流程

    示例3:从本地文件安装技能

    **场景**:用户上传 "data-analyzer.skill" 文件

    **智能体执行流程**:

    1. 解压 .skill 文件

    2. 读取 SKILL.md 提取元数据:name="data-analyzer", version="2.0.0"

    3. 询问用户:"这个技能的来源是什么?(GitHub/ClawHub/其他)"

    4. 用户回答:"GitHub,地址是 https://github.com/user/data-analyzer"

    5. 调用脚本注册:

    ```bash

    python scripts/skill_registry.py --action register \

    --name "data-analyzer" \

    --version "2.0.0" \

    --source "github" \

    --update-url "https://github.com/user/data-analyzer"

    ```

    示例4:检查更新

    **场景**:用户希望检查所有已安装技能是否有更新

    **执行步骤**:

    1. 智能体调用 `check_updates`

    2. 解析返回结果

    3. 向用户推送更新列表

    4. 询问是否执行更新

    5. 根据用户选择使用 `git clone` 或其他方式更新技能

    6. 调用 `update_record` 更新本地记录

    // Comments
    Sign in with GitHub to leave a comment.
    // Related skills

    More tools from the same signal band