Bring your existing Agent Skills (SKILL.md) library to DSH: discover skills across Claude/Codex/Cursor/Gemini paths, inject a progressive-disclosure index, and load bodies on demand.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:Jesse-njx/dsh-skillport
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
Every skill you already have — Claude Code, Codex, Cursor, Gemini CLI — works in DSH.
dsh-skillport is a DeepSeek Harness plugin bundle that makes DSH the next implementer of the open Agent Skills standard (SKILL.md). Anthropic released the spec in Dec 2025 and 30+ harnesses read it (Codex CLI, Cursor, Gemini CLI, Copilot/VS Code, Goose, Windsurf); DSH did not. Skillport imports the whole existing ecosystem with zero migration: your .claude/skills/ library, your Cursor rules, your Claude Code slash commands all become DSH skills the moment the plugin loads.
What you get
| Format | Source | How it lands in DSH |
|---|---|---|
Agent Skills SKILL.md |
.claude/skills/, ~/.claude/skills/ (Claude Code) |
model-invocable skills |
Agent Skills SKILL.md |
~/.gemini/antigravity/skills/ (Gemini CLI) |
model-invocable skills |
Agent Skills SKILL.md |
extraPaths (config) |
model-invocable skills |
Agent Skills SKILL.md |
.dsh/skills/, .agents/skills/ (+ user roots) |
scanned natively by DSH — skillport never double-scans |
| Cursor rules | .cursor/rules/*.mdc |
converted to model-invocable skills (source cursor) |
| Claude Code commands | .claude/commands/*.md |
converted to user-invokable skills (/name) |
| Context files | AGENTS.md, CLAUDE.md |
injected as project context only if DSH does not already (native dsh-agent-instructions wins — no double-injection) |
Skills flow into the native skill registry (ctx.skills), so the platform's own catalog injection, progressive-disclosure index, and the skill loader tool surface them automatically. Registrations are Cordis effects: dsh plugin remove @dsh-skillport/bundle unloads every imported skill cleanly — a live demo of the platform's teardown model.
Why this shape
DSH already ships a full skill stack: a provider registry with rank-based dedup, catalog injection (names + descriptions in the system prompt), and a skill tool that loads bodies and resolves bundled file paths. Skillport's job is narrower and honest: discover the locations DSH does not cover, convert the adjacent formats, and make the result debuggable. That is exactly the spec's "check first — don't double-inject" instruction applied to the whole surface:
.dsh/skills+.agents/skillsare scanned by DSH's nativedsh-skill-filesystem; skillport detects that provider and skips those sets (falling back to scanning them itself only when the native provider is absent, so the full table holds in any composition).- The spec's "injection" (names + descriptions) and "use_skill" (load body + resolve resources) are the native
dsh-tool-skillcatalog andskilltool — skillport feeds them, it does not duplicate them. AGENTS.md/CLAUDE.mdare injected natively bydsh-agent-instructions; skillport takes over only when that plugin is absent.
Install
dsh plugin --profile web add @dsh-skillport/bundle
Then in a session: ask the model to load a skill you used to own in Claude Code — the catalog lists it and the skill tool loads it, bundled resources included.
Config
All fields optional (profile patch or cordis.patch.yml):
plugins:
dsh-skillport:
sources: [dsh, claude, agents, gemini] # which discovery sets to scan
extraPaths: [] # extra SKILL.md dirs (e.g. ~/skills, a shared drive)
convert:
cursorRules: true # .cursor/rules/*.mdc → skills
contextFiles: true # AGENTS.md / CLAUDE.md (skipped when DSH handles natively)
claudeCommands: true # .claude/commands/*.md → user-invokable skills
maxIndexEntries: 100 # prompt-bloat cap: beyond this, skillport's model-invocable
# candidates become user-invocable only (find_skill surfaces them)
providerName: skillport # provider name in the skill registry
Skills doctor
Trigger-quality is the fuzzy failure mode: skills tuned for Claude's triggering habits may fire differently on DeepSeek models. Skillport turns that into a debuggable surface.
In-session (/skills doctor [<description>]):
/skills doctor
## project-claude (1)
- commit-helper — Craft conventional-commit messages from staged changes.
## project-dsh (1)
- deploy — Deploy the application to staging or production with rollback.
/skills doctor deploy the app to production
Test-fire: "deploy the app to production"
- deploy [skillport/project-dsh] score=0.83
"Deploy the application to staging or production with rollback."
Terminal (no DSH session needed):
skills-doctor --cwd ~/work/projectx list
skills-doctor --cwd ~/work/projectx test-fire "deploy the app to production"
Pinned spec revision
The Agent Skills format is young and versioned. Skillport pins the revision it implements — see docs/spec-revision.md — and ships a conformance fixture suite (missing fields, unicode names, nested resources) so spec drift fails loudly in CI.
Non-goals (deliberately)
- Claude Code plugins / hooks / subagents — executable host-specific semantics; porting prose-and-scripts is honest, pretending to port hook systems is a bug factory.
- MCP config translation — out of scope.
- Codex / Cursor extension binaries — out of scope.
- Skillport never gets its own execution path: skills that carry scripts run through DSH's normal shell tool inside its sandbox, so the sandbox policy stays the single enforcement point.
Development
pnpm install
pnpm build
pnpm test # 60 tests: spec conformance, discovery, dedup, converters,
# doctor, find_skill, plugin integration, CLI, goldens
Fixtures: test/fixtures/ holds one skill per source format, conformance edge cases, and the checked-in goldens for the injected index + doctor report.
License
MIT
Links
More in this category
Tencent/WeKnora#dsh-weknora★ 30675
Four read-only tools over a WeKnora knowledge base: list knowledge bases, hybrid passage search, reassemble one document's chunks in order, and WeKnora's own cited RAG or ReAct-agent answer with a resumable session id.
superdesigndev/treg★ 3596
Tool catalog for agents: search ~2,600 external endpoints (SEO and SERP, backlinks, social, people and company enrichment, ad libraries, scraping) by the task you want done, read each one's parameters and per-call price, then call it with the credential injected server-side. Ships the skill plus an MCP row that stays disabled until TREG_TOKEN is set.
TencentCloudBase/CloudBase-AI-Toolkit#dsh-plugin★ 1126
Tencent CloudBase backend for DeepSeek Harness — scaffold and deploy full-stack apps from chat, render query results as table cards with paging, sorting and CSV export, preview a deployment on its domain, and call the CloudBase MCP toolset (`mcp__cloudbase__*`) with device-code login.
gitroomhq/postiz-agent#dsh-postiz★ 496
Connects DeepSeek Harness to Postiz over MCP: list connected social media channels, fetch per-platform posting rules, and schedule, draft, or publish posts to X, LinkedIn, Instagram, Facebook, Threads, TikTok, YouTube, Reddit, Bluesky, Mastodon, Discord, Slack, Telegram and more; adds a postiz workflow skill.
EthanYoQ/Invoice-Downloader#dsh-invoice-downloader★ 446
Local IMAP invoice download, OCR, archive, and Excel reimbursement summaries for DeepSeek Harness.
anysearch-team/anysearch-dsh★ 430
AnySearch-powered real-time web and vertical search provider for DeepSeek Harness.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.