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-stack/formatters

v0.1.2

Published

Per-extension formatter commands + format tool + auto-format-on-edit for the dsh web UI

Downloads

422

Readme

formatters

DeepSeek Harness (dsh) plugin: per-extension formatter commands with a model-facing format tool and optional auto-format-on-edit.

The harness web UI is read-only, so this plugin works through the seams the agent uses to write: a format tool over per-extension formatter commands (prettier, black, gofmt, ...) and, when enabled, automatic reformatting after every successful edit/write via the tools/post-execute waterfall. Formatters run through ctx.subprocess — never shell-interpreted.

Settings

Since 0.2.0 a settings form is not registered: the settings service projects the volatile Config fields of the active profile's entries, so this plugin's own Config is its form and its namespace is its entry id formatters. The plugin declares it ships its own page for that form.

Both fields are .volatile(), which is what makes the entry projectable at all — volatileForm returns nothing when a Config declares no volatile field, so the entry is silently dropped from describe() and every write to it is refused. Both are the user's choice rather than a deployment fact: the table is machine-local (which formatter exists and under what name differs per workstation) and the toggle is a workflow preference.

formatters:
  autoFormatOnEdit: true
  formatters:
    ".ts": { argv: [npx, prettier, --write] }
    ".py": { argv: [black, -q] }

Each field is a live reference: the Loader commits a settings write into the very object apply received instead of remounting, so both the format tool and the auto-format hook read them with .get() per call and pick up a settings edit without a restart.

CLI

dsh formatter list
dsh formatter add <ext> <command...>     e.g. dsh formatter add .ts npx prettier --write
dsh formatter remove <ext>
dsh formatter set-auto <on|off>

Layout

  • src/settings.ts — the formatters namespace (this plugin's entry id), the Config schema that is also its settings form, and the formatterFor / autoFormatEnabled helpers.
  • src/format.ts — the shared formatting runner (formatFile) and path helpers.
  • src/index.ts — plugin: settings page declaration, format tool, auto-format hook.
  • bin/formatter.mjs — the dsh formatter CLI.
  • check-plugin.mjs — boot-verify harness (npm test).