Preface

In DeepSeek Harness (DSH), Agent Skills are typically stored in project-level or global-level directories in the form of SKILL.md and related resource files. If skills are scattered across local files, URLs, or come from AI coding agents like Claude Code or Codex, manual copying is prone to issues like duplicate names, missing files, and delayed discovery. Below is an introduction to a DSH Web UI plugin: dsh-skill-importer. It is maintained by saitamahang, uses the MIT license, and is used to import, validate, deduplicate, and migrate skills in the Web UI, allowing the harness to automatically discover these skills.

What is it

dsh-skill-importer is a DSH Web plugin. Its core positioning is to bring skill management into the DeepSeek Harness Web UI, allowing import from local Markdown files or URLs to skill roots that the harness automatically discovers.

It requires:

  • DeepSeek Harness >= 0.1.0-rc.6
  • DSH Web profile
  • MIT license

Core Features

dsh-skill-importer provides the following verified capabilities:

  • Import, validate, deduplicate, and migrate Agent Skills, covering DeepSeek Harness, Claude Code, Codex, and other AI coding agents.
  • Upload SKILL.md, paste URLs, or migrate complete skills directories from agents like Claude Code and Codex.
  • Browse skills grouped by project and global roots, and remove individual copies at will.
  • Call skills via composer picker, /skills command, or directly typing /skill-name.
  • Batch migration includes preflight scan, validating each SKILL.md one by one, preserving scripts, references, assets, and other resources, and reporting invalid entries.
  • By default, target duplicate names are skipped; can select replace per skill; replacement retains a temporary backup, and rolls back on swap failure.
  • Runs without requiring an agent or session, does not enter the model tokens flow; discovered instantly via harness watcher; supports workspace-aware targeting; provides a bilingual UI.

Installation and Enablement

First-time Installation

First, execute the installation command:

npx @deepseek-ai/dsh plugin --profile web add dsh-skill-importer@latest

After installation, restart DSH Web:

npx @deepseek-ai/dsh web

Updates and Queries

Existing plugin users can update using the same command:

npx @deepseek-ai/dsh plugin --profile web add dsh-skill-importer@latest

Check the latest published version:

npm view dsh-skill-importer version

List installed plugins in the Web profile:

npx @deepseek-ai/dsh plugin --profile web list

New Version Waiting Period

DSH profiles use pnpm minimumReleaseAge. Newly published versions may take effect with a delay; within the waiting window, @latest may still resolve to the previous stable version.

Pre-1.0 semver ranges stop at the next minor. After the waiting period, if you need to specify a version across minor versions, use an exact version number:

npx @deepseek-ai/dsh plugin --profile web add dsh-skill-importer@X.Y.Z

If you have already verified the release version and must install it immediately, you can add a temporary exception for this exact version in $DSH_HOME/profiles/web/pnpm-workspace.yaml:

minimumReleaseAgeExclude:
  - dsh-skill-importer@X.Y.Z

Replace X.Y.Z in both places with the same target version. This configuration allows that specific version to skip the supply-chain waiting period. Do not permanently exempt the package name; remove this exact version exception once the release version is mature.

Duplicate Plugin Entries

If startup fails with:

duplicate loader entry id: skill-importer

This indicates that the old manual configuration is still retained in the profile. Remove the manually added skill-importer entry in $DSH_HOME/profiles/web/cordis.patch.yml, then restart DSH Web:

npx @deepseek-ai/dsh web

Typical Usage

After the above installation steps, open in DSH Web:

Settings → Skills

Then you can perform the following operations:

  1. Import a Markdown file or URL.
  2. Select Batch import to migrate a complete skills directory from another agent.
  3. Select the target; imported skills will appear after the filesystem watcher discovers them.

There are three ways to call a skill:

  1. Use the composer picker.
  2. Use the /skills command.
  3. Directly type /skill-name.

Write Scope and Security Boundaries

POST routes verify the Origin header and only accept loopback sources:

127.0.0.1
localhost

Writes are restricted to four default writable DSH roots:

.dsh/skills
.agents/skills
~/.dsh/skills
~/.agents/skills

DSH-configured customSkillDirs sit in discovery order, but they are not import targets. Bundled skills ship with DSH and cannot be overwritten by the plugin.

Safe-by-design constraints include:

  • Fixed skill roots
  • A 256 KB limit
  • Same-origin POST checks

Applicable Scenarios and Notes

This plugin is suitable for the following situations:

  • Need to bring skill management into the DSH Web UI.
  • Need to migrate complete skills directories from agents like Claude Code and Codex.
  • Want to complete import, validation, deduplication, migration, and invocation of skills within the Web UI.
  • Need to avoid missing scripts, references, assets, and other resources when copying manually.

Notes before use:

  • Requires DeepSeek Harness >= 0.1.0-rc.6.
  • Plugin runs with current dsh process permissions. Check source code and MIT license before installation.
  • DSH ecosystem philosophy is “Everything is a plugin”; the community directory is an independent site with no official affiliation to DeepSeek or Huanfang; it should not be understood as an official app store.

Conclusion

dsh-skill-importer converges skill import, organization, and invocation into the DSH Web UI, suitable for developers who need to migrate skills from local files, URLs, or other agents.

GitHub Address:

https://github.com/saitamahang/dsh-skill-importer