ln-911-github-triager について
ln-911-github-triagerは、メンテナー向けにGitHubのオープンなIssue、プルリクエスト、ディスカッションを確認する独立型スキルです。優先度分類とコミュニティ活動指標の集計に対応し、対象範囲や停滞期間を指定できます。
主な機能
- 01オープンなIssue、プルリクエスト、ディスカッションの取得
- 02項目の優先度分類
- 03コミュニティ活動指標の集計
- 04対象範囲と停滞期間の設定
- 05読み取り専用のトリアージレポート
活用シーン
- 01GitHubの各種未処理項目の確認
- 02未回答のディスカッションや未レビューのプルリクエストの発見
- 03応答時間とコミュニティ活動の追跡
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ levnikolaevich/ claude-code-skills --skill ln-911-github-triagerインストール後、Claude Code で/ln-911-github-triagerを入力して読み込まれたか確認します。
同梱ファイルreferences/community_github_discovery.mdreferences/community_strategy_template.md
詳細
パス: ファイルパス(
references/、../ln-*)は、このスキルディレクトリからの相対パスです。
ln-911-github-triager
タイプ: L3 ワーカー(単独) カテゴリ: 9XX コミュニティエンゲージメント 実行方法: 単独、またはより広範なコミュニティのトリアージワークフローの一部として実行
現在のリポジトリにあるすべてのオープンな Issue、PR、ディスカッションをスキャンします。緊急度別に分類し、実行可能なトリアージレポートを作成します。
引数
$ARGUMENTS でスコープと経過日数のしきい値を指定します。
| トークン | 効果 | デフォルト |
|---|---|---|
issues | Issue のみをスキャン | 3 種類すべて |
prs | PR のみをスキャン | 3 種類すべて |
discussions | ディスカッションのみをスキャン | 3 種類すべて |
数値(例:14) | 経過日数のしきい値 | 7 |
issues 30 | スコープとしきい値を組み合わせ | -- |
summary | コーディネーター向けの簡潔な出力:Phase 4 のプレビューを省略し、注意事項、優先度別件数、メトリクスのみを返す | 完全な対話型レポート |
$ARGUMENTS を解析し、スコープトークン(issues、prs、discussions)、数値のしきい値、summary フラグを抽出します。スコープトークンがない場合は、3 種類すべてをスキャンします。数値がない場合は、デフォルトの 7 日間を使用します。
Phase 0: GitHub の検出
必須の読み込み: references/community_github_discovery.md を読み込みます。
検出プロトコルを実行し、以下を抽出します。
--repoフラグと URL に使う{owner}/{repo}- メンテナーの検出に使う
maintainerのログイン名(認証済みユーザー) ghが認証済みであることを確認
戦略の読み込み先:対象プロジェクトの docs/community_engagement_strategy.md を確認し、存在しない場合は references/community_strategy_template.md を使用します。セクション 5(エンゲージメントメトリクス)から、目標と注意事項を抽出します。
Phase 1: データの取得
スコープに応じて、以下の gh コマンドを実行します。該当するデータ取得はすべて並行して実行します。
1a. Issues
gh issue list --repo {owner}/{repo} --state open --limit 100 --json number,title,labels,createdAt,updatedAt,author,comments,assignees
1b. Pull Requests
gh pr list --repo {owner}/{repo} --state open --limit 100 --json number,title,labels,createdAt,updatedAt,author,reviewDecision,reviewRequests,isDraft,comments,assignees
1c. Discussions(GraphQL)
gh api graphql -f query='
query($owner: String!, $name: String!) {
repository(owner: $owner, name: $name) {
discussions(first: 100, states: OPEN) {
nodes {
number
title
category { name }
createdAt
updatedAt
author { login }
answerChosenAt
labels(first: 5) { nodes { name } }
comments(first: 20) {
totalCount
nodes {
author { login }
createdAt
}
}
}
}
}
}
' -f owner="{owner}" -f name="{repo}"
判定: すべてのソースから取得した項目が 0 件の場合は、「オープンな項目はありません。トリアージが完了しました。」と報告して終了します。
Phase 2: 各項目の分類
取得した項目すべてについて、以下の条件を評価します。1 つの項目が複数の条件に該当する場合は、最も高い優先度を適用します。
優先度マトリックス
| 優先度 | 条件 | 対象 |
|---|---|---|
| P0 Critical | ラベルに bug が含まれ、担当者がいない | Issues |
| P0 Critical | ラベルに breaking が含まれる | Issues、PRs |
| P1 Urgent | 作成者がメンテナーではなく、メンテナーによるコメントが 0 件 | Issues、Discussions |
| P1 Urgent | answerChosenAt が null で、作成者がメンテナーではない Q&A ディスカッション | Discussions |
| P1 Urgent | reviewDecision が null または REVIEW_REQUIRED | PRs |
| P2 Stale | しきい値を超えて活動がない(updatedAt がしきい値より古い) | すべて |
| P3 Monitor | PR がドラフトとしてマークされている(isDraft が true) | PRs |
| P3 Monitor | 作成者がメンテナーで、コミュニティからの返信が 0 件 | Discussions |
| P4 Info | 上記のどの条件にも該当しない項目 | すべて |
メンテナーの検出
メンテナーのログイン名は、Phase 0 の検出結果(viewer.login)から取得します。コメントの author.login がメンテナーのログイン名と一致する場合、その項目には「メンテナーからの返信がある」と判定します。
Issue では、comments 配列内の作成者を確認します。ディスカッションでは、comments.nodes[].author.login を確認します。
経過日数の計算
最終活動からの日数:(today - updatedAt) を日数で計算します。しきい値(デフォルトは 7 日、または $ARGUMENTS で指定された値)と比較します。
優先度を示すラベル
優先度を引き上げるラベル:bug、breaking、security、urgent。
エンゲージメントの機会を示すラベル(緊急性は示しません):help wanted、good first issue。
フェーズ 3:エンゲージメント指標
戦略のセクション 5 に従って、戦略ごとの集計指標を計算します。
| 指標 | 計算方法 | 目標 | 注意が必要な値 |
|---|---|---|---|
| 最初の返信までの時間 | 返信がある項目について、(最初のメンテナーコメント − 項目の作成日時)の平均 | <24h | >72h |
| 未返信のディスカッション | 作成者 != メンテナー、メンテナーコメントなし、かつ経過時間 > しきい値である項目の数 | 0 | 7 日を超える項目が 1 件以上 |
| コミュニティとメンテナーの比率 | すべての項目における、メンテナー以外のコメント数 / メンテナーのコメント数 | >0.3 | 0 |
| 今月の新しいディスカッション | 過去 30 日間に作成されたディスカッション数 | >2 | 0 |
| エンゲージメントがゼロの項目 | コメント総数が 0 件の項目 | -- | -- |
フェーズ 4:プレビュー表
$ARGUMENTS に summary が含まれる場合 → このフェーズ全体をスキップします。簡潔なサマリー(注意が必要な値、カテゴリごとの優先度別件数、健全性指標の表)を出力して終了します。フェーズ 5 の完全なレポートは作成しないでください。
それ以外(単独モード): 分類済みの全項目をまとめた簡潔なサマリー表を提示し、ユーザーに確認してもらいます。フェーズ 5 に進む前に、ユーザーの承認を待ってください。
### Triage Preview -- {total count} items found
| # | Type | Title | Priority | Age | Key Signal |
|---|------|-------|----------|-----|------------|
| {number} | {Issue/PR/Discussion} | {title (truncated to 50 chars)} | {P0/P1/P2/P3/P4} | {days}d | {short reason} |
優先度順(P0 が先)に並べ、各優先度グループ内では経過日数順(古いものから)に並べます。
提示後、ユーザーに以下を確認します。
- 優先度が正しいか
- 完全なレポートから除外する項目があるか
- 滞留のしきい値を変更するか
ユーザーの確認後にのみ、フェーズ 5 に進んでください。
フェーズ 5:レポートの作成
以下の形式でトリアージレポート全体を提示します。
## GitHub Triage Report -- {YYYY-MM-DD}
**Scope:** {issues/PRs/discussions or "all"} | **Threshold:** {N} days | **Open items:** {total count}
注意が必要な値のアラート
フェーズ 3 で注意が必要な値が検出された場合は、健全性指標の前に以下を追加します。
> [!WARNING]
> **Red flags detected:**
> - {description, e.g., "2 unanswered discussions older than 7 days"}
健全性指標の表
| Metric | Value | Target | Status |
|--------|-------|--------|--------|
| Unanswered (>{N}d) | {count} | 0 | {OK / RED FLAG} |
| Avg first response | {hours}h | <24h | {OK / RED FLAG} |
| Community:maintainer ratio | {ratio} | >0.3 | {OK / RED FLAG} |
| New discussions (30d) | {count} | >2 | {OK / RED FLAG} |
| Zero-engagement items | {count} | -- | {count} |
優先度別の表
優先度 P0~P3 ごとに、件数を付けた見出しを表示します。件数が 0 の場合は見出しに (0) を表示し、表は省略します。
P0 クリティカル:
| # | 種類 | タイトル | ラベル | 経過日数 | 必要な対応 |
|---|
P1 緊急:
| # | 種類 | タイトル | 作成者 | 経過日数 | 理由 |
|---|
P2 滞留:
| # | 種類 | タイトル | 最終アクティビティ | 滞留日数 |
|---|
P3 監視:
| # | 種類 | タイトル | メモ |
|---|
P4 情報: 個別に列挙しないでください。合計件数にのみ含めます。
推奨アクション
### Recommended Actions
1. **Respond:** {items needing maintainer reply, with GitHub URLs}
2. **Review:** {PRs needing review, with GitHub URLs}
3. **Close or bump:** {stale items -- suggest close if resolved, bump if relevant}
4. **Engage:** {items that could benefit from community call-to-action}
書式ルール
- 各優先度グループ内では、項目を経過日数順(古いものから)に並べます
- URL 形式:
https://github.com/{owner}/{repo}/{issues|discussions|pull}/{number} - 日付は
YYYY-MM-DD、経過日数は日数で表示します - 推奨アクションのすべての項目に、GitHub への直接リンクを付けます
ルール
- 読み取り専用: このスキルはデータを取得して報告するだけです。GitHub の項目を作成、変更、クローズしないでください
- 公開禁止: Issue、コメント、ラベルなど、GitHub の状態を変更するものを作成しないでください
- メンテナーのログイン名: フェーズ 0 の情報収集で取得した認証済みユーザー
- デフォルトのしきい値: 7 日(戦略のセクション 5 に従う)
- レート制限: GraphQL のレート制限に達した場合は、警告を添えて一部の結果を報告します
完了の定義
- 対象範囲内のすべての項目タイプ(issues/PR/ディスカッション)の GitHub データを取得済み
- すべての項目を優先度(P0~P4)で分類済み
- 戦略の目標に従ってエンゲージメント指標を計算済み
- レポートを作成済み(対話型の完全なレポート、またはコーディネーター向けの簡潔なサマリー)
バージョン: 1.0.0 最終更新日: 2026-03-13