dsh-mixxed
dsh-client-ui-settings-skills
A customized DeepSeek Harness skill setting UI plugin.
- Stars
- 1
- Language
- TypeScript
- Created
- Aug 15, 2026
- Updated
- Aug 16, 2026
Introduction
ui-settings-skills
A dsh plugin that adds a Skill management page to Web Settings, organized by workspace.
Built as a fully out-of-tree plugin — the deepseek-harness source stays untouched. It registers a settings.section slot (the page appears in Settings → 技能 / Skills) and serves its skill catalog over its own HTTP route (ctx.webServer).
Install
-
Install the plugin from npm (published as
@dsh-mixxed/dsh-client-ui-settings-skills):dsh plugin --profile web add @dsh-mixxed/dsh-client-ui-settings-skillsThe package declares
dsh.bundle(its bundledcordis.patch.yml), sodsh plugin addautomatically appends it to the profile'sdsh.profile.bundleslayer stack and the plugin mounts on the next boot — no manualcordis.patch.ymlediting.Upgrading an install that predates the bundle declaration: remove the legacy
ui-settings-skillsrow from$DSH_HOME/profiles/<name>/cordis.patch.yml— the bundle layer now supplies it, and leaving both would mount the id twice. -
Restart the profile (new plugins are discovered at boot), then open Settings → 技能 / Skills.
Building from source (development / offline)
pnpm install
pnpm run typecheck
pnpm test
pnpm run build
npm pack # produces dsh-mixxed-dsh-client-ui-settings-skills-<version>.tgz
dsh plugin --profile web add ./dsh-mixxed-dsh-client-ui-settings-skills-<version>.tgz
Features
- One tab per workspace, with global and user-level skills folded into every workspace view
- Manages only user-level skills (
~/.agents/skills) and project skills — preset-loaded (custom) and built-in skills are never shown or toggled - Search box that filters skills by name or description
- Localized scope badges on every row (用户 / User, 工作区 / Workspace)
- Skill descriptions clamp to two lines, with the full text shown on hover
- Enable/disable toggles on every managed row — see Skill toggles
Skill toggles
Every managed skill row carries a switch. Turning a skill off:
- removes it from the model catalog (
tool-skill) and the/nameinjection boundary, - removes it from the
/command menu in the conversation composer, - takes effect immediately — the next
/open reflects the change.
Scope semantics:
- User-level skills (
~/.agents/skills) toggle globally across every workspace. - Project skills toggle per workspace: the same skill can stay enabled in one workspace and disabled in another.
State persists in the settings document (ui-settings-skills.policy namespace), so it survives profile restarts, and turning a skill back on restores it everywhere.
Preset-loaded (
custom) and built-in skills are never managed and never shown on the page.
Verify
dsh --profile <name> --dump-config | Select-String ui-settings-skills
The composed config shows the ui-settings-skills row, and $DSH_HOME/profiles/<name>/package.json lists @dsh-mixxed/dsh-client-ui-settings-skills under dsh.profile.bundles (auto-appended by dsh plugin add).
After the restart, the Skills page shows one tab per workspace, a search box, and localized skill rows.
Config (optional)
The plugin runs in the host role by default (routes + settings namespace + shadowing provider). A policy role registers only the shadowing provider — no namespace, no routes. Override it from your profile's own cordis.patch.yml — the user layer is applied after the bundle layer, so an id-targeted patch overrides the bundled mount row:
- id: ui-settings-skills
name: "@dsh-mixxed/dsh-client-ui-settings-skills"
config:
role: policy # default 'host'