open-code-review について
`ocr` AI コードレビュー CLI で Git の変更、コミット、ブランチ差分を確認するスキルです。レビューに業務背景を加え、指摘を重大度別に報告します。修正にはユーザーの許可が必要です。
主な機能
- 01作業ツリー・コミット・ブランチ差分のレビュー
- 02レビューへの業務背景の追加
- 03対象ファイルのプレビューと範囲指定
- 04テキスト・JSON・SARIF で出力
- 05重大度別の指摘整理
活用シーン
- 01ステージ済み・未ステージ・未追跡の変更をレビュー
- 02コミットの確認やブランチ比較
- 03レビュー対象ファイルの事前確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alibaba/ open-code-review --skill open-code-reviewインストール後、Claude Code で/open-code-reviewを入力して読み込まれたか確認します。
詳細
Open Code Review
open-code-review(ocr)を呼び出すためのスキルです。これはオープンソースの AI コードレビュー CLI で、Git の diff を読み取り、構造化された行レベルのレビューコメントを生成します。
ワークフロー
ステップ 1: ビジネスコンテキストを収集する
レビュー対象(コミット、ブランチ、または変更内容)を分析し、簡潔なビジネスコンテキストを抽出します。このコンテキストを --background で渡すことで、レビューの品質が向上します。
ステップ 2: コードレビューを実行する
ocr がインストールされているかどうかを事前に確認しないでください — command -v ocr や ocr --version のようなプローブは省略します。CLI が利用可能であると想定してレビューを直接実行してください。これにより、通常のパスでツール呼び出しを 1 回節約できます。command not found でレビューが失敗した場合にのみ、トラブルシューティングに従ってインストールしてください。
適切なフラグを付けて OCR コマンドを実行します。利用可能な場合は、常に --background でビジネスコンテキストを渡してください:
ocr review --audience agent --background "business context here" [user-args]
引数の扱い:
- バックグラウンドコンテキスト(推奨):
--background "context"または-b "context"を使用して、レビュー品質を高めるためのビジネスコンテキストを提供します - デフォルト(ユーザー引数なし): ステージ済み、未ステージ、および未追跡の変更をレビューします(ワークスペースモード)
- 特定のコミット:
--commitまたは-cを使用して、単一のコミットをその親と比較してレビューします - ブランチ比較:
--from <ref>と--to <ref>を使用して、2 つの ref 間の diff をレビューします - タイムアウト: レビューグループごとの実効タイムアウト =
--timeout× レビューラウンド数。デフォルトの--timeout 15とデフォルトのエフォートmedium(2 ラウンド)では 30 分、low/highでは 15/45 分になります。 - 並行性: デフォルトの並行性は 8 ファイルワーカーです。レート制限に達した場合は
--concurrency <n>で減らしてください - プレビューモード:
--previewまたは-pを使用して、LLM を実行せずにどのファイルがレビューされるかをプレビューします - 出力ファイル:
--output <path>を使用して、完全な結果を stdout ではなくファイルに書き込みます。unknown flag: --outputでコマンドが失敗した場合、プレーンな stdout でレビューを続行しないでください。ユーザーにアップグレード(npm i -g @alibaba-group/open-code-review@latest)を行うかどうかを尋ね、先に進む前に回答を待ってください。ユーザーが確認し、アップグレードが成功したら、--outputを付けて再実行してください。 - インストール:
ocrコマンドが見つからない場合は、npm i -g @alibaba-group/open-code-reviewを実行してインストールします
一般的な呼び出しパターン:
| ユーザーの発言 | 実行するコマンド |
|---|---|
| 「自分の変更をレビューして」/「作業コピーをレビューして」 | ocr review --audience agent -b "context" |
| 「この PR をレビューして」/「フィーチャーブランチをレビューして」 | ocr review --audience agent -b "context" --from main --to <branch> |
| 「コミット abc123 をレビューして」 | ocr review --audience agent -b "context" --commit abc123 |
| 「何がレビューされるの?」(ドライラン) | ocr review --preview |
出力モード:
- 進行状況 UI を抑制し、最終的な要約のみを出力するために、常に
--audience agentを使用してください - 出力の切り捨てを防ぐ: 大規模なレビューや制限されたツール環境では、
--output /tmp/ocr_out.txtを渡し、stdout をtailやheadにパイプするのではなく、ファイル読み取りツールでファイル全体を確認してください。パイプすると以前のレビューコメントが失われます。
失敗時: ocr review が非ゼロで終了した場合(例: LLM 接続エラー)、盲目的に再試行しないでください — 再実行する前に、以下のおトラブルシューティングセクションで該当する修正を確認してください。
ステップ 3: レポート
OCR の出力には、各コメントに構造化された severity(critical / high / medium / low)と category(bug / security / performance / maintainability / test / style / documentation / other)が含まれます。結果を severity ごとにグループ化して提示し、誤検知や些末な指摘である可能性が高い low severity の項目は破棄してください。
ステップ 4: 修正
修正を適用する前に、ユーザーが自動修正を要求したかどうかを確認します:
- ユーザーが明示的に「レビューと修正」または同様のことを要求した場合は、自動修正を進めます
- ユーザーが修正の意図なく「レビュー」のみを要求した場合は、変更を適用する前に許可を求めます
問題と提案を修正する場合:
- critical、high、medium の重大度の項目に焦点を当てます
- 安全で明確に定義されている場合は、修正をコードに直接適用します
- 手動での介入が必要な複雑な修正については、何を行う必要があるかを明確に説明します
- コミットする前に、必ずユーザーと修正を確認します
出力形式
OCR の出力における各コメントには以下が含まれます:
path: ファイルパスcontent: レビューコメントのテキストstart_line/end_line: 行範囲(両方とも 0 の場合は位置特定に失敗したことを意味します)category: 問題のカテゴリ(bug、security、performance、maintainability、test、style、documentation、other)severity: 問題の重大度(critical、high、medium、low)suggestion_code: オプションの修正提案existing_code: オプションの元のコードスニペットthinking: オプションの LLM 推論プロセス
このテンプレートを使用して、重大度別にグループ化した結果を提示します:
## Code Review Results
**Files reviewed**: N
**Issues found**: X critical, Y high, Z medium
### Critical
- **`path/to/file.java:42`** [bug] — Brief description
> Recommendation: How to fix
### High
- **`path/to/file.java:26`** [bug] — Brief description
> Recommendation: How to fix
### Medium
- **`path/to/file.ts:88`** [performance] — Brief description
> Recommendation: How to fix (if applicable)
フィルタリング後に critical、high、medium の重大度の問題が残っていない場合は、次のように記載します: 「レビュー完了 — N 個のファイルに critical、high、medium の問題は見つかりませんでした。」
位置が特定できなかったコメントの処理:
start_line と end_line が両方とも 0 の場合、コメントはファイル内の正確な位置を特定できませんでした。そのような場合は:
- コメントの内容を読んで問題を理解します
- コメントで言及されている対象ファイルを調べます
- コメントの文脈に基づいて関連するコードセクションを特定します
- 修正または提案を正しい位置に適用します
カスタムレビュールール
ユーザーがプロジェクト固有のルールを希望する場合、OCR は次の優先順位でそれらを解決します:
--rule <path>フラグ(最優先)<repo>/.opencodereview/rule.json~/.opencodereview/rule.json- 組み込みのシステムデフォルト(最低優先)
デフォルトでは、最初に一致したユーザールールが組み込みのシステムルールを置き換えます。一致したシステムルールとユーザールールの両方を含める必要がある場合は、ルールエントリで merge_system_rule: true を設定します。
ルールファイルの形式:
{
"rules": [
{
"path": "**/*.java",
"rule": "All new methods must validate required parameters for null",
"merge_system_rule": true
},
{
"path": "**/*mapper*.xml",
"rule": "Check SQL for injection risks and missing closing tags"
}
]
}
レビューする前に、どのルールがファイルに適用されるかをプレビューするには:
ocr rules check src/main/java/com/example/Foo.java
高度なレビューオプション
上記の一般的なフラグに加えて、ocr review はいくつかのコントロールグループを公開しています。完全なリストについては ocr review --help を実行してください。
スコープ
--exclude '<patterns>'— カンマ区切りの gitignore 形式のパターン(例えば--exclude '**/generated/*,**/testdata/*')、rule.jsonの除外とマージされます。--background-file <path>— Markdown ファイルからレビューコンテキストを読み取ります。--backgroundより優先されます。
出力
--format text|json|sarif—text(デフォルト)は人間向け、jsonは機械可読な検出結果向け、sarifは GitHub Code Scanning などのコードスキャン統合向けです。
モデル
--provider <name>/--model <name>— この実行に限り、設定された provider/model を上書きします(例えば、別のモデルで diff を再確認する場合、ユーザーがモデルを指定します。ocr llm providersに組み込みモデルの一覧が表示されます)。
予算
--max-tokens <n>— グループごとのプロンプト上限。デフォルトは設定値またはテンプレートのデフォルト(200000)です。--max-tokens-budget <n>— 実行の総入力 + 出力トークンを上限設定します。毎回の LLM ラウンドの前にチェックされます: すでに予算を超えたグループは検出結果を送信するための最後の 1 ラウンドが与えられ、それ以上のグループはディスパッチされず、部分的な結果は引き続き公開され、スキップされたファイルはfailed(budget)として報告されます。--no-filter— すべてのレビューコメントを保持し、LLM のポストフィルタリング呼び出しをスキップします。
注意点
- LLM を最初に設定する必要があります — 到達可能な LLM がない場合、
ocr reviewは明確に失敗します。その場合は、以下のトラブルシューティングセクションを参照してください。 - 作業ディレクトリが重要です —
ocr reviewはカレントディレクトリの Git リポジトリに対して動作します。別の場所から実行するには--repo /path/to/repoを使用してください。 - ワークスペースモードでは未追跡ファイルもレビューされます — 引数なしで
ocr reviewを実行すると、ステージ済み、未ステージ、および未追跡の変更が含まれます。対象を狭めたい場合は選択的にステージしてください。 - 大きな差分はトークン上限に達する可能性があります —
MAX_TOKENSはプロンプトの予算を設定します(レビューテンプレートでは200000、ocr scanでは58888)。会話コンテキストはこのプロンプト予算内に収まるよう圧縮されます。モデルの出力は別途MAX_COMPLETION_TOKENS(16384)で上限が設けられます。差分だけでMAX_TOKENSの約 80% を超えるファイルは、LLM が呼び出される前にスキップされます。 - プランフェーズは 2 つのしきい値のいずれかで発動します — グループ内の最大の変更ファイルが
PLAN_MODE_LINE_THRESHOLD(デフォルト50)に達した場合、または 変更行数の合計がPLAN_MODE_GROUP_LINE_THRESHOLD(デフォルト100)に達するファイルを 2 つ以上含む場合、そのグループは本レビューの前に追加のリスク分析フェーズを実行します。これによりレイテンシが増加しますが、品質が向上します。 --audience humanを渡さないでください — 進捗 UI がストリーミングされ、出力が汚染されます。常に--audience agentを使用してください。- コメントの言語は設定に従います —
language設定はレビューコメントの言語を制御し、デフォルトはEnglishで、任意の言語名(たとえばEnglishや中文)を受け付けます。 - 出力の切り捨てを避けてください — 大規模なレビュー実行では冗長な出力が生成されます。コマンド出力を
tailやheadにパイプしないでください。以前のセクションのレビューコメントが失われます。--output <path>を使用して全体を読み取ってください。古い CLI では、上記の 出力ファイル のガイダンスに従ってください。 - 中断されたレビューを再開する — 失敗または中断された範囲/コミットレビューは、同じ
--from/--toまたは--commitターゲットを指定してocr review --resume <id>で続行できます(id は失敗時にretry with: --resume <id>として出力されるか、ocr session listで確認できます)。ワークスペースの再開はサポートされていません。
検証
レビューが完了したら、以下を確認して成功を検証します。
- コマンドがコード 0 で終了した
- コメントが生成された(または「No comments generated」メッセージが表示された)
- 警告(ある場合)が stderr に表示された
エラーが発生した場合は、stderr の警告を確認して、どのファイルが失敗したか、その理由の詳細を確認してください。
トラブルシューティング
ocr: command not found
CLI をインストールします。
npm install -g @alibaba-group/open-code-review
unknown flag: --output
CLI が v1.10.0 より古いです。プレーンな stdout でレビューを続行しないでください。アップグレードするかどうかをユーザーに尋ね(npm i -g @alibaba-group/open-code-review@latest)、続行する前に回答を待ってください。ユーザーが確認し、アップグレードが成功したら、--output を付けて再実行してください。
ocr review が LLM 接続エラーで失敗する
ユーザーに LLM プロバイダーの設定を促してください。
対話形式のセットアップ(推奨):
ocr config provider
手動セットアップ(代替):
ocr config set llm.url https://api.anthropic.com/v1/messages
ocr config set llm.auth_token <api-key>
ocr config set llm.model claude-opus-4-6
ocr config set llm.use_anthropic true
ocr llm test で接続を検証してください。ここで停止し、ユーザーに認証情報の提供を依頼してください — API キーを捏造したりハードコードしたりしないでください。