dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
实时技能提供器:把 60+ 个其他 Agent(Claude Code、Codex、Cursor、Gemini CLI、Copilot)的技能目录、Claude Code 插件市场以及任意 git 技能仓库中的技能接入 dsh 目录,零拷贝零软链接;自动去重、修复 frontmatter、处理同名冲突,并附带 CLI(list、add、sync、doctor)。
Product direction and acceptance milestones: Roadmap.
Discover and load skills across your tools. Collect Agent Skills from local directories and configured Git sources into one catalog, available through a live DeepSeek Harness (dsh) provider or a local stdio MCP server.
English | 中文
Find missing supporting files in the installed folder, then review bundle changes before loading it through MCP. Browser folder check · Three pinned public examples.
npx dsh-skills-anywhere@0.19.0 check path/to/SKILL.md --resources --jsonAdd --fail-on-resource-issues to gate CI. This checks local Markdown link targets; it does not inspect prose dependencies or execute the skill. Scope and tutorial.
First review, no clone required — Find one missing skill reference, restore it, and verify the CI gate.
Need · Workflow Reuse skills across agent tools · Collect local and Git sources, then load on demand through dsh or local MCP Review changes before loading · Compare instructions and directory manifests; require the reviewed content hash Check which instructions reached an agent · Save MCP load receipts alongside tool calls and task evaluations
Requires Node.js 22.19+ or 24+. The CLI and local MCP server work independently; Git sources also require Git.
Inspect discovered skills:
npx dsh-skills-anywhere listFor an MCP client, use the local server configuration. For DeepSeek Harness, install into your chosen profile:
dsh plugin --profile web add dsh-skills-anywhereStart dsh and load with its skill tool or /skill-name. To add a Git source, run npx dsh-skills-anywhere add anthropics/skills. Installation details cover release archives, source checkouts and dsh version requirements.
Check skills in CI. Any repository that keeps SKILL.md files can add the GitHub Action (0.14.0 and later). Rejected files, repairs and hidden characters appear as pull request annotations, with a job summary and a JSON report:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: noteflowai/dsh-skills-anywhere@v0.14.0
with:
fail-on-repair: true
fail-on-hidden-characters: trueInputs, outputs and scope. No model key or DeepSeek Harness installation is needed.
The homepage opens with an authored resource check. Choose a skill folder to check your own links, then Save result image for a shareable summary of counts and scope. Images omit file names; the JSON report retains the paths needed for review.
Try the interactive Hugging Face playground — explore an example workspace, resolve name clashes, and search beyond the catalog budget. No installation or model API needed. How it works.
Inspect skill instructions, compare directory manifests and share catalog views. Keyboard navigation preserves the selected row and catalog settings. Files opened for local review stay in the browser.
Bring your own `SKILL.md`. Compare the provider's strict and lenient parsing locally: inspect repairs, invocation settings and a downloadable check report. Your file stays in the browser. The same checks are available in the command line and CI, with file hashes and actionable exit codes. Reports enumerate recognized source URLs, full-commit address forms and author-declared tools. Referenced content, script behavior and client compatibility require separate verification.
Clients can use different project, user and plugin directories for SKILL.md files. Skills Anywhere discovers configured sources in place and makes the resulting catalog available through dsh or an MCP client configured to connect to its local server. Directory definitions describe discovery paths; the compatibility matrix records tested protocol connections separately.
Inside dsh, it registers one extra provider on the built-in ctx.skills registry, so the model's normal skill tool and /name invocation simply see more skills:
.agents/skills convention, so a client that does not read it itself (Claude Code, for example) still sees skills installed there.~/.claude/plugins/marketplaces/*/plugins/*/skills/*, including the official Anthropic marketplace.The catalog budget controls how many skill summaries enter the model's session catalog: up to 50 by default. Other eligible skills remain searchable through find_skills and can be loaded on demand. /name invocation is unchanged.
The same pool is available outside dsh through dsh-skills-anywhere mcp. Configured MCP clients can discover and open skills through tools and skill:// resources. Client support for tool calls, resources and the skill's own instructions determines the available workflow.
The provider deduplicates symlinked and byte-identical entries, supports documented frontmatter repairs, and renames conflicting names such as discord/configure and telegram/configure. The CLI reports the published catalog, skipped entries and the reason for each change.
Successful MCP open_skill calls return a receipt identifying the delivered instruction body, original SKILL.md and optional bundle. Attach it to a tool span to review delivered versions alongside task results. The receipt records delivery; instruction following and permission enforcement are separate checks. Receipt contract · EvalArc Trace Workbench.
Load a Microduck frame-review skill through MCP, then have your agent verify its recorded joint facts with Robot Reel before writing a review. (select 04 Review robot evidence) · Local walkthrough · Reusable skill. The browser shows the instructions; your agent's own execution tool runs the read-only verifier. No new simulation or GPU is needed.
MCP open_skill returns the original file's SHA-256. Supply expected_sha256 from check --json or an earlier open to reject a changed SKILL.md before its instructions are returned. Fresh author opt-outs apply immediately, even while discovery is cached. Exact-file workflow. For Git-source skills, pass an earlier receipt's source_commit as expected_source_commit. The load is refused if the checkout moved or has local changes below the skill directory, including untracked, ignored and assume-unchanged/skip-worktree files. Require the reviewed source commit.
MCP protocol support: the local stdio command negotiates legacy initialization and the 2026-07-28 protocol opening. Four SDK configurations and the installed npm archive are checked over real subprocess connections. Compatibility matrix and embedding migration.
Review the whole skill directory. Generate a file manifest with bundle /path/to/skill --json, compare added/removed/changed resources, and require expected_bundle_sha256 when opening through MCP. The shows a script change behind unchanged instructions and compares your own manifests locally. Directory review and limits. The digest covers recorded paths and file contents within that directory. External dependencies and execution permissions need separate review; files can change after loading.
Published on npm with build provenance; each GitHub release also includes the same tarball.
Example discovery output is shown below. Paths and counts depend on the local installation and configured sources:
$ npx dsh-skills-anywhere list
NAME FROM PATH
discord-access claude plugin discord @ claude-plugins-official ~/.claude/plugins/marketplaces/.../discord/skills/access/SKILL.md
frontend-design claude plugin frontend-design @ claude-plugins-official ~/.claude/plugins/marketplaces/.../frontend-design/skills/frontend-design/SKILL.md
skill-creator claude plugin skill-creator @ claude-plugins-official ~/.claude/plugins/marketplaces/.../skill-creator/skills/skill-creator/SKILL.md
...
31 skills, 6 renamed — run `dsh-skills-anywhere doctor` for detailsInstall from a git checkout or a release tarball instead of npm
Every GitHub release carries a prebuilt tarball, and both dsh plugin add and npx accept its URL directly (https://github.com/noteflowai/dsh-skills-anywhere/releases/download/v0.19.0/dsh-skills-anywhere-0.19.0.tgz). If you want an unreleased commit:
dsh plugin --profile web add github:noteflowai/dsh-skills-anywhereA git install ships sources, so pnpm has to run this package's prepare build. pnpm 10+ refuses until you allow it: the first add fails and prints the exact key to allow. Copy that key (it includes the commit) into the profile's pnpm-workspace.yaml and run the add again.
# $DSH_HOME/profiles/web/pnpm-workspace.yaml
allowBuilds:
'dsh-skills-anywhere@https://codeload.github.com/noteflowai/dsh-skills-anywhere/tar.gz/<sha>': truePin a commit (github:noteflowai/dsh-skills-anywhere#) if you want the install to be reproducible.
Requirements
0.1.5-rc.1 or newer (the suite runs against 0.1.5-rc.1 and 0.1.5-rc.2), any profile that mounts @deepseek-ai/dsh-skill (the shipped web, acp, headless and sdk profiles all do)git on PATH for git sources (everything else works without it)Where · Example · dsh source label · Default rank Another agent's project skills · /.claude/skills/*, /.cursor/skills/* · anywhere-project · 250 Another agent's user skills · ~/.codex/skills/*, ~/.cursor/skills/* · anywhere-user · 550 Claude Code plugin marketplaces and the installed-plugin cache · ~/.claude/plugins/marketplaces/*/plugins/*/skills/* · anywhere-claude-plugins · 580 Git sources · anthropics/skills, vercel-labs/agent-skills/skills · anywhere-source · 700
Lower rank wins a duplicate name inside the dsh registry. The built-in dsh roots keep their ranks (.dsh/skills 100, .agents/skills 200, ~/.dsh/skills 400, ~/.agents/skills 500). Precedence follows these values across sources; for example, an agent's project entry at rank 250 precedes a dsh user entry at 400. Inside dsh, the built-in .agents/skills and .dsh/skills roots are not scanned again. The standalone MCP server has no built-in provider beside it, so it also serves the shared .agents/skills and ~/.agents/skills (the default location for Codex, Amp, Goose, Zed and Letta Code) at those same ranks, 200 and 500. Embedders of createSkillsAnywhereServer can pass sharedDirs: false or exclude the agents id.
Run npx dsh-skills-anywhere agents for the full agent table and which directories exist on your machine.
The provider reads directories containing SKILL.md and dsh's flat .md form, using the Agent Skills format. It parses name, description, disable-model-invocation and user-invocable, and retains license, compatibility, allowed-tools and metadata.
compatibility and allowed-tools carry the author's declarations; the client controls runtime requirements and tool permissions. Unknown fields, including argument-hint and context, are preserved under metadata.frontmatter. Preserving them does not implement the originating client's behavior. scripts/, references/ and assets/ are exposed through the skill's resource directory for the consuming client to use.
In the default lenient mode a missing name falls back to the directory, an invalid name is normalised to kebab-case, and a missing description is derived from the first paragraph. Each repair is recorded and shown by doctor. Set lenient: false to match the strict behaviour of the built-in provider.
npx dsh-skills-anywhere add anthropics/skills # default branch
npx dsh-skills-anywhere add anthropics/skills@v1.0.0 # tag or branch
npx dsh-skills-anywhere add vercel-labs/agent-skills/skills # sub-directory
npx dsh-skills-anywhere add https://github.com/o/r/tree/main/dir # GitHub tree URL
npx dsh-skills-anywhere add git@gitlab.com:group/skills.git # any git URL
npx dsh-skills-anywhere add ./local/skills-repo --project # local repo, project-scoped
npx dsh-skills-anywhere add o/r --ref 3f2a9c1 --rank 300 # pin a commit, set precedenceSources come from three places, merged in this order: the plugin config.sources, the user file ~/.dsh/skills-anywhere/sources.json, and the project file /.dsh/skills-anywhere.json (commit it to share skills with your team). The CLI edits the last two.
Each repository uses a local checkout at ~/.dsh/skills-anywhere/cache/// (@ when a branch, tag or commit is set). Background synchronization runs at startup, every syncIntervalMs (6 hours by default), and when source configuration changes. Resolved commits are recorded in ~/.dsh/skills-anywhere/lock.json. Discovery reads the available cache. A failed refresh retains an existing checkout; a source that has never synchronized contributes no cached skills. Successful changes invalidate the catalog without making discovery wait for network synchronization.
To take only some skills from a repository, add one entry per skill folder with the same repo and a full commit SHA as ref; they share one checkout. examples/isaaclab-v3.0.0 does this for five IsaacLab user skills (opt-in). It includes a catalog of file hashes and licenses, and lists the ways around such an allowlist.
find_skills / open_skill toolsdsh publishes every model-invocable skill's name and description into the session, on every request. With marketplaces and a few git sources that is hundreds of lines of context. The provider therefore ranks its skills and marks only the first catalog.limit (default 50) as model-invocable; the remainder is published with model invocation off, which keeps it out of the catalog but still loadable by you with /name.
Two tools, registered by the dsh-skills-anywhere/tools row, make the hidden part reachable for the model:
whenToUse, origin), catalog or not, and says which matches are listed.disable-model-invocation: true are still refused, exactly as the built-in skill tool does.- id: skills-anywhere
config:
catalog:
limit: 30 # 0 = unlimited (old behaviour)
pin: [frontend-design] # always listed
hide: [example-skill] # never listed, still searchable and /name-invocable
- id: skills-anywhere-tools
config:
findLimit: 10Author-disabled skills never count against the budget. Which skills stay listed follows the precedence order below, so project-level skills win over user-level, which win over marketplaces and git sources. The tools row needs the tool runtime (ctx.tools); in a profile without one it stays pending and the provider works alone.
Check before committing. Run npx -y dsh-skills-anywhere@0.19.0 check skills/example/SKILL.md --fail-on-repair. The same parser used in the playground provides batch file checks, JSON reports with file hashes, and CI exit codes. Checks read only the named files. In GitHub Actions, uses: noteflowai/dsh-skills-anywhere selects every tracked SKILL.md and annotates the results. Commands, GitHub Action and scope.
dsh-skills-anywhere list [--all] [--json] Skills the provider publishes (--all shows hidden duplicates)
dsh-skills-anywhere agents [--json] Agent directory definitions and paths found here
dsh-skills-anywhere sources [--json] Configured git sources and their synced commits
dsh-skills-anywhere add <source> [--ref] [--path] [--rank] [--project]
dsh-skills-anywhere remove <source> [--project]
dsh-skills-anywhere sync [--force] [--json] Clone or refresh every source now
dsh-skills-anywhere doctor [--json] Repaired, skipped, renamed and duplicate skills, with reasons
dsh-skills-anywhere check <files...> [--json] Explicit local files; strict parser gate by default
dsh-skills-anywhere mcp Serve skills to configured clients over stdio MCP
dsh-skills-anywhere route prepare <task> [--json] Typed choice request over installed, openable skills
dsh-skills-anywhere route apply --request <file> --response <file> [--min-confidence <x>] [--json]When a classifier, an LLM or a person picks a skill for a task, route checks that pick against the skills installed here. route prepare ranks every discovered skill with the same keyword search as find_skills, drops skills that open_skill would refuse, and only then keeps the first 8 as a typed choice request (skills-anywhere-route-request-1). The reserved _none option means "no listed skill fits" and can never be a skill name. Each candidate records its origin, SKILL.md path and content hash. Your decider writes a response; route apply reads it as untrusted data and reports exactly one outcome. Nothing is loaded, executed or sent over the network.
dsh-skills-anywhere route prepare "fill pdf forms" --json > req.json
# Your decider writes resp.json, for example:
# {"choice": "pdf-forms", "confidence": 0.86, "model": "example"}
dsh-skills-anywhere route apply --request req.json --response resp.json --min-confidence 0.7Outcome · Exit · Meaning selected · 0 · Confidence meets the threshold; prints the skill's name, origin and SKILL.md path to open no_match · 0 · The decider chose _none at or above the threshold abstain · 0 · No confidence reported, or below --min-confidence stale · 1 · Since prepare, the chosen skill was deleted, stopped being openable, or its SKILL.md path or content hash changed (edited, or another origin took over the name). Run prepare again invalid_input · 2 · Unreadable or non-JSON file, wrong request schema, a choice outside the options, or a confidence that is not a number from 0 to 1
An invalid --min-confidence, or --request/--response/--min-confidence on another command, also exits 2. The default of 0.7 is an uncalibrated placeholder, so pick a threshold from your own decider's held-out results. --json prints skills-anywhere-route-result-1 with the outcome, choice, confidence, threshold and model (provenance only); other response keys are ignored. Request files contain absolute paths from this machine.