DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Plugin Skill Manager — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
P

@majinggui/dsh-plugin-skill-manager

Plugin Skill Manager

DeepSeek Harness Web 客户端的技能管理:扫描用户级技能根目录,列出每项技能及其来源和优先级,禁用某项技能,编辑其 SKILL.md,并从文档或 GitHub 链接安装技能

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:majinggui/dsh-plugin-skill-manager#048f02493cf28d0a3e402ec276e83efe8b30099d
README兼容性版本

兼容性与来源证明

Plugin Skill Manager 以 @majinggui/dsh-plugin-skill-manager 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/3

版本

0.1.0stable
2026/10/3

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/3
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 developer-tools 分类下经过校验的插件。

Ssh@linxin666/dsh-sshdsh Web GUI 的远程 SSH 操作:主机配置存储(~/.dsh/dsh-ssh.json,可从 ~/.ssh/config 导入)、支持跳板主机的持久化 ssh2 连接池、exec / PTY Web 终端 / SFTP 传输 / 本地端口转发隧道 / 集群执行Update@linxin666/dsh-update用于 dsh Web GUI 的自更新插件:探测 npm 上是否有更新的系列版本,并在原地运行所属配置的 pnpm 更新;可通过设置图标旁侧边栏中的触发器启动,并显示发布说明面板Tui@deepseek-harness-tui/dsh-tui用于 DeepSeek Harness 智能体、会话和工具的交互式终端界面。Cc Safety Netcc-safety-net编码代理 CLI 钩子——阻止破坏性命令和访问机密文件

README

dsh-plugin-skill-manager

English | 中文

Skill management for the DeepSeek Harness Web client: a Skills page in Settings that lists every skill the deployment can load from its user-level roots, shows the source and precedence that decide a duplicated name, switches one skill off, opens SKILL.md for editing, and installs skills from uploaded documents or a GitHub repository link.

The page is built from the client's own design system — @deepseek-ai/dsh-client-ui-primitives and the shared --dsw-* tokens — and registers into the official settings.section slot, so it sits in the Settings dialog exactly like a shipped section.

Install

# from npm (once published)
dsh plugin --profile web add @majinggui/dsh-plugin-skill-manager@latest

# from this repository
git clone https://github.com/majinggui/dsh-plugin-skill-manager
cd dsh-plugin-skill-manager && pnpm install && pnpm build
dsh plugin --profile web add link:$(pwd)

Then restart the profile (dsh web, pnpm run dev:web, or the desktop app) and open Settings → Skills.

The package declares one bundle patch (cordis.patch.yml) that inserts the single plugin row mounting both halves: the host half owns one authenticated JSON route, and the browser half registers the Settings page.

What the page offers

ActionEffect
CatalogEvery SKILL.md and flat .md document under the scanned roots, with its source, rank, absolute path, and enablement
Scan the shared agents directorySwitches ~/.agents/skills in or out of the scan; off by default, and the choice is remembered
Enable / disableSwitches one name off or back on (see how below)
Edit SKILL.mdReads the document into an inline editor and saves it against the version it was read from
Upload skill documentsReads .md files and/or skill archives (.zip) in the browser and installs them under the install root
Import from GitHubReads a repository link and installs every SKILL.md it exposes
Replace existing skillsPasses overwrite to an installation, which otherwise skips a name that already exists

Documents that cannot be parsed are listed with their parse error instead of disappearing, and a name that two roots define is explained inline because its switch applies to the whole name.

Skill archives

A .zip upload installs every directory that holds a SKILL.md as one skill and keeps the files beside it (scripts, references, assets). The single top-level directory Finder and GitHub's "Download ZIP" wrap archives in is stripped first, and an archive with no SKILL.md falls back to its root-level Markdown documents.

bundle.zip
└── pdf-helper/
    ├── SKILL.md          →  ~/.dsh/skills/pdf-helper/SKILL.md  (normalized frontmatter)
    └── scripts/fill.sh   →  ~/.dsh/skills/pdf-helper/scripts/fill.sh

Entry paths are normalized and refused when absolute or containing .., so extraction cannot escape the install root; encrypted, ZIP64, and unsupported-compression archives are refused with a readable reason.

