code-reviewer · alirezarezvani — Claude Code skill: what it does, how to install
Turns a pull request into a scored review: diff complexity, risky patterns, code smells, and a report with a verdict. Useful when the changeset is too big to read cold.
/plugin marketplace add alirezarezvani/claude-skills
/plugin install engineering-skills@claude-code-skillsWhat code-reviewer does
The skill runs review in stages. scripts/pr_analyzer.py reads the git diff between branches, scores complexity from 1 to 10, sorts risks into categories and names the files to open first. scripts/code_quality_checker.py handles structure: SOLID violations, code smells, oversized functions. scripts/review_report_generator.py merges both outputs into a single report, markdown among the formats, and attaches a verdict.
Rules live in files. rules/universal.md loads every time, then exactly one file from languages/ follows the extension — Python, TypeScript, Go, Swift, Kotlin, C#, Java, C, C++, Rust, Ruby, PHP or Dart. Two extra files per review, so context stays flat. Thresholds are fixed: a function past 50 lines, a file past 500, a class with more than 20 methods, more than 5 parameters, nesting deeper than 4 levels, over 10 branches. Score drives the verdict: 90 and up with no high issues means Approve, below 50 or any critical finding means Block.
The scripts only score languages they were told about. A new file in languages/ is picked up by the agent right away, but code_quality_checker.py applies Python regexes until you register the extensions in LANGUAGE_EXTENSIONS — check the output before trusting the numbers.
What it helps with
- size up a pull request and decide which files to read first
- catch SOLID violations in code you have not seen before
- pull hardcoded secrets and leftover debug prints out of a diff
- generate a markdown review report for the rest of the team
- run the same code against rules for different languages
Example prompts for the agent
- Run `python scripts/pr_analyzer.py . --base main --head feature-branch` and tell me which files to review first
- Check `src` for Go and list the SOLID violations you find
- Build the report: `python scripts/review_report_generator.py . --format markdown --output review.md`
How to install code-reviewer
1Plugin marketplace
/plugin marketplace add alirezarezvani/claude-skills/plugin install engineering-skills@claude-code-skillsThis installs the whole engineering-skills plugin with all its skills
2Skills CLI (Vercel)
npx skills add alirezarezvani/claude-skills --skill code-reviewer -a claude-code3Manually: put the files in place
~/.claude/skills/code-reviewer/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/code-reviewer/
Manually: put the files in place
.agents/skills/code-reviewer/SKILL.mdFor all projects use ~/.agents/skills/
Manually: put the files in place
.cursor/skills/code-reviewer/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install alirezarezvani/claude-skills code-reviewer2Manually: put the files in place
.github/skills/code-reviewer/SKILL.mdPlatform CLI
gemini skills install https://github.com/alirezarezvani/claude-skills --path engineering-team/skills/code-reviewerManually: put the files in place
.devin/skills/code-reviewer/SKILL.mdThe legacy .windsurf/skills/ path still works
Claude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set349
The whole set →Other versions of code-reviewer
Similar
Questions about code-reviewer
How do I install code-reviewer in Claude Code?
Add the marketplace with /plugin marketplace add alirezarezvani/claude-skills, then install the plugin: /plugin install engineering-skills@claude-code-skills. The skill lands at ~/.claude/skills/code-reviewer/SKILL.md.
What does code-reviewer do?
It scores a git diff for complexity and risk, checks the code for smells and SOLID violations, and writes the findings into one report with a verdict from Approve to Block.
Will it handle my language?
languages/ covers thirteen languages, Rust, PHP and Dart included. A new language needs its own rules file, and code_quality_checker.py only scores it after you add the extensions to LANGUAGE_EXTENSIONS; until then it falls back to the Python patterns.
Source text
SKILL.md · MIT
---
name: "code-reviewer"
description: Code review automation for TypeScript, JavaScript, Python, Go, Swift, Kotlin, C#, .NET, Java, C, C++, Rust, Ruby, PHP, and Dart/Flutter. Analyzes PRs for complexity and risk, checks code quality for SOLID violations and code smells, generates review reports. Use when reviewing pull requests, analyzing code quality, identifying issues, generating review checklists.
---
# Code Reviewer
Automated code review tools for analyzing pull requests, detecting code quality issues, and generating review reports.
---
## How This Skill Is Organized
```
code-reviewer/
SKILL.md ← you are here (tools + dispatch table)
rules/
universal.md ← security, async, resources, exceptions, performance — all languages
languages/
python.md ← Python-specific rules + idioms
typescript.md ← TypeScript / JavaScript-specific rules + idioms
go.md ← Go-specific rules + idioms
swift.md ← Swift-specific rules + idioms
kotlin.md ← Kotlin-specific rules + idioms
csharp.md ← C# / .NET-specific rules + idioms
java.md ← Java-specific rules + idioms
c.md ← C -specific rules + idioms
cpp.md ← C++ -specific rules + idioms
rust.md ← Rust -specific rules + idioms
ruby.md ← Ruby -specific rules + idioms
php.md ← PHP-specific rules + idioms
dart.md ← Dart / Flutter-specific rules + idioms
```
### Loading order for every review
1. This file (`SKILL.md`) — tools and thresholds
2. `rules/universal.md` — always, for every language
3. The matching `languages/*.md` — one file based on the extension table below
That is always exactly **2 additional files**, regardless of scope.
| Extension(s) | Load |
|---|---|
| `.py` | `languages/python.md` |
| `.ts`, `.tsx`, `.js`, `.jsx`, `.mjs` | `languages/typescript.md` |
| `.go` | `languages/go.md` |
| `.swift` | `languages/swift.md` |
| `.kt`, `.kts` | `languages/kotlin.md` |
| `.cs`, `.csx`, `.razor`, `.cshtml` | `languages/csharp.md` |
| `.java` | `languages/java.md` |
| `.c`, `.h` | `languages/c.md` |
| `.cpp`, `.cc`, `.cxx`, `.hpp`, `.hh`, `.hxx` | `languages/cpp.md` |
| `.rs` | `languages/rust.md` |
| `.rb`, `.rake`, `.gemspec`, `.ru` | `languages/ruby.md` |
| `.php`, `.phtml` | `languages/php.md` |
| `.dart` | `languages/dart.md` |
---
## Tools
### PR Analyzer
Analyzes git diff between branches to assess review complexity and identify risks.
```bash
# Analyze current branch against main
python scripts/pr_analyzer.py /path/to/repo
# Compare specific branches
python scripts/pr_analyzer.py . --base main --head feature-branch
# JSON output for integration
python scripts/pr_analyzer.py /path/to/repo --json
```
**What it detects (universal — see also language file for language-specific signals):**
- Hardcoded secrets (passwords, API keys, tokens, connection strings)
- SQL / query injection patterns
- Debug statements left in production code
- Lint / analyzer suppression annotations
- TODO/FIXME comments
**Language-specific detections** are defined in each `languages/*.md` file.
**Output includes:**
- Complexity score (1-10)
- Risk categorization (critical, high, medium, low)
- File prioritization for review order
- Commit message validation
---
### Code Quality Checker
Analyzes source code for structural issues, code smells, and SOLID violations.
```bash
# Analyze a directory
python scripts/code_quality_checker.py /path/to/code
# Analyze specific language
# Valid values: python, typescript, javascript, go, swift, kotlin, csharp, java, c, cpp, rust, ruby, php, dart
python scripts/code_quality_checker.py . --language java
# JSON output
python scripts/code_quality_checker.py /path/to/code --json
```
**Universal thresholds:**
| Issue | Threshold |
|-------|-----------|
| Long function | >50 lines |
| Large file | >500 lines |
| God class | >20 methods |
| Too many params | >5 |
| Deep nesting | >4 levels |
| High complexity | >10 branches |
Language-specific checks are defined in each `languages/*.md` file.
---
### Review Report Generator
Combines PR analysis and code quality findings into structured review reports.
```bash
# Generate report for current repo
python scripts/review_report_generator.py /path/to/repo
# Markdown output
python scripts/review_report_generator.py . --format markdown --output review.md
# Use pre-computed analyses
python scripts/review_report_generator.py . \
--pr-analysis pr_results.json \
--quality-analysis quality_results.json
```
**Verdicts:**
| Score | Verdict |
|-------|---------|
| 90+ with no high issues | Approve |
| 75+ with ≤2 high issues | Approve with suggestions |
| 50-74 | Request changes |
| <50 or critical issues | Block |
---
## Adding a New Language
**Reviewer guidance (required):**
1. Create `languages/<name>.md` using any existing language file as a template — it must have sections: PR Analyzer Signals, Code Quality Checks, Security, Async, Resource Management, Exception Handling, Performance, Idioms.
2. Add the extension row to the dispatch table above.
That is all the agent-driven review needs.
**Deterministic analyzer support (optional, recommended):** the bundled scripts
only flag a language they explicitly know. To make `code_quality_checker.py`
score the new language:
3. Add the extensions to `LANGUAGE_EXTENSIONS` in `scripts/code_quality_checker.py` (this also adds the `--language` choice).
4. Add `function` / `class` / `method` regex entries for the language in the same file; otherwise it falls back to the Python patterns.
5. Optionally add a `check_<name>_specific_smells(...)` detector (see the C#, Java, and C ones) and call it from `analyze_file`.
6. Add `assets/sample_<name>_smells.<ext>` + `_clean` fixtures and commit the expected `--json` output under `expected_outputs/` as a regression guard.
---
## Regression Fixtures
Labelled fixtures live in `assets/` with their committed `--json` output in
`expected_outputs/` (C#, Java, and C). Drift from the committed JSON signals a
behaviour change in the analyzer:
```bash
python scripts/code_quality_checker.py assets/sample_java_smells.java --json \
| diff - expected_outputs/sample_java_smells_quality.json
```
© Alireza Rezvani · MIT · alirezarezvani/claude-skills