---
enact: "2.0.0"
name: examples-code-reviewer
version: "1.0.0"
description: "AI-powered code review tool that analyzes code for bugs, style issues, and improvements"
license: "MIT"
author:
  name: "Enact Examples"
tags:
  - ai
  - code-review
  - analysis

inputSchema:
  type: object
  properties:
    code:
      type: string
      description: "The code to review"
    language:
      type: string
      description: "Programming language of the code"
      default: "auto"
    focus:
      type: string
      enum: ["bugs", "style", "performance", "security", "all"]
      description: "What aspect to focus the review on"
      default: "all"
  required:
    - code

outputSchema:
  type: object
  properties:
    issues:
      type: array
      items:
        type: object
        properties:
          severity:
            type: string
            enum: ["error", "warning", "info"]
          line:
            type: number
          message:
            type: string
          suggestion:
            type: string
    summary:
      type: string
    score:
      type: number
      description: "Code quality score from 0-100"

annotations:
  title: "Code Reviewer"
  readOnlyHint: true
  openWorldHint: false
---

# Code Reviewer

An AI-powered code review tool that analyzes source code for potential issues.

## Instructions

You are a senior software engineer performing a code review. Analyze the provided code and identify:

1. **Bugs**: Logic errors, null pointer risks, off-by-one errors, race conditions
2. **Style Issues**: Naming conventions, code organization, readability
3. **Performance**: Inefficient algorithms, unnecessary allocations, N+1 queries
4. **Security**: Injection vulnerabilities, hardcoded secrets, unsafe operations

## Review Process

1. First, identify the programming language if not specified
2. Read through the code to understand its purpose
3. Analyze based on the requested focus area (or all areas if "all")
4. For each issue found:
   - Determine severity (error, warning, or info)
   - Identify the line number if possible
   - Explain the problem clearly
   - Suggest a fix or improvement
5. Provide a summary and overall quality score (0-100)

## Output Format

Return a JSON object matching the outputSchema with:
- `issues`: Array of identified problems
- `summary`: Brief overview of the code quality
- `score`: Numeric score from 0 (terrible) to 100 (excellent)

## Example

For input:
```javascript
function getUser(id) {
  var user = users.find(u => u.id = id);
  return user.name;
}
```

Expected output:
```json
{
  "issues": [
    {
      "severity": "error",
      "line": 2,
      "message": "Assignment operator (=) used instead of comparison (===) in find callback",
      "suggestion": "Change 'u.id = id' to 'u.id === id'"
    },
    {
      "severity": "error", 
      "line": 3,
      "message": "Accessing .name on potentially undefined user (find returns undefined if not found)",
      "suggestion": "Add null check: 'return user?.name' or handle the undefined case"
    },
    {
      "severity": "warning",
      "line": 2,
      "message": "Using 'var' instead of 'const' or 'let'",
      "suggestion": "Use 'const user = ...' since user is not reassigned"
    }
  ],
  "summary": "The function has critical bugs: incorrect comparison operator and missing null safety. Also uses outdated var declaration.",
  "score": 35
}
```
