dsh-claude-to-dsh
Migrate a Claude Code project into DeepSeek Harness. This plugin registers a
model-callable claude_to_dsh tool that discovers Claude Code artifacts
(.claude/skills, commands, agents, rules, CLAUDE.md/AGENTS.md) and
converts the automatable parts into the DeepSeek Harness .dsh/skills/ layout.
The conversion is non-destructive: it never writes into .claude/,
CLAUDE.md, AGENTS.md, settings.json, or .mcp.json; it only writes under
.dsh/ and produces a report plus a machine-readable manifest of every change.
Install
# from npm (recommended)
npm install -g @deepseek-ai/dsh
dsh plugin --profile web add dsh-claude-to-dsh
# or from this repository (use `file:` so @deepseek-ai/dsh-tools resolves)
dsh plugin --profile web add file:/path/to/deepseek-harness-plugins/dsh-claude-to-dsh
Restart the DSH session so the new bundle is composed.
Usage
claude_to_dsh(project: "/abs/path/to/claude-project", write: true)
Parameters
| Param | Type | Notes |
|---|
project | string (required) | Absolute path to the Claude Code project root. |
write | boolean | Default false (dry-run only). Set true to write converted files. |
force | boolean | Default false. Overwrite existing converted files. |
noAdapt | boolean | Default false. Copy skill bodies verbatim without adapting Claude-only syntax. |
What it converts
| Claude Code | DeepSeek Harness |
|---|
CLAUDE.md / AGENTS.md | read natively — no conversion needed |
.claude/skills/<n>/SKILL.md | .dsh/skills/<n>/SKILL.md (plus supporting files) |
.claude/commands/<n>.md | .dsh/skills/<n>/SKILL.md |
.claude/agents/<n>.md (subagents) | .dsh/skills/agent-<n>/SKILL.md (delegation recipe) |
.claude/rules/<n>.md | .dsh/skills/rule-<n>/SKILL.md |
Frontmatter is normalized for DSH: name becomes kebab-case, a missing
description is derived from the body, when_to_use is merged into
description, and disable-model-invocation/user-invocable/metadata are
preserved. Claude-only fields and !command`` dynamic injection are recorded in
the report rather than silently lost.
What it does not automate
settings.json (permissions/hooks/env), .mcp.json, workflows/*.js,
output-styles/*.md, agent-memory/, and hooks/ have no direct DSH
equivalent and are reported for manual mapping. See the generated
.dsh/CLAUDE_TO_DSH_REPORT.md for the full list.
Output
.dsh/skills/… — converted skills
.dsh/CLAUDE_TO_DSH_REPORT.md — human-readable record of every change
.dsh/.claude-to-dsh-manifest.json — machine-readable source→target map
Requirements
python3 on PATH (the bundled migration script is Python 3, stdlib only).
License
MIT