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.
You give it a GitHub username (and optionally a package name). It then, in parallel:
- Queries the GitHub API for your merged-PR history, repos, and contributors.
- Queries package registries (npm + ecosyste.ms) for downloads and how many other packages/repos depend on yours.
- 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.
Run without installing:
npx oss-perks <github-username>Or install globally:
npm install -g oss-perksSet 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 enoughoss-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 --jsonExit code is 0 when at least one criterion passes, 1 otherwise — handy in CI.
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.
- 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.
import { check } from "oss-perks";
const report = await check("sindresorhus", {
packages: [{ registry: "npmjs.org", name: "chalk" }],
});
console.log(report.eligible, report.passedCount);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).
MIT