NAME

Claude::Agent::Code::Review - AI-powered code review using Claude

VERSION

Version 0.01

SYNOPSIS

use Claude::Agent::Code::Review qw(review review_files review_diff);
use Claude::Agent::Code::Review::Options;
use IO::Async::Loop;

my $loop = IO::Async::Loop->new;

# Combined AI + Perl::Critic review (recommended for CI/CD)
my $options = Claude::Agent::Code::Review::Options->new(
    categories          => ['bugs', 'security', 'style'],
    severity            => 'medium',
    permission_mode     => 'bypassPermissions',
    # Enable deterministic perlcritic alongside AI review
    perlcritic          => 1,
    perlcritic_severity => 4,  # 1=brutal, 5=gentle
);

my $report = review_files(
    paths   => ['lib/'],
    options => $options,
    loop    => $loop,
)->get;

# Process results
if ($report->has_issues) {
    print $report->summary, "\n";
    for my $issue (@{$report->issues}) {
        printf "%s [%s] %s:%d - %s\n",
            $issue->severity,
            $issue->category,
            $issue->file,
            $issue->line,
            $issue->description;
    }
}

# Review staged git changes
my $staged_report = review_diff(
    staged  => 1,
    options => $options,
    loop    => $loop,
)->get;

# Simple high-level review (auto-detects file/dir/staged)
my $report = review(
    target  => 'lib/MyModule.pm',
    options => $options,
    loop    => $loop,
)->get;

DESCRIPTION

Claude::Agent::Code::Review provides AI-powered code review using the Claude Agent SDK. It analyzes code for bugs, security vulnerabilities, style issues, performance problems, and maintainability concerns.

All functions return Futures for async operation.

Note: By default, permission_mode is set to 'default' which prompts for permissions. For automated/CI usage, set permission_mode => 'bypassPermissions' in your Options.

EXPORTED FUNCTIONS

review

my $future = review(
    target  => $target,      # file, dir, or 'staged'
    options => $options,     # Claude::Agent::Code::Review::Options
    loop    => $loop,        # IO::Async::Loop
);
my $report = $future->get;

High-level review function that auto-detects the review mode.

review_files

my $future = review_files(
    paths   => \@paths,      # files and/or directories
    options => $options,
    loop    => $loop,
);
my $report = $future->get;

Review specific files or directories.

review_diff

my $future = review_diff(
    diff    => $diff_text,   # diff content
    # OR
    staged  => 1,            # review staged changes
    options => $options,
    loop    => $loop,
);
my $report = $future->get;

Review a diff or staged changes.

SEE ALSO

AUTHOR

LNATION, <email at lnation.org>

LICENSE

This software is Copyright (c) 2026 by LNATION.

This is free software, licensed under The Artistic License 2.0 (GPL Compatible).