DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

@linxin666/dsh-client-ui-skill-explorer

Client Ui Skill Explorer

DSH 技能中心:按来源(bundled / project / user / custom / runtime)浏览已加载的技能,在 Web GUI 面板中启用或禁用、创建和删除技能。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add @linxin666/dsh-client-ui-skill-explorer@0.4.15
README兼容性版本

兼容性与来源证明

Client Ui Skill Explorer 以 @linxin666/dsh-client-ui-skill-explorer 发布,当前版本为 0.4.15。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/11/4

版本

0.4.15stable
2026/11/4
0.4.14stable
2026/11/2
0.4.13stable
2026/10/31
查看其余 47 个版本收起版本
0.4.12stable
2026/10/29
0.4.11stable
2026/10/27
0.4.10stable
2026/10/26
0.4.9stable
2026/10/26
0.4.8stable
2026/10/20
0.4.7stable
2026/10/17
0.4.6stable
2026/10/10
0.4.5stable
2026/10/5
0.4.4stable
2026/9/29
0.4.3stable
2026/9/26
0.4.2stable
2026/9/24
0.4.1stable
2026/9/23
0.4.0stable
2026/9/23
0.3.24stable
2026/9/20
0.3.23stable
2026/9/16
0.3.22stable
2026/9/13
0.3.21stable
2026/9/12
0.3.20stable
2026/9/10

相关插件

正在加载相关插件…

最新版
0.4.15
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
428.2 kB
文件数
38
Surface
web
许可证
BSD-3-Clause
发布源
npm
GitHub
★ 10.1k
周下载
42,728
安全扫描
✓ v0.4.15 扫描通过
最近提交
2026/11/4
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题
0.3.19stable
2026/9/9
0.3.18stable
2026/9/8
0.3.17stable
2026/9/7
0.3.16stable
2026/9/5
0.3.15stable
2026/9/5
0.3.14stable
2026/9/3
0.3.13stable
2026/9/3
0.3.12stable
2026/9/2
0.3.11stable
2026/9/1
0.5.0stable
2026/9/1
0.3.10stable
2026/8/31
0.3.9stable
2026/8/30
0.3.6stable
2026/8/27
0.3.5stable
2026/8/26
0.3.4stable
2026/8/25
0.3.3stable
2026/8/24
0.3.2stable
2026/8/23
0.3.1stable
2026/8/23
0.3.0stable
2026/8/23
0.2.9stable
2026/8/22
0.2.8stable
2026/8/22
0.2.7stable
2026/8/21
0.2.6stable
2026/8/21
0.2.5stable
2026/8/20
0.2.4stable
2026/8/19
0.2.3stable
2026/8/19
0.2.2stable
2026/8/19
0.2.1stable
2026/8/18
0.2.0stable
2026/8/18

相关插件

继续浏览 ui-customization 分类下经过校验的插件。

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Experimental Session Titles Bundle@deepseek-ai/dsh-experimental-session-titles-bundle新的用户提示到达时刷新会话标题。Personalized Recommendations@deepseek-ai/dsh-personalized-recommendations回答下方以卡片形式提供个性化页面和内置插件推荐Whale Widgetdsh-whale-widgetDSH Web 界面右下角的 DeepSeek 余额小鲸鱼挂件:余额/今日已用/峰谷定价、自定义泡泡点击序列(文本/余额/今日/峰谷/图片/随机语句与并列加权选择)、逐行样式与字体、悬浮快捷编辑、音效与每轮消耗、自定义角色/动图/音效、吸附与翻转自定义

README

dsh-skill-explorer · Visual Skill & Tool Explorer for DeepSeek Harness (DSH)

English | 中文

   

Visual Skill & Tool Explorer for DeepSeek Harness (DSH) Web GUI & Desktop
Tiered Skill Catalog · Model Invocation Toggle · Visual SKILL.md Editor · Safe Trash · Zero Intrusion

A visual Skill Explorer for DeepSeek Harness (DSH) Web GUI and desktop client: browse loaded skills tiered by source origin, toggle model invocation permissions, author new skills, and manage files through a safe trash mechanism.

