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

spinadd

v0.1.0

Published

Opt-in sponsor line for Claude Code's statusLine hook. Get paid to wait.

Downloads

163

Readme

spinadd-statusline

The MVP v0 of SpinAdd's Day-1 wedge: an opt-in sponsor line rendered inside Claude Code's own statusLine hook. Zero npm dependencies — pure Node stdlib, so there's nothing to audit beyond this folder.

What this actually does today

  • Registers itself as your statusLine command (user- or project-scoped).
  • Every render, prints your normal status (model · dir · git branch · session cost) plus one rotating sponsor line — only if you've opted in.
  • Logs every sponsor impression to ~/.spinadd/impressions.jsonl (timestamp, sponsor id, cwd). This is the real telemetry primitive the business is built on: proof that a wait-state impression can be counted.
  • Background-syncs with a real backend (Supabase — see docs/strategy/backend-v0.md): registers the device, uploads unsynced impressions, and refreshes the sponsor feed from Postgres — all off the hot path, so a slow network never adds latency to a render. sponsors.json is now only the bundled day-0/offline fallback.
  • Sponsors are managed through a real, self-serve pipeline: public intake form (site/sponsor.html) → admin approval (product/spinadd-admin) → publisher signs up on product/spinadd-publisher, creates a campaign, and pays for it via Stripe Checkout → CLI picks it up on its next sync.
  • Your prefs (opt-in and language) sync to the backend too — spinadd lang en|fr sets your language, spinadd sync pushes changes now.
  • spinadd payout starts Stripe Connect onboarding so you can eventually receive your revenue share once payout logic ships (see gaps below).

Quickstart

One-time shortcut so you can just type spinadd from anywhere:

cd product/spinadd-statusline
npm link

Then, from the repo (or any project) you want to instrument:

spinadd init --project   # or omit --project for your user-wide ~/.claude/settings.json

(No npm link? Run it as node product/spinadd-statusline/bin/spinadd.js init --project instead — same thing, just typed out.)

Restart Claude Code (or start a new session) in that directory and the sponsor line appears under the normal status line, rotating every 10s.

spinadd stats       # local impression counts
spinadd sponsors    # current feed
spinadd sync        # manually sync with the backend (verbose)
spinadd lang <en|fr>            # set your language preference
spinadd payout <email> <CC>     # link a Stripe payout account (first time only; e.g. `spinadd payout [email protected] CA`)
spinadd disable     # sponsor line off, base status line keeps working
spinadd uninstall   # fully remove, restores whatever statusLine config you had before

What's real vs. stubbed (v0 honesty check)

| Piece | Status | |---|---| | statusLine integration | Real. Uses Claude Code's documented hook exactly as specified. | | Opt-in / one-command disable / uninstall (restores prior config) | Real. | | Impression logging | Real, synced to Postgres in the background (batched, at most once/minute). | | Sponsor rotation | Real mechanism, backed by a real Postgres feed + admin approval flow. | | Publisher intake + self-serve + admin approval | Realsite/sponsor.htmlproduct/spinadd-adminproduct/spinadd-publisher → Stripe Checkout. No paying sponsor yet, but a publisher could pay right now. | | Revenue share payout to the developer | Half real. spinadd payout links a real Stripe Connect account. Computing and transferring an actual revenue-share balance isn't built yet. | | SDK for other CLI tools (the platform play) | Not built. This package is the Claude Code wedge only. |

See docs/strategy/mvp-v0.md for the roadmap from here to a real marketplace.