dshbase

插件目录 / Developer / dsh-skills

dsh-skills

已验证 · 实测可装 CocoSgt

✓ 持续维护 基于 2 个官方 DSH 包

查看 GitHub ↗ ← 返回插件目录

15Stars
2Forks
0未关闭 issue
JavaScript语言
2026-08-14最近推送
跨平台平台

功能简介

Developer 类别的 DeepSeek Harness 插件。

✅
我们的评价
可用 — 实测通过,早期项目

Developer 类别的 DeepSeek Harness 插件。 实测能干净安装、正常启动。早期项目,但功能可用。

「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。

README

dsh-skills

简体中文 | English

npm package: dsh-skills · GitHub repository:
CocoSgt/dsh-skills

Third-party skill hub for DeepSeek Harness (dsh): aggregate skills scattered
everywhere into one global library.
Claude Code's ~/.claude/skills, project
directories, .skill packages — everything lands in ~/.dsh/skills (the
official skill-filesystem's default scan root, watched live), and once
imported appears in the "/" slash menu of the input box. Adds a "Skills" page
to the settings dialog.

Two import identities

Link (recommended) Copy
Implementation skills/<name> is a symlink to the source full tree copy
Sync No sync problem: one file on both sides, editing edits the source evolves independently (state records the source for reference)
Source deleted panel marks it "broken link", one-click removal (source untouched) unaffected
Fits long-lived sources you maintain throwaway sources (.skill packages, repos you'll delete), or a global version you can change freely

The harness's skill scanner, fs provider, and watcher all follow symlinks
natively (skill-filesystem's nodeEntryKind handles them explicitly), so
links need no patches and work across every loading form (including SDK/ACP,
where plugins cannot be installed).

Aligned with how the harness actually works

  • There is no "install": a skill takes effect the moment it sits in a scan
    root. This page manages the global library (~/.dsh/skills, rank 400, all
    sessions); skills in project directories (.dsh/skills, .agents/skills,
    rank 100/200) are scanned by the harness directly and never pass through
    this page — that is exactly why they are "always invocable", and why project
    skills win on name collisions.
  • A skill is a file tree, not one MD: the editor edits SKILL.md only and
    tells you how many resource files exist; manage resources via "Open
    directory". Export packages the whole tree as .skill (links are
    dereferenced: real files are packed).
  • Editing a link = editing the source: the editor header says so; saving
    writes straight to the source file.

Tabs

  1. Global skills: the top action row has "+ New skill" (inline expander,
    no scrolling) and "Upload .skill" (imports as soon as a file is picked, no
    intermediate confirmation); a filter box appears with many skills. Each
    card: identity badges (Link → source / Copy / Created locally /
    Broken link), resource count, non-default invocation policy; descriptions
    clamp to 3 lines by default (click to expand); primary action "Edit
    SKILL.md", with export / open directory / copy name in the ⋯ menu and an
    inline two-step delete confirmation (links only remove the link).
  2. Discover: scan directories managed inline as chips at the top (each
    chip shows its skill count or "missing", ✕ removes immediately, + adds in
    place — there is no separate "Sources" tab); each scanned item offers
    "Link" (primary) / "Copy", and "Link all" goes through a single batch RPC;
    a filter box appears with many results.

Architecture

  • Host half (lib/index.mjs): SkillHubGateway extends
    TypertRemoteService and exposes three RPCs: skillHub/getState,
    skillHub/runCommand, and skillHub/browseDirs (the last one powers the
    source picker's directory browser). The runCommand payload is a command
    union carried verbatim over src-json. The earlier 3180–3189 port-probing
    sidecar HTTP service is gone. Because SRC discovery is blind in the
    third-party dual-copy scenario, a weak manifest is also registered into
    the host typert registry.
  • Browser half (lib/client.js): $mount identity-codec descriptors →
    ctx.remote.skillHub; the panel registers into the settings.section slot;
    "Open directory" goes through the official host.openPath.
  • i18n: all visible copy renders through the official locale service.
    zh/en dictionaries live in src/client/locales.ts; the slot registration
    declares locale: NS, so the framework injects a reactive t seat into
    the component props. Host runCommand results carry a stable code
    (e.g. import.linked, err.read.notFound) plus optional params and an
    explicit level: 'error'; the client translates by code and falls back to
    the Chinese message field, and colors the status line by level instead
    of guessing from message text.

The state file ~/.dsh/skills/.skill-manager.json records the source
configuration and each skill's {mode, source, addedAt} (schema reserved for
future drift detection). Its filename is deliberately kept from the old
skill-manager so existing installations keep their state.

Install

Install from npm:

dsh plugin --profile web add dsh-skills

The three dsh plugins can be added together in one command:

dsh plugin --profile web add dsh-skills dsh-attachments dsh-inspector

GitHub fallback:

dsh plugin --profile web add github:CocoSgt/dsh-skills

Note: a self-built profile's ~/.dsh/profiles/<name>/package.json must list
@deepseek-ai/dsh-base and @deepseek-ai/dsh-web-app in
dsh.profile.bundles, otherwise startup hangs silently.

Restart dsh web afterwards. Uninstall:
dsh plugin --profile web remove dsh-skills.

Companion plugins

The other two plugins from the same suite:

  • dsh-attachments
    (npm) — bring any file
    into the conversation as cards above the composer; the model reads images
    by path via read_image, so even non-vision models are never blocked.
  • dsh-inspector
    (npm) — an "Instruction
    Files" panel showing the exact AGENTS.md/CLAUDE.md instruction chain in
    effect for the session, in real load order, with in-place editing and
    skill-root status.

Known limitations

  • Drift detection/pull/push between copies and their sources is phase two;
    for now copies only record the source.
  • Directory links use junctions on Windows; file-level links fall back to a
    copy without privilege, and say so honestly.
  • A linked skill's in-library link name is fixed at import time; if the
    source's frontmatter name changes later, the skill name follows the source
    but the link name does not (harmless — only the directory name and the
    skill name diverge).
  • "Link all" runs serially; failures are collected and summarized (first
    failure shown) without flooding the status line.
  • Host-side messages for a few low-level failures (e.g. corrupt zip details)
    ride inside a {message} param and remain Chinese in the English UI.

Development

pnpm install
pnpm run check   # tsc --noEmit
pnpm run build   # tsdown (host ESM + browser bundle)

Note: host method parameter names ARE the RPC wire field names (Gateway SRC
mode); the build must never minify or rewrite parameter names.

Tags

This package and its repository carry the dsh-plugin, dsh, deepseek-harness
and related keywords/topics. DeepSeek Harness ships no official plugin
marketplace and no official discovery tag — once a third-party plugin is
published, nothing links it back to the ecosystem and users have no way to
find it. These community tags are the only practical discovery channel
(npm: keywords:dsh-plugin; GitHub: topic:dsh-plugin). Unofficial, but
essential — that is why they are here.

License

MIT

安装

🧩 让 Agent 自动装(推荐)

装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:

dsh plugin add dshbase-catalog

然后对 agent 说「帮我装 dsh-skills」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。

该插件是 GitHub 源码(未发 npm)——直接从仓库装:

Web profile:

dsh plugin --profile web add github:CocoSgt/dsh-skills

Headless(CLI)profile:

dsh plugin --profile headless add github:CocoSgt/dsh-skills

实测报告

验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。

安全:尚未扫描——我们的每日静态扫描将很快覆盖它。

分享徽章

Developer 里更多

浏览全部 7797 个插件 →