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

how-to-work

v0.1.0

Published

How To Work — one zero-dependency engine for the grill protocol, scoping, the how-we-work PRD lifecycle, and the /doc render engine.

Readme

how-to-work

A single, zero-dependency engine for how to do work: turn a fuzzy intent into a beautiful, gradable PRD — grill the real decisions, scope it, track it through a lifecycle, and render it as a self-contained HTML doc you can actually look at.

It bundles four things that are really one workflow:

  • Grill — surface the genuine forks as interactive question cards; the human answers in the doc.
  • Scope — turn intent into a Draft PRD (problem, goal, non-goals, decisions, acceptance).
  • Lifecycle — Working doc → Draft PRD → Ready → Approved → In execution → Done, shown as a stage bar (no fake percentages).
  • Doc engine — render concise .doc.md sources into gorgeous, self-contained HTML (PRD / Progress / Ledger tabs, components, a live answer-gate).

Designed for agents, not humans. Humans only do two things: prompt an agent, and answer grill cards in the rendered doc. Agents drive the htw CLI — it's a terse, deterministic, machine-readable API, not a human UX.

What it looks like

Real rendered output — the flagship PRD (stage bar, decisions, scope, tabs) and a scoping draft with open, answerable grill cards. Everything below is one tiny .doc.md source; all the polish is the shared theme. See the full examples gallery.

| PRD in execution | Scoping draft — open grill cards | | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | | PRD in execution | Open grill cards |

Quickstart

# always-latest, zero install (from GitHub):
npx github:aneym/how-to-work init        # scaffold .agents/skill-config/workflow/config.json
npx github:aneym/how-to-work new --kind prd --slug my-thing --title "My Thing"
npx github:aneym/how-to-work render docs/prds/my-thing/index.doc.md
npx github:aneym/how-to-work index       # lifecycle dashboard
npx github:aneym/how-to-work serve --answer-gate --port 8765

The package is zero runtime dependencies — Node built-ins + ESM only. Node ≥ 18.

Examples

Four real, end-to-end example docs — one per lifecycle stage — live in examples/, each with a screenshot of its gorgeous rendered output in the gallery. They thread together one product story (a feature-flag platform) so you can watch a single idea move through the whole lifecycle:

| Example | Stage | Shows | | ------------------------------------------------------------- | ------------- | --------------------------------------------------------------------- | | working-doc.doc.md | Working doc | The lightest entry point — a pre-grill thinking surface. | | scoping-draft.doc.md | Draft PRD | Open, answerable :::questions grill cards + the answer gate. | | prd-in-execution.doc.md | In execution | The flagship — stage bar, decisions, scope, PRD/Progress/Ledger tabs. | | research-report.doc.md | Done (report) | Callouts, a comparison table, and a bespoke SVG diagram. |

# render + browse them all
npx github:aneym/how-to-work render examples/prd-in-execution.doc.md
npx github:aneym/how-to-work register --all
npx github:aneym/how-to-work index
npx github:aneym/how-to-work serve --answer-gate

See the full gallery → for screenshots of every example (light + dark mode, the Progress/Ledger tabs, and the lifecycle dashboard).

The CLI (htw)

| Command | What it does | | --------------------------- | --------------------------------------------------------------------------------- | | htw init | Write the per-repo config bundle; stamp the engine version. | | htw check | Validate engine version + config schema (CI-friendly, exits non-zero when stale). | | htw new | Scaffold a .doc.md source (PRD / report / working-doc). | | htw render | Render .doc.md → self-contained HTML. | | htw register | Update the docs catalog (.json, or splice a .ts catalog). | | htw index | Emit a static lifecycle dashboard grouped by stage. | | htw verify | Structural + theme checks on a doc. | | htw serve [--answer-gate] | Loopback static server for docs/, optionally mounting the answer-gate. | | htw grill ask | Open an ask, block until the human submits answers in the doc, return them. |

Gorgeous by default, re-skin per repo

A polished warm-editorial theme ships in the engine (real shadows, optical type scale, tabular numerals, focus rings, restrained motion) — every doc looks great with zero per-doc styling. To re-skin a repo, you don't fork the engine:

  • config.doc.themeFile — replace the theme wholesale, or
  • config.doc.themeTokens — a ~15-line :root{} patch overriding the design tokens.

All polish lives in the shared theme; your .doc.md stays small.

The answer-gate

Grill cards POST to a same-origin /api/hwq endpoint. Three modes via config.answerGate.mode:

  • none — copy-answers button works with no server.
  • local — ship the bundled zero-dependency loopback gate (htw serve --answer-gate).
  • custom — wire your own delivery via the onAnswer(ask) callback (e.g. push answers to your own agent runtime).

Config

One file per repo, in the repo (so it travels): .agents/skill-config/workflow/config.json (falls back to .claude/skill-config/..., then bundled defaults). Everything host- or brand-specific lives here — never in the engine.

License

MIT © Alex Neyman