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

slingit

v0.2.3

Published

Share formatted Markdown notes via link. Encrypted by default (key in #URL), optional email delivery.

Readme

slingit

Fire-and-forget: share formatted Markdown notes via link. Encrypted end-to-end by default — the AES-256 key lives only in the URL's # fragment, the server is physically unable to read the content.

# Encrypted note — the CLI prints a link with the key in #
npx slingit shot analysis.md

# With a pipe
cat analysis.md | npx slingit shot

# Send the link by email (the email contains the full working link)
npx slingit shot analysis.md --mailto [email protected]

# Add a short message visible only in the email
npx slingit shot analysis.md --mailto [email protected] --mailmessage "Context before you open this"

# Add a sender signature to the note page and email
npx slingit shot analysis.md --from "Marcin"

# Public note: no encryption, server-side render, SEO
npx slingit shot analysis.md --public

# Delete after 7 days
npx slingit shot analysis.md --expire 7

# Load a note back — prints its Markdown to stdout (decrypts locally, key from #)
npx slingit pull https://slingit.dev/payment-retry-bug/aX7k2mQp9f#Hk3...

# Also pull back any reader comments left on the note (feedback loop)
npx slingit pull https://slingit.dev/payment-retry-bug/aX7k2mQp9f#Hk3... --comments

# Skill for Claude Code ("send these findings to X's email")
npx slingit install-skill

# Skill for Codex
npx slingit install-skill --target codex

Configuration

No configuration is required — the CLI works out of the box with npx slingit shot, using a built-in public token (an anti-bot filter, not a secret; the real protection is the server's rate limits). Overrides, e.g. for a self-hosted instance:

| Source | Keys | |---|---| | env | SLINGIT_TOKEN, SLINGIT_URL (defaults to the official SlingIt instance) | | ~/.slingit/config.json | { "token": "...", "url": "...", "defaultToMail": "..." } |

Env takes precedence over the file; the file takes precedence over the built-in values.

Flags

| Flag | Description | Default | |---|---|---| | --public | Disables encryption, enables server-side render (SEO/preview) | off (encrypted) | | --mailto [email] | Send the link by email; without a value, uses defaultToMail | off | | --mailmessage <text> | Add an optional message/comment to the email body; requires --mailto | off | | --expire <days> | Delete the note after X days (1-365) | no TTL | | --title <text> | Title. Sets the email subject (SlingIT note — {title}) and the readable slug in the link; with --public it also feeds the preview/SEO | first # H1 | | --from <text> | Optional sender/signature shown on the note page and email | hidden | | --copy | Copy the link to the clipboard | off |

Loading a note (pull)

npx slingit pull <url> [--comments|--comments-only]

Fetches a published note and prints its Markdown to stdout — handy for pulling an analysis another agent slung straight into a session. The note id is read from the URL path and, for encrypted notes, the AES key from the # fragment: the ciphertext is fetched by id alone and decrypted locally, so the key is never sent to the server (same zero-knowledge model as the browser reader). Pass the full link including the part after #; --public links have no fragment and pull just as well. Expired or missing notes produce a clear error and a non-zero exit code.

With --comments, any reader comments left on the note are fetched too and appended as a ## Comments section after the body — closing the feedback loop when someone reviews a note you shared. Comments on encrypted notes are decrypted locally with the same key. If the comments cannot be fetched, the note body still prints and a one-line notice goes to stderr.

With --comments-only, only the comments are fetched and printed — the note body is skipped entirely. Unlike --comments, a failure to fetch here is a hard error (there's nothing else to fall back to).

| Flag | Description | Default | |---|---|---| | --comments | Also fetch reader comments and append them after the note body | off | | --comments-only | Fetch and print just the comments, skipping the note body | off |

Skill installation

npx slingit install-skill                    # Claude Code, user profile
npx slingit install-skill --project          # Claude Code, current repo
npx slingit install-skill --target codex     # Codex, user profile
npx slingit install-skill --target all       # Claude Code + Codex

Claude Code installs to ~/.claude/skills/slingit/ or ./.claude/skills/slingit/. Codex installs to ~/.agents/skills/slingit/ or ./.agents/skills/slingit/.

Privacy model

  • Default (encrypted): content is encrypted with AES-256-GCM locally; only the ciphertext goes to the server. The key in the # URL fragment is never sent by the browser — full zero-knowledge.
  • --mailto + encrypted: the key passes through the server (in transit, not stored) and the mail — a deliberate decision: since the recipient needs the key anyway, they get the full link. Security model: capability URL — whoever has the link can read it.
  • --public: a deliberate opt-out from encryption (plaintext, SEO, nice preview).

Backend: Cloudflare Workers + R2. Code: slingit repo.