DeepSeek Harness 插件

dsh-skill-hub

DSH Web GUI 技能中枢:基于官方 ctx.skills 注册表浏览、搜索、启停、查看、诊断并新建本地技能,附技能市场:来源快照跟踪、一键全量更新。

跳到安装方式

来源信息

GitHub 仓库
cheshireez/dsh-skill-hub
最近更新
2026年8月18日
分类
Skills 与任务指令
GitHub stars
3

安装

默认先复制一段 Prompt,让 Agent 读页面和仓库;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读页面和仓库。

请先不要安装。阅读这个 DeepSeek Harness 插件,说明它解决什么问题、会访问哪些文件、网络或密钥,以及如何安装和卸载。

插件页面:https://deepseekplugins.org/zh/plugins/cheshireez/dsh-skill-hub
GitHub:https://github.com/cheshireez/dsh-skill-hub
插件名:dsh-skill-hub
作者:cheshireez
安装命令:dsh plugin --profile web add dsh-skill-hub

确认前不要执行安装命令。

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器3 个文件
README.md来源说明 · 只读预览

dsh-skill-hub

[中文版](README.zh.md) | [English](README.md)

<p align="center"> <a href="https://www.npmjs.com/package/dsh-skill-hub"><img alt="npm version" src="https://img.shields.io/npm/v/dsh-skill-hub?color=2f81f7&label=npm"></a> <img alt="downloads" src="https://img.shields.io/npm/dm/dsh-skill-hub"> <img alt="license" src="https://img.shields.io/npm/l/dsh-skill-hub"> <img alt="node" src="https://img.shields.io/badge/node-%3E%3D22.19-339933"> <a href="https://github.com/cheshireez/dsh-skill-hub/actions"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/cheshireez/dsh-skill-hub/ci.yml?branch=main"></a> </p>

<p align="center"> <img src="https://raw.githubusercontent.com/cheshireez/dsh-skill-hub/main/promo/real-skill-hub.png" alt="dsh-skill-hub panel" width="640"> </p>

In-GUI skill hub for DeepSeek Harness (dsh). Browse the full local skill catalog from the official ctx.skills registry, toggle skills on/off, inspect their bodies, understand why a skill is missing, install from the built-in market, and scaffold new ones — all from the dsh web GUI.

> A skill manager beyond the read-only browser. The host half runs in the dsh process and speaks only > official SDKs; the browser half renders inside the GUI through official slots. No dsh source changes.

> Disclaimer — source tracking, market sync, and the restorable trash are implemented by this > plugin; they are not guarantees of the dsh runtime itself. Screenshots may lag the latest UI.

