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

ecode-reviewer

v1.0.9

Published

Local pre-push AI code reviewer for JavaScript and TypeScript diffs.

Readme

eCode Reviewer

Package-style pre-push AI code reviewer for JavaScript and TypeScript diffs.

The best setup is to install the reviewer as a dev dependency and keep only project-specific config/rules in each repo. That way your team does not copy the tool source into every project.

Recommended Project Setup

In a project that should use the reviewer:

npm install --save-dev ecode-reviewer

Add scripts:

{
  "scripts": {
    "review": "ecode-reviewer review",
    "setup-hooks": "ecode-reviewer setup-hooks"
  }
}

Add a project config at reviewer.config.json:

{
  "llm": {
    "provider": "ollama",
    "endpoint": "http://localhost:11434/api/generate",
    "model": "qwen2.5-coder:14b",
    "timeout_ms": 30000,
    "runtime": "ollama"
  },
  "review": {
    "style_guide_paths": ["./style-guide", "./tools/style-guide.md"],
    "token_budget": 6000,
    "block_on": ["ERROR"],
    "base_ref": "origin/main",
    "ignore_patterns": ["*.min.js", "package-lock.json", "*.generated.ts"],
    "rule_files": []
  }
}

LLM Providers

The default provider is local Ollama:

{
  "llm": {
    "provider": "ollama",
    "endpoint": "http://localhost:11434/api/generate",
    "model": "qwen2.5-coder:14b",
    "timeout_ms": 30000
  }
}

OpenAI:

{
  "llm": {
    "provider": "openai",
    "endpoint": "https://api.openai.com/v1/chat/completions",
    "model": "gpt-4.1-mini",
    "api_key_env": "OPENAI_API_KEY",
    "timeout_ms": 50000
  }
}

OpenAI-compatible APIs such as vLLM, Groq, OpenRouter, or LM Studio:

{
  "llm": {
    "provider": "openai-compatible",
    "endpoint": "https://your-provider.example/v1/chat/completions",
    "model": "your-model-name",
    "api_key_env": "ECODE_REVIEWER_API_KEY",
    "timeout_ms": 50000
  }
}

Anthropic:

{
  "llm": {
    "provider": "anthropic",
    "endpoint": "https://api.anthropic.com/v1/messages",
    "model": "claude-3-5-sonnet-latest",
    "api_key_env": "ANTHROPIC_API_KEY",
    "timeout_ms": 50000
  }
}

API keys are read from environment variables only. Do not put secrets directly in reviewer.config.json.

Then each developer runs this once after cloning:

npm run setup-hooks

After that, the reviewer runs automatically on:

git push

For emergency pushes, Git’s normal bypass still works:

git push --no-verify

Local Package Testing

Before publishing, you can test this package from another project using a local file dependency:

npm install --save-dev /Users/sam/Desktop/eCode-rv

Then use the same scripts:

{
  "scripts": {
    "review": "ecode-reviewer review",
    "setup-hooks": "ecode-reviewer setup-hooks"
  }
}

Config Discovery

The CLI looks for config in this order:

  1. reviewer.config.json
  2. code-reviewer.config.json
  3. tools/reviewer.config.json

You can also pass a config explicitly:

ecode-reviewer review --config ./config/reviewer.json

Use quiet mode to hide the loading indicator:

ecode-reviewer review --quiet

style_guide_paths can point to markdown files or folders of markdown files. Style-guide files are loaded fresh on every push.

The reviewer also applies a built-in baseline for Security, SOLID, DRY, TypeScript safety, error handling, and test coverage. Project rules are added on top of that baseline.

Behavior

  • Blocks the push when the model returns an ERROR.
  • Allows the push when there are warnings only.
  • Fails open when the LLM server is down, times out, or returns malformed JSON.
  • Reviews only JavaScript and TypeScript diffs.