DSH Quality
Development & Runtime
deepseek-harness/dsh-hooks-claude-code

dsh-hooks-claude-code: the official bridge as a plugin

The official bridge translates your existing Claude Code hooks.json into dsh hook extension points — reuse, don't rewrite. Proof that everything is a plugin.

Config fragment

bash
dsh plugin --profile web add dsh-hooks-claude-code

Installed like any other plugin. Your existing Claude Code hooks configuration becomes dsh hooks without a rewrite.

Core code

The bridging idea: read the foreign format, map it onto dsh extension points.

ts
export function apply(ctx, config) {
  const hooks = readClaudeHooksJson(config.path);
  for (const [event, commands] of Object.entries(hooks)) {
    ctx.hooks.register(mapEvent(event), {
      commands,
      // run at the mapped agent/tool lifecycle extension point
    });
  }
}

It proves the ecosystem claim from the top: even an official migration tool is shipped as a plugin.

Why it scores

  • Official: shipped by the DeepSeek Harness team as a bridge plugin.
  • Migration path: Claude Code and Codex hooks.json translate into dsh hooks — reuse, don't rewrite.
  • Ecosystem proof: if the official tool is a plugin, everything is a plugin.