mcpField
L
ln-911-github-triager

ln-911-github-triager

github.com/levnikolaevich開発584187 回インストール2 日前に更新
リポジトリ

ln-911-github-triager について

ln-911-github-triagerは、メンテナー向けにGitHubのオープンなIssue、プルリクエスト、ディスカッションを確認する独立型スキルです。優先度分類とコミュニティ活動指標の集計に対応し、対象範囲や停滞期間を指定できます。

主な機能

  1. 01オープンなIssue、プルリクエスト、ディスカッションの取得
  2. 02項目の優先度分類
  3. 03コミュニティ活動指標の集計
  4. 04対象範囲と停滞期間の設定
  5. 05読み取り専用のトリアージレポート

活用シーン

  1. 01GitHubの各種未処理項目の確認
  2. 02未回答のディスカッションや未レビューのプルリクエストの発見
  3. 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 でスコープと経過日数のしきい値を指定します。

トークン効果デフォルト
issuesIssue のみをスキャン3 種類すべて
prsPR のみをスキャン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 UrgentanswerChosenAt が null で、作成者がメンテナーではない Q&A ディスカッションDiscussions
P1 UrgentreviewDecision が null または REVIEW_REQUIREDPRs
P2 Staleしきい値を超えて活動がない(updatedAt がしきい値より古い)すべて
P3 MonitorPR がドラフトとしてマークされている(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
未返信のディスカッション作成者 != メンテナー、メンテナーコメントなし、かつ経過時間 > しきい値である項目の数07 日を超える項目が 1 件以上
コミュニティとメンテナーの比率すべての項目における、メンテナー以外のコメント数 / メンテナーのコメント数>0.30
今月の新しいディスカッション過去 30 日間に作成されたディスカッション数>20
エンゲージメントがゼロの項目コメント総数が 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

コメント