oss-bus-factorlisted
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` ∧