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

tasteloop

v0.1.0

Published

Spawn a live Mercury session over any text artifact from your agent harness — the human iterates in the browser at ~1s latency, the result folds back through a blocking MCP tool.

Readme

tasteloop

Spawn an interactive subagent from your agent harness: your agent provides the context, a human iterates on it with Mercury at ~1s per edit, the result folds back through a blocking MCP tool.

One command to install:

claude mcp add tasteloop -- npx -y tasteloop

(bunx tasteloop works too — the server runs under both node and bun, no build step.)

First spawn opens a browser and asks for an Inception API key. Create one at platform.inceptionlabs.ai; new accounts get 10M free tokens. The key is stored on your machine only (~/.config/tasteloop/credentials, 0600), never placed in the page, a tool result, argv, or a URL. Set INCEPTION_API_KEY in the environment to skip the form (e.g. claude mcp add tasteloop --env INCEPTION_API_KEY=… -- npx -y tasteloop).

The tool

taste_session({ artifact, brief, title? }) opens the session and blocks until the human closes the tab, then returns { artifact, history, notes?, outcome }.

  • artifact: the text under iteration. Any format: prose, config, code, HTML, a shader body.
  • brief: the standing direction woven into every edit turn (the overall goal), not a one-off instruction.
  • title: optional session label, shown with the brief.

The session is transparent by design: the human sees exactly the context the agent provided (brief + artifact as text), types an instruction, and watches Mercury diffuse a full redraft in place. Accept by typing the next edit; undo restores the previous state; closing the tab hands everything back.

Teach your agent

The tool is domain-blind; the judgment is yours to bring each spawn.

  • When to spawn. Reach for it on taste-shaped work — where "is this right?" is a call the human makes faster by eye than they can specify in words. Tone, wording, structure, style, feel. Not for intelligence-shaped work you can verify yourself.
  • Author the artifact with taste-targets in place. Name the things worth moving (a palette, a spacing scale, a headline) so each edit has something concrete to grab. A blank artifact gives the human nothing to react to.
  • The brief is standing direction. "vaporwave sunset palette, keep it legible" rides every turn. Put the invariants there; leave the per-turn moves to the human's typed instructions.
  • Rendering happens outside the loop. The session shows text only. If the artifact should be seen rendered, serve it yourself — write the artifact to disk on each hand-back, or run a dev server that reloads on write — and name that URL in the brief so the human knows where to look.

How it works

Two speeds. The outer loop is your agent authoring the artifact and brief, spawning the tool, and folding the result back. The inner loop is the human at ~1s latency: type an edit, watch Mercury diffuse a full redraft, keep or undo, repeat. Closing the tab hands the final artifact and the edit trace back to your agent.

The host server runs on loopback only. /mercury/* injects the API key server-side, so the browser never sees it.

Development

bun install
bun test          # unit tests — no live API or browser needed
bun run typecheck # tsc --noEmit over the node modules