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

@anscodelab/gitwho

v0.1.1

Published

Prompts for the right git identity before your first commit in a repo

Readme

gitwho

Commit as the right person, every time. Never accidentally commit as the wrong author when juggling multiple clients or organizations.

Install

npm install -g @anscodelab/gitwho@latest

Then run once to install the global hook:

gitwho init

How it works

gitwho init installs a global prepare-commit-msg hook via git config --global core.hooksPath. The hook fires on every commit in every repo.

First commit in a new repo — the hook blocks and shows which command to run:

⚠  No profile set for this repo.
   Your commit has been saved — run:

    gitwho use personal   # An Nguyen <[email protected]>
    gitwho use            # interactive picker

Run gitwho use — picks a profile and automatically replays your saved commit:

$ gitwho use

  ❯ personal   An Nguyen <[email protected]>
    client-a   An Nguyen <[email protected]>

✓ Identity set: [personal] An Nguyen <[email protected]>

  Replaying saved commit: "fix login bug"
✓ [master a1b2c3] fix login bug

All subsequent commits in the same repo pass through instantly — no interruption.

The hook also chains to any existing prepare-commit-msg hook in the repo (husky, commitlint, etc.) so existing tooling keeps working.

Commands

gitwho <command>

Getting started:
  1. gitwho init        install the global hook (run once)
  2. gitwho add         save a profile (name + email)
  3. git commit ...      hook guides you from there

Commands:
  init              Install global hook
  add               Save a new identity profile
  list              List profiles and this repo's identity
  use [alias]       Set profile for this repo (interactive if no alias)
  whoami            Show this repo's current identity
  update <alias>    Update a profile's name or email
  remove <alias>    Remove a saved profile
  unset             Clear this repo's identity

gitwho init

Installs the global hook. Run once after installing.

gitwho add

Interactive — prompts for alias, name, email:

$ gitwho add
Alias:  personal
Name:   An Nguyen
Email:  [email protected]
✓ Profile 'personal' saved.

gitwho list

Shows saved profiles and this repo's active identity:

This repo:  [personal]  An Nguyen <[email protected]>

Saved profiles:
  * personal        An Nguyen <[email protected]>
    client-a        An Nguyen <[email protected]>

gitwho use [alias]

With an alias: sets identity immediately and replays any saved commit. Without an alias: shows an interactive picker.

gitwho whoami

Quick status for the current repo:

[personal]  An Nguyen <[email protected]>

gitwho unset

Clears this repo's identity. Next commit will be blocked again until you run gitwho use.

Profiles

Saved in ~/.git-who/profiles.json:

{
  "profiles": [
    { "alias": "personal", "name": "An Nguyen", "email": "[email protected]" },
    { "alias": "client-a", "name": "An Nguyen", "email": "[email protected]" }
  ]
}

You can edit this file directly.

Requirements

  • Node.js 18+
  • Git 2.9+ (for core.hooksPath)
  • Git Bash on Windows (PowerShell is not supported for hook execution)