dsh-skill-station
Sidebar skill hub: scan Claude/Codex/Cursor/Gemini skill directories for one-click import, manage global/project skills (toggle, trash), and install from dropped folders, zip archives, or local paths of any size.
Install
dsh plugin --profile web add dsh-skill-station
Sandbox test results
| Stage | Result |
|---|---|
| 1 install | ✓ |
| 2 list | ✓ |
| 3 mount | ✓ |
| 4 boot | — |
Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).
README
dsh-skill-station
DeepSeek Harness 的技能库、导入器与公开技能市场。




[English](README.md) | 中文
技能站把 Agent 能用的技能收进一个页面:列出 DSH 家目录、共享 agents 目录和每个工作区下的全部技能;从 Claude Code、Codex CLI、Cursor、Gemini CLI 的现有技能库一键导入;也可以通过拖拽文件夹、ZIP、本地路径或公开 Agent Skills 市场安装新技能。公开市场不需要账号或令牌,入口在浏览器界面里,而凭据、网络请求和文件写入始终留在 Host 侧。
目录
- [截图](#截图)
- [功能](#功能)
- [环境要求](#环境要求)
- [安装](#安装)
- [使用技能站](#使用技能站)
- [技能市场](#技能市场)
- [配置](#配置)
- [实现方式](#实现方式)
- [安全模型](#安全模型)
- [实测证据](#实测证据)
- [目录结构](#目录结构)
- [开发](#开发)
- [已知限制](#已知限制)
- [许可证](#许可证)
- [致谢](#致谢)
截图
技能市场
浏览 skills.sh 目录或按关键词搜索,选择目标根目录与冲突策略,再用版本选择器一键安装。
安装结果
安装完成后,面板会给出技能的本地目录和规范归档的 SHA-256;同一个摘要会写进技能旁的 .dsh-skillhub.json。
技能库
技能库按根目录分组。可以切换模型调用、查看详情、分配场景标签、导出 ZIP,或把技能移入回收站;宿主内置技能只读展示。
截图来自本地 harness 调用真实 Host API 渲染,市场数据是 skills.sh 的线上数据。界面支持中文和英文,这几张截图使用中文界面。
功能
技能库
- 按作用域分组列出所有可写根目录下的技能:
$DSH_HOME/skills(通常是~/.dsh/skills)、~/.agents/skills,以及每个工作区的<workspace>/.dsh/skills和<workspace>/.agents/skills。宿主内置技能单独成组,只读展示。 - 按名称和描述搜索;详情视图展示解析后的 frontmatter、完整的
SKILL.md正文,目录型技能还有文件树。 - 直接编辑文本文件(包括
SKILL.md);保存后返回重新解析的元数据,列表状态保持准确。 - 通过改写 frontmatter 里的调用开关(
disable-model-invocation、user-invocable)启停技能,目录型 bundle 和扁平<name>.md都支持。 - 把任意技能导出为以技能名命名的 ZIP;重新导入该压缩包即可还原目录结构。
- 运行发现诊断,按宿主加载器的严格规则检查非法 YAML、缺少
name或description、非 kebab 名称、旧式 camelCase 开关键,并支持就地修复不规范的前置元数据。 - 用受校验的向导新建技能,生成合法的 kebab-case
SKILL.md。 - 用场景标签给技能分组(例如「工程」「设计」);归属关系保存在
~/.dsh/skill-station/scenes.json。 - 删除只是移入可恢复的回收站;可以恢复条目,也可以显式清空回收站。
从其他 Agent 导入
- 只读扫描 Claude Code、Codex CLI、Cursor、Gemini CLI 使用的技能库,绝不修改来源目录。
- 默认扫描位置:
Agent · 用户级目录 · 工作区目录
Claude Code · ~/.claude/skills · .claude/skills
Codex CLI · ~/.codex/skills · .codex/skills
Cursor · ~/.cursor/skills · .cursor/skills
Gemini CLI · ~/.gemini/antigravity/skills、~/.gemini/skills · .gemini/skills
- 可以导入到全局根目录,也可以导入到当前选中工作区的项目根目录。
- 同名冲突支持跳过、改名、替换三种策略。改名会同步改写 frontmatter 里的 name,避免导入副本遮蔽原技能;替换会先把旧版本移入回收站。
- 宿主技能 watcher 会发现新文件,导入后无需重启 DSH。
随处安装
- 把技能文件夹拖进面板、用文件选择器挑选文件夹、拖入或选择 ZIP,或粘贴 Host 本机上已有文件夹的绝对路径。
- ZIP 在 Host 侧解压;symlink 条目会被拒绝,所有路径在写入前都会校验。
- 浏览器安装会先校验、在目标根目录内暂存,再用原子 rename 落到最终位置。暂存或 rename 失败时会清理暂存目录,并从回收站恢复被替换的技能。
- 本地路径安装是磁盘到磁盘的流式复制,适合带 vendored 依赖树的大技能。
公开技能市场
- 默认对接 skills.sh:通过公开 sitemap 发现目录、通过公开搜索 API 做关键词搜索、从 GitHub 仓库归档安装。
- 市场身份沿用来源自身的唯一性规则,并成为安装后的技能名:skills.sh 用
owner--repo--skillId(例如anthropics--skills--pdf,安装为anthropics-skills-pdf)。 - 其他后端只需改配置:OpenClaw 注册表、静态 JSON 目录,或部署方自带的企业 Skill Hub。界面、安装管线、冲突策略和来源记录完全一致。
- 下载类技能支持跳过和替换两种冲突策略;改名会被拒绝并返回
409,因为归档自身已经定义了身份。 - 每个市场技能都带来源记录:provider、上游身份、版本、归档 SHA-256 和安装时间。
环境要求
- 支持插件机制的 DSH Web profile(0.2.x 系列)。本包 peer 依赖
@deepseek-ai/cordis ^4.0.5与 0.2.1 的客户端 shell 包。 - Node.js 22.19 以上(22.x 系列),或 Node.js 24。
- DSH 支持的操作系统均可。路径遵循 DSH 约定,并识别
$DSH_HOME。
安装
把 bundle 加进你实际运行的 profile,然后重启该 profile:
dsh plugin --profile web add dsh-skill-station # 重启 profile(例如 dsh web,或重新打开 Desktop)
需要移除时:
dsh plugin --profile web remove dsh-skill-station
这是一个标准 DSH bundle:cordis.patch.yml 会插入 Host 行来挂载 API,并插入 client 行来注册侧边栏按钮和设置分区;profile 会一直保留该插件,直到你主动移除。
DSH Desktop 同样按 profile 管理插件。如果你启动的 profile 里还没有技能站,用 --profile desktop(或你的 Desktop 构建实际使用的 profile 名)把同一个 bundle 装进去即可;已经内置该 bundle 的构建不需要额外安装。
安装后,从侧边栏底部的技能站按钮打开面板,或进入「设置 → 技能站」。
使用技能站
面板有五个标签页,顶部还有工作区选择器。选择器决定管理哪个工作区的项目根目录;全局根目录始终可用。
标签页 · 作用
技能库 · 浏览、搜索、启停、查看、编辑、导出、诊断、打标签;新建技能。
Skill 市场 · 浏览已配置的市场、按关键词搜索、选择目标根目录与版本,安装单个技能。
导入技能 · 扫描外部 Agent 技能库,勾选候选项,按冲突策略导入。
安装技能 · 拖入文件夹、选择文件夹、上传 ZIP,或粘贴本地绝对路径。
回收站 · 恢复已删除的技能,或清空回收站。
可写根目录(技能库按此顺序展示):
作用域 · 根目录
全局(用户) · $DSH_HOME/skills,默认 ~/.dsh/skills
共享(用户) · ~/.agents/skills
工作区 · <workspace>/.dsh/skills
工作区(共享) · <workspace>/.agents/skills
技能要么是目录型 bundle(<name>/SKILL.md 加附属资源),要么是直接放在根目录下的单个 Markdown 文件(<name>.md)。删除技能时,它总是先被移入 ~/.dsh/skill-station/trash。
技能市场
skills.sh(默认)
skills.sh 是一个公开的 Agent Skills 目录。它没有提供「一次列出全部技能」的 JSON,所以 Host 使用它公开暴露的三个入口:
环节 · 请求 · 说明
发现 · GET /sitemap.xml → GET /sitemap-skills-N.xml · 最多 4 万个技能页,首次浏览时解析,缓存 10 分钟
搜索 · GET /api/search?q=... · 关键词搜索;结果行带仓库、技能 id 和安装次数
归档 · GET https://codeload.github.com/<owner>/<repo>/zip/HEAD · 技能内容来自仓库自身的归档
同一个技能 id 只在单个仓库内唯一,所以 skills.sh 身份保留三段坐标:owner--repo--skillId。SKILL.md 的 name 必须是 kebab-case,因此身份会被投影成合法名称,安装为 anthropics-skills-pdf 而不是 anthropics--skills--pdf。安装请求始终指定一个精确身份;Host 会校验下载到的归档确实发布了该技能,对格式合法但并不存在的身份返回 404 NOT_FOUND。
其他后端
配置 · 后端 · 发现 · 下载 · 身份
market.mode: skills-sh(默认) · skills.sh · sitemap 分片或搜索 · GitHub 仓库归档 · owner--repo--skillId
market.mode: registry · clawhub.ai · 游标目录或搜索 · 注册表 ZIP 端点 · owner--slug
market.mode: catalog · 静态 JSON 文档 · 单个目录文档 · GitHub、npm 或直链归档 · 条目 id
market.provider: htsc · 部署方提供的企业 Skill Hub · 部署方 API · 不可变版本 ZIP · 部署方技能名
静态目录默认读取 https://awesome-dsh-plugin.com/plugins.json。切换后端只是配置变化;面板、安装管线和安全检查共用同一套实现。
企业 Skill Hub
运行自有 Skill Hub 的部署,可以设置 market.provider: htsc 并填写只由 Host 读取的 skillHub 配置块,接入按组织授权的目录。本构建不内置
…(truncated)
Rendered from the README published on npm. Formatted only, not edited.
Versions
Published on npm::2,最后更新 2026-11-04