agentsclimarketplace

Oss bus factor

Skill gitt510/agent-skills/skills/oss-bus-factor

Personal agent skills for Claude Code, Codex, and other Agent Skills-compatible agents, distributed via local symlinks.

Install
npx -y skills add gitt510/agent-skills --skill oss-bus-factor

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 15 days oldThe repository was created 15 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

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".

SKILL.md

5.3 KB, as published. Nobody here has run it

OSS Bus Factor

Goal

GitHub に公開されている情報だけを使って、OSS の継続性リスクを 3 軸で verifiable に評価する。主観的な「コードの質」や「community 文化」は扱わない。

なぜ 3 軸か

測るもの役割
1. org metastructural potential (人を回せる素地)静的 snapshot
2. commit / release cadenceactual 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 呼び出しや 集計を自前でやり直さない。

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
  • Organizationdescription に foundation 語 (Apache, CNCF, Eclipse, Linux Foundation 等) → foundation
  • Organizationpublic_repos >= 100public_members >= 50corporate umbrella
  • その他 Organizationsingle-product vehicle

4) 各軸を rating する

健全注意危険
軸 1foundation / corporate umbrellasingle-product ∧ members ≥ 10personal もしくは members < 10
軸 2pushed_at < 90 日 ∧ commits_30d > 0pushed_at < 365 日それ以上、または archived == true
軸 3top_share_pct < 5050 〜 80> 80

軸 3 の例外: merger.total < 10 のときは sample が小さすぎて分布から bus factor を推定できないので、判定不能 (n=<N>) として明示する。personal repo で owner が直接 push してて PR を経由しない pattern では普通に起きる (これ自体が「bus factor が極端に小さい」signal なので、総合 take でその点を補 う)。

5) 総合 take を 2-3 行で書く

各軸の rating を踏まえた所見。例えば「活発だが merge 権限が 1 人寡占。fork 維 持の覚悟がない採用は避けたい」のような、採用判断に直結する一言を添える。数字 を盛らない — JSON にない事実は書かない。

6) --comment mode のときの整形

PR comment 用の Markdown skeleton:

## OSS governance / 活発度の調査メモ

PR 比較表に載せきれない governance 観点を、GitHub 公開情報だけから verifiable
な範囲で記録。

### 1. org meta
(表)

### 2. contributor / maintenance
(merger 分布)

### 3. actual liveness
(commits / releases)

複数 repo なら、上記の各セクションに repo 列を並べた表で出す。

Output format (default mode)

単一 repo:

### usebruno/bruno
- 軸 1 (org meta): single-product / members 3 / repo age 3.5 年 → 注意
- 軸 2 (cadence): pushed 今日 / 30d 83 commits / 週次 release → 健全
- 軸 3 (merger 分布): top 1 人で 87% (n=100) → 危険

総合: 活発だが merge 権限が 1 人寡占。fork 維持の覚悟がない採用は避けたい。

軸 1 の age 表示は repo_created_at を基準にする。owner_created_at は分類 判定の補助で、output には基本出さない (account 年齢と project 年齢が大きく乖 離してて言及する価値があるときだけ書く)。

複数 repo: 上記ブロックを順に並べる。1 枚 table に詰めると軸の rating が読み にくくなるので、ブロック並列にする。

Scope 外

  • private repo
  • GitHub 以外の forge (GitLab / Codeberg / sourcehut) — 将来拡張
  • 主観評価 (コードの質、community 文化)

依存

  • gh CLI (auth 済み)
  • jq
  • date (BSD / GNU いずれでも動く。script 側で -v-30d-d '30 days ago' を fallback している)

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.