背景
coderabbit-resolver skill の wait-for-ratelimit.sh が「PR に残っている古い rate-limit comment」を「今発生したばかり」と誤認する設計上の弱点があります。今日 (2026-05-02) の electron-mcp-server PR #24 リリース作業中に再現しました。同時に、ローカルにインストール済みの coderabbit CLI (v0.4.4) の調査で、PR push 不要でレビューが取得できる可能性が見つかったため、まとめて issue 化します。
Bug: stale rate-limit comment detection
症状
wait-for-ratelimit.sh <owner> <repo> <pr_number> は、PR の最新 CodeRabbit コメントを取得して rate.?limit 正規表現で判定します。しかし「最新コメント = 最新の rate-limit インシデント」を仮定しており、スクリプト起動時刻を考慮しません。古い rate-limit comment が PR に残っていると、それを誤検出して再度 @coderabbitai full review を post します。
再現タイムライン (PR #24)
| 時刻 (UTC) |
イベント |
| 09:03:49 |
初 push 後、CodeRabbit が rate-limit comment を post |
| 09:51 頃 |
rate-limit clear (47 分待機) |
| 09:56:20 |
手動で @coderabbitai full review post |
| 10:02:21 |
CodeRabbit が actual review を投稿 (Major×1, Minor×1) |
| 10:02:38 頃 |
私が並列 background で wait-for-ratelimit.sh を起動 |
| ↑ ここで script は 09:03:49 の古い comment を「最新」と検出 |
|
| 10:10:11 |
PR squash-merge、release.yml 起動 |
| 10:10:41 |
npm publish 成功 |
| 10:18:43 |
script が 8 分待機後に重複 `@coderabbitai full review` を post (closed PR 上) |
| 10:18:49 |
CodeRabbit が "Full review triggered" 自動 reply (実レビューなし、closed PR ゆえ) |
幸い merge 後の post だったので無害でしたが、open PR で同じことが起きると spurious trigger でレートリミット枠を 1 消費 します。Pro plan の 5/hr クォータでは深刻です。
提案する修正
wait-for-ratelimit.sh に --since <ISO timestamp> 引数を追加し、その時刻以降の rate-limit comment のみ対象にする。
```bash
現状
LATEST_COMMENT=$(gh api "repos/$OWNER/$REPO/issues/$PR_NUMBER/comments?per_page=10&sort=created&direction=desc" \
--jq '[.[] | select(.user.login == "coderabbitai" or .user.login == "coderabbitai[bot]") | .body] | .[0] // empty')
修正案
SINCE=${SINCE:-$(date -u +%FT%TZ)} # default: now
LATEST_COMMENT=$(gh api "repos/$OWNER/$REPO/issues/$PR_NUMBER/comments?per_page=10&sort=created&direction=desc" \
--jq "[.[] | select(.user.login == \"coderabbitai\" or .user.login == \"coderabbitai[bot]\") | select(.created_at > \"$SINCE\") | .body] | .[0] // empty")
```
workflows/review-loop.md の Step 6b 呼び出し側でも、push 直前のタイムスタンプを引数として渡すように変更する必要があります。
関連: macOS BSD grep の -P (PCRE) 非対応
このスクリプトは grep -oP '\d+' を使っており、macOS の BSD grep では invalid option エラーで死にます。フォールバックの 15 分デフォルト wait に落ちますが、待ち時間精度が大きく落ちます。grep -oE '[0-9]+' または awk ベースに置き換えるべき。今日の PR #23 のラウンドでも踏みました。
Investigation: coderabbit CLI integration の可能性
ローカル環境で coderabbit CLI v0.4.4 (/Users/ryotamurakami/.local/bin/coderabbit) がインストール済みでした。coderabbit review --help を確認したところ、PR push 不要でレビューを取得できる機能が揃っています。
主要サブコマンド
| Command |
概要 |
coderabbit review |
local git changes を AI review |
coderabbit auth |
login/logout/status/org 切替 |
coderabbit stats |
レビュー履歴 (使用量可視化) |
coderabbit feedback |
レビュー品質フィードバック送信 |
coderabbit review の重要オプション
| Flag |
用途 |
--agent |
structured findings を emit (機械可読、agent workflows 向け) |
--prompt-only |
AI agent 用 prompt のみ出力 (Claude Code に直接渡せる) |
--type {all,committed,uncommitted} |
review scope |
--base <branch> |
comparison base (main 等) |
--base-commit <commit> |
base commit 指定 |
--files <files...> |
特定ファイルのみ |
-c <files...> |
追加 instruction (claude.md, coderabbit.yaml 等) |
--api-key <key> |
API key 認証 (CI 用) |
戦略的価値
Pre-push レビュー に組み込めば、push 後に PR 上の CodeRabbit (rate-limited) で発見されるはずだった指摘を、push 前にローカルで潰せます。これにより:
- PR review サイクル数が減る → rate-limit ヒット頻度が下がる
--agent mode の structured findings を Claude Code が直接読み取り → 自動 fix
-c CLAUDE.md でプロジェクト固有規約も同時適用
検証すべき項目
Action items
Quick fix (短期)
Strategic enhancement (中期)
Documentation
参考: 元の発見コンテキスト
電子 MCP サーバーの v2.0.0-rc.3 リリース作業中に発生 (2026-05-02)。詳細はローカル memory: ~/.claude/projects/-Users-ryotamurakami-laststance-electron-mcp-server/memory/finding_2026-05-02_coderabbit-rate-limit-pattern.md
背景
coderabbit-resolverskill のwait-for-ratelimit.shが「PR に残っている古い rate-limit comment」を「今発生したばかり」と誤認する設計上の弱点があります。今日 (2026-05-02) のelectron-mcp-serverPR #24 リリース作業中に再現しました。同時に、ローカルにインストール済みのcoderabbitCLI (v0.4.4) の調査で、PR push 不要でレビューが取得できる可能性が見つかったため、まとめて issue 化します。Bug: stale rate-limit comment detection
症状
wait-for-ratelimit.sh <owner> <repo> <pr_number>は、PR の最新 CodeRabbit コメントを取得してrate.?limit正規表現で判定します。しかし「最新コメント = 最新の rate-limit インシデント」を仮定しており、スクリプト起動時刻を考慮しません。古い rate-limit comment が PR に残っていると、それを誤検出して再度@coderabbitai full reviewを post します。再現タイムライン (PR #24)
@coderabbitai full reviewpostwait-for-ratelimit.shを起動幸い merge 後の post だったので無害でしたが、open PR で同じことが起きると spurious trigger でレートリミット枠を 1 消費 します。Pro plan の 5/hr クォータでは深刻です。
提案する修正
wait-for-ratelimit.shに--since <ISO timestamp>引数を追加し、その時刻以降の rate-limit comment のみ対象にする。```bash
現状
LATEST_COMMENT=$(gh api "repos/$OWNER/$REPO/issues/$PR_NUMBER/comments?per_page=10&sort=created&direction=desc" \
--jq '[.[] | select(.user.login == "coderabbitai" or .user.login == "coderabbitai[bot]") | .body] | .[0] // empty')
修正案
SINCE=${SINCE:-$(date -u +%FT%TZ)} # default: now
LATEST_COMMENT=$(gh api "repos/$OWNER/$REPO/issues/$PR_NUMBER/comments?per_page=10&sort=created&direction=desc" \
--jq "[.[] | select(.user.login == \"coderabbitai\" or .user.login == \"coderabbitai[bot]\") | select(.created_at > \"$SINCE\") | .body] | .[0] // empty")
```
workflows/review-loop.mdの Step 6b 呼び出し側でも、push 直前のタイムスタンプを引数として渡すように変更する必要があります。関連: macOS BSD grep の
-P(PCRE) 非対応このスクリプトは
grep -oP '\d+'を使っており、macOS の BSD grep では invalid option エラーで死にます。フォールバックの 15 分デフォルト wait に落ちますが、待ち時間精度が大きく落ちます。grep -oE '[0-9]+'またはawkベースに置き換えるべき。今日の PR #23 のラウンドでも踏みました。Investigation:
coderabbitCLI integration の可能性ローカル環境で
coderabbitCLI v0.4.4 (/Users/ryotamurakami/.local/bin/coderabbit) がインストール済みでした。coderabbit review --helpを確認したところ、PR push 不要でレビューを取得できる機能が揃っています。主要サブコマンド
coderabbit reviewcoderabbit authcoderabbit statscoderabbit feedbackcoderabbit reviewの重要オプション--agent--prompt-only--type {all,committed,uncommitted}--base <branch>main等)--base-commit <commit>--files <files...>-c <files...>claude.md,coderabbit.yaml等)--api-key <key>戦略的価値
Pre-push レビュー に組み込めば、push 後に PR 上の CodeRabbit (rate-limited) で発見されるはずだった指摘を、push 前にローカルで潰せます。これにより:
--agentmode の structured findings を Claude Code が直接読み取り → 自動 fix-c CLAUDE.mdでプロジェクト固有規約も同時適用検証すべき項目
--agent出力の JSON schema (フィールド構造、severity 分類)coderabbit auth statusが CI 非 TTY 環境で機能するか (今回は spinner で hang 気味だった)--api-key認証フローと credential 管理 (~/.config/coderabbit/推定)Action items
Quick fix (短期)
wait-for-ratelimit.shに--since <ISO>引数を追加 (default: 起動時のdate -u +%FT%TZ)workflows/review-loop.mdStep 6b の呼び出し側で push 直前タイムスタンプを渡すgrep -oPをgrep -oEまたはawkに置換 (macOS BSD grep 互換性)Strategic enhancement (中期)
coderabbitCLI 機能の動作検証 (上記検証項目)coderabbit-resolverworkflow に Step 0.5: Pre-push CLI review を追加するか設計coderabbit review --agent --base main --type all -c CLAUDE.mdを push 前に実行Documentation
references/にcoderabbit-cli.mdを追加 (CLI subcommand リファレンス)coderabbit-rate-limit-pattern.md(electron-mcp-server 側 memory) と同様の知見をスキル内 docs に整理参考: 元の発見コンテキスト
電子 MCP サーバーの v2.0.0-rc.3 リリース作業中に発生 (2026-05-02)。詳細はローカル memory:
~/.claude/projects/-Users-ryotamurakami-laststance-electron-mcp-server/memory/finding_2026-05-02_coderabbit-rate-limit-pattern.md