DeepSeek Harness plugin

skill-scan

Configurable skill discovery provider for DeepSeek Harness (DSH): cwd / project / ancestors / global layers plus editable parent dirs, with an install wizard to replace or coexist with

Jump to install

Source facts

Repository
sidleo/skill-scan
Latest update
Aug 19, 2026
Category
Models & Providers
GitHub stars
0
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/sidleo/skill-scan
Plugin: skill-scan
Author: sidleo

Check the source files

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

File explorer3 files
README.mdSource · read only
README language

@sidleo3/skill-filesystem-plus

English | 中文

A configurable skill discovery provider for DeepSeek Harness (DSH). It replaces the fixed discovery of the built-in \dsh-skill-filesystem\ with editable scan layers and parent directories — but only in presets you explicitly enable in the GUI.

> Renamed from \@sidleo3/skill-scan\; the GitHub repository \sidleo/skill-scan\ is now \sidleo/skill-filesystem-plus\. Your old config (\~/.dsh/dsh-skill-scan.json\) is migrated automatically.

Core design

  • Install = no-op: installing the plugin changes nothing — no preset is copied or modified, and the built-in \skill-filesystem\ keeps working
  • You decide the scope: enable takeover per preset in the Web GUI (Settings → Plugins → 技能扫描)
  • Full replacement: for an enabled preset, its \skill-filesystem\ row is \disabled\ and a \/preset\ provider row takes over; unselected presets keep built-in behavior untouched
  • Removal restores: unchecking restores the original preset from a backup, and \skill-filesystem\ resumes
  • Card survives DSH upgrades: the host registers the \skill-filesystem-plus\ settings namespace — the modern Settings "configurable plugins" page renders only cards whose namespace the host serves, which is the root cause of cards disappearing after DSH upgrades

Features

  • Four scanning layers: cwd (highest) → project/parents (mutually exclusive) → global (lowest)
  • scanParents mode: walk every ancestor from cwd upward — no depth limit
  • Editable parent dirs: default \.dsh\, \.agents\; add/remove/rename freely, drag to reorder (top = highest priority)
  • Web GUI card: Settings → Plugins → 技能扫描 — per-preset takeover + four-layer scan config + root preview
  • Live invalidation: a model \write\/\edit\ touching a \<…>/skills/\ path invalidates the catalog immediately

Installation

\\\`bash

From npm (recommended)

dsh plugin --profile web add @sidleo3/skill-filesystem-plus

From a local checkout (development)

dsh plugin --profile web add link:/path/to/skill-filesystem-plus \\\`

Restart DSH after installing. No further action needed — the plugin touches no preset and the built-in skill-filesystem keeps working.

Usage: enable per preset in the GUI

1. Open Settings → Plugins → 技能扫描 2. Check the presets to take over (multi-select; only presets carrying a \skill-filesystem\ row are listed) 3. Takes effect on newly created sessions: the preset's \skill-filesystem\ row is disabled and a \@sidleo3/skill-filesystem-plus/preset\ provider row is inserted (at \~/.dsh/.agent-presets/<id>/agent.cordis.yml\) 4. Sessions on that preset use this plugin's four-layer discovery 5. Unchecking restores the original config from \.skill-filesystem-plus-backup/\ and \skill-filesystem\ resumes (for new sessions)

> Running sessions are unaffected (preset composition is fixed at session creation); changes apply to sessions created afterwards.

Configuration

\\\typescript interface SkillScanConfig { scanCwd: boolean // default: true scanProject: boolean // default: true (mutually exclusive with scanParents) scanParents: boolean // default: false (mutually exclusive with scanProject) scanGlobal: boolean // default: true parentDirs: { name: string }[] // default: [{name:'.dsh'},{name:'.agents'}] } \\\

Persisted at \~/.dsh/dsh-skill-filesystem-plus.json\ (legacy \dsh-skill-scan.json\ migrates automatically).

How it works

1. Install = no-op: the host entry only registers the settings namespace + GUI RPC, and never touches a preset 2. User picks presets: the GUI calls \/api/skill-filesystem-plus/presets/apply\; the host reads the preset via \ctx.agentPresets\ → backs it up → disables the \skill-filesystem\ row → inserts the \/preset\ provider row 3. Discovery: the \/preset\ row's provider registers into that preset's layer of the skills registry (\skills.registerProvider\ is scope-aware) and runs four-layer discovery, fully replacing built-in discovery 4. Removal: the GUI calls \/api/skill-filesystem-plus/presets/remove\, restoring the original config from \.skill-filesystem-plus-backup/\ 5. Config live-reload: the provider re-reads the disk config through \ctx.fs\ on every \list\, so a GUI save takes effect on the next catalog refresh

Why "replace" matters

DSH resolves same-named skills by layer before rank. As long as the built-in \skill-filesystem\ stays mounted in the preset layer, it wins every duplicate name regardless of your rank — so to make "duplicates resolved by your priority" actually work, that preset's \skill-filesystem\ row must be disabled and the provider supplied by this plugin.

Development

\\\bash pnpm install pnpm build # tsdown → lib/index.js + lib/preset.js + lib/client.js pnpm typecheck # tsc --noEmit \\\

Notes

  • After a DSH upgrade overwrites a built-in preset, already-taken-over presets may be reset; uncheck and re-check in the GUI to rebuild from the new version (the backup mechanism keeps removal safe)
  • \skill-scan-blueprint/\ keeps the pre-rename dynamic-plugin form for reference (not part of the build)

License

MIT