DeepSeek Harness plugin

dsh-find-skill

Bridge the vercel-labs/skills ecosystem into dsh: LLM-driven skill search, install, and lifecycle for temp/project/global scopes

Jump to install

Source facts

Repository
Moximxxx/dsh-find-skill
Latest update
Aug 15, 2026
Category
Tools & Capabilities
GitHub stars
3
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/Moximxxx/dsh-find-skill
Plugin: dsh-find-skill
Author: Moximxxx

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer4 files
README_en.mdSource · read only
README language

dsh-find-skill

English | 中文

Bridge the vercel-labs/skills open agent-skills ecosystem into DeepSeek Harness (dsh).

The plugin lets the LLM decide when a task needs a skill no existing tool or loaded skill covers: the model searches the ecosystem (skill_find), asks the user which candidate and scope to install (ask_user_question, built into dsh), and loads it as temp (default, current session), project (shared with the workspace), or global (all sessions). Installs land in plugin-owned roots, isolated from hand-written .dsh/skills and shared .agents/skills.

Features

  • skill_find — remote search over the official skills.sh API (the same source the CLI find command queries). Candidates carry install counts, sources, browse URLs, and a local "installed" marker. Low-priority description: the model is told to use it only when no existing tool or loaded skill fits.
  • skill_install — fetch through the official CLI (npx -y skills@latest, auto-latest per project decision) inside an isolated throwaway work/home pair, then adopt only the requested skill into a managed scope. Temp installs register as runtime skills; project/global installs are written to managed roots and exposed through a self-owned ctx.skills provider (rank 350, configurable).
  • skill_remove — remove from temp / project / global; temp is tried first when no scope is given.
  • /skill command — human-facing find | install | update | sync | remove | list; update re-fetches the recorded source and replaces the bundle; sync scans project node_modules skills via the official CLI's experimental_sync and adopts them into the managed root.
  • Lifecycle — temp skills register through the installing agent's scoped context: visible only to that session (other sessions cannot read them), the registration unwinds when the agent/session is disposed, and materialized directories are cleaned on session/disposed; compactDisposePolicy: keep | dispose | ask controls compaction behavior.
  • Web UI cards — the dsh-find-skill-client package renders dedicated, replayable, read-only conversation cards for skill_find / skill_install / skill_remove tool calls.; compactDisposePolicy: keep | dispose controls behavior at compaction.

Install / Load

From source

git clone https://github.com/Moximxxx/dsh-find-skill.git
cd dsh-find-skill
git checkout develop          # full develop branch (includes AGENTS.md, .dsh/)
pnpm install --config.minimumReleaseAge=0   # rc.6 packages need the release-age policy bypass
pnpm build                    # tsc → lib/
pnpm test                     # unit + snapshot tests

Load it into dsh — development overlay (hot source):

- insert:
    - id: dsh-find-skill
      name: '/abs/path/to/dsh-find-skill/src/index.ts'

Or install the local checkout as a bundle (build first, then):

dsh plugin --profile web add /abs/path/to/dsh-find-skill
dsh --profile web --dump-config   # confirm the dsh-find-skill row is in the plugin tree

From npm

dsh plugin --profile web add dsh-find-skill

> Published to npm; install directly.

Configuration

All fields are optional; defaults shown.

FieldDefaultMeaning
searchApiBasehttps://skills.shSearch API base (same source as CLI find).
searchLimit20Max candidates per search.
prioritySourcesofficial listSource owners boosted to the front of search results (priority first, then install count).
cliCommandnpx -y skills@latestCommand running the official CLI; swap in a local binary path if desired.
installDefaultScopetempScope used when the model omits scope.
projectSkillRoot.dsh/skills-bridgeProject-managed root, relative to the git root.
globalSkillRoot<dshHome>/skills-bridge/globalUser-global managed root.
tempSkillRoot<dshHome>/skills-bridge/tmpTemp materialization root.
providerRank350Rank of provider candidates (lower wins duplicates).
compactDisposePolicykeepkeep / dispose / ask for temporary skills at compaction.
registerFindTool / registerInstallTool / registerRemoveTooltrueModel tool switches.
registerCommandtrue/skill command switch (looked up opportunistically).

Usage flow (model-driven)

1. User asks for something; the model finds no existing tool or loaded skill fits. 2. Model calls skill_find → reviews candidates (installs, source, URL). 3. Model asks the user via the built-in ask_user_question (which candidate? temp/project/global?). 4. Model calls skill_install → the skill appears in the session skill catalog on the next step; load it with the skill tool or the user can type /<skill-name>. 5. Cleanup: temp skills disappear at session end or via skill_remove; project/global persist until removed.

Model Experience

  • The three tools are registered with low-priority descriptions and can be disabled per tool; catalog noise is bounded by searchLimit and by installing only selected skills.
  • Tool calls and results flow through the standard tool/call / tool/result session events; nothing is injected outside the session log.
  • CLI installs can take tens of seconds on first use (npx downloads the latest skills package into the shared npm cache; the fetch itself runs in a throwaway HOME so no agent directories are touched).
  • Project/global skills are durable files; temp skills are in-memory registrations with materialized directories under tempSkillRoot.

Known Limitations and Deferred Work

  • Search candidates carry no description: the skills.sh search API returns id/name/installs/source only; descriptions arrive after install.
  • Version compatibility: development and loading tests target npm @deepseek-ai/*@0.1.0-rc.6; the source checkout (rc.5) was verified in an isolated instance (probe-confirmed apply execution and healthy boot).
  • CLI stdout is advisory: outcomes are judged from the filesystem (the adopted skill directory), never from CLI prose.
  • Real-session model-driven flow verified (headless with a real model: skill_find → skill_install temp → skill load); the full loop passed, including temp-skill session isolation (visible to the installing agent, invisible to a subagent).
  • node_modules-synced skills have no remote source: update is unavailable for /skill sync adoptions; re-sync or install manually.
  • Web cards are read-only: no install/remove buttons yet; labels are fixed English, i18n deferred.

License

MIT