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-dshRestart 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
python3on PATH (the bundled migration script is Python 3, stdlib only).
License
[MIT](LICENSE)