Install
openclaw skills install qf-code-reviewProvides detailed, prioritized code review feedback on security, performance, correctness, and maintainability issues for multiple major programming languages.
openclaw skills install qf-code-reviewSystematic code review framework covering security vulnerabilities, performance bottlenecks, maintainability issues, and best practices across major programming languages.
This skill provides a structured approach to reviewing code like a senior engineer. It produces actionable, prioritized feedback organized by severity (Critical / Warning / Suggestion) and category (Security / Performance / Maintainability / Correctness / Style). Works across Python, JavaScript/TypeScript, Go, Rust, Java, and other common languages.
Before deep analysis:
Check for these common vulnerabilities:
| Vulnerability | Pattern to Look For |
|---|---|
| SQL Injection | String concatenation in queries, raw SQL without parameterization |
| XSS | Unescaped user input rendered in HTML, innerHTML with user data |
| Path Traversal | User-controlled file paths, ../ not sanitized |
| Hardcoded Secrets | API keys, passwords, tokens in source code |
| Insecure Deserialization | eval(), pickle.loads(), JSON.parse on untrusted data |
| IDOR | Missing authorization checks on resource access endpoints |
| Command Injection | os.system(), exec(), subprocess with user input |
| Broken Auth | Weak password hashing, missing rate limiting, JWT without validation |
For each finding, specify:
Check for:
Check for:
Check for:
Organize findings as:
## Code Review Summary
**Overall Assessment**: [Ready to merge / Needs changes / Request changes]
### 🔴 Critical (must fix)
1. [Category] **Title**: Description + Location + Fix suggestion
### 🟡 Warning (should fix)
1. [Category] **Title**: Description + Location + Fix suggestion
### 🟢 Suggestion (nice to have)
1. [Category] **Title**: Description + Location + Fix suggestion
### ✅ Highlights
- Things done well (positive reinforcement)
Python:
pathlib.Path over os.pathJavaScript/TypeScript:
const by default, let only when reassignment neededinterface over type for object shapes in TypeScriptany — use unknown and narrow with type guards?.) and nullish coalescing (??) over manual checksGo:
_ = errFinding Example:
🔴 Critical [Security] SQL Injection in user lookup
Location: src/auth/login.py:42
The `username` parameter is directly interpolated into the SQL query:
cursor.execute(f"SELECT * FROM users WHERE username='{username}'")
Fix: Use parameterized queries:
cursor.execute("SELECT * FROM users WHERE username = %s", (username,))
Suggestion Example:
🟢 Suggestion [Maintainability] Extract magic number
Location: src/utils/cache.py:18
The value 86400 appears without explanation. It represents seconds in a day.
Fix: Define as a named constant:
CACHE_TTL_SECONDS = 86_400 # 24 hours