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/brainstorming

v0.5.8

Published

Idea into committed design through approval gates a human holds. Every outcome it emits — including its own multiple-choice questions — passes the orientation question before it is spoken. Brainstorming, ideation, requirements gathering, design review.

Readme

@medicine-wheel/brainstorming

Idea into committed design, through approval gates a human holds. Ideation, requirements gathering, design review — the convergent half of creative problem solving.

Every outcome this package emits passes one question before it is spoken — including its own multiple-choice options:

Is there a prior state you are restoring?

Yes. The option is describing a repair, and @medicine-wheel/gap-analysis is the instrument for it.

No. Then an option phrased as removing something is aiming at a list of known failures rather than at the state you want — and the moment of speaking is the only point where that is still catchable, because once a human selects it, it stops looking like the agent's proposal and starts looking like the requirement.

[!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

Convergence has a shape: read the ground, ask one question at a time, offer two or three approaches with trade-offs, present the design in sections each approved before the next, write the spec, let the human read it, then plan. This package holds that shape as data rather than as advice, so it cannot be forgotten under load.

The part that matters

It routes every outcome statement it emits through @medicine-wheel/creative-orientation — including its own questions.

That is not decoration. An outcome phrased as elimination inside a multiple-choice option becomes the human's selected answer, and from that moment it stops looking like the agent's bias and starts looking like a requirement. The moment of speaking is the only point where that is still catchable.

import { openSession, checkOptions, ask, suspendedOn, advance } from '@medicine-wheel/brainstorming';

const session = openSession('every cross-repository change arrives verified against its consumers');

checkOptions(session, [
  'Catch cross-service contract breaks',
  'Every change arrives already verified',
]);
// → one finding, on the first option: phrased as removing something,
//   while nothing is being restored.

Gates are suspended states, not pauses

ask() suspends the session on a question. advance() refuses while a gate is unanswered.

This is the one place refusal is correct. Everywhere else in this suite a check advises and lets the caller proceed — but a gate is a question addressed to a person, and answering it on their behalf is not a shortcut. It is a substitution.

const waiting = ask(session, 'thin convention, or a framework?');
suspendedOn(waiting);   // the gate, holding
advance(waiting);       // throws — the question belongs to someone else

Phases

explore → clarify → approaches → design → spec → review → plan

Four of them are gated: clarify, approaches, design, review. Those are the points where a half-finished creative process waits for its human — and where, today, we still have nowhere good to put that suspended state when the connection drops.

Where it sits

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

brainstorming ................ calls the gate on everything it says

Status

First release. The protocol is expressed; the surface for holding a suspended session across a dropped connection is not solved here and is named as open.

License

MIT