dsh-skill-manage
Manifest validDeepSeek Harness 技能管理设置页插件:图形化管理用户级/项目级技能的安装、卸载与调用启停
dsh-skill-manage
A graphical skill manager for DeepSeek Harness (
dsh). Install, search, enable, disable and remove skills from your Web UI — noSKILL.mdediting, no shell commands.
English · 中文
Features
- Zero-file management — enable/disable, overwrite and uninstall skills through a Web UI panel; frontmatter flags (
disable-model-invocation,user-invocable) are rewritten for you. - Four install channels — a local folder, a browser folder picker, a GitHub URL, or an online search over skills.sh.
- Smart batch installs — paste a
…/tree/<branch>/<dir>link; a parent directory yields a plan from the GitHub Trees API (~0.5 s, zero clone; falls back to a local clone scan automatically). Tick what you want and install in one shot. - Conflict-first UX — same-name skills never die by default; an inline prompt offers Overwrite / Cancel, identically across every install channel.
- Network resilience — a direct GitHub clone that fails transparently retries through
ghfast.top/gh-proxy.commirrors (on by default). - Official rank alignment — scans
~/.dsh/skills+~/.agents/skillsin the exact order the officialdsh-skill-filesystemprovider uses, including same-name shadowing.
Screenshots
User scope — manage every skill registered for all sessions:

Project scope — pick a workspace from the Web UI switcher and manage its .dsh/skills:

