技能管理器
> 智能技能发现与管理 - 让AI助手找到并使用最合适的技能
快速使用
命令行使用
| 命令 | 说明 | 示例 |
|---|---|---|
search |
搜索技能 | python skill_manager.py search --keyword "壁纸" |
list |
列出本地已安装技能 | python skill_manager.py list |
popular |
获取热门技能 | python skill_manager.py popular |
recommend |
推荐技能 | python skill_manager.py recommend --keyword "数据分析" |
check-update |
检查可更新的技能 | python skill_manager.py check-update |
install |
安装技能 | python skill_manager.py install --keyword "wallpaper-switcher" |
update |
更新技能(带版本保护) | python skill_manager.py update --keyword "wallpaper-switcher" |
update-all |
更新所有本地技能(跳过最新) | python skill_manager.py update-all |
cli-status |
查看 SkillHub CLI 状态 | python skill_manager.py cli-status |
login |
登录 skillhub.cn | python skill_manager.py login --token skh_xxx |
whoami |
查看当前登录身份 | python skill_manager.py whoami |
logout |
登出 | python skill_manager.py logout |
publish |
发布/更新技能(自动密钥扫描) | python skill_manager.py publish --path ./my-skill --changelog "更新说明" |
publish --dry-run |
发布预检(不上传) | python skill_manager.py publish --path ./my-skill --dry-run |
publish --bump |
自动递增版本号后发布 | python skill_manager.py publish --path ./my-skill --bump patch |
publish-all |
批量发布本地全部技能 | python skill_manager.py publish-all --bump patch --changelog "批量更新" |
scan-secrets |
扫描技能中的密钥泄漏 | python skill_manager.py scan-secrets |
doctor |
环境体检(CLI/登录/元数据/密钥) | python skill_manager.py doctor |
智能体触发方式
| 用户说 | 智能体执行 |
|---|---|
| "搜索壁纸技能" | 调用 API 搜索,显示结果列表 |
| "安装壁纸切换器" | 自动检查/安装 SkillHub CLI,然后安装技能 |
| "检查技能更新" | 扫描本地技能,从线上查找同名技能,显示可更新列表 |
| "更新 skills-loader" | 从线上重新下载并安装最新版本 |
| "更新全部" | 从线上重新下载并安装所有本地技能 |
| "有什么热门技能" | 获取热门技能列表 |
| "推荐数据分析工具" | 搜索并推荐相关技能 |
| "CLI 状态" / "CLI 装了吗" | 运行 cli-status,显示 CLI 类型/路径/版本/登录状态 |
| "登录 skillhub" | 运行 login --token skh_xxx 完成登录 |
| "我是谁" / "登录身份" | 运行 whoami 显示 userId/handle/role |
| "把技能发布上去" | 先 login,再 publish --path <技能目录> --changelog "..." |
| "批量发布" / "全部发上去" | 运行 publish-all --bump patch --changelog "..." |
| "发布预检" | 运行 publish --dry-run 校验 SKILL.md 字段但不实际上传 |
| "检查有没有泄露密钥" | 运行 scan-secrets 扫描所有本地技能 |
| "体检" / "环境检查" | 运行 doctor 一次性检查 CLI/登录/元数据/密钥 |
密钥安全(发布前强制校验)
publish、publish-all 会在上传前自动扫描技能目录,发现硬编码凭证即中止发布。
检测规则覆盖:
| 类型 | 示例特征 |
|---|---|
| SkillHub Token | skh_... |
| 通用 / OpenAI 密钥 | sk-...、sk-proj-... |
| 平台 Key | tk_...(TickFlow)、wrk-...(微信读书) |
| GitHub / AWS / Slack Token | ghp_...、AKIA...、xoxb-... |
| 私钥块 | -----BEGIN ... PRIVATE KEY----- |
| 硬编码赋值 | TOKEN = "xxxx"、api_key: "xxxx" |
| 长串凭证 | 32/40/64 位十六进制串且同行含凭证关键词 |
| 邮箱授权码 | 授权码 = "ABCDEFGHIJKLMNOP"(16 位大写) |
命中后输出已打码的片段(只保留前 4 位与后 2 位),不会二次泄漏:
$ python skill_manager.py scan-secrets --path ../my-push-plus
============================================================
密钥泄漏扫描:my-push-plus
============================================================
✗ 发现 4 处疑似硬编码凭证:
1. [硬编码凭证赋值] SKILL.md:34
PUSH********7"
...
✗ 错误:共发现 4 处疑似密钥泄漏
正确的凭证处理方式(三选一):
- 环境变量:
token = os.environ.get("PUSHPLUS_TOKEN") - 首次使用时交互输入,保存到
~/.<skill>_token.json - 文档中只留占位符:
TOKEN = "your-token-here"
确属误报时可加 --allow-secrets 强制发布(不推荐)。
批量发布
# 预检全部(不上传)
python skill_manager.py publish-all --dry-run
# 批量发布并自动递增修订号
python skill_manager.py publish-all --bump patch --changelog "文档优化与缺陷修复"
流程:逐个技能 → 校验 slug/version/displayName → 密钥扫描 → 版本号递增 → 上传。
任一技能缺字段或含凭证会被跳过,其余继续,最后汇总成功/失败/跳过清单。
实际运行示例
示例1:搜索技能
$ python skill_manager.py search --keyword "壁纸"
正在搜索 skillhub.cn: 壁纸
找到 26 个相关技能
============================================================
搜索 '壁纸' 的结果
============================================================
○ 1. 电脑壁纸 必应壁纸 一键切换 定时切换 [在线]
壁纸切换工具 - 一键切换必应每日壁纸、随机壁纸、动漫壁纸、风景壁纸...
v1.0.1 | user_5d10d7f7 | design-media
下载: 30 · 评分: 20067
○ 2. ai-wallpaper-skill [在线]
一个能够根据用户提示词生成 AI 图片并自动将其设置为桌面壁纸的能力模块...
v1.0.1 | user_60def63c | design-media
下载: 139 · 评分: 10311
...
============================================================
共 26 个技能
============================================================
示例2:列出本地技能
$ python skill_manager.py list
============================================================
本地已安装技能
============================================================
✓ 1. create-your-skill [本地]
创建新技能、修改和改进现有技能,并衡量技能性能...
v1.0.0
✓ 2. skills-loader [本地]
智能技能管理器 - 自动检测本地技能、从skillhub.cn发现新技能...
v2.1.0
============================================================
共 6 个技能
============================================================
示例3:检查更新(v2.1 带版本比较)
$ python skill_manager.py check-update
正在检查本地技能...
检查: create-your-skill(本地 v1.0.0)
✓ create-your-skill 可更新: v1.0.0 → v1.0.1
检查: skills-loader(本地 v2.1.0)
skills-loader 已是最新(本地 v2.1.0 >= 线上 v1.0.5)
检查: wallpaper-switcher(本地 v1.1.0)
wallpaper-switcher 已是最新(本地 v1.1.0 >= 线上 v1.0.2)
共发现 1 个可更新的技能(2 个已是最新)
──────────────────────────────────────────────────
可更新的技能
──────────────────────────────────────────────────
[1] create-your-skill (v1.0.0 → v1.0.1)
创建新技能、修改和改进现有技能,并衡量技能性能...
下载 0 · 评分 0
──────────────────────────────────────────────────
更新单个: python skill_manager.py update --keyword <技能名>
更新全部: python skill_manager.py update-all
──────────────────────────────────────────────────
示例4:查看 CLI 状态与登录身份
$ python skill_manager.py cli-status
============================================================
SkillHub CLI 状态
============================================================
✓ CLI 可用
类型: Python 版 (官方)
路径: C:\Users\g1587\.skillhub\skills_store_cli.py
版本: skillhub 2026.6.22
登录状态: 已登录
$ python skill_manager.py whoami
userId : 551907
handle : user_5d10d7f7
role : user
示例5:发布技能到 skillhub.cn
# 第一步:登录(Token 在 skillhub.cn 个人中心获取)
$ python skill_manager.py login --token skh_xxx
✓ 登录成功!
# 第二步:发布预检(不上传,校验 SKILL.md 字段)
$ python skill_manager.py publish --path ./fund-analyzer-plus --dry-run
预检: g:\代码\pycharm\ai\skills\fund-analyzer-plus
✓ 预检成功!
Dry-run passed. 3 files, 128 KB
# 第三步:正式发布(version 会自动递增校验)
$ python skill_manager.py publish --path ./fund-analyzer-plus --changelog "修复净值API失效,新增股票分析"
发布: g:\代码\pycharm\ai\skills\fund-analyzer-plus
✓ 发布成功!
Published fund-analyzer-plus v1.1.0
发布前提:SKILL.md 需包含以下字段
---
name: "my-skill"
slug: "my-skill" # 必填,与线上技能对应,目录名保持一致
version: "1.1.0" # 必填,需大于线上版本
displayName: "技能显示名" # 必填
summary: "一句话简介" # 建议
description: "触发条件描述"
---
常见问题
网络问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
| "网络连接失败" | 网络断开或 SkillHub 服务不可用 | 检查网络连接,稍后重试 |
| "请求超时" | 网络较慢或服务器繁忙 | 等待 30 秒后重试 |
| "请求过于频繁" | 短时间内请求太多 | 等待 30 秒后重试 |
| 显示英文错误 | 网络库返回原始错误 | 程序会自动重试,如持续失败请检查网络 |
安装问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
| "SkillHub CLI 未安装" | 首次使用 | 程序会自动安装 CLI |
| "安装失败" | 网络问题或权限不足 | 检查网络,确保有写入权限 |
| "技能名称不存在" | 技能名拼写错误 | 使用 search 命令查找正确的技能名 |
npm 安装报 EPERM ... Program Files |
Windows 全局目录无写权限 | 程序已自动改用用户级目录 %APPDATA%\npm,重试即可 |
skillhub 命令找不到 |
npm 全局目录不在 PATH | 程序会自动探测 %APPDATA%\npm\skillhub.cmd 兜底 |
登录与发布问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
| "未检测到 SkillHub CLI" | Python 版 CLI 未安装 | 运行任意 install 命令触发自动安装,或手动执行官方安装脚本 |
| "login" 失败 / 401 | Token 错误或已失效 | 到 skillhub.cn 个人中心重新生成 Token |
| "SKILL.md 缺少 slug" | 元数据不完整 | 在 frontmatter 中补充 slug/version/displayName 字段,或先跑 doctor 查看缺哪些 |
| "存在疑似密钥泄漏,已跳过" | 技能里硬编码了凭证 | 改为环境变量或交互输入后重试;确属误报加 --allow-secrets |
| 发布时报 "version 不高于线上版本" | 版本号未递增 | 修改 SKILL.md 的 version,或用 --bump patch 自动递增 |
| 发布报权限错误 | slug 属于其他作者 | slug 必须是自己发布的技能,目录名与 slug 保持一致 |
publish 无输出/卡住 |
auth/publish 仅支持 Python 版 CLI | 先 cli-status 确认类型为 Python 版;npm 版只用于 install |
使用建议
- 首次使用:先运行
list查看本地已安装的技能 - 搜索技能:使用
search --keyword "关键词"查找 - 安装技能:找到技能后使用
install --keyword "技能名"安装 - 检查更新:定期运行
check-update查看是否有更新 - 批量更新:使用
update-all一键更新所有本地技能 - 发布技能:
login→doctor体检 →publish --dry-run预检 →publish --bump patch正式发布 - 批量发布:
publish-all --bump patch --changelog "..." - 发布前必做:密钥写进环境变量或配置文件,绝不写进 SKILL.md / 脚本
安装流程
1. 检查是否已安装 SkillHub CLI
↓
2. 未安装 → 自动执行安装脚本
已安装 → 跳过
↓
3. 执行 skillhub install <skill-name>
↓
4. 安装完成
发布流程
1. cli-status 确认 CLI 可用(auth/publish 需 Python 版)
↓
2. login --token skh_xxx 登录(凭据保存到 ~/.skillhub/)
↓
3. publish --path <技能目录> --dry-run 预检
├─ 失败 → 按提示补齐 slug/version/displayName
↓
4. publish --path <技能目录> --changelog "更新说明" 正式发布
↓
5. 到 skillhub.cn 查看已发布技能
双 CLI 说明
| Python 版(官方) | npm 版(@astron-team/skillhub) | |
|---|---|---|
| 路径 | ~/.skillhub/skills_store_cli.py |
%APPDATA%\npm\skillhub.cmd |
| search/install | ✓ | ✓ |
| login/whoami/publish | ✓ | ✗(registry 契约不兼容) |
| 检测优先级 | 1(优先) | 2(兜底) |
程序自动检测并屏蔽两者差异,无需手动选择。
注意事项
- 需要网络连接访问 SkillHub API 和下载技能
- 安装技能需要执行 curl 命令,请确保有网络权限
- 技能安装到当前 Agent 的 skills 目录
- 更新技能会覆盖本地版本
- 网络不好时可能需要多次重试
- 发布技能前务必确认
slug与线上已发布技能一致、目录名与 slug 相同 - Token 等敏感信息不要写入 SKILL.md 或代码,登录后凭据存于本地
~/.skillhub/ - 遇到问题请先查看上方「常见问题」表格