DSH Plugin Store
Back to home

Simidas

dsh-compat

Inspect and compile Claude Code and Codex plugins into auditable DeepSeek Harness bundles.

Stars
0
Language
TypeScript
Created
Aug 14, 2026
Updated
Aug 14, 2026
Other
GitHub repo

Introduction

dsh-compat

Inspect Claude Code and Codex plugins, explain compatibility component by component, and generate auditable DeepSeek Harness bundles.

Developer preview. dsh-compat is intentionally conservative: it reports unsupported behavior instead of pretending that host-specific hooks, agents, or permissions are portable.

What it does

  • detects .claude-plugin/plugin.json and .codex-plugin/plugin.json;
  • inventories Skills, Commands, Agents, Hooks, MCP, LSP, Settings, and Resources;
  • assigns every component one state: DIRECT, ADAPTED, UNSUPPORTED, or BLOCKED;
  • rejects source-root escapes, unsafe symlinks, inline credentials, and lifecycle-script declarations;
  • converts supported static content into a deterministic DSH bundle;
  • emits a compatibility report, source map, ownership lock, and SHA-256 digests;
  • never executes source plugin code during inspection or conversion.

Current support

ComponentInspectConvertCurrent behavior
Agent SkillsYesYesRegistered through ctx.skills; static SKILL.md retained for audit
Markdown CommandsYesAdaptedConverted into user-invocable DSH skills
MCP stdioYesAdaptedEmits @deepseek-ai/dsh-mcp-client row; env values are omitted
MCP HTTPYesAdaptedNormalized to streamable-http; headers are omitted
ResourcesYesYesCopied as inert, auditable bundle resources
HooksYesNoReported unsupported until event and blocking semantics are verified
Agents/SubagentsYesNoReported unsupported until model/tool/permission behavior is verified
LSPYesNoInventory only
Settings/PermissionsYesNoFail closed; never widens permissions

The static target adapter is pinned to DSH 0.1.0-rc.6. DSH remains a developer preview, so every compatibility claim must be revalidated against a fixed package version or commit.

Install from source

Requirements: Node.js 22+ and pnpm 11+.

git clone https://github.com/Simidas/dsh-compat.git
cd dsh-compat
pnpm install
pnpm build
node dist/cli.js help

The repository is not published to npm yet.

Usage

Inspect a local plugin without executing it:

node dist/cli.js inspect ./path/to/plugin
node dist/cli.js inspect ./path/to/plugin --format json
node dist/cli.js inspect ./path/to/plugin --strict

Generate a DSH bundle:

node dist/cli.js convert ./path/to/plugin --out ./generated-plugin
node dist/cli.js test ./generated-plugin

test currently performs deterministic static validation. It does not start source MCP/LSP servers or run source hooks.

Review the generated files before installing:

generated-plugin/
├── package.json
├── cordis.patch.yml
├── index.js
├── skills/
├── resources/
├── dsh-compat.env.example.json
├── dsh-compat.report.json
├── dsh-compat.report.md
├── dsh-compat.source-map.json
└── dsh-compat.lock.json

Then, at your discretion:

dsh plugin --profile <profile> add -w ./generated-plugin
dsh --profile <profile> --dump-config

MCP environment variables and HTTP headers are never copied with their values. Bind the names listed in dsh-compat.env.example.json through your reviewed DSH profile or generated patch before starting the MCP server.

Exit codes

CodeMeaning
0Command completed under the selected policy
1Usage or internal error
2Compatibility/static policy failure
3Security blocker
4Reserved for unresolved source/target revisions

Security model

Source plugins are untrusted input. dsh-compat does not run package-manager lifecycle scripts, hooks, binaries, MCP servers, or LSP servers. Unknown executable behavior and permission widening fail closed. See SECURITY.md.

Generated bundles contain code and configuration and must be reviewed before installation. dsh-compat does not attest that an upstream plugin or MCP server is safe to run.

Development

pnpm test:all

Compatibility contributions require a stable rule ID, fixture, security test where applicable, and official DSH documentation/source or a behavior trace. See CONTRIBUTING.md.

The implementation contracts and roadmap are in docs/. project-control.md is the project status source of truth.

License

Apache-2.0. Third-party source plugins and generated artifacts remain subject to their applicable licenses; see NOTICE.