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

fixvault

v0.1.2

Published

CLI that saves error logs + what fixed them, so you can find the fix instantly next time.

Readme

FixVault

FixVault is a tiny CLI that saves error logs + what fixed them, so you can find the solution instantly next time.

  • Save an error from stdin → write a short “what fixed it” note
  • Fuzzy-search past errors
  • Dedupes repeated errors automatically (fingerprint)
  • Repo-scoped search by default (with --all)

Why

You hit an error, you fix it… and two weeks later you hit the same thing again and waste time re-learning.

FixVault is meant to be the quickest possible loop:

<thing that fails> 2>&1 | fix add
fix find "that error"
fix show 12

Install

From npm (recommended)

npm i -g fixvault

Verify:

fix --help

From GitHub (alternative)

npm i -g github:teddypihl/fixvault

Local development

npm install
npm run build
npm link

Editor setup (recommended)

FixVault opens an editor so you can write the “what fixed it” note.

VS Code (recommended)

Install the code CLI:

  • VS Code → Command Palette → Shell Command: Install 'code' command in PATH

Then set:

export EDITOR="code --wait"

Add it permanently (zsh):

echo 'export EDITOR="code --wait"' >> ~/.zshrc
source ~/.zshrc

Cursor

If you have Cursor CLI installed:

export EDITOR="cursor --wait"

If you don’t set EDITOR/VISUAL

FixVault tries to auto-detect code. If not found, it falls back to:

  • macOS/Linux: nano
  • Windows: notepad

Nano basics:

  • Save: Ctrl+O, then Enter
  • Exit: Ctrl+X

Quickstart

Save an error (interactive note in editor)

Pipe output from a failing command:

pnpm test 2>&1 | fix add

Or with Node:

node -e "throw new Error('demo boom')" 2>&1 | fix add

Save without opening an editor

node -e "throw new Error('no editor needed')" 2>&1 | fix add --note "Fixed by upgrading dependency X"

Save quickly and fill in later

node -e "throw new Error('capture now, write later')" 2>&1 | fix add --no-editor
fix edit 1

Find a previous fix

fix find "dependency X"
fix find "demo boom"

Repo-scoped vs global search

Inside a git repo, fix find searches only that repo’s entries by default:

fix find "TypeError"

Search across all repos / global entries:

fix find "TypeError" --all

Show an entry

fix show 3

Edit the note

fix edit 3

Attach a link (PR / issue / docs)

fix link 3 https://github.com/you/repo/pull/123

Commands

fix add

Reads error text from stdin and creates a new fix entry (or dedupes to an existing one).

Examples:

<cmd> 2>&1 | fix add

Options:

  • --note "<text>" save a structured note without opening an editor
  • --no-editor save with a placeholder note (edit later with fix edit <id>)
  • --show if duplicate, auto-show the existing fix; for new entries, show after saving

Examples:

node -e "throw new Error('boom')" 2>&1 | fix add
node -e "throw new Error('boom')" 2>&1 | fix add --show
node -e "throw new Error('boom')" 2>&1 | fix add --note "Upgraded dependency X"
node -e "throw new Error('boom')" 2>&1 | fix add --no-editor

fix find <query>

Fuzzy-searches entries (repo-scoped by default inside a git repo).

Options:

  • --all search across all repos

Examples:

fix find "SQLITE_ERROR"
fix find "SQLITE_ERROR" --all

fix list

Lists recent fixes.

Examples:

fix list
fix list --num 20

fix show <id>

Prints the full stored error + note + metadata.

Example:

fix show 12

fix edit <id>

Opens the existing note and updates it.

Example:

fix edit 12

fix link <id> <url>

Attaches URLs (PRs, issues, docs) to a fix entry.

Example:

fix link 12 https://example.com

Storage

FixVault stores data in a local SQLite DB:

  • macOS/Linux: ~/.fixvault/fixvault.db
  • Windows: %USERPROFILE%\.fixvault\fixvault.db

Stored per entry:

  • raw error text
  • normalized error text
  • fingerprint (for dedupe)
  • note markdown
  • links
  • git context (repo path, branch, commit hash) when available

Dedupe behavior

When you run fix add, FixVault:

  1. normalizes the error
  2. hashes it into a fingerprint (repo-scoped when a repo is detected)
  3. if a row with that fingerprint already exists → it prints the existing id and does not create a duplicate

Troubleshooting

fix command not found

If installed globally:

npm root -g
which fix

If using local dev linking:

npm link

Native build issues (better-sqlite3)

better-sqlite3 builds native code. On macOS:

xcode-select --install

Then reinstall:

rm -rf node_modules package-lock.json
npm i

“Why does it show Repo: (none)?”

That happens when you run it outside a git repo. Run inside a repo to capture branch/commit metadata.


Development

Build:

npm run build

Run locally (without build):

npm run dev -- --help

Link the CLI:

npm link

Roadmap ideas

  • Interactive picker (TUI) for find results
  • Import/export (sync between machines)
  • fix prune (remove old duplicates / cleanup)
  • Optional cloud sync (GitHub Gist / S3) for teams

License

MIT