@chengyixu/gitpulse
v1.0.1
Published
Instant health check for any GitHub repository -- activity score, bus factor, response times, and a one-line verdict to evaluate open source project health
Maintainers
Readme
gitpulse
Instant health check for any GitHub repository. Answers the question: "Should I depend on this repo?"
One command gives you activity scores, bus factor analysis, response time estimates, and a clear verdict -- so you can make informed decisions before adding a dependency or contributing to a project.
Demo
$ gitpulse facebook/react
facebook/react -- Active & Healthy
========================================================
Stars: 232,000 Forks: 47,200 Watchers: 6,700
940 open issues
A JavaScript library for building user interfaces
ACTIVITY (last 30 days) Score: 82/100
----------------------------------------------------------
Commits: 147 (38 in last 7d) [################....]
PRs opened: 52
PRs merged: 41
Issues opened: 28
Issues closed: 19
BUS FACTOR
----------------------------------------------------------
Bus factor: 8 (1,842 total contributors)
Top: @acdlite (18%), @gnoff (14%), @sebmarkbage (11%)
HEALTH
----------------------------------------------------------
First response: ~4 hours (median)
PR merge time: ~18 hours (median)
Issue close rate: 68%
VERDICT: Active & HealthyInstall
npm install -g @chengyixu/gitpulseOr run without installing:
npx @chengyixu/gitpulse facebook/reactUsage
Full health report
gitpulse facebook/reactCompact one-line summary
gitpulse vercel/next.js --compact
# => next.js Active & Healthy Score: 91/100 Bus: 12 Stars: 128kJSON output for scripting
gitpulse pallets/flask --jsonWorks with full GitHub URLs
gitpulse https://github.com/denoland/denoUse Cases
Evaluating a new dependency:
# Before adding a package, check if the repo is maintained
gitpulse expressjs/express
gitpulse fastify/fastify
# Compare verdicts and pick the healthier projectAuditing your stack:
# Check health of repos you depend on
for repo in facebook/react vercel/next.js prisma/prisma; do
gitpulse $repo --compact
doneCI/CD health gates:
# Use JSON output in scripts
SCORE=$(gitpulse some/repo --json | jq '.activity.activityScore')
if [ "$SCORE" -lt 20 ]; then
echo "WARNING: dependency repo has low activity"
fiWhat it measures
| Metric | Description | |--------|-------------| | Activity Score (0-100) | Weighted score of commits, PRs, and issues in the last 30 days | | Bus Factor | How many contributors produce 80% of commits | | First Response Time | Median time to first comment on issues | | PR Merge Time | Median time from PR open to merge | | Issue Close Rate | Percentage of issues that get closed | | Verdict | One-line assessment: Active & Healthy, Declining, Abandoned, etc. |
Verdict Levels
| Verdict | Meaning | |---------|---------| | Active & Healthy | High activity, multiple contributors, responsive | | Active but Understaffed | Lots of activity, low bus factor | | Slowing Down | Decreasing activity trend | | Minimal Maintenance | Some activity, mostly patches | | Declining | Significant drop in activity | | Abandoned | No meaningful activity in 30+ days | | Archived | Repository is archived on GitHub |
Why gitpulse over alternatives?
| Feature | gitpulse | GitHub Insights | OSSF Scorecard | Snyk Advisor | |---------|:--------:|:---------------:|:--------------:|:------------:| | CLI-first | Yes | No (web only) | Yes | No | | Bus factor analysis | Yes | No | No | No | | Activity scoring | Yes | Partial | Partial | Yes | | Response time estimates | Yes | No | No | Partial | | One-command verdict | Yes | No | No | No | | JSON output | Yes | No | Yes | No | | Works without auth | Yes | Requires login | Yes | Yes | | Zero config | Yes | N/A | Needs setup | N/A |
Authentication
By default, GitHub allows 60 API requests/hour for unauthenticated users. For higher limits (5,000/hr), set a token:
export GITHUB_TOKEN=ghp_your_token_here
# or
export GH_TOKEN=ghp_your_token_hereNo special scopes are needed -- a basic token with no permissions works fine.
License
MIT
