Preface

DSH’s philosophy is “everything is a plugin.” If you’re already maintaining instructions, skills, commands, agents, hooks, permission rules, and MCP servers in Claude Code, you may not want to rebuild them item by item when switching to DeepSeek Harness (DSH). dsh-movein is designed for this scenario: it first lists all migratable content, then writes it to DSH only when you explicitly execute the apply command.

The community directory is an independent site with no official affiliation to DeepSeek or High-Flyer. This article only introduces the dsh-movein plugin itself and does not portray it as an official app store.

What is This

dsh-movein is a DSH plugin with the npm package name dsh-movein. Maintained by sjh9714 under the MIT license, its goal is to migrate existing agent configurations into DSH without manual rebuilding.

It primarily handles these objects:

  • Claude Code is the main migration source;
  • Codex and OpenCode are supported as sources;
  • instructions, skills, commands, agents, hooks, permission rules, and MCP servers;
  • movein_from_claude_code and movein_from_opencode for model-driven invocations.

Core Features

  • Default dry run: Without the --apply flag, the CLI does not perform any writes.
  • Existing targets remain untouched: Already present destinations are skipped.
  • Displays conflicts and unsupported entries before applying.
  • Supports --copy: If you prefer copied skills instead of symlinks.
  • Backs up cordis.patch.yml before each write; npx dsh-movein restore can revert to the most recent patch backup.
  • ~/.dsh/movein-manifest.json records moved sources and destinations.
  • Environment placeholders are preserved as runtime references; secret-looking plaintext values are reported before applying.
  • Sessions are not within the migration scope.
  • On Windows, permission-denied symlinks fall back to copy and are named in the report.
  • npx dsh-movein doctor checks recorded destinations, skill frontmatter, required packages, and hook bridge rows; it does not execute user hooks.
  • Hook enforcement does not equal migration parity: Current DSH hook bridges have upstream enforcement gaps and should not be treated as the sole policy boundary based solely on migration results.

Installation & Enablement

Add the plugin within DSH:

dsh plugin --profile web add dsh-movein

This installs dsh-movein into the web profile. After installation, restart dsh web, open Settings, and select Move in.

The CLI can also be invoked directly:

npx dsh-movein

This command runs a dry run by default.

Compatibility scope:

  • DSH: >=0.1.0-rc.8 <0.2.0
  • DSH releases: 0.1.0-rc.8, 0.1.1-rc.1, 0.1.1-rc.2
  • Profile: web
  • Node: >=18
  • OS: darwin, linux, win32

Typical Usage

Claude Code

npx dsh-movein
npx dsh-movein --apply

The first command previews what will be migrated; the second command executes the write. If you need copied skills instead of symlinks, add --copy to the corresponding command.

Codex

npx dsh-movein --from codex
npx dsh-movein --from codex --apply

OpenCode

npx dsh-movein --from opencode
npx dsh-movein --from opencode --apply

Post-Migration Check

npx dsh-movein doctor
npx dsh-movein doctor --live

doctor checks the migration records, skill frontmatter, required packages, and hook bridge rows. doctor --live requires @deepseek-ai/dsh version 0.1.1-rc.2 or newer, and Node 22.19+ or 24+ runtime; Node 23 is rejected.

Restore

npx dsh-movein restore

It restores the most recent patch backup.

Viewing DSH Profile

dsh --profile web --dump-config | grep -E "mcp-|cc-hooks"

After migrating skills, it’s recommended to start a new DSH session, as the skill catalog is captured per session.

Star Confirmation

After a successful apply, if running in a human TTY, the CLI will ask Star dsh-movein?. If it’s a non-TTY or agent output, user confirmation is required before running:

npx dsh-movein --confirm-star yes

or:

npx dsh-movein --confirm-star no

Use Cases & Considerations

dsh-movein is suitable for developers who already have configurations in Claude Code, Codex, or OpenCode and want to bring skills, commands, agents, hooks, permission rules, and MCP configurations into DSH.

Before use, note:

  • The plugin runs with the current DSH process permissions, reads source configurations, and writes to DSH target locations. Before installing and enabling, you should review the source code, dependencies, and MIT license.
  • All CLI commands default to dry run; only the --apply flag triggers writes.
  • Existing destinations are skipped; do not assume it overwrites existing configurations.
  • Conflicts and unsupported entries appear before applying; manual judgment is required to decide whether to proceed.
  • Secret-looking plaintext values are reported; environment placeholders remain as runtime references.
  • Hook enforcement does not equal migration parity; current DSH hook bridges have upstream enforcement gaps.
  • doctor only checks and does not execute user hooks.

Conclusion

The value of dsh-movein lies in migrating existing agent configurations into DSH in a “preview first, apply later, recoverable” manner, reducing manual transfer and the risk of accidental misconfiguration.

GitHub: https://github.com/sjh9714/dsh-movein
The community directory can be searched by plugin name dsh-movein.