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

@medicine-wheel/gap-analysis

v0.5.8

Published

Problem-solving built properly for when something worked and stopped: evidenced baseline, observation, difference, verifiable elimination steps. Root cause, incidents, regressions, troubleshooting. The baseline requirement is what separates a fire from a

Readme

@medicine-wheel/gap-analysis

Problem-solving, built properly and without apology. Root cause, incidents, regressions, troubleshooting — if something worked and stopped, you are in the right room.

One question confirms it:

Is there a prior state you are restoring?

Yes, and you can evidence it. Stay. This is the instrument: baseline, observation, the difference between them, and elimination steps you can verify.

No — you cannot name a state that actually existed. Then the difference has nothing to be measured against, and @medicine-wheel/creative-orientation will point you toward structural tension instead. A feeling of urgency is not evidence.

That requirement — a baseline with evidence — is what separates a fire from a creating act, and it is why this package carries the name it does.

[!WARNING] Experimental alpha. Part of the Medicine Wheel Developer Suite, which is under active development. APIs change between patch versions and all packages move in lockstep — pin exact versions. See ALPHA.md.

Why it exists

Sometimes the forest is on fire. Digitally too. When something worked and stopped working, closing the difference between the current state and the prior one is the right move — oscillating back to a baseline is the goal when you are below the baseline.

Work like that deserves a real instrument rather than a euphemism, so this package is built as a first-class citizen of the suite and not smuggled in under a nicer name.

The question at the door

Every analysis carries an orientation reading taken when it was opened, via @medicine-wheel/creative-orientation. The question is always the same: is a prior state actually being restored?

Opening an analysis requires a baseline with evidence. That requirement is the whole point — it is the thing that separates a fire from a creating act, and it cannot be satisfied by a feeling of urgency.

import { openGapAnalysis, addStep, doorAdvice } from '@medicine-wheel/gap-analysis';

let analysis = openGapAnalysis(
  { description: 'the published image matched the published packages',
    evidence: 'true through 0.5.0, tagged 2026-07-17' },
  { description: 'newest versioned image tag is 0.5.0; npm is at 0.5.2; 0.5.1 has no image',
    source: 'Docker Hub tags API, read 2026-07-25' },
  'the image no longer tracks npm because building it depends on a human remembering a flag',
);

doorAdvice(analysis);   // null — the situation and the instrument agree

analysis = addStep(analysis, {
  action: 'build the image from the tag in CI rather than from release.sh',
  verifiedBy: 'a v* tag push produces :app and :<version> without anyone running anything',
});

It advises; it never refuses

If you open an analysis without evidence for the baseline, you get the analysis and advice saying the routing rests on a feeling. You are not blocked. A package that refuses is a package you learn to route around, and sometimes the caller knows something the check does not.

Steps must be verifiable

addStep rejects a step with no verifiedBy. An elimination step you cannot check is a wish; the fire is out only when something says so.

Where it sits

creative-orientation ......... the gate
    ├── gap-analysis ......... you are here — the fire path
    └── structural-tension ... the advancing path

Gap analysis is a borrowed instrument. It is genuinely available, and it is not the foundation — the orientation question comes first, and this package reports to it rather than the reverse.

Status

First release. Small on purpose.

License

MIT