
Code Review
- 463 installs
- 41.6k repo stars
- Updated August 4, 2026
- agno-agi/agno
code-review is an Agno agent skill that delivers systematic, high-signal code reviews to catch bugs, security issues, and quality problems before merging pull requests.
About
code-review is a well-known skill from agno-agi/agno with 454 installs on skills.sh that structures agent-driven pull request review. It targets high-signal feedback on bugs, security weaknesses, and maintainability problems instead of superficial style nits. Developers invoke code-review before merging feature branches, during PR preparation, or when they want a second pass on risky changes without waiting for human reviewers. Ranked second in the Agno repository on skills.sh, the skill fits Agno-based agent workflows where review is a repeatable pre-merge step. It emphasizes actionable findings developers can fix immediately, making it a ship-gate companion for teams using AI agents alongside normal git review practices.
- Agent-driven code review that follows a structured checklist
- Catches logical errors, security vulnerabilities, and style issues
- Produces severity-rated findings with fix recommendations
- Works with Claude Code, Cursor, and generic LLM agents
- Hard-gate: review must pass before invoking merge or deploy steps
Code Review by the numbers
- 463 all-time installs (skills.sh)
- Ranked #245 of 1,352 Code Review & Quality skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/agno-agi/agno --skill code-reviewAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 463 |
|---|---|
| repo stars | ★ 41.6k |
| Last updated | August 4, 2026 |
| Repository | agno-agi/agno ↗ |
How do you get high-signal AI code review before merge?
Get systematic, high-signal code reviews from an agent that catches bugs, security issues, and quality problems before merging.
Who is it for?
Developers using Agno agents who want structured pre-merge review beyond lint formatting checks.
Skip if: Teams requiring formal human sign-off on regulated code or projects needing runtime performance profiling only.
When should I use this skill?
Opening or updating a pull request, before merge approval, or when the user asks for a security and quality review pass.
What you get
Prioritized review comments, security findings, bug reports, and quality improvement recommendations.
- review comment list
- security finding summary
- quality improvement notes
By the numbers
- 454 installs on skills.sh
- Ranked #2 in agno-agi/agno on skills.sh
Files
Code Review Skill
You are a code review assistant. When reviewing code, follow these steps:
Review Process
1. Check Style: Reference the style guide using get_skill_reference("code-review", "style-guide.md") 2. Run Style Check: Use get_skill_script("code-review", "check_style.py") for automated style checking 3. Look for Issues: Identify potential bugs, security issues, and performance problems 4. Provide Feedback: Give structured feedback with severity levels
Feedback Format
- Critical: Must fix before merge (security vulnerabilities, bugs that cause crashes)
- Important: Should fix, but not blocking (performance issues, code smells)
- Suggestion: Nice to have improvements (naming, documentation, minor refactoring)
Review Checklist
- [ ] Code follows naming conventions
- [ ] No hardcoded secrets or credentials
- [ ] Error handling is appropriate
- [ ] Functions are not too long (< 50 lines)
- [ ] No obvious security vulnerabilities
- [ ] Tests are included for new functionality
Python Style Guide
Naming Conventions
Variables and Functions
- Use
snake_casefor variables and functions - Use descriptive names that explain the purpose
- Avoid single-letter names except for loop counters
# Good
user_count = 10
def calculate_total_price(items):
pass
# Bad
uc = 10
def calc(i):
passClasses
- Use
PascalCasefor class names - Use nouns that describe what the class represents
# Good
class UserAccount:
pass
class OrderProcessor:
pass
# Bad
class user_account:
pass
class Process:
passConstants
- Use
UPPER_SNAKE_CASEfor constants - Define at module level
# Good
MAX_RETRY_COUNT = 3
DEFAULT_TIMEOUT = 30
# Bad
maxRetryCount = 3
default_timeout = 30Code Organization
Imports
- Group imports in this order: standard library, third-party, local
- Sort alphabetically within each group
- Use absolute imports
# Standard library
import os
import sys
from typing import List, Optional
# Third-party
import requests
from pydantic import BaseModel
# Local
from myapp.models import User
from myapp.utils import helperFunction Length
- Keep functions under 50 lines
- If longer, consider breaking into smaller functions
- Each function should do one thing well
Documentation
- Use docstrings for public functions and classes
- Follow Google or NumPy docstring style
- Include parameter types and return types
def process_user_data(user_id: str, include_history: bool = False) -> dict:
"""Process user data and return formatted result.
Args:
user_id: The unique identifier for the user.
include_history: Whether to include user history. Defaults to False.
Returns:
A dictionary containing the processed user data.
Raises:
ValueError: If user_id is empty or invalid.
"""
passError Handling
Be Specific
- Catch specific exceptions, not bare
except: - Include helpful error messages
# Good
try:
result = process_data(data)
except ValueError as e:
logger.error(f"Invalid data format: {e}")
raise
except ConnectionError as e:
logger.error(f"Failed to connect: {e}")
return None
# Bad
try:
result = process_data(data)
except:
passSecurity
Never Hardcode Secrets
- Use environment variables or secret managers
- Never commit credentials to version control
# Good
import os
api_key = os.environ.get("API_KEY")
# Bad
api_key = "sk-1234567890abcdef"# ---------------------------------------------------------------------------
# Create Agent
# ---------------------------------------------------------------------------
#!/usr/bin/env python3
"""
Check Style
=============================
Check Python code for style issues.
"""
import json
import sys
def check_style(code: str) -> dict:
"""Check code for common style issues."""
issues = []
lines = code.split("\n")
for i, line in enumerate(lines, 1):
# Check line length
if len(line) > 100:
issues.append(
{"line": i, "issue": f"Line exceeds 100 characters ({len(line)})"}
)
# Check trailing whitespace
if line.endswith(" ") or line.endswith("\t"):
issues.append({"line": i, "issue": "Trailing whitespace"})
# Check for camelCase variables (simple heuristic)
if "=" in line and not line.strip().startswith("#"):
var = line.split("=")[0].strip()
if (
any(c.isupper() for c in var)
and "_" not in var
and not var[0].isupper()
):
issues.append(
{
"line": i,
"issue": f"Possible camelCase: '{var}' - use snake_case",
}
)
# Check for single-letter variables
if "=" in line:
var = line.split("=")[0].strip()
if len(var) == 1 and var not in "ijkxyz_":
issues.append(
{
"line": i,
"issue": f"Single-letter variable '{var}' - use descriptive name",
}
)
return {
"total_issues": len(issues),
"issues": issues,
"passed": len(issues) == 0,
}
# ---------------------------------------------------------------------------
# Run Agent
# ---------------------------------------------------------------------------
if __name__ == "__main__":
try:
if len(sys.argv) > 1:
code = sys.argv[1]
else:
code = sys.stdin.read()
result = check_style(code)
print(json.dumps(result, indent=2))
except Exception as e:
print(json.dumps({"error": str(e)}))
Related skills
FAQ
What does Agno code-review focus on?
Agno code-review focuses on high-signal pre-merge feedback—bugs, security issues, and quality problems—with 454 installs on skills.sh, rather than low-value formatting or style-only comments.
When should code-review run in git workflow?
code-review should run when preparing or updating a pull request and before merge approval, giving developers actionable fixes for defects and security risks identified by the Agno agent.