dsh-skills-manager
Verified@xqitw/dsh-skills-manager · v0.1.4 · MIT · Web UI
dshweb 设置页 Skills 管理器:浏览、搜索、创建、编辑、删除 skills,切换模型可见性,ZIP 上传安装。纯 Node 实现,无 python/unzip 依赖。
Install
dsh plugin add @xqitw/dsh-skills-manager Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Published to npm without a public repository. Inspect the package contents before installing.
Tags
Creators
Readme
DSH-Skills-Manager
项目地址:https://cnb.cool/xqitw/dsh-skills-manager
dsh(deepseek-harness)Web 设置页 Skills 管理器:浏览、搜索、创建、编辑、删除 skills,切换模型可见性,ZIP 上传安装。
纯 Node 实现(node:zlib 手写 ZIP 解析),无 python / unzip 等外部依赖。
功能
- 浏览:全局 + 项目级 + 自定义目录 skills 合并列表,来源分组、实时搜索
- 查看 / 编辑:打开任意 skill 查看完整 SKILL.md,可编辑并保存
- 新建:
~/.agents/skills/<name>/SKILL.md标准模板 - 删除:整目录删除(二次确认弹窗)
- 切换模型可见性:翻转 frontmatter 的
disable-model-invocation - ZIP 上传安装:选 zip → base64 → host 纯 Node 解压(防路径穿越)→ 按 frontmatter name 安装
- 工作区联动:自动跟随当前活跃会话工作区,项目级 skills 随工作区切换刷新
安装
作为 dsh profile bundle 使用,推荐用 dsh 官方命令:
dsh plugin --profile web add @xqitw/dsh-skills-manager
该命令会在 profile 目录执行 pnpm add,检测到包的 dsh.bundle 声明后
自动将其加入 dsh.profile.bundles,重启 dsh 后设置页出现「Skills」页签。
等价的手动方式:
cd ~/.dsh/profiles/web
pnpm add @xqitw/dsh-skills-manager
然后确认 package.json 的 dsh.profile.bundles 包含
"@xqitw/dsh-skills-manager",重启 dsh 生效。
配置
插件支持通过 profile 的 cordis.patch.yml 覆盖配置:
- id: skills-manager
name: '@xqitw/dsh-skills-manager'
config:
# 用户级 skills 根目录(默认 ~/.agents/skills)
skillsRoot: '~/my-skills'
# 自定义扫描目录(source 归为 "custom",界面显示为「自定义目录」分组)
customSkillDirs:
- /path/to/custom/skills
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
skillsRoot |
string |
~/.agents/skills |
用户级 skills 根目录,支持 ~ 前缀 |
customSkillDirs |
string[] |
[] |
额外扫描的自定义目录,界面归为「自定义目录」分组 |
扫描目录优先级
| 优先级 | 目录 | source |
|---|---|---|
| 1 | <cwd>/.dsh/skills(当前工作区) |
project-dsh |
| 2 | <cwd>/.agents/skills(当前工作区) |
project-agents |
| 3 | customSkillDirs 配置目录 |
custom |
| 4 | skillsRoot(默认 ~/.agents/skills) |
user-agents |
| 5 | ~/.dsh/skills |
user-dsh |
同名 skill 按优先级去重,优先显示高优先级来源。
权限说明
插件写 ~/.agents/skills(工作区之外),运行需要 danger-full-access 权限策略。
仓库结构
├── src/index.ts # host 端:SkillsManagerService + 纯 Node ZIP 解压
├── lib/client.js # client bundle:设置页 UI(__ModuleLoader__ 模块形态)
├── lib/index.js # host 端构建产物(tsc 生成)
├── cordis.patch.yml # profile 补丁层
├── .cnb.yml # CI 流水线:PR 构建验证,tag_push 发布 npm + Release
├── tsconfig.json # TypeScript 构建配置
└── docs/ # 项目文档
构建与发布
host 端用 TypeScript + 标准 TC39 装饰器(@Remote),依赖均为 npm 已发布版本:
npm install --legacy-peer-deps # --legacy-peer-deps 解决 dsh 生态 peer 互引
npm run build # tsc → lib/index.js
发布由 CI 自动完成:打 tag 触发 tag_push 流水线,并行执行 npm 发布与 Git Release 生成:
git tag v0.1.3 && git push origin v0.1.3
npm 密钥来自 xqitw/api-key 仓库的 env-npm.yml(NPM_API_KEY)。
常见问题
Q:为什么我的项目级 skills 不显示? A:项目级 skills 跟随「当前活跃会话工作区」。请先在 dsh Web 中打开目标工作区(或新建会话),页面顶部会显示当前工作区路径,项目级分组随之刷新。
Q:「自定义目录」分组为空?
A:该分组只有配置了 customSkillDirs 才会出现内容,且需要重启 dsh 生效。
Q:页面空白 / 菜单不出现? A:确认安装版本 ≥ 0.1.3(早期版本存在渲染问题)。升级后强制刷新浏览器(Ctrl+Shift+R)。
贡献指南
欢迎参与贡献!详细的贡献规范、开发流程与提交规范请参考 CONTRIBUTING.md。
发现安全漏洞请按 SECURITY.md 的流程私下报告,请勿通过公开 Issue 提交。
许可证
基于 MIT License 开源。