Plugin directory / Knowledge / dsh-skill-manage
dsh-skill-manage
Verified · install-tested on dsh fuxin123z
What it does
DSH plugin: agent-managed procedural memory — a skill_manage tool that lets the agent write, patch, disable and delete its own skills at runtime (user + project scope), with hot-reload and layered delete guards.
Works — verified, early-stage project
DSH plugin: agent-managed procedural memory — a skill_manage tool that lets the agent write, patch, disable and delete its own skills at runtime (user + project scope), with hot-reload and layered delete guards. It installs cleanly and boots without issues in our testing. It's early-stage but functional.
“Verified” means our automated CI actually ran dsh plugin add in a clean profile and it booted — nothing more. Feature descriptions and version compatibility are the author’s claims. This is not a security audit and not an endorsement of third-party code.
README
dsh-skill-manage
A DSH (DeepSeek Harness) plugin that gives the agent procedural memory: a skill_manage tool for authoring its own skills — create, patch, disable, delete — with layered delete guards. Built on skill-filesystem's hot-reload watcher, so a skill created mid-session is usable in the same session, no restart.
Pair with dsh-auto-memory for declarative memory: that one remembers facts (logs, notes, preferences), this one remembers how to do things (workflows, pitfalls, procedures).
What it adds
skill_manage tool — actions: create / patch / edit / delete / disable / enable / pin / unpin / write_file / remove_file / list
- Two scopes —
scope: 'user'(default,~/.dsh/skills, all workspaces) orscope: 'project'(<projectRoot>/.dsh/skills, this workspace only). The project root is resolved exactly like the harness's own skill lookup: walk up from the session cwd to the nearest.git, falling back to the cwd itself.listshows both scopes in one table. - Both on-disk layouts — directory skills (
<root>/<name>/SKILL.md, whatcreatewrites) and single-file skills (<root>/<name>.md), matching the two layouts theskill-filesystemwatcher actually loads.listshows alayoutflag; single-file skills refuse supporting-file actions. - Disable/enable (reversible) — toggles
disable-model-invocationin SKILL.md frontmatter, the same key the harness's skill catalog filters on (isModelInvocable). Disabling hides a skill from the model's catalog without touching its content; enabling restores it. Preferdisableoverdeletefor seasonal or off-context skills. - Pin/unpin (reversible) — toggles the same
pinnedfrontmatter flag the delete guard reads. A pinned skill cannot be deleted byskill_manage(patch/edit still allowed); pin skills that must survive cleanups. - Trigger discipline (English, static system-prompt section, cache-stable): create a skill when a complex task succeeded (5+ tool calls), errors were overcome, a user-corrected approach proved itself, or the user asks to remember a procedure; patch immediately when a skill hits uncovered pitfalls.
- Delete guards:
- only skills carrying the
created_by: agentfrontmatter marker are deletable — marketplace/user skills are refused pinned: truefrontmatter blocks delete (patch/edit still allowed)- path confinement to the resolved skills root; symlinked skill directories refused
- name-drift guard: patch/edit cannot silently rename a skill
- only skills carrying the
- Validation: name regex + length, frontmatter requires
name+description, description ≤1024 chars, SKILL.md ≤100k chars, supporting files ≤1 MiB, supporting paths confined toreferences/ templates/ scripts/ assets/ - Atomic writes (temp + rename) so the watcher never sees a half-written SKILL.md
- CRLF-safe frontmatter parsing
Install
Option A — via dsh plugin (recommended; handles both steps below automatically):
dsh plugin --profile web add dsh-skill-manage
Option B — manual npm install, in your DSH profile dir (e.g. ~/.dsh/profiles/web):
# 1. add the dependency
npm install dsh-skill-manage # or: pnpm add dsh-skill-manage
# 2. register the bundle in package.json → dsh.profile.bundles:
# "dsh": { "profile": { "bundles": [ ..., "dsh-skill-manage" ] } }
# 3. restart dsh web
The plugin needs no configuration. Log line [dsh-skill-manage] ready confirms it loaded.
From source (local link) — for development:
# in your DSH profile dir (e.g. ~/.dsh/profiles/web)
# 1. package.json dependencies:
# "dsh-skill-manage": "link:/abs/path/to/dsh-skill-manage"
# 2. dsh.profile.bundles: append "dsh-skill-manage"
pnpm install
# 3. restart dsh web
Develop & test
node test.mjs # guard-level smoke tests (73 cases, sandboxed DSH_HOME)
node loadtest.mjs # host-shape contract + real round-trip (set DSH_HOME to sandbox it)
CI runs both on every push/PR (.github/workflows/ci.yml).
v0 known limitations
- Nested category dirs (
<root>/<category>/<name>/SKILL.md) are not listed or operable — the harness watcher does not load them either (it loads only<root>/<name>/SKILL.mdand<root>/<name>.md) - No YAML flow collections in frontmatter (
tags: [a, b]stays a raw string) - Project scope assumes one root per session (the session cwd's git root)
License
MIT
Install
Install the catalog once, then DeepSeek Harness can find and install any plugin from this site automatically:
dsh plugin add dshbase-catalog Then say "install dsh-skill-manage for me" — your agent finds it in the directory and installs it. Docs: dshbase-catalog · verified packs.
This plugin is GitHub source (not published to npm) — install it straight from the repo:
Web profile:
dsh plugin --profile web add github:fuxin123z/dsh-skill-manage Headless (CLI) profile:
dsh plugin --profile headless add github:fuxin123z/dsh-skill-manage Test report
Verified: L1 install + L2 load + L3 runtime from GitHub source on dsh 0.1.0-rc.6.