Skills
dsh-plugin-skill-manager-gui
luoying2334/dsh-plugin-skill-manager-gui · ★ 2
Graphical skill manager for DeepSeek Harness (DSH) — create, edit, import (ZIP) and delete SKILL.md skills from the web settings UI. Global + per-workspace install.
Manifest details
安装
dsh plugin --profile web add github:luoying2334/dsh-plugin-skill-manager-guiGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
For install and environment setup, plus plugin development tutorials, see DSH community docs ↗
README
Table of contents
中文 | English
Graphical skill manager for DeepSeek Harness (dsh). Create, edit, import, and delete SKILL.md skills from the Web settings UI — no terminal, no hand-edited YAML frontmatter.
| npm | dsh-plugin-skill-manager-gui |
| Category | dsh-plugin |
| License | MIT |
Features
- List managed skills with their description, location, and invocation flags.
- Create a new skill through a form: name (kebab-case), description, optional
whenToUse, install location, model/user invocation toggles, and the Markdown instruction body. - Edit an existing skill (the name is immutable while editing — rename by recreating).
- Delete with a confirmation step.
- Import a ZIP of skills (
<name>/SKILL.mdor<name>.md, plus nested resources) into global or one workspace — a zipped folder works too. - Global or multiple workspaces: install to the machine-global root (
$DSH_HOME/skills) or one/more workspaces (<workspace>/.dsh/skills), and move a skill to a new location any time by editing it. Skills installed to several workspaces are merged into a single list entry — the same roots the built-inskill-filesystemprovider scans, so anything you write is picked up without a restart. - Bilingual (中文 / English) and theme-aware, rendered with the native DSH UI primitives.
Install
dsh plugin --profile web add dsh-plugin-skill-manager-gui
Restart dsh web, then open Settings → Skills.
Git-hosted installs run the package's
preparebuild script, which pnpm ≥ 10 blocks until you allow it. Copy the key pnpm prints into the profile'spnpm-workspace.yamlallowBuildsand re-run. Installing from npm or a tarball needs no allowance.
Usage
Open Settings → Skills.
Click New skill, fill in the form, tick one or more install locations, and Save. Or click Import ZIP to bring in a batch of skills.
The skill lands as a directory bundle:
$DSH_HOME/skills/<name>/SKILL.md # global (user) <workspace>/.dsh/skills/<name>/SKILL.md # one workspaceThe built-in skill discovery picks it up on the next pass — the model can then load it via the
skilltool, and the/-trigger menu offers it for user invocation.
How it works
The package is a single dual-face bundle (host + browser), following the standard out-of-tree plugin shape:
- Host (
src/index.ts) injectswebServer+workspaceRegistryand registers HTTP routes under/skill-managerthat read and writeSKILL.mdbundles. - Browser (
src/client/) registers asettings.sectionand drives the routes withfetch.
See docs/architecture.md for the wire protocol, security model, and directory layout.
Security
Mutating routes (write, remove, import) write files with the host user's permissions, so they are loopback-pinned and same-origin only — the same boundary the harness uses for its own privileged operations. Read routes (list, read, workspaces) are read-only. ZIP import sanitizes every entry path so no .. or absolute path can escape the target root.
Development
Requires Node.js 22.19+ (24 recommended) and npm.
npm install # also runs `prepare` → build
npm run typecheck # tsc on host + client
npm test # vitest unit tests (host skill store)
npm run build # tsc (host lib/) + tsdown (client/client.js)
Project structure
src/
index.ts host entry: mounts HTTP routes on webServer
routes.ts /skill-manager route dispatch
skills.ts SKILL.md filesystem service (list/read/write/remove)
import.ts ZIP import (safe extraction)
http.ts JSON + same-origin + loopback helpers
types.ts shared wire types
client/
index.ts client entry: settings.section registration
SkillManager.tsx the React settings UI
SkillManager.module.css
locales.ts zh / en
cordis.patch.yml bundle patch layer
tsdown.config.ts client bundle build (__ModuleLoader__ factory)
.github/workflows/ ci.yml + release.yml
Contributing
See CONTRIBUTING.md.