dsh-skill-panel
English | 中文 | 日本語
A DeepSeek Harness plugin.
Adds a skill button to the sidebar. Clicking it opens a dialog that lists the
skills loaded in the current session; hovering a row reveals a button that opens
that skill's folder on disk.
Compatibility
Tested on DSH 0.2.0-rc.2 (web profile); also runs on 0.1.5-rc.1 and
0.1.2-rc.1. Those are the releases dsh.engines.dsh in package.json declares,
so a host or plugin manager can read the same range without parsing this file.
No peerDependencies are declared on @deepseek-ai/* on purpose: a prerelease
range there would exclude newer DSH releases and make the host's compatibility
gate skip the plugin.
The plugin only uses documented plugin surfaces — the sidebar.footer.action
slot, remote.skills.list, and session.openWorkspacePath. It does not patch
DSH itself, so uninstalling it leaves nothing behind.
The folder button reads the skill's local directory from what the host projects:
SkillEntry.path (the absolute SKILL.md path, 0.2.0 and later) or the
directoryPath field carried by an older host. Skills backed by a URL or an
opaque resource have no folder, so they render without the button.
Install
-
Add the plugin — from npm (the package is scoped because the unscoped
dsh-skill-panel on npm belongs to another author):
dsh plugin --profile web add @lywusichen/dsh-skill-panel
or straight from GitHub:
dsh plugin --profile web add github:lywusichen/dsh-skill-panel
-
Restart DSH.
-
A skill icon appears at the bottom of the left sidebar, next to Settings.
Click it to open the dialog.
What it does
- Lists the current session's skills: name, routing description, and a
user-only badge where applicable. The list is fetched per session and shares
the composer's / skill cache.
- Opens a skill's local directory in the host's default file manager.
- Keeps an open dialog in sync when skills change on disk. On DSH releases that
emit
skills/change this is instant; on older cores it falls back to a 30
second poll.
- Follows the web UI locale (simplified Chinese, English, Japanese).
Screenshots
Skill trigger in the sidebar foot
Loaded-skills dialog
Open local folder
Where the folder path comes from
No host patch is required. The dialog lists skills through remote.skills.list
and opens a folder through session.openWorkspacePath; the folder button is built
from whichever path the host projects:
- DSH 0.2.0 and later project
SkillEntry.path — the absolute SKILL.md
path — and the plugin takes its parent directory.
- Older cores may carry the optional
directoryPath enhancement, which
projects skill.resourceBase.path for directory-backed skills.
Skills backed by a URL or an opaque resource have no folder either way, so they
render without the button instead of failing.
Build
npm install # esbuild only
npm run build # bundles src/client.jsx -> lib/client.js
The client bundle is a single CJS file. @deepseek-ai/* and the react modules
stay external because the DSH shell provides them as platform-static modules.
Commit lib/client.js — git-hosted installs consume the built artifact
directly, without running a build.
License
MIT