
Open Code Review
Skill驱动阿里开源的 ocr CLI 评审 Git 变更(工作区、单个提交或分支对比),按严重级别汇总逐行评审意见,用户要求时自动修复。需先配置 LLM 接口(Anthropic、OpenAI 等协议),缺少 CLI 时会自动安装。阿里巴巴官方维护。
name: open-code-review
description: >
Performs AI-powered code review on Git changes using the `ocr` CLI from
alibaba/open-code-review. Use when the user asks to review code, review
a pull request, review staged/unstaged changes, review a commit, or
compare branches for code quality issues. Produces line-level review
comments and can automatically apply fixes when requested. With appropriate
review rules, can detect various types of issues including bugs, security
vulnerabilities, performance problems, and code quality concerns.
license: Apache-2.0
compatibility: >
Requires the `ocr` CLI installed (via `npm install -g
@alibaba-group/open-code-review` or GitHub release binary). Requires a
configured supported LLM provider before first run (protocols: Anthropic,
OpenAI Chat Completions, OpenAI Responses, AWS Bedrock).
metadata:
author: alibaba
homepage: https://github.com/alibaba/open-code-review
version: "1.0.0"
Open Code Review
A skill for invoking open-code-review (ocr) — an open-source AI code review CLI that reads Git diffs and generates structured, line-level review comments.
Workflow
Step 1: Gather Business Context
Analyze the review target (commits, branch, or changes) to extract concise business context. Pass this context via --background to improve review quality.
Step 2: Run Code Review
Do not pre-check whether ocr is installed — skip probes like command -v ocr or ocr --version. Assume the CLI is available and run the review directly; that saves a tool call on the common path. Only if the review fails with command not found should you install it per Troubleshooting.
Run the OCR command with appropriate flags. Always pass business context via --background when available:
ocr review --audience agent --background "business context here" [user-args]
Argument handling:
- Background context (RECOMMENDED): use
--background "context"or-b "context"to provide business context for better review quality - Default (no user arguments): reviews staged, unstaged, and untracked changes (workspace mode)
- Specific commit: use
--commitor-cto review a single commit against its parent - Branch comparison: use
--from <ref>and--to <ref>to review diff between two refs - Timeout: effective timeout per review group =
--timeout× review rounds. Default--timeout 15with default effortmedium(2 rounds) gives 30 minutes;low/highgive 15/45 minutes. - Concurrency: default concurrency is 8 file workers; reduce with
--concurrency <n>if rate limits are hit - Preview mode: use
--previewor-pto preview which files will be reviewed without running the LLM - Output file: use
--output <path>to write the full result to a file instead of stdout. If the command fails withunknown flag: --output, do not continue the review with plain stdout. Ask the user whether to upgrade (npm i -g @alibaba-group/open-code-review@latest) and wait for the answer before proceeding. After the user confirms and the upgrade succeeds, rerun with--output. - Installation: if
ocrcommand is not found, install it by runningnpm i -g @alibaba-group/open-code-review
Common invocation patterns:
| User says | Command to run |
|---|---|
| "review my changes" / "review the working copy" | ocr review --audience agent -b "context" |
| "review this PR" / "review feature branch" | ocr review --audience agent -b "context" --from main --to <branch> |
| "review commit abc123" | ocr review --audience agent -b "context" --commit abc123 |
| "what would be reviewed?" (dry-run) | ocr review --preview |
Output mode:
- Always use
--audience agentto suppress progress UI and emit only the final summary - Prevent output truncation: For large reviews or restricted tool environments, pass
--output /tmp/ocr_out.txtand inspect the file in full via a file reading tool instead of piping stdout throughtailorhead, which drops earlier review comments.
On failure: If ocr review exits non-zero (e.g. an LLM connection error), do not retry blindly — consult the Troubleshooting section below for the matching fix before re-running.
Step 3: Report
OCR output includes structured severity (critical / high / medium / low) and category (bug / security / performance / maintainability / test / style / documentation / other) on each comment. Present results grouped by severity, discarding low severity items that are likely false positives or nitpicks.
Step 4: Fix
Before applying fixes, check whether the user requested automatic fixes:
- If the user explicitly requested "review and fix" or similar, proceed with automatic fixes
- If the user only requested "review" without fix intent, ask for permission before applying any changes
When fixing issues and suggestions:
- Focus on critical, high, and medium severity items
- Apply fixes directly to the code when safe and well-defined
- For complex fixes requiring manual intervention, clearly describe what needs to be done
- Always verify fixes with the user before committing
Output Format
Each comment in OCR's output contains:
path: File pathcontent: Review comment textstart_line/end_line: Line range (both 0 means positioning failed)category: Issue category (bug, security, performance, maintainability, test, style, documentation, other)severity: Issue severity (critical, high, medium, low)suggestion_code: Optional fix suggestionexisting_code: Optional original code snippetthinking: Optional LLM reasoning process
Present results grouped by severity using this template:
## 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)
If no critical, high, or medium severity issues remain after filtering, state: "Review complete — no critical, high, or medium issues found in N files."
Handling mispositioned comments:
When start_line and end_line are both 0, the comment failed to locate the exact position in the file. In such cases:
- Read the comment content to understand the issue
- Examine the target file mentioned in the comment
- Identify the relevant code section based on the comment's context
- Apply the fix or suggestion to the correct location
Custom Review Rules
If the user wants project-specific rules, OCR resolves them in this priority order:
--rule <path>flag (highest)<repo>/.opencodereview/rule.json~/.opencodereview/rule.json- Built-in system defaults (lowest)
By default, the first matching user rule replaces the built-in system rule. Set merge_system_rule: true on a rule entry when the matched system rule and user rule should both be included.
Rule file format:
{
"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"
}
]
}
To preview which rule applies to a file before reviewing:
ocr rules check src/main/java/com/example/Foo.java
Advanced Review Options
Beyond the common flags above, ocr review exposes a few groups of controls. Run ocr review --help for the complete list.
Scoping
--exclude '<patterns>'— comma-separated gitignore-style patterns (for example--exclude '**/generated/*,**/testdata/*'), merged withrule.jsonexcludes.--background-file <path>— read review context from a Markdown file. Takes precedence over--background.
Output
--format text|json|sarif—text(default) for humans;jsonfor machine-readable findings;sariffor code-scanning integrations such as GitHub Code Scanning.
Model
--provider <name>/--model <name>— override the configured provider/model for this run only (for example, to recheck a diff with a different model; the user names the model,ocr llm providerslists the built-ins).
Budget
--max-tokens <n>— per-group prompt ceiling; defaults to the configured value or the template default (200000).--max-tokens-budget <n>— cap total input + output tokens for the run. Checked before every LLM round: a group already over budget gets one final round to submit findings, no further groups are dispatched, partial results are still published, and skipped files are reported asfailed(budget).--no-filter— keep all review comments and skip the LLM post-filtering call.
Gotchas
- LLM must be configured first —
ocr reviewwill fail loudly if no LLM is reachable. See the Troubleshooting section below if this happens. - Working directory matters —
ocr reviewoperates on the Git repo at the current directory. Use--repo /path/to/repoto run from elsewhere. - Untracked files are reviewed in workspace mode — running bare
ocr reviewincludes staged, unstaged, and untracked changes. Stage selectively if you want narrower scope. - Large diffs may hit token limits —
MAX_TOKENSsets the prompt budget (200000in the review template;ocr scanuses58888); conversation context is compressed to stay within this prompt budget. Model output is capped separately byMAX_COMPLETION_TOKENS(16384). A file whose diff alone exceeds ~80% ofMAX_TOKENSis skipped before the LLM is called. - Plan phase triggers on either of two thresholds — a group runs an extra risk-analysis phase before main review when its largest changed file reaches
PLAN_MODE_LINE_THRESHOLD(default50) or it holds 2+ files whose combined changed lines reachPLAN_MODE_GROUP_LINE_THRESHOLD(default100). This adds latency but improves quality. - Don't pass
--audience human— it streams progress UI that pollutes output. Always use--audience agent. - Comment language follows config — the
languageconfig controls review comment language, defaults toEnglish, and accepts any language name (for exampleEnglishor中文). - Avoid output truncation — Large review runs produce verbose output. Never pipe command output to
tailorheadas it drops review comments from earlier sections. Use--output <path>and read it in full; on older CLIs, follow the Output file guidance above. - Resume an interrupted review — a failed or interrupted range/commit review can be continued with
ocr review --resume <id>using the same--from/--toor--committarget (the id is printed asretry with: --resume <id>on failure, or find it withocr session list). Workspace resume is not supported.
Validation
After the review completes, verify success by checking:
- The command exited with code 0
- Comments were generated (or "No comments generated" message appears)
- Warnings (if any) are displayed in stderr
If errors occurred, check the stderr warnings for details about which files failed and why.
Troubleshooting
ocr: command not found
Install the CLI:
npm install -g @alibaba-group/open-code-review
unknown flag: --output
The CLI is older than v1.10.0. Do not continue the review with plain stdout. Ask the user whether to upgrade (npm i -g @alibaba-group/open-code-review@latest) and wait for the answer before proceeding. After the user confirms and the upgrade succeeds, rerun with --output.
ocr review fails with LLM connection error
Prompt the user to configure an LLM provider.
Interactive setup (recommended):
ocr config provider
Manual setup (alternative):
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
Verify connectivity with ocr llm test. Stop here and ask the user to provide credentials — never invent or hardcode API keys.
References
- Full docs: https://github.com/alibaba/open-code-review
- NPM package: https://www.npmjs.com/package/@alibaba-group/open-code-review
- Issue tracker: https://github.com/alibaba/open-code-review/issues
相關資源