Table of Contents

  • [Why another skill manager?](#why-another-skill-manager)
  • [Features](#features)
  • [Quick start](#quick-start)
  • [How it works](#how-it-works)
  • [Usage](#usage)
  • [Troubleshooting](#troubleshooting)
  • [HTTP API](#http-api)
  • [Development](#development)
  • [Community](#community)
  • [License](#license)

Why another skill manager?

dsh-skill-manager is a read-only browser, dsh-skill-importer and dsh-find-skill focus on importing and market-style installs. dsh-skill-hub fills the gap between them: a full catalog you can actually manage.

Capabilitydsh-skill-manager (read-only)dsh-skill-hub (this plugin)
Catalog sourceself-scans disk, user roots onlyofficial ctx.skills registry: project / custom / user / bundled + third-party providers
Browse / search✅ (group by tags or by source repo, search + filter in one row)
Workspace skills✅ (enter a project path → its .dsh/skills & .agents/skills appear, read-only)
Enable / disable✅ (renames SKILL.md; file never deleted, always restorable; per-group tri-state switches)
Inspect skill body
Discovery diagnostics✅ (missing frontmatter / missing name/description / invalid name — each reason listed)
New-skill wizard✅ (writes to ~/.dsh/skills or ~/.agents/skills)
Invocation statistics✅ (per-skill call counts read from session logs; group headers summarize)
Upstream source tracking✅ (repo + commit snapshot; check updates, sync, follow upstream deletion into a restorable trash; delete/restore keeps source + scene membership)
Market✅ (unified market list: built-in curated catalog + custom repos; scan, one-click import, per-source installed/updatable badges, one-click update-all)
Live updatesfilesystem-provider watcher, with a 5s panel poll as fallback

Features

Catalog & switches — manage local skills

> Browse everything, change anything you own. The full registry is visible and searchable; > writes are confined to your user-level roots and never delete files.

  • Full catalog — every skill the official registry knows: project .dsh/skills & .agents/skills,

custom roots, user ~/.dsh/skills & ~/.agents/skills, bundled, and third-party providers.

  • Search & grouping — one row combines search, source filter, and flat/grouped view; groups are

user tags (scenes) plus source collections (auto-aggregated by upstream repo); uncategorized stays visible.

  • Workspace discovery — known workspaces (from dsh’s workspace registry) are merged into the

default view and grouped in a project-level tree (per project, optionally split into .dsh/.agents); the header path field pins the view to one workspace.

  • Group switches — every group header carries a sliding switch: enable/disable the whole group in

one click. Closing a group whose member is also enabled elsewhere opens a conflict dialog (close all / keep on → the group falls into a half-filled mixed state). Read-only skills are skipped with per-name reports.

  • Enable / disable — disable renames SKILL.md out of discovery (tracked in a sidecar file), so

the change survives restarts and is trivially reversible. Files are never deleted.

  • Skill detail — read a skill’s body straight from disk, with its source card (repo, commit,

check/sync/follow-delete actions).

  • New-skill wizard — scaffold a valid skill into ~/.dsh/skills or ~/.agents/skills from the GUI.

Market & updates

> Add a repo, install in one click, stay updated forever. Imports are tracked upstream > automatically; updates surface per source and can be applied all at once.

  • Unified market list — one list on the Market tab: built-in catalog entries show a description

and an Add button until added; once added (or custom sources entered by hand) the same row becomes a full source row. No duplicate entries.

  • Scan → install — scan any repo’s skills/ and design-templates/ roots, tick the skills you

want, import with one click. Imports record the upstream repo/commit automatically.

  • State badges — every source row aggregates its state: installed count, updatable count, and

deleted-upstream count.

  • Check all / update all — “Check all” refreshes every source (release + skill diffs); “Update

all” syncs every source with pending updates in one pass (per-source failures are reported, never fatal). A daily auto-check (24h, timestamped in localStorage) covers the “forgot to click” case; manual buttons are never throttled.

  • Source tracking — per-source check (1–2 GitHub API requests, 5-minute server throttle), sync

selected skills (overwrite confirm), and follow upstream deletion into a restorable trash. Deleting and restoring a tracked skill keeps its source and scene membership (snapshotted in the trash entry). Personal skills (no source) are never tracked.

  • Self-update check — the panel header checks the plugin’s own latest GitHub release.

Stats & diagnostics

> Know what your agents actually use. Invocation counts come from your own session logs — > no telemetry leaves the machine.

  • Invocation statistics — per-skill call counts and last-used times read from session logs

(optional; absent session-query deployments simply omit the data); group headers summarize.

  • Discovery diagnostics — the catalog reports why a skill was ignored (missing YAML

frontmatter, missing name/description, illegal name), per skill.

  • Settings card — enable the plugin, toggle the agent announcement, and adjust panel display

preferences from Settings → 插件 → Skill Hub.

Quick start

dsh plugin --profile web add dsh-skill-hub

Restart dsh web, open Settings → 技能, and on the Market tab pick a repo from the built-in catalog (or paste an owner/repo), scan it, tick the skills you want, and import. They are tracked upstream from then on: check for updates and sync with one click.

A skill is just a directory with a SKILL.md — the panel can also scaffold one for you:

---
name: my-skill
description: One line describing when the agent should use this skill.
---
# my-skill

What the skill does, when to use it, and what output is expected.

Requires Node ^22.19.0 || >=24.0.0 and a dsh web deployment (0.1.0-rc.7 SDK family).

How it works

 GitHub repo ──scan / import──▶ ~/.dsh/skills (user level)
      ▲                            │
      │ check / sync / delete      ▼
      │                ctx.skills registry ◀── skill-hub provider (registers user + project roots)
      │                            │ snapshot / get
      └────── daily auto-check     ▼
                      /api/skill-hub/* routes ──▶ Browser panel (Settings → 技能)
FileResponsibility
src/index.tshost entry: inject [webServer, skills, systemPrompt, settings]; registers the dsh-skill-hub settings namespace; system-prompt announcement
src/routes.tsdeclarative route wrapper: /api/skill-hub/* (loopback / method / master-switch / JSON-body fences handled once; handlers stay business-only)
src/store.tssidecar state ~/.dsh/dsh-skill-hub.json v3 (disabled, tags, sources, market sources, trash; versioned v1→v2→v3 migrations)
src/repo.tsGitHub discovery/import + source tracking (latest commit, tree diff, manifest)
src/skillfs.tsroot resolution / toggle rename / trash & restore / scaffold / diagnostics
src/stats.tsinvocation stats: session logs → per-skill call counts (optional sessionQuery)
src/protocol.tshost ↔ browser shared API contract (types + endpoint table)
src/client/browser half: settings card + skill hub panel. State and flows live in useSkillHub.ts; views are thin components (SourcesView / ScenesView / MarketView / SkillRow / dialogs / …). CSS Modules, Apple-style
  • Host half uses only official SDKs: ctx.skills.snapshot()/get(), ctx.webServer.register(),

ctx.systemPrompt.section(). No dsh source is modified.

  • Browser half mounts through official slots: a Settings → 技能 section and a

Settings → 插件 → Skill Hub configuration card.

  • Configuration is dsh-native. Since rc.7 the host serves every registered settings namespace to

the web client (the old namespace allowlist is gone), so the plugin registers a dsh-skill-hub settings namespace and the card reads/writes it through the official settings transport — the configurable-plugins tab dispatches the card by that namespace, and the host consumes the same resolved value (single source of truth). Installations upgraded from the older sidecar-configured build migrate their saved config into the namespace once.

Usage

Open Settings → 技能 (Skill Hub) in the dsh web GUI. Three tabs:

  • 来源 (Sources) — the skill list, flat or grouped: a project-level tree (workspaces merged by

default, per project optionally split into .dsh/.agents) plus source collections and uncategorized. Search, source filter and sort share one row; group headers carry tri-state switches; the source-group badge doubles as the re-check entry. (see the screenshot at the top)

  • 场景 (Scenes) — your own enable/disable units (e.g. a “Godot” scene vs a “Java” scene): create

tags, assign members, and flip a whole scene on/off with one switch.

<p align="center"> <img src="https://raw.githubusercontent.com/cheshireez/dsh-skill-hub/main/promo/real-skill-hub-scenes.png" alt="场景 tab" width="560"> </p>

  • 市场 (Market) — one unified list: built-in curated repos (Add button until added) and your

custom sources; scan to install, check for updates, update all in one pass.

<p align="center"> <img src="https://raw.githubusercontent.com/cheshireez/dsh-skill-hub/main/promo/real-skill-hub-catalog.png" alt="市场 tab" width="560"> </p>

Everywhere: work space field in the header (enter a project path to see its read-only project skills), trash section (restorable, restores source + scene membership), diagnostics section (why a skill is missing), and the new-skill form.

The plugin’s own switches live on the Settings → 插件 → Skill Hub card:

FieldMeaning
Enable pluginMaster switch: routes, provider, and announcement all go live with this.
Announce to agentAdds a system-prompt section so agents know how to collaborate when users mention skill management.
Model / user dot colorsOverride the blue/green invocation dot colors used in the panel.
Show invocation countShow per-skill call-count chips when session stats are available.
Show last-used timeShow relative last-used time on each skill row.
Show group summariesShow count/last-used summaries after group titles.

Troubleshooting

  • ⚠️ duplicate loader entry id: skill-hub — the plugin was mounted twice (for example both

through dsh plugin add and a local file: install). Keep exactly one installation method; on upgrade, replace rather than add.

  • A skill is not in the catalog — open the 发现诊断 (diagnostics) section: missing

frontmatter, a name mismatch with the directory, or an over-short description are each listed with their reason.

  • Update check shows nothing — the server throttles checks (5 min per source) and the panel

auto-checks once per day; manual buttons are never throttled.

  • Read-only boundary — only user-level skills (~/.dsh/skills, ~/.agents/skills) are writable;

project, bundled, and runtime skills are displayed read-only.

HTTP API

All endpoints are loopback-only (127.0.0.1/localhost) and JSON.

EndpointMethodPurpose
/api/skill-hub/catalog?cwd=GETFull catalog: skills, disabled list, discovery diagnostics (cwd adds project skills).
/api/skill-hub/skill?name=&cwd=GETOne skill’s detail (path, provider, body).
/api/skill-hub/skill/deletePOSTMove a skill into the restorable trash (snapshots source + scenes).
/api/skill-hub/togglePOSTEnable/disable a writable skill ({name, enabled}).
/api/skill-hub/toggle-batchPOSTEnable/disable a whole group in one write ({names, enabled}).
/api/skill-hub/createPOSTScaffold a new skill ({name, description?, root?}).
/api/skill-hub/statsGETPer-skill invocation counts (unavailable when session-query is absent).
/api/skill-hub/configGET/POSTPlugin runtime config ({enabled, announceToAgent}); null clears an override.
/api/skill-hub/groupsGETUser tags + source collections + origin map.
/api/skill-hub/tagPOSTCreate/rename a tag group.
/api/skill-hub/tag/deletePOSTDelete a tag group.
/api/skill-hub/tag/membersPOSTSet a tag’s member list.
/api/skill-hub/marketGETThe user’s market source repos.
/api/skill-hub/market/sourcePOSTAdd a market source ({repo}).
/api/skill-hub/market/source/deletePOSTRemove a market source.
/api/skill-hub/market/source/refPOSTPin a market source to a release/branch ref.
/api/skill-hub/market/checkGETCheck market sources for newer releases (throttled).
/api/skill-hub/market/source/syncPOSTAlign a market source to its pinned ref; returns tracked skills.
/api/skill-hub/repo?repo=GETDiscover importable skills in a GitHub repo.
/api/skill-hub/repo/importPOSTImport selected repo skills (records the source + default scene).
/api/skill-hub/sourcesGETSource records, derived origins/collections, trash.
/api/skill-hub/sources/checkPOSTCheck upstream updates (throttled, 5 min).
/api/skill-hub/sources/syncPOSTSync selected (or all) skills of a source.
/api/skill-hub/sources/deletePOSTFollow upstream deletion (moves to trash).
/api/skill-hub/sources/restorePOSTRestore a trashed skill (re-attaches source + scenes).
/api/skill-hub/sources/trash/clearPOSTPermanently clear the trash.
/api/skill-hub/updateGETCheck the plugin’s own latest release.

Development

npm install
npm run typecheck   # tsc --noEmit
npm test            # vitest (152 tests across 8 suites)
npm run build       # tsc declarations + tsdown bundles (lib/index.js + lib/client.js)
npm pack            # build the installable tarball (dsh-skill-hub-<version>.tgz)

> Local testing: do not run two dsh web instances against the same > $DSH_HOME and the same project directory at the same time. dsh rc releases have no > cross-process session-log lock, and a second instance resuming the same > session can write duplicate seq rows (corrupt session log: seq gap in > committed region). Stop the old instance first, or give the preview its own > DSH_HOME.

The test suites cover the route family (including the config route and the disabled gate), the sidecar store, skill filesystem operations, the registry provider, and invocation statistics.

Community

License

MIT — see [LICENSE](LICENSE).