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

sift-review

v0.8.2

Published

Pre-commit AI code review for Claude Code

Readme


Sift reviews your code before it leaves your machine. It filters noise from diffs, maps the blast radius of your changes, and gives you a plain-English summary — all in your terminal.

What You Get

  1. The Diff — A noise-collapsed view showing only meaningful changes. Whitespace, import reordering, formatting, and comment-only changes are filtered out.

  2. The Flow — Call graph visualization showing which files are affected downstream. Built using lightweight static analysis for TypeScript and Python.

  3. The Why — Three lines of plain-English explanation: Problem, Fix, Risk. Max 25 words per line.

Example Output

Summary
  Problem: Auth middleware stores session tokens in plaintext cookies
  Fix:     Switched to httpOnly signed cookies with 24h expiry
  Risk:    Existing sessions will be invalidated on deploy

Blast radius: 3 files changed, 2 affected downstream

  ┌─────────────────────────────────────────────────┐
  │ src/middleware/auth.ts (setSession) CHANGED      │
  └──────────────────────┬──────────────────────────┘
                         │
                         v
          ┌──────────────────────────────┐
          │ src/routes/api.ts → handler  │
          └──────────────────────────────┘

2 issues found:
  ! src/middleware/auth.ts:42 Cookie maxAge is set in ms but comment says seconds
  ! src/middleware/auth.ts:58 No CSRF token validation on session refresh endpoint

Confidence: 82%  |  +34 -12  |  8 noise lines filtered
Tokens: 1,247 in / 312 out  |  Est. cost: $0.0085

Quick Start

Claude Code (MCP Server)

Install sift and register it as an MCP server in one step:

npm install -g sift-review
claude mcp add sift -- sift-mcp

Restart Claude Code, then just say "review my changes". Sift auto-discovers your repo and runs the review. It also runs automatically before any git push.

Without a global install: claude mcp add sift -- npx -y sift-review sift-mcp

CLI

# Review changes on your current branch
sift review

# Review against a specific base
sift review --base main

# Specify both base and head
sift review --base main --head feature-branch

# Run without installing
npx sift-review review

Requirements

  • Node.js >= 20
  • Git
  • ANTHROPIC_API_KEY or ANTHROPIC_AUTH_TOKEN environment variable set

MCP Tools

When running as an MCP server, sift exposes these tools to Claude Code:

| Tool | Description | |------|-------------| | review_diff | Run a full AI code review (auto-discovers repos) | | get_blast_radius | Get the call graph showing downstream impact | | get_file_details | Drill into a specific file's changes | | get_diff_page | Page through the diff one file at a time | | discover_repos | Scan a directory for git repos with changes |

Configuration

Create an optional .sift.json at your project root:

{
  "model": "claude-sonnet-4-6-20250514",
  "max_diff_lines": 500,
  "base_branch": "main",
  "max_issues": 10
}

| Field | Default | Description | |-------|---------|-------------| | model | claude-sonnet-4-6-20250514 | Claude model for analysis | | max_diff_lines | 500 | Max diff lines sent to Claude | | base_branch | main | Default base branch for diffing | | max_issues | 10 | Max issues to return | | api_key_env | ANTHROPIC_API_KEY | Environment variable name for the API key |

Proxy / LiteLLM Support

Sift works with LiteLLM and other Anthropic API-compatible proxies. Set the standard environment variables:

export ANTHROPIC_BASE_URL=https://your-proxy.example.com/
export ANTHROPIC_AUTH_TOKEN=your-token

Then configure the model name in .sift.json:

{
  "model": "your-proxy-model-name"
}

The Anthropic SDK reads these environment variables automatically — no additional sift configuration needed. Cost estimation is disabled when using a proxy.

How It Works

  1. You run sift review (or it runs via a pre-push hook)
  2. Sift extracts the diff between your branch and the base
  3. Noise is filtered out — whitespace, import reordering, formatting, comments
  4. The filtered diff is sent to Claude for review
  5. Static analysis builds a call graph showing affected downstream files
  6. AI review and graph building run in parallel
  7. Results are formatted and displayed in your terminal

Bypass

git push --no-verify

License

MIT