Open Code Review
CLI阿里开源的 AI 代码评审命令行 ocr:先用确定性流程筛选文件、分组并匹配规则,再由 agent 读取上下文生成行级评审意见,也可用 ocr scan 全量扫描目录。需配置大模型接口,或用委托模式交给当前 coding agent 执行。
alibaba/open-code-review47.5k
Open Code Review
Plugin阿里巴巴开源的 AI 代码评审工具:读取 Git diff,把改动文件分组交给子代理并发评审,给出行级评审意见;插件提供评审与委托评审命令。需先安装 ocr CLI 并配置模型,委托模式可不配 API Key。
alibaba/open-code-review47.5k
SonarQube MCP Server
MCPSonarSource 官方:连接 SonarQube Server 或 Cloud,让 agent 查询项目的代码质量问题、质量门禁、安全热点与依赖风险,还能直接分析文件代码。需要 SonarQube 令牌,推荐用 Docker 运行。
SonarSource/sonarqube-mcp-server665
SonarQube
Plugin在 agent 编码循环中接入 SonarQube 代码质量与安全检查:密钥扫描钩子、问题列表与修复、质量门禁、覆盖率与依赖风险查询;开通 Vortex 分析后每次编辑自动检查。Sonar 官方维护,需 SonarQube 账号(含免费 Community Build)、sonar CLI 与 Docker。
SonarSource/sonarqube-agent-plugins112
PR Review Toolkit
Plugin六个专项评审子代理,分别检查注释准确性、测试覆盖、静默失败、类型设计、代码规范与可简化之处,可单独调用或一次跑全。Anthropic 官方插件。
anthropics/claude-code151k
Differential Review
SkillTrail of Bits 出品,从安全视角审查 PR、提交或 diff:结合 git blame 追溯历史、按调用方数量估算改动影响范围、检查测试覆盖缺口,输出 Markdown 审查报告。
trailofbits/skills7.6k