mt3166/dsh-project-skills-mng: Manage project-level and global skills in the DSH right column

Foreword

DSH already incorporates skill files into the session: project skills in <projectRoot>/.dsh/skills and <projectRoot>/.agents/skills, global skills in ~/.dsh/skills and ~/.agents/skills. However, this discovery process is invisible to the user, and there is no interface to add, delete, or modify them. To change a skill, one has to manually browse directories and open an editor. The plugin introduced below fills this gap: it keeps a panel resident in the right sidebar, lists the four-level discovery results hierarchically, and supports browsing, editing, deleting, filtering, cross-layer copying, and updating.

What is it

mt3166/dsh-project-skills-mng is a DSH client plugin maintained by MT3166; the mng in the name stands for management. It is not a plugin that “provides skills,” but a plugin that manages them: the panel reads and writes the same batch of skill files that DSH has already discovered, without creating a separate registry.

Version 0.1.0, private: true (not published to npm), MIT license © 2026 MT3166. The directory page categorizes it as a “Client” plugin and shows 0 stars (as of 2026-11-07, see directory page). It registers a right sidebar tab and a guide card; the panel style follows the existing DSH browser sidebar themes and React.

Package name, repository name, right sidebar tab ID, Host API route (/dsh-project-skills-mng/api), and CSS scope all use the dsh-project-skills-mng prefix.

Core Features

  • Lists current session-active skills grouped by DSH’s own four-level discovery order: Project .dsh/skills (100) → Project .agents/skills (200) → Global ~/.dsh/skills (400) → Global ~/.agents/skills (500), with smaller numbers taking priority. Each group displays the path, number of entries, missing/read-only status, and priority number, and can be collapsed individually.
  • Each row displays Model Callable (M) / User Callable (U) tags, link install markers (mirrors in ~/.dsh/skills pointing to ~/.agents/skills are merged into one line), and entries with the same name that are overwritten. Overwritten entries can still be opened, edited, and deleted; operations are performed on their own root and do not affect the winning entry with the same name.
  • Supports creating, editing, and deleting SKILL.md, toggling the two callable switches, validating frontmatter, and preserving the body text exactly as is outside of frontmatter.
  • Filtering: Name/Description keywords, four levels, “Only show M off”, “Only show U off”, “Only show overwritten”, “Only show link installs”; conditions can be combined. Operations are not performed on invisible rows when filtering changes. Filter chips are folded behind the “Filter” button by default.
  • Source: Reads ~/.agents/.skill-lock.json (the manifest from npx skills), displaying the source repository (e.g., obra/superpowers) or “Local” per line. Details provide the repository, path within the repository, installation time, and short hash. Filtering by source is supported.
  • Check for Updates / Update: Compares upstream git tree SHA (or content hash). Rows with updates are marked with a small dot; single or batch updates are possible. Updates are performed via full package replacement, with old versions left in .dsh-bak-<timestamp>-<name>, defaulting to keeping two copies. If modified locally, it reports LOCAL_CHANGES; explicit “Force Update” is required to overwrite.
  • Batch Management: The toolbar “Select” enters multi-select mode, allowing batch deletion, batch toggling of callable switches, and cross-layer move or copy (full package copy, scripts/ and other supporting files follow along, .git and node_modules do not). Results list success and failure reasons item by item (e.g., SOURCE_REMOVE_FAILED).
  • Also registers a skills_manage tool to allow models to reuse the same read/write logic.

Skills recorded in the manifest but no longer present on disk are grouped separately as “Only in Manifest,” allowing one-click reinstallation (writes only to ~/.agents/skills, consistent with npx skills behavior, does not rebuild mirror links in ~/.dsh/skills).

Installation and Enablement

The steps given in the official README are to first get the source code, then install as a bundle:

git clone git@github.com:MT3166/dsh-project-skills-mng.git
plugin_manager action=install_bundle target=<本仓库绝对路径>

Newly installed bundles take effect directly via HMR; if replacing an already installed old version, DSH needs to be restarted to load the new JS.

After completing the above two steps:

  1. Open the right sidebar (switch like Ctrl+Shift+E), click “+” or the “Project Skills” guide page card;
  2. The four level groups are arranged by priority. Click the group header to collapse, click any row to enter details;
  3. In details, you can directly edit the body and frontmatter; the list refreshes automatically after saving;
  4. The toolbar can refresh, create new skills (Name + Description generates frontmatter template, then manually fill in the body);
  5. The toolbar “Check for Updates” queries upstream (GitHub API, 5-minute cache). Rows with updates are marked with a dot. In multi-select mode, you can also “Update Selected”.

The plugin inserts the line dsh-project-skills-mng into the profile via cordis.patch.yml. The client needs to inject three packages: @deepseek-ai/dsh-client-locale, @deepseek-ai/dsh-client-ui-slots, and @deepseek-ai/dsh-client-ui-sidebar-right. These are already declared in the dsh field of package.json and are handled during bundle installation.

Typical Usage

A common operational chain is: first locate a specific skill in the right sidebar to confirm which layer it belongs to, what the priority number is, and whether it is overwritten by a skill with the same name; then enter details to modify the SKILL.md body or frontmatter. After saving, the panel refreshes automatically, and the DSH side skill content is also updated—the plugin only reads and writes the skill files themselves and does not rebuild the registry; DSH’s @deepseek-ai/dsh-skill-filesystem is already listening to these directories.

If you want to introduce a new skill in a project, use the “Create” button in the toolbar to fill in the name and description, generate the frontmatter template, and then fill in the body; if you want to put it in the global layer, use cross-layer copy in multi-select mode to take the full package along with supporting files like scripts/.

Partial failures in batch operations are locatable: the result lines show “Success N · Failed M”. Failed items can be expanded to see error codes, such as a skill with the same name already existing in the target layer, or failure to delete the source during move.

Applicable Scenarios and Notes

Suitable for teams or individuals already using DSH: once the number of skills increases, manually browsing ~/.agents/skills becomes difficult to maintain; this panel centralizes the discovery order, override relationships, source repositories, and upstream update status into one entry point.

A few points to note:

  • The plugin runs with the permissions of the current DSH process. Before writing, there is a skill name whitelist (^[a-z0-9]+(?:-[a-z0-9]+)*$) and realpath validation; write operations are only allowed within the four skill root directories. Deletion requires double confirmation, and the deletion scope only goes to the skill directory where the parsed SKILL.md resides.
  • Read the source code and license before installing. The source code is public on GitHub, and the license is MIT. This project is a community-maintained plugin, not published to npm, so you need to clone it yourself and install it as a bundle.
  • Updates only apply to upstream skills registered in the manifest. Download and unpack have size limits (Download 64 MiB, Normal skills 32 MiB, Root-level skills 128 MiB). When unpacking, .. and realpath are validated. Before replacement, local snapshots are compared; on failure, it rolls back and renames the old directory as a backup.
  • If you do not use the ~/.agents/.skill-lock.json manifest, the “Source” and “Check for Updates” sections will have no data to display.

Summary

The value of this plugin lies in turning the previously invisible skill discovery process into an actionable interface: the four-level grouping clarifies “which skill is active and who it beats,” filtering and batch operations reduce the cost of manual wiring line by line, and source and update allow upstream hosted skills to be included in regular maintenance. Repository address: https://github.com/MT3166/dsh-project-skills-mng, Directory page: https://www.skillhub.cn/plugins/MT3166/dsh-project-skills-mng.

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye