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_codeandmovein_from_opencodefor model-driven invocations.
Core Features¶
- Default dry run: Without the
--applyflag, 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.ymlbefore each write;npx dsh-movein restorecan revert to the most recent patch backup. ~/.dsh/movein-manifest.jsonrecords 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 doctorchecks 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
--applyflag 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.
doctoronly 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.