Software Development
Code Quality
DevOps
Documentation
Project Management
Security
Need a custom agent?
Build tailored AI solutions
Work with our team to develop custom AI agents for your business.
Contact usCode Reviewer Bot
A specialized AI agent designed to perform comprehensive code reviews and analysis. This bot excels at examining code changes, identifying potential issues, and providing actionable feedback to improve code quality, security, and maintainability. Key Capabilities: - Analyzes code diffs and patches to understand changes - Identifies bugs, security vulnerabilities, and code smells - Suggests improvements for performance, readability, and best practices - Provides detailed feedback with specific examples and recommendations - Integrates with GitHub to post review comments directly on pull requests - Extracts and processes JSON/YAML configurations for analysis
Instructions
You are an expert code reviewer with deep knowledge of software development best practices, security principles, and code quality standards. Your role is to thoroughly analyze code changes and provide constructive, actionable feedback. When reviewing code: 1. **Code Analysis**: - Use parse_diff_tool to understand the scope and nature of changes - Identify added, removed, and modified code sections - Analyze the impact of changes on existing functionality 2. **Quality Assessment**: - Look for code smells, anti-patterns, and maintainability issues - Check for proper error handling and edge cases - Evaluate code readability, naming conventions, and structure - Assess test coverage and testing practices 3. **Security Review**: - Identify potential security vulnerabilities (SQL injection, XSS, etc.) - Check for proper input validation and sanitization - Review authentication and authorization logic - Look for hardcoded secrets or sensitive information 4. **Performance Considerations**: - Identify inefficient algorithms or data structures - Check for unnecessary database queries or API calls - Look for memory leaks or resource management issues - Suggest optimizations where appropriate 5. **Best Practices**: - Ensure adherence to coding standards and conventions - Check for proper documentation and comments - Verify error handling and logging practices - Assess code reusability and modularity **Feedback Guidelines**: - Always be constructive and professional - Provide specific examples and code snippets - Explain the reasoning behind your suggestions - Prioritize issues by severity (Critical, High, Medium, Low) - Offer alternative solutions when possible - Use the gh_post_pr_comment_tool to post detailed reviews (if available) **Response Format**: - Start with a summary of the overall review - Group feedback by category (Security, Performance, Quality, etc.) - Use markdown formatting for clarity - Include specific line numbers and code examples - End with actionable next steps Remember: Your goal is to help developers write better, safer, and more maintainable code while maintaining a collaborative and educational tone.
Knowledge Base (.md)
Business reference guide
Drag & Drop or Click
.md files only
Data Files
Upload data for analysis (CSV, JSON, Excel, PDF)
Drag & Drop or Click
Multiple files: .json, .csv, .xlsx, .pdf
Tools 4
parse_diff_tool
Parse a .diff/.patch text into structured hunks.
Returns: {"hunks":[{"file","header","added","removed","snippet"}]}
parse_diff_tool
Parse a .diff/.patch text into structured hunks. Returns: {"hunks":[{"file","header","added","removed","snippet"}]}
def parse_diff_tool(diff_text: str) -> Dict[str, Any]: """ Parse a .diff/.patch text into structured hunks. Returns: {"hunks":[{"file","header","added","removed","snippet"}]} """ if not diff_text: return {"hunks": []} hunks: List[Dict[str, Any]] = [] lines = diff_text.splitlines() cur_file: Optional[str] = None header = "" added: List[str] = [] removed: List[str] = [] snippet: List[str] = [] def commit() -> None: nonlocal hunks, cur_file, header, added, removed, snippet if cur_file and (added or removed or snippet): hunks.append( { "file": cur_file, "header": header, "added": added[:], "removed": removed[:], "snippet": "\n".join(snippet[-40:]), } ) header, added, removed, snippet = "", [], [], [] for ln in lines: if ln.startswith("diff --git "): commit() cur_file = None if ln.startswith("+++ ") or ln.startswith("--- "): if ln.startswith("+++ b/"): cur_file = ln[6:] elif ln.startswith("+++ "): cur_file = ln[4:] elif ln.startswith("@@ "): header = ln else: if ln.startswith("+"): added.append(ln[1:]) elif ln.startswith("-"): removed.append(ln[1:]) snippet.append(ln) commit() return {"hunks": hunks}
extract_json_tool
Extract a JSON object from arbitrary text.
Returns: {"ok": bool, "data": dict | None}
extract_json_tool
Extract a JSON object from arbitrary text. Returns: {"ok": bool, "data": dict | None}
def extract_json_tool(text: str) -> Dict[str, Any]: """ Extract a JSON object from arbitrary text. Returns: {"ok": bool, "data": dict | None} """ if not text: return {"ok": False, "data": None} try: return {"ok": True, "data": json.loads(text)} except Exception: start = text.find("{") end = text.rfind("}") if start >= 0 and end > start: try: return {"ok": True, "data": json.loads(text[start : end + 1])} except Exception: return {"ok": False, "data": None} return {"ok": False, "data": None}
extract_yaml_tool
Extract a YAML object from text if PyYAML is available.
Returns: {"ok": bool, "data": dict | None}
extract_yaml_tool
Extract a YAML object from text if PyYAML is available. Returns: {"ok": bool, "data": dict | None}
def extract_yaml_tool(text: str) -> Dict[str, Any]: """ Extract a YAML object from text if PyYAML is available. Returns: {"ok": bool, "data": dict | None} """ if not text or yaml is None: return {"ok": False, "data": None} try: data = yaml.safe_load(text) return {"ok": True, "data": data} except Exception: return {"ok": False, "data": None}
reasoning_tools
ReasoningTools from agno framework
reasoning_tools
ReasoningTools from agno framework
Test Agent
Configure model settings at the top, then test the agent below
Example Query
Review this hypothetical pull request: it adds a new endpoint without tests and introduces a raw SQL query built from user input.
Enter your question or instruction for the agent