Preface

The design philosophy of DSH (DeepSeek Harness) is “everything is a plugin”. In the existing Claude plugin ecosystem, many developers maintain plugin structures that include skills/, commands/, and hooks/. dsh-claude-plugin-loader is a compatibility-layer plugin maintained by patrick1099, designed to allow DSH to directly discover and load Claude-style plugins, thereby reusing existing Claude plugin capabilities.

Core Capabilities

This plugin implements core bridging functionality between Claude plugins and DSH:

  1. Plugin scanning and deduplication
    By default, it scans the ~/.claude/plugins/cache directory. If multiple plugins with the same name exist under that directory, plugins are deduplicated by version, preferentially loading the latest live source and retaining the highest version found in the cache.

  2. Skills channel
    The skills/ folder inside a plugin directory is registered as a DSH skill provider. Models can use DSH’s native skill or skill_search commands to discover and load SKILL.md files inside plugins by name.

  3. Commands channel
    commands/*.md files inside plugins are registered as DSH slash commands. It supports command registration, programmatic execution, and hot reloading. After changes to a plugin directory, commands are automatically updated or unregistered.

  4. Status tool
    Provides a read-only tool claude_plugin_status, used to list currently discovered plugins and their supported channel types (skills/hooks/mcp/commands/agents).

  5. SessionStart Hook bridge
    This is a minimal bridge implementation and is disabled by default. It parses SessionStart command hooks in hooks.json, executes them during the agent/session-start stage, and injects stdout into the session context. Enabling this feature requires explicitly setting sessionStartHooks: true in the configuration.

  6. Configuration management
    Through the enabledPlugins configuration item, you can control that only plugins listed in the local [plugins.dsh].enabled are exposed, and require plugin manifests to declare that they are dsh plugin skills.

Installation and Activation

Installing this plugin requires DSH’s plugin management commands.

# 装进 web 界面 profile
dsh plugin --profile web add dsh-claude-plugin-loader

# 装进 CLI/TUI profile
dsh plugin --profile cc-tui add dsh-claude-plugin-loader

# 装进一次性 headless profile
dsh plugin --profile headless add dsh-claude-plugin-loader

After installation is complete, restart the corresponding DSH process for the changes to take effect.

Configuration and Verification

After installation, you can configure it in the profile’s cordis.patch.yml to specify scan directories, enable specific plugins, or adjust the hot reload interval.

- id: claude-plugin-loader
  name: dsh-claude-plugin-loader
  config:
    pluginRoots:
      - "C:/path/to/shared/plugins"
      - "C:/Users/<you>/.claude/plugins/cache"
    enabledPlugins:
      - "cjt"
      - "note-workflow"
    sessionStartHooks: true
    reloadIntervalMs: 1500

Configuration verification:

# 查看配置是否注入
dsh --profile headless --dump-config

# 查看已加载插件状态
dsh --profile headless "Call claude_plugin_status and repeat its output."

# 测试加载技能
dsh --profile headless "Load the cjt skill."

Notes

  • SessionStart disabled by default: For security reasons, the SessionStart hook bridge is disabled by default and must be explicitly enabled in the configuration with sessionStartHooks: true.
  • TUI automation limitations: Automated PTY input for interactive TUI slash commands is not yet stably reproducible. It is recommended to manually type /hello Alice in dsh --profile cc-tui for final confirmation.
  • Unimplemented features: MCP configuration generation, the agents channel, PreToolUse deny/rewrite and other hook intents, and the full form of the external script protocol bridge are not yet implemented.

Ecosystem and Source Code

This plugin follows the MIT license. For more detailed documentation, usage guides, and source code, refer to the GitHub repository.