Installation
From npm (recommended):
dsh plugin --profile web add @nay-1/dsh-skill-manage
If the pnpm supply chain policy blocks the build script, grant approval in your profile:
# ~/.dsh/profiles/web/pnpm-workspace.yaml
allowBuilds:
'@nay-1/dsh-skill-manage': true
From GitHub:
dsh plugin --profile web add github:Nay-1/dsh-skill-manage
From a local path:
git clone https://github.com/Nay-1/dsh-skill-manage.git
cd dsh-skill-manage && pnpm install && pnpm build
dsh plugin --profile web add /path/to/dsh-skill-manage
Restart dsh web, then open Settings → Skill Management.
Usage
Management scopes & priority
| Scope | Directory | Rank | Notes |
|---|---|---|---|
Project (.dsh) | <projectRoot>/.dsh/skills | 100 | Highest priority |
Project (.agents) | <projectRoot>/.agents/skills | 200 | Shown with a .agents badge |
User (.dsh) | ~/.dsh/skills ($DSH_HOME/skills) | 400 | Default view |
User (.agents) | ~/.agents/skills ($DSH_AGENTS_HOME/skills) | 500 | Shown with a .agents badge |
The project root is resolved to the nearest ancestor containing .git (official provider semantics). Same-name skills are shadowed by the higher-rank root; installs always land in the top root of their scope. Every skill from a non-top rank root (.agents) gets a .agents badge in the list — user and project scopes alike.
Skill formats: directory bundles (<name>/SKILL.md) and flat single-file skills (<name>.md) are both discovered and manageable.
Installing skills
| Tab | What you paste / do | Result |
|---|---|---|
| Local folder | a filesystem path (or a .md file path for a flat skill) | installs after frontmatter validation |
| Browse | browser folder picker | uploads without exposing absolute paths |
| GitHub | github:owner/repo, owner/repo, complete HTTPS URL, or a web …/tree/<branch>/<dir> link | a skill dir installs directly; a parent dir opens an install plan |
| Search | a keyword → skills.sh results (name / repo / install count) | click Install — the skill is located in-repo by name (BFS, no need to know the exact path) |
Install plan (parent-directory links, bare multi-skill repos):
- The repo tree is scanned via the GitHub Trees API — about 0.5 s, no clone (falls back to a clone scan when the API errors, rate-limits, or truncates).
- A checklist appears; rows already present are marked Already installed and unchecked by default — checking one means overwrite.
- With more than 15 skills a confirmation bar asks first: "N skills — continue?".
- Confirm → one shallow clone → each checked skill is validated and installed.
GitHub examples:
| Input | Behavior |
|---|---|
github:JimmyLv/bibigpt-skill | single-skill repo, auto-located |
https://github.com/github/awesome-copilot/tree/main/skills/acquire-codebase-knowledge | tree link, one skill, direct |
https://github.com/github/awesome-copilot/tree/main/skills | parent dir → install plan |
https://github.com/anthropics/skills#path:skills/docx | #path: for exact subdirectories (alternative) |
Conflicts
Every channel behaves the same: if the name exists, an inline "skill x already exists" prompt offers Overwrite / Cancel. Nothing is overwritten by accident.
Managing the list
- Search / refresh by skill name.
- Each row shows a colored letter icon, a status dot (green = enabled, grey = disabled) and an Enabled / Disabled pill.
- Enable / Disable flips both
disable-model-invocationanduser-invocablein one click. - Uninstall is a two-click confirm, confined to managed skill directories.
Performance & limits
- GitHub Trees API without authentication: 60 requests/hour — one scan uses one; on failure / rate limit / truncated payload the plugin silently falls back to a clone scan.
- Batch installs have no hard cap, but >15 skills require explicit confirmation.
- Private repositories are not supported (no credentials).
skills.shsearch has a 10-second timeout with a friendly error; the site is a public, undocumented endpoint.
FAQ
GitHub installs hang or time out — is a VPN required?
The clone runs inside the dsh process, so it needs either a reachable network or the mirror fallback (on by default). To use a system proxy, launch dsh in a shell that exports http_proxy/https_proxy; git inherits them. If the process has no proxy variables and the mirror cannot reach GitHub either, the error message tells you so.
Do I need a VPN at all?
Usually not: ghfast.top and gh-proxy.com mirrors are reachable without a proxy. Keep use mirror on direct failure checked (default).
Skills.sh search says "response timed out". The endpoint is a third-party site; wait and retry. Direct connectivity to skills.sh is generally fine from China.
A skill I searched for cannot be installed.
The repository must contain a SKILL.md with a valid name (kebab-case) and description. Skills.sh sometimes lists renamed or removed skills — pick the newest hit or use the repo directly.
Where does a skill come from?
Skills in the .agents home root carry a small .agents badge in the list, so you always know which root you are editing or deleting.
Why does my npm install fail with "Two-step verification required"? That is an npm-side publishing policy, unrelated to this plugin — add 2FA to your npm account or use a granular access token with bypass-2FA enabled.
Architecture
| Part | File(s) | Role |
|---|---|---|
| Host half | src/index.ts | registers JSON routes under /dsh-skill-manage (host ESM bundle) |
| Browser half | src/client/ | registers the settings.section slot and renders the React page |
| Build | build.mjs | esbuild: host ESM lib/index.js + browser lazy-CJS factory lib/client.js |
| Composition | cordis.patch.yml | bundle patch inserting the plugin row into the composition |
Routes: GET /skills, GET /workspaces · POST /search-skills, /install, /install-upload, /install-github, /remove, /toggle.
Skills are discovered by scanning the filesystem directly (mirroring the official provider's directory and rank semantics), because ctx.skills in the host context only exposes the global layer. GitHub and upload installs clone or stage into temp dirs and reuse one handleInstall validation path. The client bundle is the stable module ID dsh-skill-manage (fixed, not the npm package name — see build.mjs) so registry loading works with any package name.
Development
pnpm install
pnpm build # emits lib/
pnpm typecheck # tsc --noEmit
Local loop: edit → pnpm build → restart dsh web.
License
MIT
Versions
| Latest version | Published | Size |
|---|---|---|
| 0.1.0 | — | — |
| 0.1.1 | — | — |
| 0.1.2 | — | — |
Comments
Loading…
Similar plugins
by tianLee-gitter
DSH 技能管理插件:在设置页管理 ~/.dsh/skills 的技能,支持多目录导入与 AI 名称解析(导入后可用 /name 引用)
★ 0
MIT
TypeScript
Aug 17, 2026
dsh plugin --profile web add lt-dsh-skill-managerby weibaohui
DeepSeek Harness 插件:技能市场——安装/删除/详情 API + 管理界面
★ 11
↓ 560/wk
JavaScript
Sep 15, 2026
dsh plugin --profile web add @weibaohui/skills-managementby xiaoxianyu-office
DSH Skills 管理器:设置页系统/用户技能分类,用户技能开关/编辑/删除/新建。Skills manager for DeepSeek Harness: system/user skill management (toggle/edit/delete/create) in Settings.
★ 3
JavaScript
Aug 14, 2026
dsh plugin --profile web add dsh-skills-managerby jasper-zsh
DeepSeek Harness(DSH)的只读技能清单插件,在 Web GUI 中展示全局技能和当前会话可见的技能,并从会话日志推导技能加载状态。
★ 0
TypeScript
Aug 14, 2026
dsh plugin --profile web add dsh-plugin-skill-panelby 2768651338
DeepSeek Harness 的图形化插件管理插件:在 设置 → 插件 里新增「插件管家」标签页,用中文名和说明展示每个插件是做什么的,并提供一键启停开关与内置备注编辑——启停写入全局层补丁并实时热生效,备注保存到本地覆盖文件长期生效。
★ 7
MIT
JavaScript
Aug 17, 2026
dsh plugin --profile web add @2768651338/dsh-plugin-managerby awol2005ex3
DeepSeek Harness(`dsh`)插件:为单机的 harness 增加**用户管理**与**会话按用户隔离**。
★ 0
Apache-2.0
TypeScript
Sep 20, 2026
dsh plugin --profile web add dsh-user-manager