npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

dsh-skill-manage

v0.2.2

Published

DSH skill_manage: agent-managed procedural memory. Create/patch/edit/disable/delete skills in ~/.dsh/skills (user scope) or <projectRoot>/.dsh/skills (project scope), with validation, delete guards (agent-created marker, pin, path confinement), disable/en

Readme

dsh-skill-manage

npm version License: MIT

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 scopesscope: 'user' (default, ~/.dsh/skills, all workspaces) or scope: '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. list shows both scopes in one table.
  • Both on-disk layouts — directory skills (<root>/<name>/SKILL.md, what create writes) and single-file skills (<root>/<name>.md), matching the two layouts the skill-filesystem watcher actually loads. list shows a layout flag; single-file skills refuse supporting-file actions.
  • Disable/enable (reversible) — toggles disable-model-invocation in 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. Prefer disable over delete for seasonal or off-context skills.
  • Pin/unpin (reversible) — toggles the same pinned frontmatter flag the delete guard reads. A pinned skill cannot be deleted by skill_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: agent frontmatter marker are deletable — marketplace/user skills are refused
    • pinned: true frontmatter 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
  • Validation: name regex + length, frontmatter requires name + description, description ≤1024 chars, SKILL.md ≤100k chars, supporting files ≤1 MiB, supporting paths confined to references/ 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.md and <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