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

@umbrova/ladderline

v0.1.0

Published

Track career-ladder evidence, locally, as it happens. A local-first CLI for engineering managers — plain files, no server, nothing invented.

Readme

Ladderline

Track career-ladder evidence, locally, as it happens.

ladderline init — a workspace created, banner, and next steps

There's also a local dashboard — see the full tour with screenshots →

Every engineering manager knows the feeling: promo season arrives, and you're trying to reconstruct six months of a report's growth from memory, old Slack messages, and a vague sense that something good happened in March. Ladderline fixes that by giving you a place to jot a two-line note the moment something evidence-worthy happens — tagged against your team's actual career ladder — so a real, dated record builds itself quietly all year. When it's time to write the case, you're assembling, not remembering.

  • Local-first. Everything lives in plain YAML/Markdown files on your machine — no server, no account, no database, nothing to trust with sensitive people-data but yourself.
  • Never invents. Cases are assembled only from what you actually logged. Gaps are shown honestly, not smoothed over.
  • Plain files, no lock-in. Notes are Markdown with YAML frontmatter — open them in any text editor, or Obsidian, or grep them. Nothing about this tool traps your data.

Install

npm install -g @umbrova/ladderline

Or try it without installing anything:

npx @umbrova/ladderline init

Quick start

# Create a workspace in the current folder
ladderline init

# Define a review period
ladderline cycle add 2026-Q1 --start 2026-01-01 --end 2026-03-31

# Start tracking someone against the bundled default ladder
ladderline track "John Doe" --ladder generic-ic-ladder.yaml --as report

# Log evidence the moment something happens — takes 10 seconds
ladderline note "Pushed back on the caching design, adopted by 3 teams" \
  --person "John Doe" --tag technical-direction --date 2026-02-10

# See it all in the local dashboard
ladderline dashboard

# When review time comes, assemble a case from everything you logged
ladderline case "John Doe" --cycle 2026-Q1

That last command writes ./cases/2026-Q1/john-doe.docx — a structured brief grouped by competency, every line traceable to a dated note you actually wrote, with any competency that has zero evidence shown honestly rather than glossed over.

What it's for

  • Tracking direct reports heading toward a promotion
  • Your own case, if you're building evidence for your own next level
  • Peer or 360 contributions — logging what you noticed about someone outside your reporting line, for when their manager asks

Track anyone with --as report | self | mentee | cross-team | peer — the mechanism is the same regardless of the relationship.

Commands

| Command | What it does | |---|---| | ladderline init [--demo] | Create a new workspace, optionally seeded with a demo person and one deliberate evidence gap | | ladderline ladder list | Show ladders registered in this workspace | | ladderline ladder add <file> | Register a ladder file | | ladderline ladder remove <file> [--force] | Remove a registered ladder | | ladderline track <name> --ladder <file> --as <relationship> | Start tracking a person | | ladderline untrack <name> [--purge] | Stop tracking (archives by default; --purge permanently deletes, asks you to type the name to confirm) | | ladderline note <text> --person <name> [--tag <id> \| --notag] [--date <date>] | Log a single evidence note | | ladderline note-delete --person <name> --date <date> [--tag <id> \| --notag] [--filename <name>] | Delete a single note (always asks to confirm) | | ladderline cycle add <name> --start <date> --end <date> | Define a review period | | ladderline cycle list | Show defined cycles | | ladderline cycle remove <name> | Remove a defined cycle | | ladderline case [name] --cycle <name> [--format docx\|md] [--all] [--as <relationship>] [--prompt] | Assemble a case — one person, or --all for everyone | | ladderline notag list [--person <name>] | List notes not yet mapped to a competency | | ladderline export [--person <name>] [--cycle <name>] [--since <date>] | Zip the workspace, or a filtered slice of it | | ladderline import <file.zip> [--force] | Restore or merge a workspace from an export | | ladderline dashboard [--port <port>] | Launch the local web dashboard |

Every command supports --help. Full details, file formats, and conventions live in the wiki.

The dashboard

ladderline dashboard starts a local web server (default http://localhost:4200, reachable only on your machine) with five views:

  • Person — one person at a time, each competency as a row, with note counts and how fresh the evidence is
  • Team grid — everyone at a glance, competencies as columns, for spotting gaps before calibration
  • Notes — every logged note, filterable and expandable to its raw file
  • Insights — coverage percentage, what's going stale, your own logging cadence, and cycle readiness
  • Docs — the same reference material as the wiki, rendered locally so it works fully offline

A small badge in the top bar surfaces when something needs attention — the same signal also shows up as a one-line nudge before any command's output, right in your terminal.

Why plain files

Every note is Markdown with YAML frontmatter:

---
person: john-doe
tag: technical-direction
date: 2026-02-10
cycle: 2026-Q1
---
Pushed back on the caching design in the payments migration doc,
proposed the write-through approach, and 3 other teams adopted it
after her RFC review.

You can write these by hand — in Obsidian, in any editor, however you like. Ladderline doesn't care how a note was created, only that it's a valid file in the right place. Full conventions are documented in the wiki.

Feedback

No telemetry, ever — nothing about your usage leaves your machine.

License

MIT — see LICENSE.