dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
dsh 的 Skill(技能)管理页:按 Agent 模式把每个 Skill 设为开、仅手动、仅模型或关;从会话历史统计每个 Skill 在各模式里被加载的次数;搜索 skills.sh 并从 GitHub 安装;从 Codex、Claude Code 或文件夹导入;新建、编辑、保存版本,删除的 Skill 进回收站;卸载后模式照常可用。
English | 中文
A skill manager plugin for DeepSeek Harness (dsh). It adds a Skills entry to the sidebar, below Plugins: see every skill, turn it on or off per agent mode, create, edit, import, and version skills, and install them from GitHub.
A preview.
/name. Model: the model sees it, but the / menu does not offer it. A mode that does not load skills (such as Minimal) and a skill the mode does not have cannot be set, and the reason is shown..dsh/skills and .agents/skills. Switches apply to every project by name; a session loads a project skill only while it runs in that project.github.com/owner/repo, a branch and folder inside it, or owner/repo), downloads its public archive, and lists the skills in it, with a warning for skills that contain scripts. Nothing is selected until you choose. The commit is remembered: Check for updates compares each installed skill's folder with the repository's current one, and Update all installs the newer versions over them (the current files are saved as a version first). Private repositories are not supported.skill tool and when you typed /name, and shows the last time. Choose a mode at the top to see what that mode loaded and what it never did. It lists the skills nobody loaded (in all modes, or in the chosen one) and can turn those off in a mode (Undo is offered). It reads names and times from the session history, never message text. The newest 400 sessions are read, for at most 25 seconds; a saved session is reused for 10 minutes..dsh-mode-skills/backups/), exports the skill as a .zip, and moves it between ~/.dsh/skills and ~/.agents/skills.~/.codex/skills), Claude Code (~/.claude/skills and plugin skills), and other agent tools (found by the ~/./skills convention, such as Cursor and Gemini CLI), reads any folder, or takes a dropped or picked .zip or skill folder. Selected skills are copied in; on a name clash they can be imported under a new name or replace the existing skill (after a version is saved). Uploaded skills keep no source.The list holds the skills each mode sees: user folders, custom folders, skills bundled with a mode, and, with a project folder chosen, that project's.
dsh plugin --profile web add dsh-mode-skillsRun pnpm dsh plugin --profile web add dsh-mode-skills in the source folder if you run dsh from source, then restart dsh web. To try a checkout, use link:/path/to/dsh-mode-skills instead of the name.
Installing from GitHub needs to reach codeload.github.com from the machine that runs dsh. Behind a proxy, set HTTPS_PROXY and NODE_USE_ENV_PROXY=1 before starting dsh.
dsh plugin --profile web remove dsh-mode-skillsThe row this plugin adds to a mode is saved with a condition that switches it off once the package is gone. After an uninstall every mode keeps working and the skills turned off come back in every mode. The .dsh-mode-skills/ folder in the profile directory stays, so installing again brings the settings back. Delete it to clean up.
The page checks for a newer version of this plugin and can install it.
dsh-mode-skills, at most once every 12 hours. The request names only the package. Turn it off with Check for updates automatically at the bottom of the page; Check for plugin updates there still works. Development installs (link:) are never checked. (The Check for updates button above the list is a different one: it checks the skills you installed from GitHub.)latest release is offered, never a prerelease, and the tarball address must be this package's file on the registry that answered.dsh web again; desktop app: quit and reopen). The next time you open the page it says Upgraded to the new version. Your skills and settings stay, and running sessions are not affected. The banner shows the command that goes back to the old version.dsh plugin --profile web add github:xiaohai-78/dsh-mode-skills instead of a button.dsh plugin --profile web add dsh-mode-skills@latest, or on the Plugins page use Add plugin with https://registry.npmjs.org/dsh-mode-skills/-/dsh-mode-skills-.tgz. Without @latest the command does nothing, because DSH keeps the version it installed.File · Role index.js · Host plugin: serves POST /api/dsh-mode-skills and the dshModeSkills service the policy row reads. Actions: list, setModes, the skill library actions with the same names and requests as dsh-modes's (createSkill, readSkillFile, writeSkillFile, saveSkillVersion, restoreSkillVersion, deleteSkillVersion, readSkillVersion, skillSources, importSkills), and this plugin's own: deleteSkill and the trash, readSkipped, writeSkipped, stageUpload, importUploads, agentSources, setMeta, searchSkills, listSkillFiles, readSkillAsset, writeSkillAsset, deleteSkillAsset, exportSkill, moveSkill, githubSources, checkUpdates, updateGithub, clearModes, usage, storeSearch, storeIndex, and the plugin update actions updateStatus, setUpdateCheck, dismissUpgraded, upgrade, upgradeStatus, and cancelUpgrade, which always answer here. While dsh-modes is installed the library and setting actions refuse with managed-by-modes. list mounts each mode's scope through agentPresets.acquireScope, reads skills.snapshot (with the project folder as cwd when one is chosen) and whether the mode has the skill tool, and releases the scope; each mode's result is reused for 60 seconds, except after a change to that mode or the page's Refresh. On start it adds the uninstall condition to the modes this plugin wrote, and takes in DSH's built-in updates where a mode differs from them only by this plugin's row policy.js · The policy row placed in a mode: registers a skill provider in the mode's own scope that lists, for each skill turned off, an entry neither the model nor the user may invoke, and for each Manual or Model skill an entry only the user or only the model may invoke, loading the skill's current file (rank -1000). It lists nothing while dsh-modes is installed mode-rows.js · Adding and removing the policy row, the uninstall condition (disabled: !!js, true once the dsh-mode-skills package no longer resolves), and merging built-in row updates with rebase.js rebase.js, fs-retry.js · Three-way merge and rename retries on Windows, the same as in dsh-modes state.js · /.dsh-mode-skills/state.json: the skills each mode turns off, sets to Manual, or sets to Model, the built-in rows of the last merge, and per skill its info (details when last seen, shown while every mode turns it off), alias and tags, imported (source, fingerprints, and for GitHub the repository, ref, folder, commit, and the latest version found), and version index; version files live in skill-versions///. Writes are atomic; a damaged file is reported and never overwritten skill-store.js · Version ids, SKILL.md frontmatter, line endings, and which skills may be changed (not those in node_modules), the same rules as dsh-modes trash.js · The trash: a skill folder or flat file moves to /.dsh-mode-skills/trash// with a record of where it came from, and restoring moves it back unchanged; across disks, or when Windows refuses a rename, it copies and then removes. The same move serves the Move button diagnose.js · Finds files in the skill folders that have a SKILL.md but that no mode lists, gives the reason in the order DSH checks (byte-order mark, frontmatter, common YAML mistakes, name and description, name grammar, old fields, invocation switches), and offers the fixes that are mechanical. YAML is checked for common mistakes only; anything else is reported as "see DSH's log" tokens.js · Estimates tokens from DSH's catalog format (one ` - name: description line per skill the model may invoke, whitespace collapsed and cut to 500 characters, plus a fixed reminder) at about 0.3 tokens per English character and 0.6 per Chinese character (DeepSeek's published ratios); not a real tokenizer count zip.js · Reads a zip (stored and deflate entries; no encryption or zip64), skipping folders, links, and macOS metadata, refusing paths that leave the archive, and holding to the file and byte limits while inflating; reads the archive comment and the list of paths without inflating; writes a zip for export github.js · Reads a pasted address (URL, owner/repo, branch and folder), downloads the public source archive from codeload.github.com (60 MB, 60 seconds), takes the commit from the archive comment, and finds the skill folders in it usage.js · Reads skill loads from session logs: a skill tool call counts once its result is not an error, and a user/message with source skill-invocation counts as the user's. A load belongs to the mode the session ran under then (the header's agentPreset, replaced by agent-preset/selected events, else the default mode). Reads sessions through the sessionQuery service, newest first, four at a time; saved sessions are cached for 10 minutes store.js, store-index.json · Searches skills.sh (/api/search, two characters at least; results whose source is not an owner/repo pair are dropped), and holds the bundled list of recommended repositories with descriptions in both languages skill-files.js, skill-import.js · File work for saving and restoring versions; finding skills in Codex, Claude Code, and folders, fingerprints, copying and replacing skill folders (Windows included), new SKILL.md files, and the list of scripts in a folder. Mostly the same as in dsh-modes skill-view.js · Combines the modes' skill catalogs into one list with each skill's state in every mode (on, manual only, model only, pinned version, off) update.js, self-update.js · The plugin's own update, the same as in dsh-request-params: version comparison, the registries to ask, the check that the registry's tarball address is this package's file there; and the actions, with the switch and the note an upgrade leaves in /.dsh-mode-skills/settings.json, installing through DSH's plugin manager client.js · The Web page (Chinese and English): registers the sidebar.panellist entry and the main panel with the same id; saves through setSkillModes of /api/dsh-modes while dsh-modes is installed cordis.patch.yml · Inserts the index.js` host row
npm testRuns on Node 22.19 and 24; when the local Node is outside that range, use npx --yes node@22.19.0 --test "test/*.test.js".
Checked on DSH 0.2.1-rc.2 with a separate DSH_HOME:
dsh plugin remove and with the package files gone, Standard was still in the mode list and a new session started; installing again turned the skill off again.skills.json and left this plugin's own settings unchanged./api/dsh-modes; the skill's details, versions, and import record were written to dsh-modes's data and not to this plugin's./ menu still offered it, marked user-only; delete, Undo, and restoring from the trash worked; a SKILL.md with a colon in its description was listed as not loaded, and after saving the offered fix DSH loaded it; ~/.cursor/skills was listed and an uploaded zip was imported. With dsh-modes installed, Manual was unavailable with its reason, and the rest worked as usual.anthropics/skills) was read, three skills installed from it, a faked older install was found by Check for updates, and Update all replaced it. With dsh-modes installed, Hand over to Mode Manager moved an Off setting into Mode Manager's settings and cleared it here.skill tool (Standard mode) and another started /weekly-report (PTC mode): Usage counted each once, under its own mode, from the real session logs./weekly-report injected the skill's content; in Standard, where it is Model-only, the same line was left as plain text.MIT