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-plugin-framework

v0.3.1

Published

Feature-Sliced Design scaffold for building maintainable dsh (DeepSeek Harness) Cordis plugins: host three-layer slices, mirrored single-file client bundle, and a full engineering gate suite (lint, type-check, coverage, bundle verification).

Readme

dsh-plugin-framework

Feature-Sliced Design scaffold for building maintainable dsh (DeepSeek Harness) plugins. It transplants the architectural discipline of fsd-react into the reality of a Cordis plugin: a host half that runs in Node and a client half that ships as a single externalized browser bundle.

Start by reading, in order:

  1. docs/architecture.md - the layering model and the two iron laws
  2. docs/slice-guide.md - how to add a slice, feature, or shared module
  3. docs/decisions.md - why the framework looks the way it does
  4. docs/current-dsh-migration.md - execution plan for aligning with the current dsh runtime (0.1.1-rc.2); read this before touching the example plugin's RPC, styling, or install flow
  5. docs/fsd-port-plan.md - the original port plan this repo was built from

What this repository is

A template repository (package name dsh-plugin-framework) that is itself a working, installable, smoke-testable example plugin. To start a new plugin:

  1. copy this directory (or degit it);
  2. rename everywhere the plugin id appears (search-and-replace the old name case-insensitively): package.json (name, dsh.bundle, dsh.client), cordis.patch.yml + deploy/cordis.patch.yml (id), the tsdown banner id in tsdown.config.ts, and the export const name in both src/index.ts and src/client/index.tsx;
  3. delete the example slices (src/features/hello-settings, src/entities/greeting, src/client/features/hello-settings), then strip the imports those slices leave behind in both assembly roots: src/index.ts and src/client/index.tsx, and remove their endpoints from the contract table in scripts/generate-typert.mjs. If you delete ALL client UI, the client half may become a no-op apply; the build still succeeds.
  4. build your own slices on the preserved layer skeleton with node scripts/create-slice.mjs;
  5. iterate locally: npm run verify (gates) and npm run build (artifacts);
  6. smoke-test in a web profile: dsh plugin --profile web add <spec-or-path>, then restart the profile by hand.

See docs/slice-guide.md for the full checklist.

Layout at a glance

src/
  index.ts                    host root: name / inject / Config / apply(ctx)
  features/<slice>/           complete business capabilities (tools, endpoints)
  entities/<slice>/           domain objects and their rules
  shared/<segment>/<module>/  cross-cutting infra (config, lib, ui)
  client/
    index.tsx                 client root: slot registrations
    features/<slice>/         UI features (slot sections)
    shared/<segment>/         client-side contracts and primitives
scripts/                      tooling gates and generators
.agents/skills/               agent skills (single source, discovered by dsh)
docs/                         architecture, slice guide, decisions, port plan
deploy/                       deployment-only config templates

Host and client are physically isolated: no code imports across the boundary. They talk through type contracts (client/shared/config/context.ts) and package-private RPC (harness.handle on host, host.call on client).

Commands

| Task | Command | | ------------- | ----------------------------------------------- | | Install | npm install | | Type-check | npm run type-check | | Lint | npm run lint / npm run lint:no-emdash | | Format | npm run format / npm run format:check | | Test | npm run test / npm run test:coverage | | Alias drift | npm run aliases:check | | Build | npm run build (host tsc + client tsdown) | | Bundle verify | npm run bundle:check | | Full gate | npm run verify | | New slice | node scripts/create-slice.mjs --help | | Smoke install | dsh plugin --profile web add <spec> + restart | | Copy helper | node scripts/install-to-profile.mjs --copy |

The example plugin

The framework ships a reference plugin that exercises every layer:

  • entities/greeting - a domain object with a real rule (blank strings are rejected);
  • features/hello-settings/api/register-tool.ts - registers the hello_world_greet model Tool;
  • features/hello-settings/api/remote.ts - GreetingRemote, the host half of the client-to-host RPC (Typert gateway, dispatched over /api);
  • src/client/features/hello-settings/ui/ - a settings.section UI that reads and edits the greeting via ctx.remote.greeting (the generated /remote contribution is mounted in the client assembly root).

Install it into a web profile (dsh plugin --profile web add <spec>, then restart the profile) and look for Settings > Hello Framework.

Requirements

  • Node >= 22.19.0, npm 10.9+
  • A dsh web profile for smoke testing (optional for development)

License

MIT (c) 2026 TecFancy