点开 ⚡ 浏览全部技能,中文备注分类筛选后一键插入
29.5/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/23 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add frzzaxszz/dsh-skill-catalog该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · skill
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 13 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 92 处,展示前 58 条)
- 发起网络请求plugin/lib/client.js:25831
const response = await fetch(`${ENDPOINT}${migrate ? "?migrate=1" : ""}`, { - 发起网络请求plugin/lib/client.js:25847
const response = await fetch(ENDPOINT, { headers: { accept: "application/json" } }); - 发起网络请求plugin/lib/client.js:26158
const response = await fetch(`/dsh-skill-catalog/skill${cwd}`, { - 发起网络请求plugin/lib/client.js:26546
const res = await fetch(`/api/dsh-skill-explorer/list${cwdQuery}`, { - 发起网络请求plugin/lib/client.js:26996
const res = await fetch(`/dsh-skill-catalog/skills${cwd}`, { headers: { accept: "application/json" } }); - 发起网络请求plugin/lib/client.js:27022
const res = await fetch(`/dsh-skill-catalog/skills${cwd}`, { headers: { accept: "application/json" } }); - 读取本地文件plugin/lib/index.js:13
return (await stat(path.join(dir, entry.name))).isDirectory(); - 读取本地文件plugin/lib/index.js:87
await access(candidate); - 读取本地文件plugin/lib/index.js:103
const manifest = JSON.parse(await readFile(path2.join(profileDir, "package.json"), "utf8")); - 读取本地文件plugin/lib/index.js:116
for (const entry of await readdir(profilesDir, { withFileTypes: true })) { - 读取本地文件plugin/lib/index.js:132
profiles = await readdir(profilesDir, { withFileTypes: true }); - 读取本地文件plugin/lib/index.js:140
await access(candidate); - 写入本地文件plugin/lib/index.js:188
await copyFile(file, backup); - 写入本地文件plugin/lib/index.js:191
await writeFile(tmp, next, "utf8"); - 写入本地文件plugin/lib/index.js:192
await rename(tmp, file); - 写入本地文件plugin/lib/index.js:216
await writeFile(tmp, original, "utf8"); - 写入本地文件plugin/lib/index.js:217
await rename(tmp, file); - 写入本地文件plugin/lib/index.js:296
await rename2(plain, off); - 执行外部命令固定命令plugin/lib/index.js:374
spawn("explorer.exe", [`/select,${show}`], { detached: true, stdio: "ignore" }).unref(); - 执行外部命令固定命令plugin/lib/index.js:378
spawn("open", ["-R", show], { detached: true, stdio: "ignore" }).unref(); - 执行外部命令固定命令plugin/lib/index.js:381
spawn("xdg-open", [path3.dirname(show)], { detached: true, stdio: "ignore" }).unref(); - 读取本地文件plugin/src/bundled-skills.js:85
content = await readFile(entryPath, 'utf8') - 读取本地文件plugin/src/bundled-skills.js:110
entries = await readdir(dir, { withFileTypes: true }) - 读取本地文件plugin/src/bundled-skills.js:149
info = await stat(entryPath) - 读取本地文件plugin/src/bundled-skills.js:156
content = await readFile(entryPath, 'utf8') - 读取本地文件plugin/src/dir-entry.js:34
return (await stat(path.join(dir, entry.name))).isDirectory() - 读取本地文件plugin/src/index.js:192
entries = await readdir(dir, { withFileTypes: true }) - 读取本地文件plugin/src/index.js:205
content = await readFile(path.join(skillDir, ENTRY), 'utf8') - 读取本地文件plugin/src/index.js:211
content = await readFile(path.join(skillDir, DISABLED_ENTRY), 'utf8') - 读取本地文件plugin/src/index.js:356
return normalizeSharedState(JSON.parse(await readFile(sharedStateFile(), 'utf8'))) - 写入本地文件plugin/src/index.js:366
await mkdir(path.dirname(file), { recursive: true }) - 写入本地文件plugin/src/index.js:368
await writeFile(tmp, `${JSON.stringify(normal, null, 2)}\n`, 'utf8') - 写入本地文件plugin/src/index.js:369
await rename(tmp, file) - 读取本地文件plugin/src/patch-ui-skill.js:116
await access(candidate) - 读取本地文件plugin/src/patch-ui-skill.js:159
const manifest = JSON.parse(await readFile(path.join(profileDir, 'package.json'), 'utf8')) - 读取本地文件plugin/src/patch-ui-skill.js:182
for (const entry of await readdir(profilesDir, { withFileTypes: true })) { - 读取本地文件plugin/src/patch-ui-skill.js:224
profiles = await readdir(profilesDir, { withFileTypes: true }) - 读取本地文件plugin/src/patch-ui-skill.js:236
await access(candidate) - 读取本地文件plugin/src/patch-ui-skill.js:237
const real = await realpath(candidate) - 写入本地文件plugin/src/patch-ui-skill.js:309
await copyFile(file, backup) - 写入本地文件plugin/src/patch-ui-skill.js:318
await writeFile(tmp, next, 'utf8') - 写入本地文件plugin/src/patch-ui-skill.js:319
await rename(tmp, file) - 写入本地文件plugin/src/patch-ui-skill.js:366
await writeFile(tmp, original, 'utf8') - 写入本地文件plugin/src/patch-ui-skill.js:367
await rename(tmp, file) - 读取本地文件plugin/src/skill-ops.js:80
return (await stat(target)).isDirectory() ? 'dir' : 'file' - 读取本地文件plugin/src/skill-ops.js:89
await stat(candidate) - 写入本地文件plugin/src/skill-ops.js:117
await rename(plain, off) - 写入本地文件plugin/src/skill-ops.js:124
await rename(off, plain) - 写入本地文件plugin/src/skill-ops.js:142
await mkdir(backupPath, { recursive: true }) - 写入本地文件plugin/src/skill-ops.js:143
await rename(target, path.join(backupPath, name)) - 写入本地文件plugin/src/skill-ops.js:144
await writeFile(path.join(backupPath, 'manifest.json'), `${JSON.stringify({ - 读取本地文件plugin/src/skill-ops.js:157
entries = await readdir(skillBackupDir(), { withFileTypes: true }) - 读取本地文件plugin/src/skill-ops.js:166
const manifest = JSON.parse(await readFile(path.join(dir, 'manifest.json'), 'utf8')) - 读取本地文件plugin/src/skill-ops.js:195
manifest = JSON.parse(await readFile(path.join(dir, 'manifest.json'), 'utf8')) - 写入本地文件plugin/src/skill-ops.js:204
await rename(path.join(dir, path.basename(original)), original) - 执行外部命令固定命令plugin/src/skill-ops.js:221
spawn('explorer.exe', [`/select,${show}`], { detached: true, stdio: 'ignore' }).unref() - 执行外部命令固定命令plugin/src/skill-ops.js:225
spawn('open', ['-R', show], { detached: true, stdio: 'ignore' }).unref() - 执行外部命令固定命令plugin/src/skill-ops.js:228
spawn('xdg-open', [path.dirname(show)], { detached: true, stdio: 'ignore' }).unref()
扫描于 2026/10/31(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
README
由 DeepSeek 最新模型翻译生成dsh-skill-catalog
DSH Web GUI 的技能面板——点一下 ⚡,全部技能带中文备注与分类排在你面前,搜索、筛类、点选、插入,随消息发出自动加载。
解决什么问题
DSH 官方内置了 / 技能补全,但它是记忆驱动的:你得先记得技能名,打 / + 前缀才能过滤出来。装了几十个技能之后,谁也记不住。
本插件在输入框旁加一个 ⚡ 按钮,点开就是全部技能:
- 全量发现——磁盘扫描与宿主注册表合并,连 bundled / custom / runtime 三类结构上看不见的技能也列得出来
- 8 类分类——工程 / 排错 / 需求 / 设计 / 文档 / 调研 / 技能 / 自动化,点 chip 只看该分类
- 中文备注——只影响显示层,不改任何 SKILL.md,模型的技能路由判断完全不受影响
- 拼音搜索——ji yi / jiyi / jy 都能搜到中文技能
- 智能排序——置顶 → 最近使用 → 常用 → 其余,再按「自动 / 手动」区分模型能否自行调用
- 技能管理——右键置顶 / 关闭 / 定位 / 卸载(移入备份,可撤回)
- 跨端共享——桌面端与网页端的置顶、使用记录共用一份
选中后把官方 /技能名 手势插进发送框,随消息发出,由 DSH 原生机制加载技能——零 agent 侧改动。
记得名字用官方 /,忘了名字用 ⚡,两者互补,可同时使用。
展开完整文档(README 剩余 1 节)
dsh-skill-catalog
DSH Web GUI 的技能面板——点一下 ⚡,全部技能带中文备注与分类排在你面前,搜索、筛类、点选、插入,随消息发出自动加载。
解决什么问题
DSH 官方内置了 / 技能补全,但它是记忆驱动的:你得先记得技能名,打 / + 前缀才能过滤出来。装了几十个技能之后,谁也记不住。
本插件在输入框旁加一个 ⚡ 按钮,点开就是全部技能:
- 全量发现——磁盘扫描与宿主注册表合并,连 bundled / custom / runtime 三类结构上看不见的技能也列得出来
- 8 类分类——工程 / 排错 / 需求 / 设计 / 文档 / 调研 / 技能 / 自动化,点 chip 只看该分类
- 中文备注——只影响显示层,不改任何 SKILL.md,模型的技能路由判断完全不受影响
- 拼音搜索——ji yi / jiyi / jy 都能搜到中文技能
- 智能排序——置顶 → 最近使用 → 常用 → 其余,再按「自动 / 手动」区分模型能否自行调用
- 技能管理——右键置顶 / 关闭 / 定位 / 卸载(移入备份,可撤回)
- 跨端共享——桌面端与网页端的置顶、使用记录共用一份
选中后把官方 /技能名 手势插进发送框,随消息发出,由 DSH 原生机制加载技能——零 agent 侧改动。
记得名字用官方 /,忘了名字用 ⚡,两者互补,可同时使用。
安装
本插件不发布到 npm,从 GitHub 装:
dsh plugin --profile web add "git+https://github.com/frzzaxszz/dsh-skill-catalog.git#path:/plugin"
⚠️ #path:/plugin 不能省。 这个仓库是「插件在子目录」的布局:根目录放仓库说明,真正的 package.json 与 cordis.patch.yml 在 plugin/ 里。少了这一段,pnpm 在仓库根找不到 package.json,安装会失败。
固定到某个 commit:
dsh plugin --profile web add "git+https://github.com/frzzaxszz/dsh-skill-catalog.git#path:/plugin&commit=<sha>"
重启 dsh web(或刷新页面)即生效。
国内 HTTPS 受限时改用 SSH(同样要带 #path:/plugin):
dsh plugin --profile web add "git+ssh://git@github.com/frzzaxszz/dsh-skill-catalog.git#path:/plugin"
或先执行 git config --global url."git@github.com:".insteadOf "https://github.com/"
自带技能
装插件会一并装上它自己的维护技能,不需要另外手放到 ~/.agents/skills:
| 技能 | 什么时候用 |
| sync-catalog-zh-descriptions | 新装了技能、面板上还有英文备注、或新技能没落进分类 chip 时,调它一次,同时补中文备注与分配分类 |
因为 DSH 读技能的四个根(~/.agents/skills、$DSH_HOME/skills、<cwd>/.agents/skills、<cwd>/.dsh/skills)都不包含 node_modules,光把文件塞包里没人读得到——所以 host 半边启动时向 skills 服务注册了一个 provider(rank 350),机制与 dsh-mattpocock-skills-deck 的随包技能一致。
优先级:项目级(100/200)> 随包(350)> 你自己装在 ~/.agents/skills 的同名副本(500)。同名的以你那份为准——用户的选择优先。
为什么这件事要「调用一个 skill」,而不是全自动
装了插件之后,新技能应该一进来就自动被翻译、自动归类——这是更理想的形态,本插件也确实能做到:host 侧用 ctx.on('agent/pre-step', ({ agent }) => …) 拿到活 agent,再 agent.followup(msg) 把任务塞进会话,模型自己就去做,不需要任何外部 API。同机的 meow-memory 就是这么把记忆整理做成全自动的。
但我们仍然设计成由你显式调用,理由有三个,都不是技术限制:
① 自动化要往你正在跑的会话里插话。 followup/steer 不排队、不弹窗,表现为对话里凭空多出一次助手动作。对后台任务(记忆整理)这无所谓;但技能面板是个高频 UI,你点开面板只是想看一眼技能列表,却撞见 agent 在自动改写分类表——这个体验是有争议的,而且它会花你的 token。
② 判定「这是新技能」需要一份基线。 插件每次都是全量扫盘,本身没有「上次处理到哪」的记忆。要自动,就得再存一份已处理技能的快照(按 name + 描述哈希),多一个状态文件、多一类需要迁移和清理的数据。
③ 自动生成的质量会低于一次显式调用。 分类判据里有大量边界:「写文档 ≠ 文档」「pr 该归调研」「prototype 该归需求」这类需要揣摩技能实际用法;中文备注更要求读懂它在什么场景下被用。顺手做的版本大概率比不上专门做一遍。更麻烦的是它错了不会报错——只是安静地待在一个错的 chip 里,没人发现。
所以当前的取舍是:把你「记得去调哪个技能」的负担降到零(插件自带它、面板上就能看到它),而不是把你「审一眼结果」的机会也一起拿走。 如果以后确实想要全自动,可行路线是加一个默认关闭的开关(在设置里打开才走 pre-step 自动模式),或者做成「面板上显示『有 N 个技能未分类』,点一下补齐」——后者不插话,也不花多余 token,是更稳妥的一步。这些都还没做。
文档在哪
| 想看什么 | 去哪 |
| 完整功能说明、分类表、用法、原理、更新日志 | plugin/README.md |
| 动手改这个插件 | AGENTS.md(三副本结构与同步纪律) |
| 参与贡献 | CONTRIBUTING.md |
| Issue 跟踪与分诊约定 | docs/agents/issue-tracker.md |
仓库结构
plugin/ ← 插件的真相源(Git 跟踪的就是这份) src/ ← 可读的源码(client 半 + host 半) lib/ ← 实际运行的编译产物;无构建链,与 src 手维护同步 bundled-skills/← 随包技能 scripts/ ← 把 src 内联进 lib 的手工工具(幂等可重跑) docs/agents/ ← 工程技能读取的约定 backup/ ← 本地回滚件(不进仓库)
plugin/ 是真相源,但它不是实际在跑的那份。 详见 AGENTS.md——改代码必须同步到 profile 的 local-plugins/ 与 node_modules/ 两处,否则下次
pnpm install 会把改动冲掉。
贡献
Issue 与 PR 都欢迎。发现 Bug 请附上:DSH 版本、操作系统、在哪个面板看到的(本机输入框旁有两个 ⚡,左边是 dsh-skill-market,右边才是本插件)、以及控制台的 [dsh-skill-catalog] 日志。
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
frzzaxszz/dsh-skill-catalog
点开 ⚡ 浏览全部技能,中文备注分类筛选后一键插入
相关插件 · 技能 / 提示词
人设统管ZiChuanLan/agent-purge
一份系统提示词,喂给多个 coding…
★ 931已汉化DSH
73.8
人物画像蒸馏titanwings/distilly
Distilly — 把他们的思考方式提炼成可复用的技能,供任何智能体或机器人使用。原名 Colleague Skill(原同事 Skill)。
★ 25,659已汉化DSH
71.3
推理工作空间套件Tiger3807861189/J-Space-Cognition-Suite
J-Space 是面向复杂推理、大型仓库工程、子代理协作与授权安全分析的推理时工作空间和控制套件。
★ 2,957已汉化DSH
70.5
两阶段工具锚定预设xiaobright/dsh-anchored-standard
实验性 DeepSeek Harness agent preset…
★ 3,742已汉化DSH
70.1
智能体工作流编排nrslib/takt
不再日夜盯着 AI 编码智能体。
★ 1,402已汉化DSH
70
Agent 运行时手册Electricitysheep/dsh-handbook
DeepSeek Harness dsh 从 0 到 1 深度手册:安装/插件开发/性能调优/实测案例/同模型多…
★ 827已汉化DSH
68.7