CI health scoreboard
How do the workflows of some of the most-starred repos on GitHub grade
under gha-doctor? A
point-in-time snapshot, regenerated weekly by
scoreboard.yml
running
scripts/scoreboard.sh
— every number is reproducible with one command against public data, no
clone needed:
$ gha-doctor --repo facebook/react
Snapshot: 2026-09-16 · gha-doctor 0.66.0 · last 100 completed runs per repo.
| Repo | Grade | Score | Biggest deduction |
|---|---|---|---|
| pytorch/pytorch | A | 94/100 | workflow hygiene (−5.1): 38 warning(s), 22 info finding(s) across 85 file(s) |
| django/django | B | 85/100 | success rate (−7.2): 88% of 52 decisive runs succeeded (skipped/cancelled not counted) |
| python/cpython | B | 82/100 | workflow hygiene (−9.9): 20 warning(s), 11 info finding(s) across 23 file(s) |
| apache/airflow | B | 80/100 | workflow hygiene (−11.6): 64 warning(s), 36 info finding(s) across 63 file(s) |
| sveltejs/svelte | C | 73/100 | workflow hygiene (−11.3): 4 warning(s), 2 info finding(s) across 4 file(s) |
| grafana/grafana | C | 72/100 | workflow hygiene (−18): 127 warning(s), 31 info finding(s) across 75 file(s) |
| nodejs/node | C | 71/100 | workflow hygiene (−22.6): 103 warning(s), 21 info finding(s) across 48 file(s) |
| facebook/react | D | 67/100 | workflow hygiene (−30): 113 warning(s), 57 info finding(s) across 26 file(s) |
| vuejs/core | D | 67/100 | workflow hygiene (−16.9): 14 warning(s), 5 info finding(s) across 9 file(s) |
| microsoft/vscode | D | 65/100 | workflow hygiene (−28.3): 49 warning(s), 19 info finding(s) across 19 file(s) |
| cli/cli | D | 63/100 | workflow hygiene (−25.4): 30 warning(s), 22 info finding(s) across 14 file(s) |
| rust-lang/rust | D | 62/100 | success rate (−19.1): 69% of 85 decisive runs succeeded (skipped/cancelled not counted) |
| vercel/next.js | D | 61/100 | workflow hygiene (−22.3): 72 warning(s), 33 info finding(s) across 36 file(s) |
| pola-rs/polars | F | 58/100 | workflow hygiene (−27.4): 52 warning(s), 11 info finding(s) across 20 file(s) |
| huggingface/transformers | F | 57/100 | workflow hygiene (−29.6): 160 warning(s), 47 info finding(s) across 58 file(s) |
| angular/angular | F | 56/100 | workflow hygiene (−26.2): 34 warning(s), 0 info finding(s) across 13 file(s) |
| microsoft/typescript | F | 55/100 | workflow hygiene (−30): 41 warning(s), 8 info finding(s) across 11 file(s) |
| pandas-dev/pandas | F | 50/100 | workflow hygiene (−29.5): 40 warning(s), 17 info finding(s) across 15 file(s) |
| astral-sh/uv | F | 48/100 | workflow hygiene (−17.8): 65 warning(s), 74 info finding(s) across 47 file(s) |
| home-assistant/core | F | 48/100 | workflow hygiene (−30): 45 warning(s), 33 info finding(s) across 16 file(s) |
| prometheus/prometheus | F | 40/100 | workflow hygiene (−30): 44 warning(s), 4 info finding(s) across 15 file(s) |
| vitejs/vite | F | 27/100 | workflow hygiene (−21.1): 28 warning(s), 6 info finding(s) across 14 file(s) |
| denoland/deno | F | 24/100 | workflow hygiene (−30): 37 warning(s), 54 info finding(s) across 11 file(s) |
This is not a quality ranking of these projects. It grades one narrow thing: how their GitHub Actions setup scores on hygiene, reliability, and efficiency signals, formula here. A few honest caveats:
- A snapshot, not a trend. Success/flakiness/waste come from the last 100 completed runs at generation time; a bad day moves the grade.
- Skipped and cancelled runs are not failures. Concurrency auto-cancels are good practice (rule D001 recommends them) and carry no verdict, so they’re excluded from the success rate.
- Hygiene is density-normalized (per workflow file), so a 40-workflow monorepo isn’t penalized for sheer volume.
- Several famous repos are absent because their real CI isn’t GitHub
Actions:
golang/go(LUCI),kubernetes/kubernetes(Prow),ansible/ansible(Azure Pipelines). Grading their incidental Actions runs would be misleading. - Most findings here are the boring, fixable kind — across these repos
the most common were D002 ×761, D003 ×260, D010 ×211 (rule reference).
gha-doctor --fixcleans up several of these automatically.
Want the itemized deductions behind any grade?
gha-doctor --repo owner/repo --json | jq .score — and see the
badge docs to put your own repo’s grade in its README.