cc-pr-tracker:Claude Code の PR ステータスをプロンプトの上に表示
GitHub の PR ごとに 1 行を Claude Code のプロンプトの上に表示します。マージ状態、レビュー、必須チェック、変化時の通知付き。
権限
- ファイルを読み取るお使いのマシン上のファイルの読み取りやディレクトリの一覧取得ができます($.fs.read / list / stat / exists)。
- コマンドを実行お使いのマシン上でシェルのプログラムを実行できます($.process.run / spawn)。具体的に何を実行するかはソースで確認してください。
- ツール呼び出しを傍受Claude が行うすべてのツール呼び出しを参照でき(tool.call / tool.check)、ブロックや変更も可能です。
- プロンプトを読み取る入力内容と会話のトランスクリプトを参照できます(prompt.* / session.append / session.messages)。
- UI を変更Claude Code の画面に描画します。バンド、ペイン、ステータス表示、トーストなど(ui.render / $.ui.*)。
- コマンド・ツールを追加あなたや Claude が呼び出せる新しいスラッシュコマンドやツールを登録します($.command.register / $.tool.register)。
- データを保存プラグイン専用のストアにセッションをまたいでデータを保持します($.store.*)。
- 検証バージョン
- v2.1.296
- 最終検証日
- 必要バージョン
- Claude Code ≥ 2.1.287
- 表示先
- プロンプト上部、トースト
Claude Code 内でインストール:
/plugin install cc-pr-tracker --marketplace sezaakgun/cc-pr-trackerこのModでできること
cc-pr-tracker は、Seza Akgün(sezaakgun)によるコミュニティ Mod で、作業中も Claude Code の PR ステータスを常に目に入る場所に表示してくれます。GitHub のプルリクエストの URL を貼り付けるか、Claude に PR を作成させると、その PR がプロンプトの上に 1 行で表示されます。内容は、マージ状態、レビューの判定、必須チェックのうち成功・失敗・保留中の件数、そしてタイトルです。デフォルトでは 1 分ごとに更新されます。
必須チェックの結果が変わったり、マージ状態が変化したりすると、トースト、プロンプトの上で 1 秒間光る帯、そして macOS ではシステムサウンドで知らせてくれます。Claude にも次のターンで、失敗したチェックのログへのリンクを含む短い自動メモが届きます。行にカーソルを合わせると、PR を開く、URL をコピーする、ミュートする、詳細パネルを表示する、監視をやめる、といったボタンが表示されます。Claude は pr_status ツールを通じて自分でステータスを問い合わせることができ、/prs を使えば監視中の PR をどこでもテキストとして出力できます。
ローカルのブランチを表示する プロンプト上の Git ブランチ表示 に近いものですが、こちらは作業ツリーではなく GitHub を見ています。単純な「ターンが終わった」というトーストが欲しい場合は 完了トースト を参照してください。作者の README によると、すべての機能を使うには Claude Code 2.1.289 以降が必要です。それより古いビルドでは、監視リストはメモリ上にしか保持されません。
デモ
録画では、作者自身が用意した代替の gh スクリプト(リポジトリ内の docs/record/gh)を使っています。このスクリプトは Mod の GraphQL 呼び出しにあらかじめ用意した JSON で応答するため、実際の GitHub リポジトリには一切問い合わせません。小さなデモプロジェクトでこの Mod を読み込んだ Claude Code を起動し、2 つの PR の URL(acme/api#87 と acme/storefront#418)を 1 つのプロンプトとして貼り付けます。モデルのターンは実行されません。Claude Code には "Prompt dropped by a hook: watching acme/api#87, watching acme/storefront#418" と表示され、プロンプトの上に 2 行が現れます。各行には、リポジトリと番号、赤い blocked、緑の approved、緑のチェック成功数、黄色の保留中件数、そして PR のタイトルが並びます。
インストール
インストールブロックのいずれかの方法を使ってください。どれも作者自身のマーケットプレイスから直接インストールします。加えて、gh がインストールされ、ログイン済みである必要があります(gh auth status で確認できます)。クローンしたリポジトリで 1 セッションだけ試したい場合は、リポジトリ内で claude --plugin-dir . を実行してください。Mod が有効になっているかは /plugin で確認できます。
$ install cc-pr-tracker
Claude Code 2.1.287 以上が必要
作者のマーケットプレイスからインストール: sezaakgun/cc-pr-tracker
1.Claude Code 内で1行
/plugin install cc-pr-tracker --marketplace sezaakgun/cc-pr-tracker実行中のセッション(v2.1.275 以降)に貼り付けます。最初に Claude Code がマーケットプレイスの追加を確認します。
2.シェルから
claude plugin marketplace add sezaakgun/cc-pr-tracker claude plugin install cc-pr-tracker@cc-pr-trackerその後、すでに開いているセッションでは /reload-plugins を実行してください。
3.インストールせずに試す
git clone https://github.com/sezaakgun/cc-pr-tracker claude --plugin-dir ./cc-pr-trackerその1セッションだけ Mod を読み込みます。設定には何も追加されません。
仕組み
プラグインは 1 つのフックモジュールでできています。prompt.submit がプロンプトから PR の URL を読み取り、turn.complete と Bash に対する tool.call フックが、Claude の回答と gh pr create の出力に含まれる URL を拾い、AbovePrompt に対する ui.render が行を描画します。session.start で開始されるタイマーが、監視中のすべての PR を gh 経由でポーリングします。以下は hooks/register.tsx にあるその呼び出し部分です。
const gh = async (args: string[]) => {
const { stdout, stderr, exitCode } = await $.process.run(['gh', ...args], { timeoutMs: 30_000 })
if (exitCode) throw new Error(stderr.trim() || `gh exited ${exitCode}`)
return JSON.parse(stdout)
}ポーリングは 1 回につき、読み取り専用の gh api graphql クエリを 1 回実行し、PR のタイトル、状態、マージ状態、レビューの判定、そしてヘッドコミットに対するチェックを、GitHub 自身の isRequired フラグとともに取得します。各チェックは最新の実行結果だけが残され、gh pr checks と同じ区分で分類されます。GitHub が GraphQL を拒否する場合(claude.ai/code がそうです)、Mod はポーリング 1 回あたり 4〜6 回の REST 呼び出しに切り替えます。ポーリングが失敗した場合は以前の値を保持したまま行に refresh failed と表示するため、ネットワークの一時的な不調が変化として報告されることはありません。PR を初めて読み込んだときや、一時的な unknown マージ状態に入ったり出たりしたときには、通知は発生しません。
カスタマイズ
/config を開き、cc-pr-tracker の行を探してください。各項目は /config cc-pr-tracker.<field>=<value> でも設定でき、即座に反映されます。12 個のオプションは次のとおりです。Mute all PR alerts(すべての PR 通知をミュート)、Alert on(すべての変化、失敗とマージ可能、または失敗のみ)、Tell Claude about changes(変化を Claude に伝える)、Alert sound(通知音)、Poll every(ポーリング間隔、秒)、Auto-watch PRs(PR を自動で監視)、Remember watched PRs(監視中の PR をこのセッションまたはこのプロジェクトで記憶)、Stop watching merged or closed PRs(マージ済み・クローズ済みの PR の監視を停止)、Count all checks(すべてのチェックを数える)、Alert on review changes(レビューの変化で通知)、Flash strip(帯を光らせる)、Show PRs in the transcript(トランスクリプトに PR を表示)。行のホバーボタンを使えば、PR 1 件だけをミュートしたり監視をやめたりできます。
権限と安全性
私たちは、プラグインが読み込むすべてのファイルを読みました。.claude-plugin/plugin.json、hooks/hooks.json、hooks/register.tsx(約 740 行の読みやすい TypeScript)、型宣言、2 つのテストファイル、さらにリポジトリのヘルパースクリプトとワークフローです。package.json、インストールスクリプト、バンドルや圧縮されたコード、リモートのコード、動的な import() はありません。docs/record/ のスクリプトは README の画像を作るためだけのもので、プラグインからは読み込まれません。
確認結果は以下のとおりで、すべて README の記述と一致しています。
- ネットワーク: Mod 自身はリクエストを送りません。監視中の PR について
gh api graphql(REST の場合はgh api repos/...)を実行するため、オーナー、リポジトリ、PR 番号が、あなたのghのログインで github.com に送られます。 - プロセス: ポーリングには
gh、開くボタンにはopenまたはxdg-open、通知時には macOS のシステムサウンドを再生するafplayを使います。また cmux ターミナル内でのみ、ペインを光らせて通知を送るために、CMUX_BUNDLED_CLI_PATHが指す cmux 自身の CLI を実行します。引数はシェル文字列ではなく配列として渡されます。 - 環境変数: 読み取るのは
CMUX_BUNDLED_CLI_PATHとCMUX_SURFACE_IDだけです。環境変数を書き換えることはありません。 - ファイル: ファイルは書き込みません。監視リストはプラグイン専用の
$.storeと$.stateに、セッションまたはプロジェクトごとに保存されます。30 日間ポーリングされなかったリストは削除されます。 - プロンプトへの影響: 通知の後、user ロールのメモを会話に追加します。メモには、あなたが書いたものではない自動通知であることが明記され、GitHub から取得したチェック名はデータとして引用され、100 文字に制限されます。GitHub のテキストに含まれる制御文字は表示前に除去されます。このメモは "Tell Claude about changes" でオフにできます。また、Claude 向けに
pr_statusツールを登録します。 - プロンプトを止めるフック: PR の URL だけからなるプロンプトは破棄されます(モデルのターンは実行されません)。これはドキュメントに記載された動作です。それより長いプロンプトはそのまま通過します。
Bashフックはgh pr createの出力を読むだけです。 - 常駐プロセスとテレメトリ: どちらもありません。ポーリングのタイマーは Claude Code の中で動き、Claude Code とともに停止します。アナリティクスもありません。
- 必要なもの: ログイン済みの
gh。通知音には macOS が必要で、cmux は任意です。 - ライセンス: MIT。LICENSE ファイルがあります。
claude plugin validate はエラーも警告も報告しませんでした。注記には .catch のない 4 つのフック(config.set、prompt.submit、2 つの tool.call フック)が挙げられていますが、これは参考情報です。作者の 70 件のテストは Claude Code 2.1.296 ですべて成功しました。
- ファイルを読み取る
- お使いのマシン上のファイルの読み取りやディレクトリの一覧取得ができます($.fs.read / list / stat / exists)。
- コマンドを実行
- お使いのマシン上でシェルのプログラムを実行できます($.process.run / spawn)。具体的に何を実行するかはソースで確認してください。
- ツール呼び出しを傍受
- Claude が行うすべてのツール呼び出しを参照でき(tool.call / tool.check)、ブロックや変更も可能です。
- プロンプトを読み取る
- 入力内容と会話のトランスクリプトを参照できます(prompt.* / session.append / session.messages)。
- UI を変更
- Claude Code の画面に描画します。バンド、ペイン、ステータス表示、トーストなど(ui.render / $.ui.*)。
- コマンド・ツールを追加
- あなたや Claude が呼び出せる新しいスラッシュコマンドやツールを登録します($.command.register / $.tool.register)。
- データを保存
- プラグイン専用のストアにセッションをまたいでデータを保持します($.store.*)。
互換性とトラブルシューティング
macOS 上の Claude Code 2.1.296 で確認しました(validate、テスト、録画)。うまく動かない場合は、次を確認してください。
- URL がモデルに送られてしまう。 Mod が読み込まれていません。
claude --versionが 2.1.287 以降であること、そして/pluginの有効な Mod の一覧に cc-pr-tracker があることを確認してください。 - 行に
gh failed: …と表示される。 ターミナルでgh pr view <url>を実行してください。たいていはghがログインしていないか、そのリポジトリにアクセスできないことが原因です。 - ホバーボタンが出ない。 お使いのターミナルがマウス操作を報告していません。もう一度 URL を貼り付けて監視をやめるか、
/prsを使ってください。 - 通知音が鳴らない。 音が鳴るのは
/System/Library/Soundsがある macOS だけです。 - 認識されるのは
github.comの URL だけです。GitHub Enterprise のホストには対応していません。
よくある質問
- cc-pr-tracker には GitHub のトークンや API キーが必要ですか?
- 監視するリポジトリにアクセスできるアカウントでログイン済みの GitHub CLI(gh)が必要です。Mod 自身はトークンを持たず、ポーリングのたびに gh を実行するため、何が見えるかは gh 自身のログインで決まります。
- ポーリングの頻度は?モデルのトークンは消費しますか?
- デフォルトでは 60 秒ごとに、PR 1 件につき gh 経由の GraphQL 呼び出しを 1 回行います。間隔は /config で 30〜3600 秒の範囲で設定できます。ポーリングではモデルを呼び出しません。通知が発生したときだけ、Claude が次のターンで読む短いメモが追加されます。
- PR の URL を貼り付けたらプロンプトが消えたのはなぜですか?
- PR の URL だけからなるプロンプトは Mod によって破棄され、その PR の監視を開始(または停止)します。モデルのターンは実行されません。Claude Code には "Prompt dropped by a hook: watching owner/repo#N" と表示されます。長いプロンプトの中に含まれる URL は監視対象になり、プロンプトはそのまま実行されます。
- Claude は PR のステータスを見られますか?
- はい。Mod は pr_status ツールを登録するので、Claude は gh を呼び出す代わりに、監視中の PR の状態、マージ状態、レビュー、チェックを問い合わせられます。通知の後には、あなたが書いたものではないと明記した自動メモも追加され、失敗したチェックのログへのリンクが含まれます。
- 通知をオフにするには?
- PR 1 件だけなら、行にカーソルを合わせてミュートを押してください。すべてなら /config で "Mute all PR alerts" をオンにします。行の更新は続きますが、トースト、フラッシュ、通知音、Claude へのメモはすべて止まります。"Alert sound"、"Flash strip"、"Tell Claude about changes" で個別の要素だけをオフにすることもできます。
# 関連する Mod
おすすめプロンプト上の Git ブランチ表示
Git のブランチ、変更ファイル数、ahead/behind の状態を Claude Code のプロンプトの上に 1 行で表示します。
- プロンプト上部
- コマンドを実行
- ツール呼び出しを傍受
- UI を変更
v2.1.310 で検証済み
おすすめ完了トースト
Claude の長いターンが終わると「Done in 2m 14s」のトーストと短いチャイムでお知らせ。デスクトップ通知にも対応します。
- トースト
- コマンドを実行
- UI を変更
- 音を再生
v2.1.310 で検証済み
同じカテゴリの Mod: Git と GitHub、トーストと通知。