Skills

dsh-plugin-skill-manager-gui

luoying2334/dsh-plugin-skill-manager-gui · ★ 2

luoying2334

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.

License
MIT
Added
2026-08-17
Maintenance
active
Install kind
github
npm
dsh-plugin-skill-manager-gui
Manifest details
Manifest status
Declared
Manifest path
package.json#dsh
Manifest checked
2026-08-19
Lifecycle scripts
None found

Static manifest checks report declarations only; they are not compatibility or security review.

安装

dsh plugin --profile web add github:luoying2334/dsh-plugin-skill-manager-gui

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

For install and environment setup, plus plugin development tutorials, see DSH community docs ↗

README

Source README · body: en · Read Chinese README

Table of contents
  1. Features
  2. Install
  3. Usage
  4. How it works
  5. Security
  6. Development
  7. Project structure
  8. Contributing
  9. License

中文 | 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.md or <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-in skill-filesystem provider 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 prepare build script, which pnpm ≥ 10 blocks until you allow it. Copy the key pnpm prints into the profile's pnpm-workspace.yaml allowBuilds and re-run. Installing from npm or a tarball needs no allowance.

Usage

  1. Open Settings → Skills.

  2. 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.

  3. The skill lands as a directory bundle:

    $DSH_HOME/skills/<name>/SKILL.md          # global (user)
    <workspace>/.dsh/skills/<name>/SKILL.md   # one workspace
    
  4. The built-in skill discovery picks it up on the next pass — the model can then load it via the skill tool, 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) injects webServer + workspaceRegistry and registers HTTP routes under /skill-manager that read and write SKILL.md bundles.
  • Browser (src/client/) registers a settings.section and drives the routes with fetch.

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.

License

MIT