@o4h8/oss-perks

Check whether a GitHub user or package qualifies for open-source maintainer perk programs (Claude for Open Source, and more). Zero-config CLI.


Keywords
open-source, oss, maintainer, eligibility, github, npm, criticality, cli, claude, developer-tools, nodejs
License
MIT
Install
npm install @o4h8/oss-perks@0.1.1

Documentation

oss-perks

npm version CI license node

Am I eligible for open-source maintainer perks? Check any GitHub user or package against the criteria for programs like Claude for Open Source — in one command, right from your terminal.

Maintainer reward programs list eligibility criteria in prose ("500+ dependent repos", "100+ merged PRs", "OpenSSF criticality ≥ 0.4"). Figuring out whether you actually qualify means manually digging through npm stats, GitHub search, and OpenSSF data. oss-perks does it in one command — no signup, no config, no dependencies.

How it works

You give it a GitHub username (and optionally a package name). It then, in parallel:

  1. Queries the GitHub API for your merged-PR history, repos, and contributors.
  2. Queries package registries (npm + ecosyste.ms) for downloads and how many other packages/repos depend on yours.
  3. Evaluates each program criterion against those numbers and prints a clear ✓ / ✗ per rule, with the evidence behind every verdict.

Everything is read-only public data. Nothing is stored or sent anywhere except those public APIs. It's a single ~15 KB CLI with zero runtime dependencies, so npx oss-perks starts instantly.

npx oss-perks sindresorhus -p npm:chalk
  sindresorhus  https://github.com/sindresorhus
──────────────────────────────────────────────────────────
  ✓ PASS  Maintainer / library author
         At least one package clears a maintainer threshold.
           · npmjs:chalk — 1,795,989,333 monthly dl, 130085 dependent pkgs, 1291351 dependent repos  ✓
  ? n/a   Core contributor (major foundation/project committer)  ~manual
         Not machine-verifiable — cite it in your application.
  ✗ fail  Active contributor (100+ merged PRs elsewhere / 12mo)
         11 merged PRs in the last 12 months in repos sindresorhus doesn't own (need 100).
  ✓ PASS  Community builder (20+ external contributors)  ~approx
         sindresorhus/awesome has 199+ external contributors (all-time approximation).
  ✓ PASS  Critical infrastructure (OpenSSF criticality >= 0.4)  ~approx
──────────────────────────────────────────────────────────
  Likely eligible — passes 3 of 5 criteria.

Install

Run without installing:

npx oss-perks <github-username>

Or install globally:

npm install -g oss-perks

Set a GitHub token to avoid rate limits (the GitHub Search API is 10 req/min unauthenticated):

export GITHUB_TOKEN=ghp_xxx   # a fine-grained token with public read scope is enough

Usage

oss-perks <github-username> [options]

  -p, --package <spec>   Package for the maintainer check. Repeatable.
                         Prefix with a registry: npm: pypi: crates: gem:
                         (a bare name defaults to npm).
      --json             Machine-readable JSON output.
      --repos <n>        Max owned repos to scan (default 100).
  -h, --help             Help.
  -v, --version          Version.

Examples:

oss-perks torvalds
oss-perks sindresorhus -p npm:chalk -p npm:got
oss-perks psf --package pypi:requests --json

Exit code is 0 when at least one criterion passes, 1 otherwise — handy in CI.

The criteria

Rules mirror the Claude for Open Source program. You only need to meet one.

# Criterion Threshold How oss-perks checks it Confidence
1 Maintainer / library author 500+ dependent repos, or 100+ dependent packages, or 200k+ monthly downloads npm downloads API + ecosyste.ms dependents exact
2 Core contributor Listed committer on a major foundation/project Not machine-verifiable — flagged for manual citation manual
3 Active contributor 100+ merged PRs in repos you don't own (12 mo) GitHub Search API (is:merged -user:you) exact
4 Community builder 20+ unique external contributors (1 yr) GitHub contributors per repo, excluding owner approximate¹
5 Critical infrastructure OpenSSF criticality score ≥ 0.4 ecosyste.ms score, else a stars/forks/age estimate approximate²

¹ GitHub's contributors endpoint isn't time-windowed, so this is an all-time count (an upper bound on "last year"). It's also capped at 200 per repo by the API. ² When ecosyste.ms doesn't expose a real OpenSSF criticality score, a rough estimate from stars/forks/issues/age is shown and clearly labeled — run the official tool to confirm a borderline case.

Data sources

  • GitHub REST API — user, repos, contributors, merged-PR search.
  • npm registry (api.npmjs.org) — monthly downloads.
  • ecosyste.ms — dependent-package/repo counts across npm, PyPI, crates.io, RubyGems, and OpenSSF criticality where available.

No data is stored or transmitted anywhere except these public read-only APIs.

Programmatic use

import { check } from "oss-perks";

const report = await check("sindresorhus", {
  packages: [{ registry: "npmjs.org", name: "chalk" }],
});
console.log(report.eligible, report.passedCount);

Contributing

Issues and PRs welcome — especially adding new perk-program rulesets beyond Claude for OSS. See the criteria table above for where new checks plug in (src/lib.ts).

License

MIT