LBurny/dsh-plugin--packages-dsh-skills ↗★ 0

dsh-skills

Manage DeepSeek Harness skills from inside dsh: list, enable/disable, delete, and import from other agent tool roots or a local ZIP archive. Ships a panel and the /skills command. dsh-skills:在 dsh 本体里管理技能——列表、启停、删除,以及从其它 agent 工具目录或本地 ZIP 压缩包导入,自带面板与 /skills 命令。 适合需要免重启管理DSH技能列表、启用禁用或从ZIP导入技能的用户。

Package
dsh-skills
Compatibility
Unverified
Version
0.1.0
License
MIT
Last updated
Oct 10, 2026

Other repositories with this package name

Install

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:LBurny/dsh-plugin#7922dc00723785a651a741a9d255357f56b87f56&path:packages/dsh-skills

dsh-skills

Manage DeepSeek Harness skills from inside dsh: list, enable/disable, delete, and import — including from a local ZIP archive.

Ported from DSHDesktop's skills page. The desktop shell moved skill directories around from a Tauri command; this does the same inside the dsh process, so dsh's own file watcher picks the change up without a restart.

Placement

With dsh-features (功能管理) installed, this panel appears on that hub's single page and no longer docks its own corner button; without the hub — a bare dsh, or a profile where it is not installed — the floating panel is built exactly as before. The coupling is two DOM-level conventions (window.__dshFeatures, #dsh-launchers), described in the repository's AGENTS.md.

Install

dsh plugin --profile web add github:LBurny/dsh-plugin#path:/packages/dsh-skills
# pin a commit:
dsh plugin --profile web add github:LBurny/dsh-plugin#&path:/packages/dsh-skills

--profile web = DSHDesktop's shell, --profile desktop = the official desktop app; the panel needs no flag.

Restart dsh afterwards — plugins have no HMR.

What it does

  • List the skills dsh can see, with their enabled state and description.
  • Enable / disable by moving the skill directory between $DSH_HOME/skills/ (scanned by dsh's filesystem provider) and $DSH_HOME/skills-disabled/ (not scanned). A directory counts as a skill when it contains SKILL.md.
  • Delete a skill from either root.
  • Import from other agent tool roots (Claude / Codex style skill directories, greying out the ones that are absent), or from a local ZIP archive. Source directories are commonly symlink farms (one shared checkout linked into every tool), so a symlinked entry counts as a skill and is copied as real files rather than re-linked. The ZIP reader only reads the central directory, supports stored and deflate entries, and enforces entry/size caps plus traversal rejection; a pack may hold one skill (SKILL.md at the archive root) or many (/SKILL.md).
  • /skills prints the same list as text, without the browser.

A skill's toggle takes effect through dsh's watcher, so no restart is needed. The panel appears in the corner of the dsh web UI, next to any other dsh-plugin packages you have installed.

Routes

Everything hangs off /dsh-skills and is protected by dsh's own origin gate.

MethodPathPurpose
GET/dsh-skills/panel.js /dsh-skills/panel.cssbrowser half
GET/dsh-skills/api/skillsskills + importable sources + counts
POST/dsh-skills/api/skillstoggle · delete · import · import-zip
POST/dsh-skills/api/skills/zipZIP import step 1: upload (≤64 MiB), get discovered skills + an upload id

The upload is held in memory between the two steps (10 min TTL, at most 4 at a time) and consumed by the import.

Data

WhatWhere
Skills (enabled)$DSH_HOME/skills/
Skills (disabled)$DSH_HOME/skills-disabled/
Import sourcesother agent tool roots under $HOME (read-only)

This package writes nothing else — no settings file, no patch layer edits. Its only dependency is node: itself.

Test

# from an installed copy (the host half resolves @deepseek-ai/* via the profile)
cd "$DSH_HOME/profiles/plugins/dsh-skills"
node test/skills.test.mjs

License

MIT.