SkillHub 语录
SkillHub CLI是SkillHub的官方命令行工具,用于搜索,安装,管理和发布Agent技能包.
* 安装
# Install globally via npm
npm install -g @astron-team/skillhub
# Or run directly with npx
npx @astron-team/skillhub@latest version
# Or install globally via Bun
bun add -g @astron-team/skillhub
QQ 快速启动
# Log in interactively with OAuth Device Flow
skillhub login
# Search skills
skillhub search pdf
# Install skill to Agent directory
skillhub install pdf-parser --agent codex
# List installed skills
skillhub list
# Publish skill
skillhub publish ./my-skill --namespace myspace
# Synchronize a team workspace
skillhub sync pull --namespace myspace
登记配置
活动登记按下列优先顺序解决:
--registry <url>命令行参数SKILLHUB_REGISTRY环境变量registry内~/.skillhub/config.json- 默认值
https://skill.xfyun.cn
# Temporarily use another registry
skillhub search pdf --registry https://skillhub.example.com
# Set via environment variable (Linux/macOS)
export SKILLHUB_REGISTRY=https://skillhub.example.com
视窗 PowerShell :
$env:SKILLHUB_REGISTRY="https://skillhub.example.com"
视窗 CMD :
set SKILLHUB_REGISTRY=https://skillhub.example.com
对于安装在 URL 前缀以下的登记册,请输入 --registry (例如,
https://skillhub.example.com/skillhub) (中文(简体) ). 安装和命名空间同步
在遵循应用程序相关下载 URL 时保留该前缀 .
认证
skillhub login 只在参数、环境变量或为所选登记册保存的证书中解决无 API 令牌时使用 OAuth 设备流程。 无效的解析令牌不会自动倒回设备流 。 将分辨率优先用于
以符号为基础的明确登录和所有其他经认证的命令是:
--token <token>命令行参数SKILLHUB_TOKEN环境变量- 存储在
~/.skillhub/credentials.json(每个登记册)
登录
# Interactive login: opens the registry's verification page and displays a user code
skillhub login
# Interactive login on a remote/headless terminal
skillhub login --no-open --registry https://skillhub.example.com
# Non-interactive login with an API token
skillhub login --token sk_xxx --registry https://skillhub.example.com
在交互式登录时,在浏览器中完成认证并输入显示的用户代码.
CLI的民意测验只在服务器提供过期前进行. 然后验证发行的代币 把它存进
~/.skillhub/credentials.json,然后将登记册写入 ~/.skillhub/config.json。 。 。 . --no-open
压制自动浏览器的启动,同时保留终端中的校验URL和代码.
基于Token的登录仍然可供CI和其他非交互自动化使用. 在两种模式中,
证书只有在 whoami 成功 .
两个文件都是无损更新的: SkillHub CLI 只更改自己的 tokens 财务报告和审定财务报表 registry
字段并保存其他相容工具所写的未知字段。 允许共享工具
页:1 ~/.skillhub 在同一 JSON 文档中保留独立命名状态的目录.
检查当前身份
skillhub whoami
# Check specific registry
skillhub whoami --registry https://skillhub.example.com
# Temporarily use different token
skillhub whoami --token sk_other
注销
skillhub logout
# Logout from specific registry
skillhub logout --registry https://skillhub.example.com
注销只去除指定的注册符,保存注册配置和安装记录.
搜索( E)
# Keyword search
skillhub search pdf
# Search with a one-off token
skillhub search pdf --token sk_xxx
# List all skills (empty query)
skillhub search "" --limit 50
# JSON output
skillhub search pdf --json
输出格式 : namespace/slug version summary
QQ 安装技能
安装坐标接受空弹或任何等同的命名空间 下列表格:
| 坐标 | 已解析命名空间 | 已解析弹 |
|---|---|---|
my-skill | global | my-skill |
team/my-skill | team | my-skill |
@team/my-skill | team | my-skill |
team--my-skill | team | my-skill |
对于一个赤裸的鼻涕虫, --namespace team 选择一个非全局命名空间。 A 类
命名空间坐标可与同一坐标合并 --namespace 数值,但
相互冲突的价值遭到拒绝,而不是沉默地压倒坐标.
# Install to auto-detected Agent directory
skillhub install pdf-parser
# Equivalent namespaced coordinates
skillhub install team/my-skill
skillhub install @team/my-skill
skillhub install team--my-skill
# Choose install scope explicitly
skillhub install pdf-parser --scope user
skillhub install pdf-parser --scope project --agent codex
# Specify namespace for a bare slug (default: global)
skillhub install pdf-parser --namespace myspace
# Specify version
skillhub install pdf-parser --version 1.2.0
# Install to specific Agent
skillhub install pdf-parser --agent codex
# Install to AStudio's fixed user-level directory
skillhub install pdf-parser --agent astudio
# Install to Pi's user-level directory (use --scope project for the project directory)
skillhub install pdf-parser --agent pi
# Install to DeepSeek Harness (use --scope project from the repository root for project skills)
skillhub install pdf-parser --agent dsh
# Install to multiple Agents
skillhub install pdf-parser --agent codex --agent claude-code
# Install to custom directory
skillhub install pdf-parser --dir ~/.claude/skills
# Reinstall a SkillHub-managed installation from the same source
skillhub install pdf-parser --force
安装目标分辨率
CLI 使用以下逻辑确定安装位置 :
- 若为
--dir指定: 安装到目录中, 代理标记为custom。 。 。 .--dir两者相互排斥--scope财务报告和审定财务报表--agent。 。 。 . - 若为
--scope user|project指定: 将检测限制在选定的范围.- 与
--agent <profile>: 直接向该配置文件的用户或项目技能目录安装. - 无
--agent:仅在选定范围内检测现有技能目录。 在交互式用户范围generic目标(<home>/.agents/skills/总是提供,并且可以单独选择或与被检测出的目标一起选择. - 在所选范围中未检测到目录 ~ 回落到
<home>/.agents/skills/页:1--scope user或者说<cwd>/.agents/skills/页:1--scope project。 。 。 .
- 与
- 若为
--agent指定(无)--scope:安装到相应的代理技能目录(已存在的行为,不变). - 如无上述规定:
- 互动模式 (Stdin和Stdout都是TTY,没有)
--json: 及时user或者说project范围,然后按--scope规则. - 非交互式模式: 自动扫描当前目录以检测现有的代理配置目录. 1 检测到的代理 → 直接安装; 多个 → 出错; 无检测到 → 回落到
<cwd>/.agents/skills/。 。 。 .
- 互动模式 (Stdin和Stdout都是TTY,没有)
--dir无法与--scope或者说--agent。 。 。 .
安装路径
大多数代理公司都有项目级和用户级的技能目录. 使用 --scope user|project 用于控制使用哪一种。 Astudio只使用其固定的用户级目录.
| 探员 | 项目级路径 | 用户级路径 |
|---|---|---|
astudio (阿斯图迪奥) | 不予支持 | ~/.acode/skills/ |
claude-code | <project>/.claude/skills/ | ~/.claude/skills/ |
codex | <project>/.codex/skills/ | ~/.codex/skills/ |
cursor | <project>/.cursor/skills/ | ~/.cursor/skills/ |
dsh (深呼吸声) | <project>/.dsh/skills/ | ~/.dsh/skills/ |
github-copilot | <project>/.github-copilot/skills/ | ~/.github-copilot/skills/ |
gemini-cli | <project>/.gemini/skills/ | ~/.gemini/skills/ |
windsurf | <project>/.windsurf/skills/ | ~/.windsurf/skills/ |
kiro-cli | <project>/.kiro/skills/ | ~/.kiro/skills/ |
roo | <project>/.roo/skills/ | ~/.roo/skills/ |
trae | <project>/.trae/skills/ | ~/.trae/skills/ |
trae-cn | <project>/.trae-cn/skills/ | ~/.trae-cn/skills/ |
openhands | <project>/.openhands/skills/ | ~/.openhands/skills/ |
openclaw | <project>/.openclaw/skills/ | ~/.openclaw/skills/ |
opencode | <project>/.opencode/skills/ | ~/.opencode/skills/ |
kilo | <project>/.kilo/skills/ | ~/.kilo/skills/ |
pi (毕) | <project>/.pi/skills/ | ~/.pi/agent/skills/ |
zcode | <project>/.zcode/skills/ | ~/.zcode/skills/ |
| 倒计时 | <project>/.agents/skills/ | ~/.agents/skills/ |
对于自定义路径或不支持的代理目录,使用 --dir 以指定安装路径。 在交互式用户范围 generic 目标与检测到的特工目标同时提供。 Astudio 在选择器中出现, 当 ~/.acode/skills/ 已存在。 何时 --scope user|project 找不到匹配的代理目录, CLI 返回到 _fallback_ 上面排着一行.
DeepSeek Harness从最近的 Git 寄存器根解析项目技能,而SkillHub CLI 则使用当前目录进行项目范围配置. 运行 --scope project --agent dsh 从寄存器根。 若为 DSH_HOME 覆盖默认 ~/.dsh,安装 --dir "$DSH_HOME/skills"。 。 。 .
安装后的文件结构
.codex/skills/pdf-parser/
├── ... # Extracted skill package files
└── .skillhub/
└── metadata.json # Installation metadata
metadata.json 示例:
{
"schemaVersion": 1,
"registry": "https://skill.xfyun.cn",
"namespace": "global",
"slug": "pdf-parser",
"version": "1.0.0",
"versionId": 123,
"fingerprint": "sha256:...",
"files": { "SKILL.md": "sha256..." },
"source": "skillhub",
"agent": "codex",
"installedAt": "2026-04-28T06:00:00.000Z"
}
CLI 创建 .skillhub/metadata.json 提取出下载的软件包后。 它不属于
当管理目录再次被公布时,则排除.
* 升级安装的技能
upgrade 只在明确选择的、由SkillHub管理的地方设施上运行。 从来没有
安装缺失的 Skill 且没有隐含的升级全模式.
# Preview without changing files
skillhub upgrade @global/skillhub-cli --check
# Upgrade one or a bounded list of installed Skills
skillhub upgrade @global/skillhub-cli
skillhub upgrade @team/code-review @team/java-guide
# Machine-readable plan
skillhub upgrade @team/code-review --check --json
来源身份是 registry + namespace + slug。 。 。 . --force 只有在
完全身份匹配安装元数据; 它从不覆盖一个未管理的目录或
a 从其他来源安装的技能.
每个选定的安装位置独立升级。 过滤器可以选择一个位置;
未选职位保留自己的版本和内容. 计划和结果报告每个职位一行.
命令还保留了注册解决旧版本时的本地文件.
如果一个多技能运行在较早的升级执行后失败, 执行停止并报告每个项目
作为 upgraded, (中文(简体) ), failed,或 not-attempted承诺的升级永远不会被隐含地卷回.
新设施存储绝对目标路径. 较早的目录条目,有相对目标路径
在升级前必须重新安装,因为其原始工作目录无法安全回收.
命名空间工作空间
使用命名空间同步来保持从一个团队空间中明确选择的技能. 每个同步动作都需要
--namespace· ; global 不是一个有效的同步目标,因为它没有命名空间成员.
# Interactively select new or updated skills in a TTY
skillhub sync pull --namespace team-a
# Non-interactive/CI pull: repeat --skill for every explicit target
skillhub sync pull --namespace team-a --skill code-review --skill java-guide
# Use an explicit workspace directory and target
skillhub sync pull --namespace team-a --skill code-review --dir ./.claude/skills
# Check without downloading
skillhub sync pull --namespace team-a --check
# Show local edits and remote updates
skillhub sync status --namespace team-a --json
skillhub sync diff --namespace team-a
# Remove only an explicitly selected, unchanged managed skill that no longer exists remotely
skillhub sync pull --namespace team-a --skill retired-guide --prune
# Validate and upload every local skill for review
skillhub sync push --all --namespace team-a --dry-run
skillhub sync push --all --namespace team-a --submit-review
默认的工作空间是 <cwd>/.agents/skills在交互式 TTY 中,拉出一个多选择列表;空
选择不会改变任何东西。 在TTY之外, 总是与 --json,拉势需要一个或多个可重复
--skill <slug> 选项,而永远不要提示. sync pull --check 例外:它检查整个命名空间和
从不编写本地文件 。 拉动绝不覆盖本地更改,除非 --force 提供,和 --force 仅适用于
明确选择技能。 远程清除量报告为: orphaned 并予保留,除非 --prune 财务报告和审定财务报表
匹配 --skill 已提供.
同步比较已发布的版本和包指纹. 确切的匹配是 up-to-date, (中文(简体) ),
当更新版本是 update-available 即使其内容不变。 旧的遥控器
版本, 无法排序的版本配对, 或更改的远程内容, 没有版本折叠 blocked。 。 。 .
--force 不得绕过这些释放安全检查; 核实释放情况并使用明确的
skillhub install 当替换是故意的.
工作空间推是非重叠的:一个已存在的取名空间/slug/版本被报告为冲突,包括仍然被上传或等待审查的版本. 其他同类技能 --all 运行继续处理.
名称空间同步写入 .skillhub/namespace-sync.json 工作空间和技能 .skillhub/metadata.json 文档。 这些文件包含注册坐标、已公布版本、汇总指纹、以及所使用的文件散列 status 财务报告和审定财务报表 diff。 。 。 .
使用已安装的技能和装备
安装下载 Skill 文件; 它不执行任务 。 打开您代理中的目标项目, 验证其发现 SKILL.md,配置文档的依赖关系,请其使用“技能”。 见 成套使用指南。 。 。 .
# Replace with a real Suite coordinate
skillhub suite install @team/example-suite --scope project --agent codex
skillhub suite check @team/example-suite
skillhub suite upgrade @team/example-suite --check
skillhub suite upgrade @team/example-suite
skillhub suite remove @team/example-suite
地方管理
列出已安装的技能
# List all installed skills
skillhub list
# Filter by Agent
skillhub list --agent codex
# Filter by multiple Agents
skillhub list --agent codex --agent claude-code
# Filter by directory
skillhub list --dir ~/.codex/skills
# JSON output
skillhub list --json
删除技能
# A bare slug removes matching local installations across namespaces
skillhub remove pdf-parser
# A namespaced coordinate removes only that namespace
skillhub remove myspace/pdf-parser
skillhub remove @myspace/pdf-parser
skillhub remove myspace--pdf-parser
# Equivalent precise local removal with an explicit namespace
skillhub remove pdf-parser --namespace myspace
# Remove only specific Agent's installation
skillhub remove pdf-parser --agent codex
# Remove all targets (skip interactive confirmation)
skillhub remove pdf-parser --all
# Remove remote skill (requires authentication, prompts for confirmation)
skillhub remove pdf-parser --remote --namespace myspace
# Skip remote deletion confirmation
skillhub remove pdf-parser --remote --hard --namespace myspace
参数排他性规则:
--all无法使用--agent--remote无法使用--agent或者说--all- 在非互动环境中需要远程删除
--hard
重建当地库存
skillhub doctor
doctor 执行下列操作:
- 扫描
<cwd>/.<agent>/skills/<slug>/.skillhub/metadata.json - 组别
registry + namespace + slug - 后退旧去
inventory.json(如果存在) - 写入新内容
inventory.json
每个目标都跟踪版本。 医生报告康复问题;它不下载或提升技能.
· 出版
# Publish directory (auto-packaged as zip)
skillhub publish ./my-skill --namespace myspace
# Publish existing zip file
skillhub publish ./my-skill.zip --namespace myspace
# Specify visibility
skillhub publish ./my-skill --namespace myspace --visibility private
可见选项 :
public(默认)——人人可见namespace-only——仅能识别空间成员private- 只有你自己才看得出来
在服务器接受提交后,CLI会显示服务器的当前状态和技能细节页面URL.
诸如: SCANNING 财务报告和审定财务报表 PENDING_REVIEW 已成功同步提交,但不确认
技能最终被公布。 请检查access-date=中的日期值 (帮助) 最后出版或审查状态的网页.
* 自我更新
# Check for new version
skillhub update --check
# Execute update
skillhub update
更新机制 :
- 通过 npm 全球安装: 自动执行
npm install -g @astron-team/skillhub@latest - 通过 Bun 全球安装: 自动执行
bun add -g @astron-team/skillhub@latest - 通过 npx 运行: 提示手动更新命令
- 未知的安装方法: 提示手动更新
环境变量
| 变量 | 说明 | 优先权 |
|---|---|---|
SKILLHUB_REGISTRY | 默认注册 URL | 低于 --registry 参数 |
SKILLHUB_TOKEN | API 令牌 | 低于 --token 参数, 高于存储的符号 |
本地文件结构
~/.skillhub/
├── config.json # User configuration (registry, defaultAgent, etc.)
├── credentials.json # API tokens (stored per registry, permissions 0600)
└── inventory.json # Installed skills inventory
QQ 命令参考
| 命令 | 说明 |
|---|---|
skillhub help [command] | 显示帮助信息 |
skillhub version [--json], (中文(简体) ), skillhub --version, (中文(简体) ), skillhub -v | 显示 CLI 版本 |
skillhub login [--no-open] [--token <token>] [--registry <url>] [--json] | 登录 OAuth 设备流或 API 令牌 |
skillhub logout [--registry <url>] [--json] | 删除指定的注册符 |
skillhub whoami [--registry <url>] [--token <token>] [--json] | 验证当前符号并显示用户信息 |
skillhub search <query> [--registry <url>] [--token <token>] [--limit <n>] [--json] | 搜索已公布的技能 |
skillhub install <coordinate> [--scope <user|project>] [--namespace <slug>] [--version <v>] [--agent <profile>] [--dir <path>] [--force] [--registry <url>] [--token <token>] [--json] | 安装技能 |
skillhub upgrade <coordinate...> [--namespace <slug>] [--agent <profile>] [--dir <path>] [--registry <url>] [--check] [--force] [--json] | 升级明确选择的安装技能 |
skillhub list [--agent <profile>] [--dir <path>] [--registry <url>] [--json] | 列出已安装的技能 |
skillhub remove <coordinate> [--agent <profile>] [--all] [--remote] [--hard] [--namespace <slug>] [--registry <url>] [--token <token>] [--json] | 删除技能 |
skillhub doctor [--json] | 扫描项目目录并重建本地目录 |
skillhub publish <path> [--namespace <slug>] [--visibility <v>] [--registry <url>] [--token <token>] [--json] | 发布技能 |
skillhub sync pull --namespace <slug> [--skill <slug>]... [options] | 从非全局命名空间中提取明确选中的技能 |
skillhub sync <status|diff|push> --namespace <slug> [options] | 检查或推动非全局命名空间工作空间 |
skillhub suite <install|check|upgrade|remove> <coordinate> [options] | 管理一个被绑定的技能套件安装 |
skillhub update [--check] [--json] | 检查或执行 CLI 自更新 |
安全说明
- 仅存储在用户目录中
~/.skillhub/credentials.json - 在 Linux/macOS 上,证书文件权限自动设定为
0600 - 托肯从未写入任何工程本地文件
- 远程删除操作需要明确确认或
--hard参数 remove命令验证路径安全,以防止删除非技能目录
* 解决问题
认证失败
# Verify token validity
skillhub whoami
# Re-login interactively
skillhub login
# Or use a token for non-interactive automation
skillhub login --token sk_xxx
对于结构化注册失败, CLI 打印服务器的公众 msg 财务报告和审定财务报表
requestId. HTTP 403 无公开消息返回 access denied· ;
它不会自动被描述为缺失的符号范围。 包含
在要求注册操作员进行调查时请求识别.
网络错误
# Check if registry is accessible
curl 'https://skill.xfyun.cn/api/cli/v1/skills/search?q=test&limit=1'
# Use alternative registry
skillhub search test --registry https://skillhub.example.com
安装目录冲突
# Use --force to overwrite
skillhub install pdf-parser --force # same SkillHub source only
# Or remove first then install
skillhub remove pdf-parser
skillhub install pdf-parser
--force 不绕过源属性。 移动或明确删除未管理或不同来源
在安装另一个具有相同可见弹片的 Skill 之前使用目录 .
存货损坏
# Rebuild inventory
skillhub doctor
页:1
许可证
阿帕奇 - 2.0
版权:2026 iFlytek Co., Ltd.
包装任务示例
作者可以包括: .skillhub/examples.json 在一个技能包。 文件保持不变
路径。 它是版本技能内容,包括当其
JSON 不符合示例协议; 本地编辑由已有的
升级/同步完整性检查。 不需要单独的 Web 配置 .
{
"schemaVersion": 1,
"defaultLocale": "zh-CN",
"examples": {
"zh-CN": [{ "id": "summary", "title": "整理纪要", "prompt": "请用 {{skill}} 整理会议记录。" }],
"en": [{ "id": "summary", "title": "Summarize notes", "prompt": "Use {{skill}} to summarize meeting notes." }]
}
}
本地的 DSH 插件确认此已设定的 UTF-8 声明并提供可编辑的任务
电源 不支持的声明仍然是普通的软件包文件. 见
协议和限制。 。 。 .
仅 .skillhub/metadata.json 是安装者拥有的记录: 目录发布和同步
推出省略,安装则拒绝一个提供它的包(包括路径别名).
其他作者 .skillhub 文档被保留和指纹.
忽视整体的老消费者 .skillhub 目录不支持软件包
这些文件。 仅用寿命周期可使用的CLI/插件建件出版/安装;旧软件包
字节和已公布的指纹必须保持不变。 这不是透明的后退
现有的二进制兼容性 .
目录和 ZIP 出版(publish,包括: --dry-run,以及 sync push检查
用于任务实例的已发送归档。 人类产出报告确认摘要;
--json 留着吧 examplesStatus, (中文(简体) ), examplesCount 财务报告和审定财务报表 warnings 字段。 计数包括
所有申报的语言。 不支持的宣告产生非屏蔽警告,并且是
未上载; 无法读取的归档生成检查警告并保留
以服务器的软件包验证为条件.
安装库存兼容性
版本 0.3.0 保留安装存货计划 第2版. 每个安装目录都拥有
版本、指纹、时间戳和所有权,因此用户安装和项目安装
同样的技能可以留在不同的版本. list --json 报告实际版本
每个目标. upgrade --check --json 升级结果包含每个选定安装一行
位置;因此,同一坐标可以不止一次地出现不同的版本和
targets。 。 。 . --dir 或者说 --agent 选择职位时不更新未选中的兄弟姐妹.
直接安装/升级/重新升级和同步运行
与 --force通过成套命令管理这些职位;不相关的直接设施
仍可独立管理.
共用库存仍然严格v2,没有长期存在 installationState; 激活来源于信任 SKILL.md 编号 : SKILL.md.disabled 条目。 不需要协调的CLI升级。 已公布的CLI 0.2.0 必须保留正常的查询和普通目标管理;默认的更新、同步和套接字路径不得无意中使被禁用的目标得以实现。 历史显性力的安装,升级和同步保留了它们的覆盖语义并可能恢复标准条目;显性去除保留了删除语义. 新阅读器必须反映这些实际文件变化.
读取 v1/v2 是非调取. 未公布的v3存货需要经过验证,锁定的转换为v2,并有原字节备份;从未在较新的记录上恢复已过时的存货. 普通的DSH日记保持相容性;切换日记不得阻挡无关的历史操作. 兼容性修补和真实的历史包装验收正在进行中;放行时一直被屏蔽到通过.
此 CLI 不添加启用/ 失效命令 。 使用 DSH 进行明确的切换并禁用更新;
CLI 升级甚至拒绝使用 --force名称空间同步
没有更新/更新的设施,套件无法采用,医生保留了信任
记录不声称松散 .disabled 文档。 标准出版要求 SKILL.md· ;
在发布禁用安装之前,通过兼容管理器恢复条目.