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

@proflandrigan/pr-studio

v0.4.0

Published

A stripped-down PR review studio with Claude Code integration

Downloads

426

Readme

PR Studio

A stripped-down pull-request review tool that runs locally and hands tasks to Claude Code. Open PRs as tabs, read the diffs, leave comments, and ask the agent to make fixes against a local checkout — all from one window.

It's a single Node process: it serves the UI, talks to the GitHub API, and spawns claude -p (Claude Code's headless mode) next to your repos. No build step, no framework on the frontend, one dependency on the backend.

Install

You need Node.js 20.6+ and, for the agent features, Claude Code installed and signed in (claude on your PATH).

Run it without installing:

GITHUB_TOKEN=ghp_xxx npx @proflandrigan/pr-studio

Or install globally:

npm install -g @proflandrigan/pr-studio
pr-studio

Either way it reads config from a .env file in the current directory or from the real environment (see Configure). Open http://localhost:4317.

From a clone

git clone https://github.com/proflandrigan/pr-studio.git
cd pr-studio
npm install
cp .env.example .env     # then add your GitHub token
npm start

Configure

Edit .env:

  • GITHUB_TOKEN — a Personal Access Token. A fine-grained token with Pull requests: read & write lets you read private PRs and post comments. Without it you can still browse public PRs read-only.
  • DEFAULT_REPO_PATH — optional. A local clone the agent works in when you haven't set a per-PR path in the UI.

Use

  1. Paste a PR URL (or owner/repo#123) in the top bar and press Enter. It opens as a tab. Open as many as you like.
  2. Click a file to expand its diff. Click any added or context line to leave an inline comment. Use the box at the bottom of a PR for a general comment.
  3. In the Claude Code console at the bottom, set the path to your local checkout of that repo — type it, or click the folder button to browse the server's filesystem and pick it — and type a task. The agent can read, search, run git, and edit files, so it handles both "summarize the risky changes in this PR" and "address the review comments in src/auth.js." Chat is turn-based: each message runs to completion, and the agent "asks for input" by ending a turn with a question your next message answers. Each reply shows a clean answer with the agent's reasoning and tool calls tucked into a collapsible "Worked through N steps" log above it. New chat starts a fresh thread.

The agent runs in your checkout, so after it edits, git diff in that repo shows what it did. Pushing/committing stays in your hands.

Run checks after an edit

The console header has a test/lint command field next to the repo path. PR Studio auto-detects it from the checkout (your package.json test/lint scripts, then README, then CLAUDE.md, then language markers like pytest/cargo test/go test); you can edit it, and your override is remembered per checkout. Click Run checks to run it and stream the output into the console — it finishes with a green "✓ Checks passed" or red "✗ Checks failed" banner. Checks run independently of the agent (the server spawns the command directly, not through Claude), so you can run them any time — including after an agent edit to confirm "edited and tests green" in one place.

Add it to the macOS dock

Because it's a local web app, you can give it a real dock icon:

  • Safari (Sonoma+): open the app, then File → Add to Dock.
  • Chrome / Edge: the install icon in the address bar, or menu → Install.

It opens in its own window, no browser chrome.

Notes & limits

  • Inline comments are posted against the PR head commit on the right side of the diff (added/context lines). Commenting on removed lines isn't wired up yet.
  • The diff view shows GitHub's per-file patch, which omits unchanged regions far from edits and very large/binary files.
  • This holds your GitHub token in a local .env and only talks to api.github.com and your local claude. Don't expose the port publicly.

License

MIT © proflandrigan

Layout

server/
  index.js     Express server: serves UI + API, streams the agent
  github.js    GitHub REST helpers (PRs, files, comments)
  agent.js     spawns `claude -p` and streams its output
public/
  index.html   app shell
  app.js        tabs, diff rendering, commenting, console (vanilla JS)
  styles.css    styling
  manifest.json + icon.svg   PWA install metadata