dsh-skill-hubDeepSeek Harness plugin

DeepSeek Harness(dsh)Web GUI 技能中枢:浏览/搜索完整本地技能目录、启用/禁用、查看正文、排查诊断、新建技能,基于官方 ctx.skills 注册表。 In-GUI skill hub for dsh: browse, search, enable/disable, inspect, diagnose and scaffold local skills from the official ctx.skills registry.

Stars
11
Forks
1
License
MIT
Last commit
Sep 3, 2026
Latest release
v0.3.6

Overview

DeepSeek Harness(dsh)Web GUI 技能中枢:浏览/搜索完整本地技能目录、启用/禁用、查看正文、排查诊断、新建技能,基于官方 ctx.skills 注册表。 In-GUI skill hub for dsh: browse, search, enable/disable, inspect, diagnose and scaffold local skills from the official ctx.skills registry.

Original README

Cached from the project repository on Sep 3, 2026. This is source content, separate from the Agents.md review above.

View source

dsh-skill-hub

中文版 | English

npm version downloads license node

dsh-skill-hub panel

In-GUI skill hub for DeepSeek Harness — browse the full ctx.skills catalog, toggle skills, inspect bodies, diagnose missing skills, install from the market, and scaffold new ones.

Host runs in the dsh process via official SDKs only; browser renders through official slots. No dsh source changes.

Why not just the read-only browser?

dsh-skill-manager browses, dsh-skill-importer / dsh-find-skill import. This plugin is the manager in between.

Capabilityread-only browserdsh-skill-hub
Cataloguser roots, self-scannedctx.skills registry: project / custom / user / bundled + third-party
Workspace.dsh/skills & .agents/skills (read-only, merged by default)
Toggle✅ rename SKILL.md (never delete), tri-state group switches + drag reorder
Diagnostics / scaffold✅ missing frontmatter checks / ~/.dsh/skills wizard
Source tracking✅ repo + commit, check/sync/trash (restores source & scene)
Market✅ built-in + custom repos, any top-level root, badges + update-all
Stats✅ call counts from session logs (14-day window, incremental cache)

Features

  • Catalog — search + source filter + flat/grouped in one row; groups = scenes (tags) + source collections; workspace tree merged by default.
  • Switches — per-skill and per-group toggles; conflict dialog (close all / keep on) → mixed state; only ~/.dsh/skills & ~/.agents/skills are writable.
  • Reorder & edit — drag handle on every group header (persists in ~/.dsh/dsh-skill-hub.json); Edit toggle reveals reorder/delete without cluttering the read view.
  • Market — unified list (built-in Add → becomes source row); scan any root with SKILL.md (no allowlist), async import with {jobId, totalBytes} progress & cancel; Check all / Update all (failures non-fatal, daily auto-check).
  • Stats — per-skill count + lastUsed, group summaries; configurable window/interval live from the settings card.

Quick start

bash
dsh plugin --profile web add dsh-skill-hub
# restart dsh web → Settings → 技能 → Market → scan → import

Scaffold format (SKILL.md):

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

Requires Node ^22.19 || >=24 + dsh web (0.1.0-rc.7 / 0.1.1-rc.2, 0.1.x forward compatible).

How it works

GitHub repo ──scan/import──▶ ~/.dsh/skills
     ▲                          │
     └─check/sync/delete── ctx.skills ◀─ provider
                                │ snapshot/get
                    /api/skill-hub/* ──▶ Panel (Settings → 技能)
FileRole
src/index.tsinject [webServer, skills, systemPrompt, settings], settings namespace, announcement
src/routes.ts/api/skill-hub/* fences + handlers (async import, reorder)
src/store.ts~/.dsh/dsh-skill-hub.json v4 (disabled/tags/sources/market/trash/stats/order)
src/repo.tsdiscovery / import / diff (any top-level SKILL.md)
src/skillfs.tstoggle/trash/scaffold/diagnostics
src/client/panel (useSkillHub + thin views), CSS Modules

Host uses only ctx.skills.snapshot/get, ctx.webServer.register, ctx.systemPrompt.section.

Usage

Settings → 技能 — 3 tabs: Sources (flat/grouped + project tree + drag), Scenes (tags, drag), Market (unified list). Header workspace field pins to one cwd; trash & diagnostics are always visible.

Settings → 插件 → Skill Hub — master switch, announce to agent, dot colors, showUseCount/showUseTime/showGroupSummary, stats window (days, default 14, 0=all) & interval (min, default 5).

HTTP API

Loopback-only (127.0.0.1/localhost), JSON.

EndpointMethodPurpose
/api/skill-hub/catalog?cwd=GETcatalog + disabled + diagnostics
/api/skill-hub/skill?name=&cwd=GETskill body
/api/skill-hub/skill/deletePOSTmove to trash (snapshots source+scenes)
/api/skill-hub/togglePOST{name, enabled}
/api/skill-hub/toggle-batchPOST{names, enabled}
/api/skill-hub/createPOST{name, description?, root?}
/api/skill-hub/statsGETinvocation counts
/api/skill-hub/configGET/POSTruntime config (null clears)
/api/skill-hub/groupsGETtags + collections + orders
/api/skill-hub/tag etc.POSTcreate/rename, delete, set members, reorder (/tag/reorder, /collections/reorder, /source-groups/reorder)
/api/skill-hub/market etc.GET/POSTlist/add/delete/pin/check/sync market sources
/api/skill-hub/repo?repo=GETdiscover (any root)
/api/skill-hub/repo/importPOSTasync job {jobId, total, totalBytes}
/api/skill-hub/repo/import/progress?jobId=GETpoll job
/api/skill-hub/repo/import/cancelPOSTcancel job
/api/skill-hub/sources etc.GET/POSTlist/check/sync/delete/restore/clear trash
/api/skill-hub/updateGETplugin latest release

Development

bash
npm run typecheck  # tsc --noEmit
npm test           # 174 tests, 9 suites
npm run build      # tsc + tsdown → lib/index.js + lib/client.js

Don't run two dsh web on the same $DSH_HOME + cwd — rc has no session-log lock (seq gap corruption). Use separate DSH_HOME.

Troubleshooting

  • duplicate loader entry id: skill-hub — remove duplicate install (keep one dsh plugin add method).
  • Skill missing — check diagnostics (frontmatter / name mismatch / short description).
  • Dots missing in / menu — dsh internals changed; catalog still works.

Community

Issues · Discussions · Showcase · Market PR · Discord

License

MIT — LICENSE.