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

dw-mc

v0.9.0

Published

Mission control for the pull requests you have open — a local CLI that buckets every PR by what it waits on and reviews them with your own Claude Code.

Readme

Pull requests flowing through the local dw-mc terminal into four action buckets

dw-mc tracks open pull requests you authored. It reads GitHub through your authenticated gh, runs code reviews with Claude Code, and puts each pull request in exactly one bucket. It has no server, GitHub App or webhooks.

  • One bucket per pull requestNeeds me, Needs review run, Waiting on others or Ready.
  • Local code reviews — use /code-review, your own instructions or both.
  • Plain-file state — configuration, records and review reports live under XDG paths.
  • Picker and commands — the picker runs the same commands you can run directly.

Example

$ dw-mc status

Needs me
  ↳ dominikwozniak/dw-mc#71 from Needs review run: 0 → 2 blocking findings
* ● dominikwozniak/dw-mc#71   │ feat(sweep): notice a head that moved under a run   │ 2 blocking findings

Needs review run
  ◐ dominikwozniak/dw-mc#65   │ docs(agents): how a change becomes a release        │ no review run on this head
  ◐ dominikwozniak/dw-mc#66   │ docs(skill): the CLI surface the skill actually has │ no review run on this head

Waiting on others
+ ○ dominikwozniak/dw-mc#68   │ fix(rebase): keep the lease on a head that moved    │ CI is still running

Ready
  ◆ dominikwozniak/dw-mc#62 ✓ │ feat(comments): read a pull request's threads       │ approved, green, mergeable

+ marks a new pull request, * one that moved, and one you stamped. The full legend is in docs/cli.md.

Install

pnpm add -g dw-mc

To try it without installing:

pnpm dlx dw-mc --help

Requirements

  • Node 24 or newer
  • gh, authenticated: gh auth login
  • git
  • Claude Code available as claude

Quick start

dw-mc init      # set up dw-mc and register the current repository
dw-mc           # open the picker
dw-mc review 62 # review a pull request directly

dw-mc init is noninteractive. On its first run it creates the default configuration, then registers the repository you are in. Review behaviour is controlled by review.command and review.prompt.

Commands accept a pull request as owner/name#62, or as 62 while only one repository is registered.

Commands

| Command | What it does | | --------------------- | -------------------------------------------------------------------------------------- | | dw-mc | Opens the picker with every tracked PR and its available actions. | | dw-mc init | Sets up this machine and registers the current repository. | | dw-mc sweep | Reads GitHub and updates the local record for the tracked PRs in the pass. | | dw-mc status | Shows each tracked PR's bucket, stamp and changes since it was last shown. | | dw-mc comments <pr> | Prints the conversation or records your acknowledgement. | | dw-mc review <pr> | Reviews a pull request with Claude Code in a throwaway worktree. | | dw-mc findings <pr> | Prints the findings from the current review run. | | dw-mc fix <pr> | Opens a fix session for selected findings. | | dw-mc stamp <pr> | Prints or withdraws your local stamp. | | dw-mc rebase <pr> | Rebases a branch onto its base and pushes it with a lease. | | dw-mc resolve <pr> | Opens a resolve session for a conflicted rebase. | | dw-mc rerun <pr> | Runs a flaky failure again, once per head. | | dw-mc merge <pr> | Squash-merges a Ready, stamped pull request, deletes its branch and forgets it. | | dw-mc forget <pr> | Forgets a pull request that closed another way. | | dw-mc cleanup | Removes clones and completed review worktrees while keeping configuration and records. | | dw-mc uninstall | Removes the state written by dw-mc and explains how to remove the binary. |

A pass covers the registered repository you stand in, or every registered repository from anywhere else; --repo and --all change that. Every flag is in docs/cli.md, and dw-mc <command> --help prints the same list.

How it works

Each tracked PR is in exactly one bucket, named for what it waits on. Bucket rules run in order and the first match wins. For example, a pull request with changes requested goes to Needs me even if it also needs a review run.

| Bucket | Marker | It waits on | | ----------------- | ------ | --------------------------------------------------------------------------------------- | | Needs me | | You: blocking findings, changes requested, a conflict, a red CI, an unanswered comment. | | Needs review run | | A review run on this head. | | Waiting on others | | A reviewer who has not answered, or CI that is still running. | | Ready | | Nothing. |

A stamp is your local mark that a pull request has passed your bar. It is not a GitHub approval, but dw-mc merge requires it.

A review run uses a throwaway worktree. A fix or resolve session leaves its worktree in place because the changes in it are yours.

Every other word this tool uses is defined in CONTEXT.md, and the decisions behind them in docs/adr/.

Configuration

  • Configuration: $XDG_CONFIG_HOME/dw-mc/config.yaml, or ~/.config/dw-mc/config.yaml
  • State, including the worktrees: $XDG_STATE_HOME/dw-mc, or ~/.local/state/dw-mc

dw-mc init writes the configuration file. Every key is optional, and entries under repos override defaults using the same shape. Every key, its values and what it changes are in docs/configuration.md.

launcher:
  command: [claude] # program + argument prefix that starts Claude Code
  fix_args: [] # flags only a fix session gets
defaults:
  base: null # the default branch from gh when null
  review:
    command: /code-review # the slash command a run opens on; null for none
    effort: low # the word after the command: low | medium | high | xhigh | max
    prompt: null # your own review brief
    model: null
    docs_only: ["**/*.md", "docs/**"]
  ci:
    ignore: [] # check names that do not count towards green
    flaky_patterns: []
  fix:
    commits: false # whether a fix session may commit; --commit overrides it
  rebase:
    enabled: false
  stamp:
    blocks_on: error
repos:
  owner/name:
    # the same keys, overriding defaults

Uninstall

A package manager removes only the binary. Use the commands below to remove state created by dw-mc:

dw-mc cleanup   # remove clones and completed review worktrees
dw-mc uninstall # remove dw-mc state
pnpm remove -g dw-mc
  • cleanup keeps configuration and records. It never removes a fix or resolve worktree, or the clone that worktree uses.
  • uninstall keeps the configuration file unless you pass --config. It refuses to remove a fix or resolve worktree with uncommitted changes or commits missing from the pull request's head unless you also pass --force.
  • Both commands show what they will remove and ask for confirmation. Pass --yes when no terminal is available.

Agent skill

Install the bundled /dw-mc skill to let an agent session read mission control through the CLI:

pnpm dlx skills@latest add dominikwozniak/dw-mc

Contributing

pnpm install
pnpm check # lint, format, typecheck, test, build — the whole gate, and what CI runs

See CONTRIBUTING.md for the development workflow, source layout and changeset policy. Contributions follow the Code of Conduct.

Found a security issue? Do not open an issue — SECURITY.md says how to report it privately.

License

MIT. Third-party notices are in NOTICE.md.