What it does

  • Sidebar row "Skill Center" opens a native center-column page — a row in the shell's own panel list, beside Plugins, Schedule and the task board — with a tab bar. The row opens the page, and opening any session (or a new chat) returns the center column to the conversation, exactly like the shell's own Plugins and Schedule pages; the page carries no back control of its own.
  • Skills tab: skills grouped by source (system bundled / project .dsh/skills / project .agents/skills / custom directories / user ~/.dsh/skills / user ~/.agents/skills / runtime registered), with a search box that filters by name or description as you type (name hits listed first; Escape clears it) and stacks with the workspace picker. Each row shows description, when-to-use, invocation marks, an enable/disable switch (rewrites disable-model-invocation in the SKILL.md frontmatter, hot-refreshed by the model catalog; a plugin-provided file has no such path, so its switch is recorded in the panel's own store instead), a duplicate action (a copy of the skill as a starting point in the create form), an edit action and a delete button (moves the file into .trash, recoverable). The refresh control hides while a load runs.
  • Filters and source folding: the search box stacks with three facets — the source groups to include, the enabled/disabled state, and the row marks ("Provided by plugin" / "No local file" / "symlinked") — behind one toolbar toggle that shows how many facets are narrowing the list. Each source group's header folds and unfolds its rows; on first use only the project and user roots are open, so the global sources do not paint every row at once. The facets and the fold decisions are view preferences stored in localStorage; a browser that refuses storage simply does not remember them.
  • Import tab: batch-create skills from a directory on the host or from a .zip archive read by the browser. Every candidate is validated against the official acceptance rule and resolved by the same source rank the list uses, so a candidate a stronger source already provides is reported as skipped instead of creating a file the model would never receive. An import only ever creates files: an existing skill is never overwritten.
  • Create tab: a form to create a new skill under the user root (~/.dsh/skills) or the project root (.dsh/skills), generating a standard SKILL.md.
  • Edit tab: opens from a row's edit action, reads the skill through the host (the list carries metadata only) and rewrites its description, when-to-use and body in place; the name, location and enabled state stay as they are.
  • Data comes from a filesystem scan following the official dsh-skill-filesystem root conventions, merged with the ctx.skills registry (bundled / runtime entries). The scan reads customSkillDirs from this plugin's own config and from every live skill-filesystem loader row, so the documented placement (the provider row in a profile patch) is manageable too. The plugin never changes the skill loading or injection semantics — it is a pure GUI management layer.
  • A skill the write routes cannot serve is badged by what actually backs it, instead of silently missing its controls. A plugin provider that reports a real instruction file (the official SkillSummary.path) is listed as "Provided by plugin" — the file exists, it just sits outside the skill roots this panel scans. Only a registration that reports no file at all is listed as "No local file". Both stay pathless, so neither row offers an edit or delete control that would answer 404. A "Provided by plugin" row does carry the enable switch (#1854): because the file belongs to the provider, the host records the switch in the panel's own store and the row reads as switched off (see the known limitations). Only a "No local file" row has no switch at all.
  • A skill is listed only when the official provider would load it: its SKILL.md declares a non-empty name and description, and the name satisfies the official skill-name grammar. A file the official provider discards is absent from the panel too, so the panel never shows a skill the model cannot receive.
  • A duplicate skill name resolves by the official source rank (project .dsh/skills 100, project .agents/skills 200, runtime 250, custom 300, user ~/.dsh/skills 400, user .agents/skills 500, bundled 600), so the row shown names the same skill the model receives.

Install

From npm (recommended)

dsh plugin --profile web add @linxin666/dsh-client-ui-skill-explorer@latest

From the repository (development)

git clone https://github.com/zhu1090093659/dsh-web.git
cd dsh-web
pnpm install
pnpm -r build
dsh plugin --profile web add link:$(pwd)/packages/dsh-skill-explorer

Restart dsh web after installing; the "Skill Center" entry appears in the sidebar.

Routes

RouteMethodPurpose
/api/dsh-skill-explorer/listGETGrouped skill list
/api/dsh-skill-explorer/readGETOne skill's editable fields and body (?name=&path=)
/api/dsh-skill-explorer/set-enabledPOSTEnable/disable (rewrites frontmatter)
/api/dsh-skill-explorer/set-provider-enabledPOSTEnable/disable a plugin-provided skill (recorded in the panel's own store)
/api/dsh-skill-explorer/createPOSTCreate a skill (user/project root)
/api/dsh-skill-explorer/importPOSTBatch-create skills from a directory or a .zip archive
/api/dsh-skill-explorer/updatePOSTEdit an existing skill in place (name and location unchanged)
/api/dsh-skill-explorer/deletePOSTDelete (move into .trash)
/api/dsh-skill-explorer/healthGETHealth probe

Security model

  • Every /api/dsh-skill-explorer/* route is loopback-only by default (the shared plugin-family fence: loopback socket + Host header + browser same-origin markers): unpaired LAN clients get 403 forbidden: loopback-only before any skill-file access. When dsh-remote-web-ui is also loaded, a live paired-device cookie is an additional allow path (the same cookie api/gate already checks); unpaired and revoked devices stay 403. The skill center does not depend on the remote plugin.
  • Write routes accept the path displayed by the panel only as an identity claim; before mutating, a fresh filesystem scan must resolve the same skill name and exact path. Arbitrary paths and stale same-name fallbacks are rejected, so a disappeared project skill cannot redirect a pending action to a user or custom skill with the same name. The read route applies the same resolution, so it cannot be used to read an arbitrary path either. The scan behind that check resolves the workspace exactly as the list route does (explicit override, then the active session workspace, then the process cwd), so a write never re-scans a different project root than the one the panel served.
  • The edit route rewrites an existing SKILL.md in place and does not touch the skill name or location; it carries the current disable-model-invocation value over, so an edit can never silently re-enable a disabled skill. Linked skills are refused here for the same reason deletion is (see below).
  • The plugin-provided switch route stores one (provider, skill name) pair per record in $DSH_HOME/dsh-skill-explorer/provider-toggles.json (atomic temp file + fsync + rename; a corrupt, foreign, or oversized document degrades to "nothing switched off"). It never receives or writes a path: the client sends the identity, never a location. Disabling requires a fresh collection to still resolve that pair to a provider-file row, so the store can only ever hold identities this panel actually showed; enabling only removes a record, so it is allowed unconditionally and a stored record stays removable after its plugin is gone. Both directions are idempotent, so a double click or a retried request cannot stack duplicates.
  • The import route is the one creation surface that reads content outside the skill roots, and its read set is narrow: a host directory the user names is scanned one level for <name>/SKILL.md or <name>.md, symbolic links and dot entries there are skipped rather than followed, or the browser posts an archive it read. It writes only new <skill root>/<name>/SKILL.md files under the documented user/project root, never rewriting an existing one, and the request is bounded (archive 4MB, entries 512, one SKILL.md 64KB, 4MB of expanded text). A malformed or unsupported archive (zip64, encrypted entries, an unknown compression method, a path escaping the archive) is answered with 400 and the reason, and every refusal names the offending entry.

Known limitations

  • Project skills follow the workspace shown in the panel: the list route accepts an explicit ?cwd= override, and the create form sends the displayed workspace; the project root is the nearest .git ancestor of that workspace. The write routes resolve the same workspace the list route serves, so a project skill stays manageable even when the host process cwd is somewhere else.
  • Frontmatter parsing is a lightweight zero-dependency implementation (block scalars, booleans, input nested block); exotic YAML features are not supported — the official dsh-skill-filesystem provider remains the authoritative parser.
  • The panel covers the filesystem roots it scans plus the global layer of the ctx.skills registry (bundled and runtime entries). customSkillDirs declared on a host-plane skill-filesystem row are scanned, because the host reads that row's config; a skill that reaches an agent only through an agent preset's own customSkillDirs or a preset-scoped provider is outside that coverage, because the panel reads the registry without a viewing scope. A skill absent from the panel is therefore not necessarily absent from the model: the official skill tool catalog is the authority on what a session can load.
  • The switch on a "Provided by plugin" row is a panel-local view decision: it changes what this panel lists as invocable, not what the host registry loads, so the model still receives the skill. Taking such a skill away from the model for real means removing or disabling it where its provider gets it.
  • Linked skills cannot be deleted (see the security model); enable/disable works normally on them (rewriting the target's SKILL.md frontmatter). Both directory and single-file links list normally; a single-file link (pointing at one .md) is replaced by a plain file during the atomic rewrite — the link is not kept and the target file is left untouched.
  • A directory import reads one level and does not recurse: a nested tree has to be pointed at the directory that actually holds the skills. A .zip import accepts SKILL.md at any depth, so a zipped folder of skills works, but other files in the archive are ignored rather than copied as resources.
  • Importing a skill whose name resolves at the same or a stronger source is reported as skipped (exists / shadowed) rather than replacing that skill; bringing such a name in means renaming the candidate first.
  • The fold and facet preferences are per browser profile and survive a panel remount and a page refresh, but not a different browser or an incognito window.

Telemetry

The browser half sends one anonymous install heartbeat per UTC day to dsh-market.com: a random localStorage id plus this package's name, nothing else. The server stores only a salted hash of that id, never IP addresses, and exposes aggregate counts only. See docs/telemetry.md for the full contract.

License

BSD-3-Clause.

  • Skill content is user-authored markdown; the create form caps content at 64KB, and the edit and import routes enforce the same cap.
  • The panel renders skill descriptions with text nodes only (no HTML injection).
  • Scans follow symbolic links: symlinked skill directories and single .md links inside a skill root are listed as ordinary skills. Because a link expresses the user's intentional mount, the target is not constrained to fall inside a skill root; a symlink inside a project root (which may come from a cloned repository) is treated as part of that project, and a SKILL.md in its target directory is read and shown — this is the intended trust boundary. Linked skills can be listed and toggled (rewriting the target's own frontmatter), but cannot be deleted: deletion would move the target's SKILL.md out of place, escaping the current skill root, so the delete button is hidden for linked skills and the delete route refuses them (400). For the same escape reason the edit route refuses linked skills too, and the panel hides the edit button for them. Write operations still sit behind the loopback fence and the "trust only freshly scanned paths" rule.