setup-github-labels について
setup-github-labelsは、GitHubのラベル体系を統一し、エージェント向けの説明を整備するメンテナー向けスキルです。labels.jsonでラベルと改名履歴を管理し、適用前に変更をプレビューして確認を求めます。
主な機能
- 01マニフェストによるラベル定義
- 02IssueのトリアージとPR判定の分類
- 03適用前のラベル変更プレビュー
- 04ラベルの改名・作成・更新
- 05エージェント向けルールの文書化
活用シーン
- 01GitHubリポジトリへのラベル設定
- 02複数リポジトリ間でのラベル統一
- 03履歴を保ったラベル名の更新
- 04トリアージとPR判定の規約記録
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ wkentaro/ agent-skills --skill setup-github-labelsインストール後、Claude Code で/setup-github-labelsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
labels.jsonRATIONALE.mdagents/openai.yamlevals/evals.json詳細
GitHub ラベルを設定する
このリポジトリに1つのラベル語彙を適用し、その意味をエージェント向けに記録します。このスキルディレクトリの labels.json が唯一の信頼できる情報源です。各ラベルの名前、色、説明、適用範囲、改名前の名前を記載しています。セットを変更する場合に限り、RATIONALE.md を読みます。
ラベルは4つのグループに分かれています。接頭辞は、ラベルが適用される対象を示します。
| グループ | ラベル |
|---|---|
| Issue の種類 | type:bug、type:feature、type:task |
| Issue のトリアージ状態 | needs-triage、needs-info、ready-for-agent、ready-for-human、wontfix |
| エージェントによる PR の判定 | recommend-merge、recommend-close、recommend-triage、recommend-revise |
| メンテナーによる PR の判定 | maintainer-approved |
ラベルが表すルール:
- トリアージ済みの Issue には、
type:ラベルがちょうど1つ、トリアージ状態が1つ付与されます。ラベルのない Issue は未トリアージです。needs-triageは評価中であることを示します。 - 判定が付いていないドラフトではない PR は、エージェントが最終判断を行います。ドラフトフラグが「まだ作成中」の状態を示すため、その状態を表すラベルはありません。
- エージェントは、各 head に対して
recommend-*の判定を最大1つ付与します。recommend-reviseは PR を作成者に戻し、残りの3つはメンテナーに渡します。 - 判定は推奨です。エージェントがマージしたり、クローズしたりすることはありません。
recommend-mergeをready-to-mergeに改名しないでください。マージボットはその文字列を監視しています。 maintainer-approvedは、メンテナーから明示的な指示があった場合にのみ設定し、recommend-*ラベルと併用できます。- 新しい push があると、すべての判定が古くなります。判定を設定した権限者がそれを解除し、更新します。
手順
1. リポジトリを検出する
REPO=$(gh repo view --json nameWithOwner -q .nameWithOwner)
失敗した場合は、対象とするリポジトリをユーザーに確認します。
2. プレビューする
マニフェストとリポジトリを比較し、実行内容をユーザーに提示します。
gh label list --repo "$REPO" --limit 200 --json name -q '.[].name' | sort > /tmp/have
jq -r '.[].name' labels.json | sort > /tmp/want
jq -r '.[] | select(.renamed_from) | .renamed_from' labels.json | sort > /tmp/old
comm -13 /tmp/have /tmp/want # will be created (or renamed into, if the old name is present)
comm -12 /tmp/have /tmp/want # will have color/description updated
comm -12 /tmp/have /tmp/old # will be renamed
さらに、docs/agents/triage-labels.md とルートの AGENTS.md を確認し、それぞれを作成、更新、または変更せずに残すのかを伝えます。適用するかどうかをユーザーに明示的に尋ねて、プレビューを終えます。
3. 確認してから適用する
公開されていることの多いリポジトリでラベルを作成するのは、外部に影響を及ぼす操作です。まずプレビュー全体をユーザーに確認してもらいます。その後、マニフェストを実行します。ラベルの履歴を引き継げるよう、改名を先に行い、その後 --force で作成またはその場で更新します。
jq -c '.[]' labels.json | while read -r label; do
name=$(jq -r .name <<<"$label")
old=$(jq -r '.renamed_from // empty' <<<"$label")
if [ -n "$old" ] && [ "$old" != "$name" ]; then
gh label edit "$old" --name "$name" --repo "$REPO" 2>/dev/null || true
fi
gh label create "$name" \
--color "$(jq -r .color <<<"$label")" \
--description "$(jq -r .scope <<<"$label"): $(jq -r .description <<<"$label")" \
--force --repo "$REPO"
done
別の $REPO でも繰り返し、複数のリポジトリを設定します。
4. ルールを記録する
docs/agents/triage-labels.md を作成または更新します。このファイルは、/triage と PR スキルが役割名をラベル文字列に対応付けるために参照するアダプターです。そのため、以下を含める必要があります。
/triageの各役割(bug、enhancement、needs-triage、needs-info、ready-for-agent、ready-for-human、wontfix)につき1行、Issue 用と PR 用のラベル列を1列ずつ持つ表。RATIONALE.md の対応付けに従うこと。- このファイルの冒頭にあるルール。
- すでにファイルに記載されている、リポジトリ固有のラベルや上書き設定(保持すること)。
次に、Issue のトリアージや PR の判定に言及している箇所で、ルートの AGENTS.md がこのファイルを参照していることを確認します。参照だけを最小限追加し、ルール自体はコピーしないでください。
5. 報告する
改名、更新、作成の3つに分け、それぞれのラベル名を記載します。該当するラベルがない区分には「なし」と記載し、どのドキュメントを作成または更新したかも報告します。マニフェストにないリポジトリ上のラベルはそのまま残します。ユーザーが削除を希望する場合は、ラベルを削除するとすべての Issue と PR からそのラベルが外れるため、意図的な手順として実行します。
gh label delete "<name>" --repo "$REPO" --yes
セットの変更
labels.json を編集します。ラベル名を変更するには、name を変更し、renamed_from に以前の文字列を設定します。すべてのリポジトリで移行が完了したら、renamed_from を削除してください。セットは小さく保ちます。新しいラベルは、タイトル、差分、または既存のラベルにはない情報を持つ必要があります。その理由を RATIONALE.md に記録し、役割のマッピングが変わる場合はステップ 4 のコントラクトテンプレートを更新してください。