How enablement works

A standalone plugin has no catalog filter, so disabling writes the two invocation keys the harness already understands into the document's frontmatter:

disable-model-invocation: true
user-invocable: false

That removes the skill from the model catalog, the skill tool, and the / menu. The plugin records the values it replaced in its state file (<dshHome>/skill-manager.json), so enabling restores exactly what the document had before — including removing a key the document never carried. Disabling a document that has no frontmatter is refused rather than guessed at.

Configuration

FieldDefaultMeaning
dshHome$DSH_HOME or ~/.dshHarness config root; its skills child is scanned and imported into
agentsHome$DSH_AGENTS_HOME or ~/.agentsShared agent config root, the one the page's scan switch controls
includeAgentsRootfalseWhether that root is scanned before the user changes the switch; the switch's stored choice wins after that
extraRoots[]Additional managed roots, each with path, source, and rank
stateFile<dshHome>/skill-manager.jsonEnablement ledger
installRoot<dshHome>/skillsDirectory that uploads and GitHub imports write into
githubMaxFiles20Largest number of documents one GitHub import installs
githubMaxDocumentBytes524288Largest accepted GitHub document
githubTimeoutMs30000Deadline for one GitHub import
uploadMaxDocuments20Largest number of documents and archives one upload installs
uploadMaxDocumentBytes524288Largest accepted Markdown document
zipMaxBytes52428800Largest archive one upload may carry, before extraction (50 MB)
zipMaxUncompressedBytes209715200Largest uncompressed size one archive may reach (200 MB)
zipMaxMembers2000Largest number of files one archive may hold
zipMaxEntryBytes67108864

Set them where the plugin row is declared:

- insert:
    - id: skill-manager
      name: dsh-plugin-skill-manager
      config:
        extraRoots:
          - path: ~/team-skills
            source: team
            rank: 300

Which roots are scanned

Only $DSH_HOME/skills and any configured extraRoots are scanned by default. The shared agents directory ($DSH_AGENTS_HOME/skills, rank 500) is not scanned until the switch on the page turns it on; turning it off again drops its documents from the catalog on the next read. The choice is stored beside the disable records in the state file, so it survives a restart and overrides includeAgentsRoot.

Path confinement is wider than the scan on purpose: reads and writes stay confined to every configured root, so a skill that was switched off while the agents directory was being scanned can still be switched back on after the scan is turned off.

Safety

  • Every read and write is confined to a configured root; a path outside them is refused with outside-roots.
  • A write carries the content hash it was read from and is refused with conflict when the document changed in between.
  • Every write goes through a temporary sibling and a rename, so a failed write cannot leave a half-written SKILL.md.
  • Installs never replace an existing skill unless the request asks to.
  • GitHub import reads only files named SKILL.md, through the public API, under the configured file, size, and time bounds.

Development

pnpm install
pnpm build        # tsc -b && tsdown: lib/index.js (host) and lib/client.js (browser)
pnpm typecheck

lib/ is committed so dsh plugin add github:<owner>/<repo> works without a build step; rebuild after changing src/.

Source layout:

PathRole
src/index.tsHost plugin: configuration and the one route registration
src/manager.tsRoot resolution, catalog projection, enablement, installation
src/catalog.tsRoot scanning and tolerant frontmatter parsing
src/documents.tsDocument normalization, atomic writes, invocation-key editing
src/github.tsRepository link parsing and bounded download
src/http.tsRequest decoding and response encoding
src/protocol.tsWire vocabulary shared by both halves
src/client/The Settings page, its client, its copy, and its stylesheet

Limitations

  • Enablement edits SKILL.md (see above); a deployment that must not touch skill files cannot use this page.
  • Enablement is per name, not per document: two roots defining one name cannot be switched separately.
  • The catalog is a snapshot: a skill added elsewhere appears after the next refresh.
  • A project-level skill is outside this page; only the user-level and configured roots are scanned.
  • Upload archives are read with the stored and deflate methods only; an encrypted or ZIP64 archive is refused rather than guessed at.

License

MIT

Largest uncompressed size of one file inside an archive (64 MB)