← ClaudeAtlas

oss-bus-factorlisted

Estimate an open-source project's bus factor from public GitHub data alone, across three axes (org metadata, commit cadence, PR-merger distribution), and produce a governance / activity note for adoption decisions or PR comments. Use when assessing a project's continuity, maintenance health, or whether it is effectively dead, or comparing several projects on governance or maintainership. Triggers on "bus factor", "maintenance health", "is this OSS dead".
gitt510/agent-skills · ★ 0 · Code & Development · score 70
Install: claude install-skill gitt510/agent-skills
# OSS Bus Factor ## Goal GitHub に公開されている情報だけを使って、OSS の継続性リスクを 3 軸で verifiable に評価する。主観的な「コードの質」や「community 文化」は扱わない。 ## なぜ 3 軸か | 軸 | 測るもの | 役割 | |---|---|---| | 1. org meta | structural potential (人を回せる素地) | 静的 snapshot | | 2. commit / release cadence | actual liveness (今動いてるか) | dynamic 直近 | | 3. PR merger 分布 | merge 権限の bus factor (誰が抜けたら詰むか) | 人間集約構造 | 軸 3 が bus factor の本体。contributor 分布は外部 PR が混ざって signal が弱 いので採用しない。merger は GitHub 権限モデル上 write 権限以上の人しか出ない ので signal が強い。bot は `.merged_by.type != "User"` で除外する。 ## Workflow ### 1) 入力を確定する - `<owner>/<repo>` 形式で 1 件以上受け取る。複数なら比較ブロックを縦に並べる。 - option: `--comment` が指定されたら、PR comment 用 Markdown を出力する。 ### 2) `scripts/measure.sh` を走らせる 3 軸の生データはすべてここで取る。LLM は JSON を解釈するだけで、API 呼び出しや 集計を自前でやり直さない。 ```bash scripts/measure.sh <owner>/<repo> ``` 出力 JSON の構造: - `org_meta.{owner_type, owner_created_at, public_members, description, public_repos, blog}` - `owner_created_at` は User / Org いずれも入る (account の age) - `description / public_repos / blog` は Org のときだけ入る - `cadence.{repo_created_at, pushed_at, commits_30d, commits_90d, releases[], archived}` - `repo_created_at` は project 自体の age (主要 signal) - `owner_created_at` は org 分類の補助情報 - `merger.{distribution[], total, top_share_pct}` ### 3) org 型を分類する `org_meta` を見て次のいずれかに振る: - `owner_type == "User"` → **personal** - `Organization` ∧ `description` に foundation 語 (Apache, CNCF, Eclipse, Linux Foundation 等) → **foundation** - `Organization` ∧ `public_repos >= 100` ∧