Conduct comprehensive code reviews identifying bugs, security issues, performance problems, code quality concerns, and best practice violations. Use when reviewing pull requests, examining code changes, evaluating new code, assessing code quality, or providing feedback on implementations. Analyzes code for correctness, security vulnerabilities, performance bottlenecks, maintainability issues, test coverage, documentation quality, and adherence to coding standards. Produces structured markdown reviews with categorized findings, severity ratings, specific examples, and actionable recommendations. Triggers when users ask to review code, check pull requests, evaluate implementations, find bugs, or assess code quality.
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Une commande directe contourne le prompt de vérification. Examinez la source avant de l'exécuter.
Conduct comprehensive code reviews identifying bugs, security issues, performance problems, code quality concerns, and best practice violations. Use when reviewing pull requests, examining code changes, evaluating new code, assessing code quality, or providing feedback on implementations. Analyzes code for correctness, security vulnerabilities, performance bottlenecks, maintainability issues, test coverage, documentation quality, and adherence to coding standards. Produces structured markdown reviews with categorized findings, severity ratings, specific examples, and actionable recommendations. Triggers when users ask to review code, check pull requests, evaluate implementations, find bugs, or assess code quality.
Code Review Assistant
Overview
Perform thorough, constructive code reviews that identify issues, suggest improvements, and ensure code quality, security, and maintainability.
# Code Review: [PR Title / Code Description]## Summary-**Files Reviewed:** X files, Y lines changed
-**Overall Assessment:** [Approve/Request Changes/Comment]
-**Critical Issues:** N
-**Important Issues:** M
-**Minor Issues:** K
---
## 🔴 Critical Issues### Issue 1: [Title]**Location:**`path/to/file.py:42`**Problem:**
[Clear description of the issue]
**Impact:**
[Why this is critical - security, data loss, crashes, etc.]
**Recommendation:**
[Specific fix needed]
**Example:**```python
# Current (problematic)
user_input = request.GET['id']
query = f"SELECT * FROM users WHERE id = {user_input}"
# Suggested (fixed)
user_input = request.GET.get('id')
if user_input and user_input.isdigit():
query = "SELECT * FROM users WHERE id = %s"
cursor.execute(query, (user_input,))
🟡 Important Issues
Issue 2: [Title]
[Same structure as above]
🔵 Minor Issues
Issue 3: [Title]
[Shorter format acceptable for minor issues]
💡 Suggestions
[Optional improvement 1]
[Optional improvement 2]
✅ Positive Observations
[Good practice 1]
[Well-implemented feature]
Questions for Author
[Clarifying question about design decision]
[Question about intended behavior]
Recommendations
Fix all critical issues before merge
Address important issues or provide justification
Consider minor improvements where feasible
Add tests for edge cases X, Y, Z
Overall: [Approve with suggestions / Request changes / Needs discussion]
## Common Issues by Language
### Python
```python
# ❌ Mutable default argument
def append_to(element, to=[]): # Bug: to persists across calls
to.append(element)
return to
# ✅ Correct
def append_to(element, to=None):
if to is None:
to = []
to.append(element)
return to
# ❌ Catching bare exceptions
try:
risky_operation()
except: # Too broad, masks errors
pass
# ✅ Specific exception handling
try:
risky_operation()
except ValueError as e:
logger.error(f"Invalid value: {e}")
raise
# ❌ String concatenation in loops
result = ""
for item in items:
result += str(item) # Creates new string each iteration
# ✅ Use join
result = "".join(str(item) for item in items)
### 🔴 Critical: SQL Injection Vulnerability**Location:**`api/users.py:45`**Problem:**
User input is directly interpolated into SQL query without sanitization.
**Impact:**
Attacker could execute arbitrary SQL commands, leading to data breach or data loss.
**Code:**```python
# Current (VULNERABLE)
def get_user(user_id):
query = f"SELECT * FROM users WHERE id = {user_id}"
return db.execute(query)
Recommendation:
Use parameterized queries to prevent SQL injection.
Fix:
defget_user(user_id):
query = "SELECT * FROM users WHERE id = %s"return db.execute(query, (user_id,))
### Example 2: Performance Issue
```markdown
### 🟡 Important: N+1 Query Problem
**Location:** `services/order_service.py:78-82`
**Problem:**
Loading users in a loop creates N+1 database queries.
**Impact:**
For 100 orders, this creates 101 queries (1 + 100), severely impacting performance.
**Code:**
```python
# Current (inefficient)
orders = Order.query.all()
for order in orders:
order.user = User.query.get(order.user_id) # N queries
Recommendation:
Use eager loading or a single query with join.
Fix:
# Option 1: Eager loading
orders = Order.query.options(joinedload(Order.user)).all()
# Option 2: Separate query
orders = Order.query.all()
user_ids = [o.user_id for o in orders]
users = {u.id: u for u in User.query.filter(User.id.in_(user_ids)).all()}
for order in orders:
order.user = users[order.user_id]
## Tips for Effective Reviews
**Be constructive:**
- Explain why, not just what
- Suggest solutions, don't just criticize
- Acknowledge good code
**Be specific:**
- Point to exact lines
- Provide code examples
- Quantify impact when possible
**Prioritize:**
- Fix critical issues first
- Don't nitpick minor style issues
- Focus on what matters
**Ask questions:**
- "Could you explain the reasoning behind...?"
- "Have you considered...?"
- "What happens if...?"
**Provide context:**
- Link to documentation
- Reference coding standards
- Cite security best practices
**Be timely:**
- Review promptly
- Don't block unnecessarily
- Iterate in conversations
This skill provides comprehensive code review guidance. Save it to the current path when ready to package.