better-github-skill について
GitHub CLI を使うエージェント向けのスキルで、Pull Request の状態、レビューのやり取り、CI の失敗情報をスクリプトで集約します。繰り返し発生しやすい操作ミスを扱いつつ、既知の操作には gh コマンドを直接使います。
主な機能
- 01PR の状態とチェックを一括表示
- 02レビューのやり取りと未解決スレッドを確認
- 03失敗した CI のジョブ、ステップ、ログを特定
- 04JSON 出力と使用方法の表示
- 05既知の操作では gh を直接使用
活用シーン
- 01現在のブランチに対応する PR の確認
- 02レビュー意見と未解決の議論の把握
- 03CI の失敗箇所を特定してログを調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ avgvstvs96/ better-github-skill --skill better-github-skillインストール後、Claude Code で/better-github-skillを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdLICENSEscripts/lib.tspr-snapshot.tspr-threads.tsci-failures.ts詳細
better-github-skill
コマンドが分かっている場合は、まず生の gh を使ってください。スクリプトは、エージェントが繰り返し間違えるフローだけを置き換えます。スクリプトは TS を直接実行し(node ≥ 23.6)、依存関係はありません。
スクリプト
| スクリプト | 用途 |
|---|---|
scripts/pr-snapshot.ts [pr] [-R o/r] | 1 回の呼び出しで PR の全状態を取得します。メタ情報、マージ可能性、チェック、ファイル、レビュー、コメント、スレッド数が含まれます。pr view --json のフィールドを手作業で組み立てたり、view/checks/comments の呼び出しを連結したりする代わりに使ってください。 |
scripts/pr-threads.ts [pr] [-R o/r] [--all] [--author X] [--since ISO] | レビューの会話全体を取得します。レビュー本文、Issue コメント、未解決のインラインスレッド(gh では取得できない解決状態)を含みます。解決済み/古いスレッドはデフォルトで非表示になり、ヘッダーに件数が表示されます。--all を指定すると、それらも含まれます。読み取り専用です。明示的な指示がない限り、スレッドへの返信や解決はしないでください。 |
scripts/ci-failures.ts [run-id] [--pr N] [--list] [-R o/r] | 失敗したチェック → 失敗したジョブ/ステップ → 各ログの抜粋を表示します。完全なログはファイルに保存され(パスが表示されます)、再取得する代わりに rg で検索できます。--list [--workflow W] [-L n] は結論付きの最近の実行を表示します。gh run list --json のフィールドを組み立てる代わりに、これを使って失敗した実行 ID を見つけてください。 |
経験則:pr-snapshot は「この PR の状態はどうなっているか」に答え、pr-threads は「レビュー担当者は何を書いたか」に答えます。どちらも、もう一方の代わりにはなりません。
すべてのスクリプトで、構造化出力には --json、使い方(--json の形式を含む)の確認には --help を指定します。PR 番号を省略すると、現在のブランチの PR が使われます。デフォルトの出力はコンテキストに合わせたサイズです。必要な情報が切り詰め表示([…+N chars])で隠れている場合にのみ、--full を指定してください。CI が赤、またはスレッドが未解決でも、レポートの取得に成功すれば終了コードは 0 です。
注意点(いずれも、実際のセッションで何度も問題になりました)
ghをheadにパイプしないでください。SIGPIPE によって書き込み途中で gh が終了する(誤った非ゼロ終了、シェルに依存)場合や、大きな出力が黙って切り詰められる場合があります。 ファイルにリダイレクトして読み取るか、--jq '.[0:20]'で絞り込んでください。gh pr diffに--statや正のパス指定はありません(--name-onlyと-e/--excludeの glob は gh ≥ 2.95 で利用できます)。ファイルごとの統計:gh api 'repos/{owner}/{repo}/pulls/N/files' --jq '.[]|[.filename,.additions,.deletions]|@tsv'差分全体:gh pr diff N > "$TMPDIR/pr.diff"を一度実行し、その後はファイルを rg/sed で検索してください。gh pr checksは、失敗時は 1、保留中は仕様上 8 で終了します。|| trueを付けて、表を確認してください。- 任意の ref にあるファイルを取得する際、base64 の処理は不要です:
gh api 'repos/{owner}/{repo}/contents/PATH?ref=SHA' -H 'Accept: application/vnd.github.raw' gh apiは cwd のリポジトリから{owner}/{repo}を補います(GH_REPO=o/rで上書きできます)。?を含む api パスは引用符で囲んでください(zsh では glob として扱われます)。または-X GET -F per_page=100を使ってください(-X GETがないと、-f/-Fはリクエストを黙って POST に切り替えます)。- リストのエンドポイント(
/comments、/files、/reviews)では--paginateを指定してください。--jqはページごとに実行されるため、--slurpは追加しないでください。 - PR/コメントの本文には、
--body-file file.mdまたは引用符で囲んだヒアドキュメントを使ってください。バッククォートを含む--body "..."をインラインで指定しないでください。 - フィールドの早見表:PR の CI ステータス =
statusCheckRollup(pr view);ステップはgh run view N --json jobs配下にあります;gh search prsのフィールドはgh pr viewのフィールドとは異なります。 - gh に
-Cはありません。すべてのコマンドに-R owner/repoを渡すか、先に cd してください。 - 最近のリポジトリでは、ブランチルールは
gh api 'repos/{owner}/{repo}/rulesets'にあります。/branches/main/protectionは、従来の保護が有効で、かつ管理者権限がある場合を除き 404 になります("Branch not protected" と単なる "Not Found" のどちらも、パスのエラーではなく rulesets を確認する必要があることを意味します)。 - ブランチの差分:
gh api 'repos/{owner}/{repo}/compare/BASE...HEAD' --jq '{ahead_by,behind_by}' - 1 行を超える jq の処理では、プログラムをファイルに書き込み、
jq -f prog.jqを使ってください。zsh ではインラインの引用符処理が壊れます。 - 実行やチェックを sleep でポーリングしないでください。
gh run watch IDとgh pr checks N --watch --fail-fastが使えます。ハーネスにバックグラウンドで実行させてください。
コメント
Markdown 対応