Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use this skill when user asks to "review code", "check for issues", "analyze code quality", "find bugs", or wants feedback on code implementation.
.claude/skills/aiskillstore-code-review/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-15 | ✗→✓ | ▲ Improved | 71% | 0% |
| case-10 | ✓→✓ | = Same ✓ | 214% | 0% |
| case-16 | ✓→✓ | = Same ✓ | 93% | 0% |
| case-01 | ✓→✓ | = Same ✓ | 121% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 86% | 0% |
Read the PR description:
Check the scope:
Architecture and design:
Code organization:
Naming:
Functions:
Classes and objects:
Error handling:
Code quality:
Input validation:
Authentication & Authorization:
Data protection:
Dependencies:
Algorithms:
Database:
Caching:
Resource management:
Test coverage:
Test quality:
Test naming:
python# Good def test_user_creation_with_valid_data_succeeds(): pass # Bad def test1(): pass
Code comments:
Function documentation:
pythondef calculate_total(items: List[Item], tax_rate: float) -> Decimal: """ Calculate the total price including tax. Args: items: List of items to calculate total for tax_rate: Tax rate as decimal (e.g., 0.1 for 10%) Returns: Total price including tax Raises: ValueError: If tax_rate is negative """ pass
README/docs:
Be constructive:
✅ Good:
"Consider extracting this logic into a separate function for better
testability and reusability:
def validate_email(email: str) -> bool:
return '@' in email and '.' in email.split('@')[1]
This would make it easier to test and reuse across the codebase."
❌ Bad:
"This is wrong. Rewrite it."Be specific:
✅ Good:
"On line 45, this query could cause N+1 problem. Consider using
.select_related('author') to fetch related objects in a single query."
❌ Bad:
"Performance issues here."Prioritize issues:
Acknowledge good work:
"Nice use of the strategy pattern here! This makes it easy to add
new payment methods in the future."God class:
python# Bad: One class doing everything class UserManager: def create_user(self): pass def send_email(self): pass def process_payment(self): pass def generate_report(self): pass
Magic numbers:
python# Bad if user.age > 18: pass # Good MINIMUM_AGE = 18 if user.age > MINIMUM_AGE: pass
Deep nesting:
python# Bad if condition1: if condition2: if condition3: if condition4: # deeply nested code # Good (early returns) if not condition1: return if not condition2: return if not condition3: return if not condition4: return # flat code
SQL Injection:
python# Bad query = f"SELECT * FROM users WHERE id = {user_id}" # Good query = "SELECT * FROM users WHERE id = %s" cursor.execute(query, (user_id,))
XSS:
javascript// Bad element.innerHTML = userInput; // Good element.textContent = userInput;
Hardcoded secrets:
python# Bad API_KEY = "sk-1234567890abcdef" # Good API_KEY = os.environ.get("API_KEY")
Linters:
Security:
Code quality:
<!-- Add example content here -->
<!-- Add advanced example content here -->
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-10 | pass→pass | 5,447 | 6,183 | +14% | 1 | 1 | 0% | 1,090 | 3,425 | +214% | 0 | 0 | — |
case-16 | pass→pass | 11,723 | 9,369 | -20% | 1 | 1 | 0% | 2,071 | 3,990 | +93% | 0 | 0 | — |
case-01 | pass→pass | 8,870 | 9,609 | +8% | 1 | 1 | 0% | 1,833 | 4,051 | +121% | 0 | 0 | — |
case-02 | pass→pass | 8,561 | 4,140 | -52% | 1 | 1 | 0% | 1,641 | 3,051 | +86% | 0 | 0 | — |
case-03 | pass→pass | 9,418 | 8,443 | -10% | 1 | 1 | 0% | 1,871 | 3,928 | +110% | 0 | 0 | — |
case-04 | pass→pass | 8,999 | 14,091 | +57% | 1 | 1 | 0% | 1,261 | 3,429 | +172% | 0 | 0 | — |
case-05 | pass→pass | 8,576 | 7,731 | -10% | 1 | 1 | 0% | 1,782 | 3,773 | +112% | 0 | 0 | — |
case-06 | pass→pass | 9,614 | 9,298 | -3% | 1 | 1 | 0% | 1,934 | 4,188 | +117% | 0 | 0 | — |
case-07 | pass→pass | 12,595 | 9,468 | -25% | 1 | 1 | 0% | 2,396 | 3,933 | +64% | 0 | 0 | — |
case-08 | pass→pass | 9,262 | 6,087 | -34% | 1 | 1 | 0% | 1,857 | 3,395 | +83% | 0 | 0 | — |
case-09 | pass→pass | 5,359 | 17,023 | +218% | 1 | 1 | 0% | 1,089 | 3,717 | +241% | 0 | 0 | — |
case-11 | pass→pass | 11,624 | 10,015 | -14% | 1 | 1 | 0% | 2,208 | 4,051 | +83% | 0 | 0 | — |
case-12 | pass→pass | 8,736 | 8,080 | -8% | 1 | 1 | 0% | 1,441 | 3,575 | +148% | 0 | 0 | — |
case-13 | pass→pass | 9,764 | 6,169 | -37% | 1 | 1 | 0% | 1,754 | 3,353 | +91% | 0 | 0 | — |
case-14 | pass→pass | 8,650 | 7,166 | -17% | 1 | 1 | 0% | 1,378 | 3,285 | +138% | 0 | 0 | — |
case-15 | fail→pass | 9,994 | 4,667 | -53% | 1 | 1 | 0% | 1,739 | 2,978 | +71% | 0 | 0 | — |
case-17 | pass→pass | 7,919 | 5,424 | -32% | 1 | 1 | 0% | 1,408 | 3,169 | +125% | 0 | 0 | — |
case-18 | pass→pass | 6,667 | 5,113 | -23% | 1 | 1 | 0% | 1,234 | 3,113 | +152% | 0 | 0 | — |
case-19 | pass→pass | 8,284 | 5,114 | -38% | 1 | 1 | 0% | 1,361 | 3,034 | +123% | 0 | 0 | — |
case-20 | pass→pass | 6,870 | 8,968 | +31% | 1 | 1 | 0% | 1,523 | 4,067 | +167% | 0 | 0 | — |
case-21 | pass→pass | 7,481 | 6,245 | -17% | 1 | 1 | 0% | 1,517 | 3,441 | +127% | 0 | 0 | — |
case-22 | pass→pass | 20,947 | 16,767 | -20% | 1 | 1 | 0% | 3,737 | 4,937 | +32% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +5 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/21/2026 | +27% |
Other measured skills in the registry, with their headline benchmark lift.