skill-scan
A configurable skill discovery provider for DeepSeek Harness (DSH), designed as a drop-in replacement for the fixed dsh-skill-filesystem discovery strategy.
Instead of a hardcoded list of roots, skill-scan lets you toggle four scan layers and freely edit the "parent directories" under which <root>/<name>/skills is scanned, each with its own priority. An install wizard offers replace (disables the built-in provider) or coexist on first run.
Features
| Layer | Priority | Where it scans |
|---|---|---|
| cwd (session working directory) | Highest | <cwd>/<parent-dir>/skills |
project (nearest .git ancestor) |
Medium — exclusive with ancestors | <project>/<parent-dir>/skills |
| ancestors (walk up from cwd) | Medium — exclusive with project | each ancestor's <parent-dir>/skills |
global (user home ~) |
Lowest | ~/<parent-dir>/skills |
- Editable parent dirs — default
.dsh,.agents; add/remove/rename freely, and drag to reorder priority (top = highest). - Mutual exclusivity — project scanning and ancestor walking can only have one enabled (validated in both UI and host).
- Skill format — directory bundles (
<name>/SKILL.md) and flat Markdown files (<name>.md); frontmatter parsesname,description,whenToUse,disable-model-invocation,user-invocable. - Duplicate resolution — distinct names load from every layer; a same-named skill keeps only the highest-priority (smallest rank) one.
- Live invalidation — model
write/edittouching a<…>/skills/path invalidates the catalog immediately. - Collapsible plugin card — Settings → Plugins → Plugin configuration, visually identical to the built-in cards (same
--dsw-alias-*tokens and chevron).
Install
From npm (online)
dsh plugin --profile <profile> add @sidleo3/skill-scan
dsh plugin forwards its arguments to pnpm inside the profile and activates any package declaring dsh.bundle. After install, refresh the web GUI.
From a checkout (local link)
git clone https://github.com/sidleo/skill-scan.git
dsh plugin --profile <profile> add link:<repo-path>
Git-hosted installs (
pnpm add github:user/repo) require adding the package underallowBuildsin the profile'spnpm-workspace.yaml(pnpm 10+).
First-run wizard: replace vs coexist
When you open the plugin card for the first time, choose:
- Replace — copies your current preset to a user preset named
skill-scanand disables theskill-filesystemrow inside the copy. The original preset stays untouched; new sessions that pick theskill-scanpreset use your priority configuration for duplicate names. Fully reversible (a "restore" action deletes the copy). - Coexist — leaves the preset alone;
skill-scanonly appends extra scan roots.
Why replace matters: DSH resolves same-named skills by layer before rank. If the built-in
skill-filesystemstays mounted in the preset layer, it wins any duplicate name regardless of your rank — so for priority-over-duplicates behavior you must replace.
Configuration
All settings live in the plugin card (Settings → Plugins → Plugin configuration → 技能扫描):
- Four layer toggles.
- Parent dirs list with drag-to-reorder priority and per-row remove.
- Live root preview for the current session cwd.
- Debug panel that lists what discovery actually finds.
- Save writes back and refreshes the catalog.
Open-source status
This repository is the formal-package home of logic first verified live in a DSH dynamic plugin (skf-1). The src/ directory is the canonical package; skill-scan-blueprint/ keeps the original, dynamic-plugin-form sources as a reference (host / client / wizard).
To publish yourself:
pnpm install
pnpm build # tsdown → lib/index.js + lib/client.js
npm publish
The host half depends on DSH-private packages (
@deepseek-ai/dsh-skill,@deepseek-ai/dsh-agent-presets, …). Build from an environment where those resolve (they are published as-rcon npm); this package declares them aspeerDependencies/devDependencies.
License
MIT
还没有评论,来写第一条。