Manages DSH skills and MCP servers from the web settings: skill cards with hot enable/disable, workspace scopes, groups, batch migration and drag-and-drop import, plus stdio/HTTP MCP CRUD with connection tests, secret redaction and the unified dsh-panel CLI.
Install
# from a prebuilt release tarball
dsh plugin --profile web add "https://github.com/Fishquito7/dsh-skill-mcp-panel/releases/download/v2.0.2/dsh-skill-mcp-panel-2.0.2.tgz"
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:Fishquito7/dsh-skill-mcp-panel
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
English | 简体中文
A DSH plugin for managing skills right from the web UI and terminal
Features
Skill card list: preview installed skills; expand a card to read the full content
Status tags: Enabled / Disabled, styled like the built-in plugin list
Management: hot enable/disable switch, delete, search by name; the page refreshes on entry
Add skills (0.7.0 unified entry): click “+” and pick files (
.md/.zip), or drag files, archives or skill folders straight onto the page — the structure is auto-detected (bundle / flat files / archive) and invalid content is rejected with a reasonWorkspace views (0.3.0): a skill's files live directly where they belong — global skills in
~/.dsh/skills, workspace skills in that workspace's.dsh/skills. A workspace bar below “Skills” (Global + each workspace, horizontally scrollable) filters the list to one scope.Batch migration: the button left of “+” opens a dialog where you pick the source workspace, one or more target workspaces, and the skills yourself, then batch-copy or batch-move them (nothing pre-selected; items migrate independently — one failure never aborts the rest; move mode allows a single target). When the source scope has groups, you can filter skills by group above the list (0.7.0).
Skill groups (0.5.0): a second bar below the scope bar (All + group names, horizontally scrollable) filters the list to one group. The “Groups” button (left of the migrate button) opens the group editor: create/rename/delete groups, pick a scope, name the group and batch-check members. Groups live only in the plugin's own display config (
~/.dsh/skills/.system/skill-viewer/groups.json) — skill directories are never touched.Scope-exact operations (0.6.4): when the same skill name exists in both the global scope and a workspace, delete, enable/disable and content views act on exactly the (name, scope) row you clicked — each row expands and operates independently, other copies are never touched. Missing entries in the given scope fail loudly instead of falling back. The CLI likewise requires
--global/--project/--workspaceto disambiguate same-name skills inenable/disable/delete.
Install
Install the package (its bundle layer auto-mounts it — no config editing)
dsh plugin --profile web add https://github.com/Fishquito7/dsh-skill-mcp-panel/releases/download/v2.0.2/dsh-skill-mcp-panel-2.0.2.tgzPrefer the release tarball: no git involved, no pnpm v11 build-script restriction. Installing from git also works (git-hosted dependencies are blocked from running their prepare build scripts by default; if you see “git-hosted plugins build on install...”, add the key pnpm printed above under
allowBuildsin the profile'spnpm-workspace.yamland re-run):dsh plugin --profile web add github:Fishquito7/dsh-skill-mcp-panelRestart the gateway
dsh-restartThen refresh the page: Settings → Skills appears right below Plugins.
CLI
The package ships the unified dsh-panel command. Skill management:
dsh-panel skill --help
MCP management:
dsh-panel skill list # list skills (with scope: global / workspace)
dsh-panel skill add <path> # add to global (.md file, bundle dir, or .zip archive)
dsh-panel skill add <path> --workspace D:\projA # add directly into a workspace
dsh-panel skill scope <name> --global # migrate one skill to global
dsh-panel skill scope <name> --workspace D:\projA # migrate one skill into a workspace (--copy to copy)
dsh-panel skill migrate <name...|--all> --from <global|path> --to <global|path> [--copy] [--yes]
dsh-panel skill update [--profile <name>] # check for updates and install (default profile: web)
# batch migrate (copy or move)
dsh-panel skill disable <name> # disable
dsh-panel skill enable <name> # enable
dsh-panel skill delete <name> # delete (asks for confirmation)
The CLI only scans the cwd-anchored project roots and the user roots; add --cwd <workspace-path> to manage a different workspace's skills. If a skill name exists in several scopes, enable/disable/delete require --global/--project/--workspace to pick which copy to operate on.
How it works
dsh-panel mcp list [--profile <name>]
dsh-panel mcp add --name <serverName> --stdio --command <cmd> [--args <arg> ...] [--env KEY=VALUE ...] [--cwd <path>] [--profile <name>]
dsh-panel mcp add --name <serverName> --http --url <url> [--header KEY=VALUE ...] [--profile <name>]
dsh-panel mcp enable|disable <serverName> [--profile <name>]
dsh-panel mcp remove <serverName> [--yes] [--profile <name>]
dsh-panel mcp test <serverName> [--profile <name>]
dsh-panel mcp update [--yes] [--profile <name>]
dsh-panel update [--yes] [--profile <name>] # update the whole package
MCP configuration is written to the managed block in the target profile's cordis.patch.yml
(markers # >>> dsh-skill-mcp-panel:mcp:begin / # <<< ...end). Do not edit inside the block.
The plugin doesn't parse skills itself — it's just a management surface over the skill files: every action in the page (or via dsh-panel skill) ends up as a change to the skill files on disk (SKILL.md), and DSH's own file watcher notices immediately. That's why enable/disable, add, delete and migration are all hot — no gateway restart.
- A skill's entity lives directly in its scope folder: global =
~/.dsh/skills, workspace =<workspace>/.dsh/skills— no hidden store, no junctions: after uninstalling the plugin the skills are plain files DSH keeps discovering - Disable = rename
SKILL.mdtoSKILL.md.disabled, enable = rename it back - Changing where a skill lives = physically copying/moving the files into the target workspace folder (validated first, rolled back on failure)
- Deployment-bundled skills are read-only: they cannot be disabled or deleted
Development
The source is TypeScript under src/; the compiled lib/*.js is committed with the repo (so git installs keep working). After editing, run pnpm build: tsc compiles to lib/ and strips the extra module marker from the browser bundle. npm pack rebuilds automatically via prepack — no manual compile step.
Uninstall
dsh plugin --profile web remove dsh-skill-mcp-panel
License
MIT
Links
More in this category
strukto-ai/mirage#dsh★ 3600
Swaps the filesystem and bash providers for a mirage virtual workspace: file tools and shell commands run over mounted resources (RAM, S3, Redis, Slack, Gmail, Notion, Postgres) instead of the host disk, with per-mount read/write/exec modes, per-command sandbox routing (monty, pyodide, quickjs in process; docker, e2b, daytona remote), and installed CLIs (git, gh, slack, linear, ntn, gws, or one you register) as head words in the virtual terminal.
hust-open-atom-club/oh-dsh★ 302
Community distribution: TUI, desktop, and Web UI as one bundle with layered installation.
ZSeven-W/dsh-ios★ 275
A live iOS Simulator — and a USB-connected iPhone — inside a DSH conversation: 21 agent tools to boot devices, build and run Xcode projects, drive the UI by accessibility identity, OCR text or list rows, read unified logs and inspect processes, backtraces and leaks, with a streaming sidebar panel you can tap, drag and rotate on.
lire1131/dsh-undo-savepoint★ 144
Undo/redo & rollback system for DSH: every config change is auto-snapshotted; undo/redo/restore to any version from the WebUI or the offline CLI/GUI tools (works even when DSH fails to boot).
kanneiren/dsh-network-settings★ 108
Visualize the DSH process network path on Windows or WSL with layered DNS/TCP/TLS/HTTP probes, detect stale proxy configuration, and apply snapshot-guarded repairs.
Jayden-X-L/forkprobe★ 71
Compare multiple skills on the same task and pick the winner.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.