Skills-Manager
Manifest validSkills Management
Skills-Manager
Package:
@dsh-skills-manager/dsh-skills-managerA dual-face Skills management plugin for DeepSeek Harness (DSH).
Skills-Manager unifies Agent Skills discovered from many sources behind one management surface. It is a Cordis plugin split into two independently built and loaded halves:
- Host half (Node.js) — scans, imports, and manages skills from multiple
sources; owns the skill registry, trash bin, repository browsing, company
skill sources, and update/diff tooling. Registers a
ctx.skillsprovider so every enabled skill becomes live for the harness. - Client half (browser) — renders a unified Skills panel inside the DSH settings area, with five tabs: Skills, Trash, Repositories, Company, Updates.
The two halves talk over webServer HTTP (/api/skills-manager): the client
calls typed routes with fetch and re-pulls a snapshot after every mutation.
Full architecture, data model, and design rationale live in DESIGN.md.
Features
- Multi-source discovery — DSH global, project, per-agent (Codex / Claude / Copilot), and extra user directories.
- Import & authoring — import from a zip archive, a folder, or a single
SKILL.md; or create a brand-new managed skill. - Enable / disable — toggle skills live against the harness catalog.
- Trash with retention — soft delete, restore, permanent purge, empty, and automatic expiry cleanup (default 30 days).
- Repository sources — browse GitHub repositories, list their skills, and install them.
- Company sources — register
api/gitenterprise endpoints, sync, and install advertised skills. - Updates & diff — check upstream versions and review an inline unified diff before applying an update.
- Local persistence — JSON documents under
~/.dsh/skills-manager/with revision tracking and file watching.
Architecture
Host half (Node.js) Client half (browser)
src/index.ts src/client/index.ts
SkillsManager service ◄── HTTP fetch ──► Settings panel (React)
JsonFileStore (~/.dsh/skills-manager/) re-pull snapshot after each change
tsc → lib/index.js tsdown → client/client.js
- Transport — one
prefixroute/api/skills-managerregistered onctx.webServer; every response is a{ ok, data }/{ ok, code, error }JSON envelope. - Security — requests must originate from a loopback host (or a
same-origin/nonesec-fetch-site); every mutatingPOSTmust carry thex-dsh-skills-managermarker header and anapplication/jsoncontent type; request bodies are capped at 4 MB.
Quick Start
Prerequisites
- Node.js
^22.19.0 || >=24.0.0 - pnpm
11.7.0(declared aspackageManager)
Install & build
pnpm install
pnpm build # clean → tsc (host) → tsdown (client) → normalize banner
pnpm build produces the host bundle under lib/ and the browser bundle at
client/client.js.
Verify
pnpm typecheck # host + client + test projects, --noEmit
pnpm test # node:test runner over test/**/*.test.ts
Load into DSH
This package is a DSH bundle plugin. It declares:
dsh.bundle.patch→./cordis.patch.yml(inserts the plugin into the profile layer stack asid: skills-manager),dsh.client.inject→@deepseek-ai/dsh-client-ui-slots,@deepseek-ai/dsh-client-locale,dsh.client.platform→web.
Once the package is installed into a DSH host that consumes these fields, the
host half registers the /api/skills-manager route and the ctx.skills
provider on load, and the client half contributes the panel to the
settings.section slot. Open the harness Settings → Skills Manager to use
it.
Development watch
pnpm watch # tsdown --watch for the client half
pnpm test:watch # re-run tests on change
Configuration
The host plugin reads the following config (all optional; zero-config defaults resolve to a local setup):
| Key | Type | Default | Description |
|---|---|---|---|
projectRoot | string | '' | Project root scanned as the project source. |
extraDirs | string[] | [] | Extra directories scanned as the local source. |
agentRoots.codex | string | '' | Override for the Codex skills directory. |
agentRoots.claude | string | '' | Override for the Claude skills directory. |
agentRoots.copilot | string | '' | Override for the Copilot skills directory. |
githubApiBase | string | https://api.github.com | GitHub REST API base. |
githubRawBase | string | https://raw.githubusercontent.com | GitHub raw content base. |
githubToken | string | '' | Optional bearer token for authenticated requests. |
trashRetentionDays | number | 30 | Days a trashed skill is kept before auto-purge. |
scanOnStart | boolean | true | Whether to run a discovery scan at startup. |
Scripts
| Script | Purpose |
|---|---|
build | clean → tsc -p tsconfig.json → tsdown → normalize-client-banner |
build:client | Bundle the client half only |
typecheck | --noEmit check across host, client, and test tsconfigs |
test | node --test "test/**/*.test.ts" |
test:watch | test in watch mode |
bundle / watch | tsdown bundle / watch |
clean | Run scripts/clean.mjs |
prepack | build + scripts/preflight.mjs guard |
Project Structure
src/
index.ts Host plugin entry (config schema, inject, apply)
service.ts SkillsManager orchestration core
http.ts Host↔Client HTTP transport (/api/skills-manager)
file-store.ts JSON persistence (revision tracking + file watching)
scanner.ts Multi-source discovery
importer.ts zip / folder / file import + create
diff.ts LCS unified diff
github.ts GitHub repo & company source remotes
skill-file.ts SKILL.md parsing / serialization / id hashing
types.ts Shared wire vocabulary + Cordis event augmentation
client/ Browser half (panel, api client, wire types, locales, styles)
test/ node:test suites (http + api)
DESIGN.md Full design document
Tech Stack
- Language — TypeScript
- Frontend — React 18 (
React.createElement, no JSX runtime), lightningcss for CSS Modules - Runtime deps —
jszip,yaml - Build —
tsc(host) +tsdown(client) - Tests — Node built-in
node:testwith native TypeScript type stripping
License
MIT
Comments
Loading…
Similar plugins
by jackmis0724
DSH Web GUI skill manager: browse, preview, import, add, and batch-delete user skills (dsh plugin)
★ 0
MIT
TypeScript
Aug 15, 2026
dsh plugin --profile web add @dsh-external/dsh-skill-managerby Zh0uHX
在 DSH 设置中搜索、安装和管理 Skills.sh 技能
★ 1
MIT
TypeScript
Sep 22, 2026
dsh plugin --profile web add dsh-skillsby mhdfy1988
Non-invasive Skill lifecycle manager for DeepSeek Harness
★ 0
MIT
TypeScript
Aug 24, 2026
dsh plugin --profile web add dsh-skill-managerby xiaoxianyu-office
DSH Skills 管理器:设置页系统/用户技能分类,用户技能开关/编辑/删除/新建。Skills manager for DeepSeek Harness: system/user skill management (toggle/edit/delete/create) in Settings.
★ 3
↓ 283/wk
JavaScript
Aug 14, 2026
dsh plugin --profile web add dsh-skills-managerby EricXu20266
DSH skill manager — list, group and enable/disable skills, delegate creation to the host agent
★ 0
TypeScript
Aug 18, 2026
dsh plugin --profile web add dsh-skillmanagerby cocofhu
skillhub of deepseek-harness
★ 8
↓ 312/wk
MIT
TypeScript
Sep 5, 2026
dsh plugin --profile web add skillhub-plugin