Introduction

DeepSeek Harness (DSH) enables models to load skills on demand. However, installing a large number of related skills (such as tool chains or phased workflows) as a flat directory can cause context pollution and waste prompt budget. Every installed skill contributes its name and description to the <available_skills> directory; even when the current task does not require those skills, they still occupy context window space.

The dsh-skill-bundle plugin introduces the “Bundle Box” concept to encapsulate a group of related skills in a package. Only the root skill is exposed in the directory, while subskills are loaded through metadata on demand and enter the context only when explicitly requested. This helps reduce interference from irrelevant information and improve reasoning efficiency.

Core Features

  • Bundle Box structure: Contains one root SKILL.md and any number of subskill directories.
  • On-demand loading control: Loads subskills through the loadSubskills field in frontmatter or model decisions.
  • Model tools: Provides the skill_browse (list subskill names) and skill_load (load a specified subskill) tools.
  • Non-invasive architecture: As a pure Cordis plugin, it requires no framework modifications and supports a precompiled lib/ directory.
  • Resource isolation: Subskills retain independent identities, and their resource directory relative path resolution remains correct.

Installation and Configuration

Before installing the plugin, ensure that DeepSeek Harness (dsh) is correctly installed.

  1. Install the plugin package:
    dsh plugin --profile web add @lihuu/dsh-skill-bundle
  1. Verify that the configuration is in effect:
    dsh --profile web --dump-config
The configuration output should include the `dsh-skill-bundle` layer.
  1. Restart configuration: After installing or modifying the configuration, you must restart the process for the corresponding Profile.

Custom Boxes Path

By default, the plugin looks in the boxes/ directory of the installed package. To point to a custom directory, add a patch line to the configuration to replace the existing boxesDir:

- insert:
    - id: dsh-skill-bundle
      name: '@lihuu/dsh-skill-bundle'
      config:
        boxesDir: /absolute/path/to/your/boxes

Usage Examples

Directory Structure Example

Place related skills in one directory; that directory becomes a Bundle Box. For example, a deployment workflow:

boxes/deploy/
  SKILL.md          # 根技能
  build/SKILL.md
  push/SKILL.md
  rollback/SKILL.md

Frontmatter Configuration Example

Define the loading policy in the frontmatter of the root SKILL.md:

---
name: deploy
description: "部署相关技能集"
loadSubskills:          # 仅加载指定的子技能
  - build
  - push
  - rollback
---

Loading rules:
* loadSubskills: true: Loads all subskills (in directory order).
* loadSubskills: [a, b]: Loads only the subskills listed.
* loadSubskills is not set: Returns only the root skill content, and the model decides after reading it.

Notes

  • YAML 1.2 limitation: Field values containing commas must be wrapped in double quotes, for example:
    description: "a, b, c: 需要引号"
  • Dependencies: Dependencies such as @deepseek-ai/dsh-skill and @deepseek-ai/dsh-tools must be installed.
  • Configuration activation: After modifying the configuration, you must restart the configuration file for the changes to take effect.

Summary

By grouping skills and implementing on-demand loading, dsh-skill-bundle addresses context expansion in multi-skill scenarios. Developers can configure loadSubskills to precisely control the scope of a skill set’s loading, thereby optimizing model invocation costs while preserving functional integrity.

Plugin Directory Page | GitHub Repository