Introduction

The core capability of DeepSeek Harness (DSH) is extending Agent functionality through Skills. In real-world development, you often need to temporarily block certain tools or capabilities without uninstalling a Skill, or you need to manage a large number of Skills in a unified way. DSH does not natively provide a global-level mechanism for enabling/disabling Skills or runtime filtering.

dsh-skill-manager is a plugin that provides a management dashboard through the Web GUI. It fully filters disabled Skills during Agent runtime while preserving visibility in the management list and the ability to restore them.

Plugin Overview

This is a client-side plugin maintained by welsione. It addresses the following issues:

  1. Centralized management: View, search, and filter all Skills in the Web GUI settings page.
  2. Runtime control: After disabling a Skill, the Skill is completely invisible to the Agent during directory injection, tool invocation, or direct reference.
  3. Persistent configuration: The disabled list is stored in a local file and remains effective after restart.

Core Features

Settings Page Management Panel

After installing the plugin, go to the “Settings” page in the Web GUI, and a “Skill Management” panel will appear.

  • List display: Shows all Skill names, descriptions, sources, and whether they are user-invocation-only.
  • Search and filtering: Supports keyword search and filtering by “All / Enabled / Disabled”.
  • Toggle operation: Enable or disable individual Skills.

Batch Operations

The toolbar provides one-click action buttons:

  • Enable all: Batch-enable all Skills.
  • Disable all: Batch-disable all Skills (confirmation required before the operation).

Plugin Configuration Card

In the “Settings” -> “Plugins” -> “Plugin Configuration” area, the dsh-skill-manager configuration card will appear. This card displays the current enable/disable statistics and the state file path in real time.

Runtime Filtering Mechanism

This is the core capability of the plugin. Once a Skill is disabled in the management panel, DSH intercepts access to that Skill at runtime:

  • Directory injection interception: The <available_skills> tag no longer includes that Skill.
  • Tool invocation interception: The Agent cannot invoke that Skill through the skill tool.
  • Reference interception: If a user directly uses /name to reference that Skill, the request is intercepted.

This filtering applies globally to all Agents and their sub-Agents.

Persistence and Visibility

  • Persistence: The disabled list is stored in ~/.dsh/skill-manager.json. The configuration remains valid after the plugin or DSH restarts.
  • Full visibility: Disabling only affects runtime discovery by the Agent. In the management list, all Skills remain visible and can be re-enabled at any time.

Headless Compatibility

The plugin supports Headless mode (profiles without the Web GUI). Although runtime filtering is a hard dependency, loading the Web server and Agents is an optional wait, so it does not affect usage in Headless environments.

Automatic Directory Updates

When an open session detects changes in the Skill list (such as disabling/enabling), it automatically publishes a “directory updated” message. No manual refresh or session recreation is required.

Technical Features

  • Zero build: Single-file plugin (ESM host + ModuleLoader client), no compilation steps required.
  • Automatic mounting: Automatically enters the dsh.bundle.patch layer through dsh.profile.bundles, without manual configuration file editing.

Installation and Enablement

Before installing, make sure your DSH version meets the following requirements:

  • DSH version: 0.1.0-rc.7 or later
  • Model requirements: A bundle plugin model is required (dsh.profile.bundles + dsh.bundle.patch)

Use the following command to install the plugin:

# 1. 通过 npm 仓库安装(推荐固定版本)
dsh plugin --profile web add dsh-skill-manager

# 2. 或直接从 GitHub 安装
dsh plugin --profile web add github:welsione/dsh-skill-manager

# 3. 或指定版本安装(避免主分支漂移)
dsh plugin --profile web add github:welsione/dsh-skill-manager#v1.2.0

After installation, refresh the Web page. The “Skill Management” entry will appear under “Settings”.

Note:
* Do not manually edit cordis.patch.yml; the bundle layer will be mounted automatically.
* When installing via github:, the repository version must have been committed and pushed with git push (v1.1.0+).

API Usage Examples

In addition to GUI operations, the plugin also exposes an HTTP API for script-based control.

Get Skill List

curl -s http://127.0.0.1:3080/api/skill-manager/list

Enable/Disable a Single Skill

curl -s -X POST http://127.0.0.1:3080/api/skill-manager/set \
  -H 'content-type: application/json' \
  -d '{"name":"mmx-cli","enabled":false}'

Batch Enable/Disable

curl -s -X POST http://127.0.0.1:3080/api/skill-manager/set \
  -H 'content-type: application/json' \
  -d '{"names":["a","b"],"enabled":true}'

Uninstallation

To uninstall the plugin, run the following command:

dsh plugin --profile web remove dsh-skill-manager

After uninstallation, the ~/.dsh/skill-manager.json file is retained. When the plugin is installed again, the previous disabled list configuration can still be used.

Dependencies and Environment

  • Peer Dependencies: @deepseek-ai/dsh-settings (^0.1.0-rc.7)
  • Dependencies: @deepseek-ai/dsh-home-paths, @deepseek-ai/schemastery
  • Git dependency note: When installing via github:, ensure the local code has been pushed to the remote repository. Otherwise, installation may fail due to dependency resolution errors.

Summary

dsh-skill-manager provides a lightweight way to manage Skill visibility in DSH. It implements visual enable/disable control through the Web GUI and ensures consistent Agent behavior through runtime interception. For developers who need fine-grained control over Agent capabilities, it is a practical tool.