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

ossintel

v0.1.3

Published

Mathematical, deterministic metrics calculator to evaluate open-source software health, impact, activity, community adoption, and risk profiles.

Readme

@ossintel/scoring

@ossintel/scoring: Deterministic scoring engine for calculating OSS health, impact, risk, activity, and community metrics from normalized repository and ecosystem data.

@ossintel/scoring

Deterministic OSS scoring engine with modular architecture.

Purpose

Converts normalized repository and developer metrics into objective scores.

Responsibilities

Repository Scoring

  • Health, Impact, Activity, Community, Risk, and Overall scores

Identity Scoring (OSSIQ)

Four-pillar reputation engine:

  • Maintainer — Repository health weighted by popularity (GitHub-only)
  • Contributor — Quality-weighted external PR scoring
  • Organization — Active org leadership evaluation
  • Influence — Downstream reach (stars, forks + additive npm/SO bonuses)

Capability Scoring

  • Package Publishing (calculatePublishingScore) — npm downloads, active packages, verified publisher (extensible to NuGet, PyPI, crates.io, Go)
  • Knowledge Sharing (calculateKnowledgeScore) — Stack Overflow reputation, answers, acceptance rate (extensible to Dev.to, Hashnode)

Supporting Modules

  • Badges — Achievement detection from cross-platform activity
  • Skills — Topic expertise radar aggregating GitHub, npm, and Stack Overflow signals
  • Evidence & Factors — Human-readable explanations for each pillar

Philosophy

  • Scores are deterministic: same inputs → same outputs
  • Scores are monotonic: linking additional providers can only increase reputation
  • GitHub defines the core OSS reputation (~80-85%)
  • Additional providers contribute additive capability bonuses
  • No AI participates in score calculation

Module Architecture

index.ts
├── repository-scoring.ts      # Repo-level: health, impact, activity, community, risk
├── identity-scoring.ts        # Orchestrator: computes overall OSSIQ score
├── maintainer-scoring.ts      # Pillar: GitHub repo health weighted average
├── contributor-scoring.ts     # Pillar: external PR quality weighting
├── organization-scoring.ts    # Pillar: org leadership evaluation
├── influence-scoring.ts       # Pillar: stars + forks + additive bonuses
├── publishing-scoring.ts      # Capability: Package Publishing (npm)
├── knowledge-scoring.ts       # Capability: Knowledge Sharing (Stack Overflow)
├── badges.ts                  # Achievement detection
├── skills.ts                  # Topic expertise aggregation
├── evidence.ts                # Evidence & factors generation
└── topic-mappings.ts          # Canonical topic → keyword mappings

Non-goals

  • API calls
  • AI
  • Charts
  • UI

Testing

Every scoring algorithm should have comprehensive unit tests.

No external dependencies should affect score calculation.


✨ Why @ossintel/scoring?

  • 100% Deterministic & Transparent: Zero network requests or probabilistic AI models; calculations are mathematical and fully reproducible.
  • Modular Pillar Architecture: Each scoring dimension (Maintainer, Contributor, Organization, Influence) is a self-contained module, easy to extend or override.
  • Capability-Specific Scoring: First-class calculatePublishingScore and calculateKnowledgeScore exports for direct use by consumers.
  • Monotonic Guarantees: Linking npm or Stack Overflow can only increase scores, never reduce them.
  • Fully Tested: Every score calculation is validated by comprehensive unit tests to prevent regression.

🌍 Open Source Ecosystem Impact Engine

The Ecosystem Impact Engine measures developer impact beyond owned repositories, focusing on contributions to external projects.

Heuristics Classification Pipeline

[User Merged PR]
       │
       ├──► Contains "typo", "readme", "docs" in Title/Labels? ─────► [Docs / Typo Fix] (Weight: 0.4x)
       ├──► Contains "test", "spec", "qa" in Title/Labels? ────────► [Test Contribution] (Weight: 1.2x)
       ├──► Contains "chore", "dependencies" in Title/Labels? ──────► [Chore / Dependency] (Weight: 0.5x)
       └──► Default Code change ────────────────────────────────────► [Core Code Contribution] (Weight: 1.0x)

Weighting Matrix

Merged pull requests are weighted according to target repository popularity and quality multipliers:

| Target Repo Stargazers | Tier Category | Base Weight | Multiplier Applied | | ---------------------- | ----------------------- | ----------- | ---------------------------------------------------------------- | | ≥ 20,000 Stars | Tier 1 (Frameworks) | 5.0 | Quality Multiplier (Docs: 0.4, Test: 1.2, Chore: 0.5, Code: 1.0) | | ≥ 2,000 Stars | Tier 2 (Medium OSS) | 3.0 | Quality Multiplier | | < 2,000 Stars | Tier 3 (Small OSS) | 1.0 | Quality Multiplier |

The resulting Ecosystem Contribution Score ($S_{\text{eco}}$) is aggregated as:

$$ S_{\text{eco}} = \min\left(100, \sum (\text{BaseWeight} \times \text{QualityMultiplier})\right) $$


📦 Installation

[!TIP] This package (ossintel) is an official alias of @ossintel/scoring.

We provide this package to offer shorter import paths and improved discoverability. While both packages provide identical functionality, @ossintel/scoring is the primary source of truth.

  • Use ossintel if you prefer the shorter name or specific branding or ESM Only.
  • Use @ossintel/scoring for the most stable long-term reference and standard alignment.

| Feature | @ossintel/scoring | ossintel | | --- | --- | --- | | Source Code | ✅ Primary | 🔗 Proxy | | Updates | Immediate | Synchronized (Immediately) | | Bundle Size | 100% | 100% (Zero overhead) | | Format | ESM + CJS | ESM Only | | Maintenance | ✅ Primary | 🔗 Proxy (inherits) | | Security | ✅ Primary | 🔗 Proxy (inherits) |

Security: Security audits are performed on the canonical package; this alias inherits all security patches automatically.


$ pnpm add @ossintel/scoring

or

$ npm install @ossintel/scoring

or

$ yarn add @ossintel/scoring

License

This library is licensed under the MIT open-source license.