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

gg-commit

v1.0.0

Published

AI-powered git CLI — commits, tags, reverts and more

Readme

GitGood

I kept writing "fix stuff" and "updates" as commit messages and it was getting embarrassing. So I built this. You run gg inside any git repo and it reads your staged diff and writes a proper conventional commit message for you. No API key needed, no account, nothing. It just works.

It pulls function names straight out of your code, figures out whether something is a feat or a fix or a refactor based on what actually changed, and formats it properly. It also does a bunch of other stuff I kept needing like standup summaries, PR descriptions and finding which commit broke something.

Built this as a side project to scratch my own itch. Probably useful if you feel the same way about commit messages as I do.


Requirements

Node 18 or higher. Git. That's it. Works on macOS and Linux.


Installation

If running npm install -g asks for sudo on your machine you'll want to set a user prefix first:

mkdir -p ~/.npm-global
npm config set prefix ~/.npm-global

Then add this to your ~/.zshrc or ~/.bashrc:

export PATH="$HOME/.npm-global/bin:$PATH"

Reload your shell:

source ~/.zshrc

Then install:

npm install -g gg-commit

Done. Run gg inside any git repo.


Commands

gg

The main one. Stage your files, run gg, and it generates a commit message. Press enter to commit, r to get a new one, e to edit it yourself, q to quit.

git add .
gg

gg tag

Looks at your recent commits and works out whether the next release should be a patch, minor or major bump. Creates the tag and pushes it.

gg revert

Shows your last 15 commits as a numbered list. Pick one and it reverts it.

gg undo

Undoes your last commit but keeps all the changes unstaged. Useful when you committed something too early.

gg log

A readable commit graph with colours. Much easier to scan than the default git log output.

gg status

Shows staged, modified and untracked files separately with counts. Cleaner than git status.

gg bisect "description"

You describe a bug in plain English and it searches through your commit history to find which commits are most likely responsible. Uses git's pickaxe search under the hood so it's actually looking through code changes, not just commit messages. Pick a result to see the full diff.

gg bisect "login not working"
gg bisect "payment function"

gg recap

Generates a standup summary from your commits. Defaults to today. Pass week or month for a longer window. Press c to copy it straight to your clipboard.

gg recap
gg recap week
gg recap month

gg why <file or function name>

Traces back through git history to show you when something was first added and who added it. Really useful when you find code that makes no sense and want to know why it exists.

gg why src/auth/jwt.js
gg why validateToken

gg watch

Runs in the background and sends you a notification if you have had uncommitted changes for over an hour. Stops you doing 6 hours of work in one massive commit.

gg watch

Press ctrl+c to stop it.

gg pr

Generates a PR title and description from all the commits on your current branch. Press c to copy it to clipboard or g to open GitHub directly.

gg explain <hash>

Breaks down any commit in detail. Shows who made it, what files changed, how many lines were added and removed.

gg explain abc1234

gg help

Lists all commands and shows the welcome screen again.


How the commit message is generated

No AI involved at all. It is pure pattern matching on your diff.

It scans the added lines for function and method definitions and pulls out the names. It looks at the file types and the ratio of lines added to removed to decide on a type (feat, fix, refactor, chore, docs, test). It finds the deepest common folder across your changed files to use as a scope. Then it builds the message from whatever it found.

It is not going to be perfect every time but it is a solid starting point and takes about half a second.


Licence

All rights reserved. See the LICENSE file. If you want to use this in something get in touch.

Built by Louis Blake