Skip to content
All posts

AI Agent Code Review: Workflow, Guardrails and Measurement

A deep dive into structuring AI agent teams for software development — from automated code review and Jira bug filing to self-reflecting agents that improve their own instructions. Based on real production workflows.

Engineering10 min read

null

Code review can become a delivery bottleneck when experienced engineers must divide their attention between implementation, review and support. AI can provide an initial review pass, but the useful question is whether it improves accepted change quality and total delivery time.

What if you could reduce that to minutes? Not by skipping review — but by building an AI agent team that reviews, files bugs, fixes issues, and learns from its own mistakes?

The workflow below is a reference architecture for coordinating review, issue tracking, fixes and instruction improvement. Its benefits must be measured in the adopting team's environment.

Before and after: manual code review backlogs vs AI agent automated processing

The Problem: Review Doesn't Scale

Review demand grows with change volume, complexity and the number of dependencies between teams. Unbalanced ownership and limited reviewer availability can make queues grow. Common failure modes include:

  • Senior engineers become review bottlenecks when too many changes depend on the same reviewers.

  • Context-switching between review and deep work destroys flow state

  • Reviews become cursory as fatigue sets in — catching formatting issues but missing logic bugs

  • Junior developers wait days for feedback, losing the mental context of their own changes

  • The backlog grows when incoming review demand exceeds available reviewer capacity.

The industry has responded with linters, static analysis, and CI checks. These catch the mechanical issues — but they miss architectural problems, business logic errors, security anti-patterns, and the subtle 'this works but will be unmaintainable in 6 months' issues that only experienced engineers catch.

Use AI for an initial review pass on well-defined checks, while human reviewers retain responsibility for domain judgments, architecture trade-offs and security-critical changes. Measure automation coverage and false positives rather than assuming a fixed success percentage.

Architecture of an AI Agent Team

Agent hierarchy diagram: PM orchestrates Builder and PR-Reviewer, which delegate to specialist agents

The key insight is that effective AI-assisted development requires the same organizational structure as effective human teams — specialized roles with clear boundaries and well-defined handoff protocols.

Multi-agent architecture: nine specialized AI agents connected by data streams in a coordinated workflow

Here's the agent team we've built:

The Roster

PM Agent

Orchestrates sprint cycles, routes work to specialists, manages Jira transitions, tracks progress across the team.

Builder Agent

Receives implementation tasks and dispatches to the right specialist based on the type of work (UI, API, security, testing).

Engineer Agent

Writes code following project conventions — TypeScript patterns, NestJS modules, Next.js components, database migrations.

Architect Agent

Makes structural decisions — API contracts, data models, module boundaries, integration patterns.

PR Reviewer Agent

The star of this article — runs a 6-phase automated review cycle with Jira integration and self-improvement.

Reflector Agent

Meta-learning agent that analyzes review patterns and updates instructions to prevent recurring mistakes.

Clear ownership and explicit handoffs make the workflow easier to inspect. Whether multiple agents improve delivery depends on task complexity, coordination overhead and the quality of verification.

The Review-Fix-Reflect Loop

The 7-phase Review-Fix-Reflect cycle: push triggers review, issues filed, code fixed, instructions improved

This is the core innovation. Rather than a single AI review pass, we orchestrate a complete quality cycle that mirrors what an excellent human team does — but compressed from days to minutes.

The Review-Fix-Reflect loop: six phases visualized as a continuous improvement cycle

Phase 1: Trigger

Every PR push automatically requests a Copilot code review via GitHub Actions. No human intervention needed — the workflow fires on every non-draft push:

on: pull_request: [opened, synchronize, ready_for_review] → Request Copilot review via actions/github-script@v7

Validate that branch rules and workflow triggers enforce the required review checks, including draft transitions, failures and timeouts.

Phase 2: Monitor

The PR Reviewer agent polls the GitHub API until the review completes (with a configurable timeout — default 10 minutes). This is a GraphQL-based poll that checks review state:

Poll: GET repos/{owner}/{repo}/pulls/{number}/reviews → filter for copilot-pull-request-reviewer → check state is CHANGES_REQUESTED | APPROVED | COMMENTED

Phase 3: Extract

Once the review lands, we extract every unresolved thread as structured data using the GitHub GraphQL API. Each thread becomes a structured object with: file path, line number, comment body, author, and thread ID.

This transforms unstructured review comments into actionable, machine-parseable work items.

Phase 4: File Bugs

Every extracted issue becomes a Jira bug — automatically linked to the parent Epic (detected from the branch name pattern feature/PROJ-xxx-description). This creates full traceability: PR comment → Jira bug → fix commit → resolved thread.

Each bug gets labels for automated tracking: pr-review, copilot-review, auto-generated. This lets you build dashboards showing exactly what types of issues AI catches vs. humans, over time.

Phase 5: Fix

The agent reads each issue in context (surrounding code, file history, related files), applies the fix, and runs the verification suite (lint, typecheck, tests). If a fix breaks something, it rolls back and tries an alternative approach.

Critical rule: fixes must be minimal. The agent only changes what the review explicitly calls out — no drive-by refactoring, no 'while I'm here' improvements. This keeps diffs reviewable and reversible.

Phase 6: Resolve

For each fixed issue, the agent resolves the PR thread (via GraphQL mutation) and transitions the Jira bug to Done. Each resolution includes the fix commit SHA for audit trail.

Threads that weren't fixed (because they require human judgment or are false positives) are left unresolved with an explanatory comment.

Phase 7: Reflect

This is where the magic happens. After every review cycle that finds 3+ issues, the Reflector Agent activates.

Self-Healing Instructions: The Reflection Pattern

Self-healing instructions: the 5-Gate Test filters review findings into qualified instruction improvements

Most AI coding assistants make the same mistakes repeatedly because they have no mechanism to learn from feedback. The Reflector pattern fixes this.

The Reflector agent concept: a brain surrounded by feedback loops and the 5-gate quality filter

How It Works

After each review cycle, the Reflector analyzes the issues found across four dimensions:

  1. Frequency — Which issue categories appear most often?

  2. File patterns — Are certain modules or file types flagged repeatedly?

  3. Agent patterns — Is a specific agent (engineer, tester) producing most issues?

  4. Root cause — WHY did the mistake happen?

The root cause analysis drives the action:

  • Missing instruction → Add a new rule to the relevant instruction file

  • Ambiguous instruction → Clarify the existing rule with examples

  • Missing skill → Create a new skill file with domain knowledge

  • Process gap → Update the workflow or agent handoff

  • Tool misuse → Add a guardrail or constraint

The 5-Gate Test

Before any instruction modification, the Reflector must pass all five gates:

  1. Would this rule have prevented the issue? → Must be YES

  2. Is it specific enough for unambiguous agent execution? → Must be YES

  3. Does it conflict with existing instructions? → Must be NO

  4. Is there a simpler enforcement (lint rule, test, type)? → Prefer that first

  5. Will it remain useful for 10+ PRs? → Must be YES

This prevents the most dangerous anti-pattern in AI systems: instruction bloat. Without these gates, every review cycle would add rules, and within weeks the instruction set becomes so large and contradictory that agents can't follow it.

Compounding Improvement

Evaluate instruction changes against representative changes before rollout. Track which rules reduce recurring defects, and remove redundant or conflicting instructions.

No production benchmark is established by this reference architecture. To evaluate reflection, compare recurring review findings per change before and after an instruction update, using comparable changes and stable review criteria.

Portable Template Architecture

A reusable template can reduce setup effort, but adoption still requires validating tool access, repository rules, test commands and issue-tracking mappings. Useful design choices include:

Token-Based Configuration

Every project-specific value is a replaceable token:

  • {{PROJECT_KEY}} — Your Jira project key (e.g., PROJ, MAV)

  • {{AGENT_PREFIX}} — Prefix for agent filenames (e.g., acme, myapp)

  • {{CONFLUENCE_SPACE}} — Where documentation lives

  • {{MCP_ATLASSIAN_PREFIX}} — Which MCP server handles Jira/Confluence

  • {{INSTANCE_URL}} — Your Atlassian cloud URL

An adopt.sh script replaces all tokens via sed during installation — making the entire system project-agnostic while remaining fully functional.

Respecting Existing State

The installer is designed to be safe:

  • Never overwrites existing files (skip + warn)

  • Never touches .specify/, specs/, or constitution files

  • Appends PR Review Cycle rules to existing constitution (doesn't replace)

  • Detects existing SpecKit, agents, instructions and preserves them

  • Supports --dry-run to preview before committing

Industry Context: Why Multi-Agent Beats Single-Agent

Multiple agents can separate responsibilities, while a single agent can reduce coordination overhead. Select the approach through workload-specific evaluation rather than assuming one architecture always produces better code.

Multi-agent vs single-agent comparison: specialized formation vs overwhelmed single bot

Compare the approaches:

Single-Agent (Devin, SWE-Agent)

One model does everything: plan, code, test, debug. Works for isolated tasks but struggles with complex multi-file changes, architectural decisions, and long-running workflows.

Multi-Agent Orchestrated (Our Approach)

Specialized agents with clear boundaries, explicit handoffs, and feedback loops. Each agent is optimized for its domain. Scales better with complexity.

Evaluate the architecture

Compare single-agent and multi-agent workflows on the same tasks, acceptance criteria, costs and review standards before choosing an operating model.

The key advantage of multi-agent systems isn't raw capability — it's composability and debuggability. When something goes wrong, you know exactly which agent failed and why. You can fix one agent's instructions without affecting others. You can add new specialists without retraining anything.

How to measure results in your environment

Collect a baseline and compare equivalent changes after adoption. Report the sample size, dates, repository context, review policy and model versions alongside the results.

  • Time from review request to actionable feedback and final acceptance

  • Proportion of proposed fixes accepted after verification

  • Human review effort per comparable change

  • Recurring defects, escaped defects and false-positive findings

  • Workflow cost per accepted change, including retries and human review

When NOT to Use This

AI agent teams are powerful but not universal. Don't use them for:

  • Novel architecture decisions — these require human creativity and business context

  • Ambiguous requirements — agents need clear acceptance criteria

  • Creative design work — visual/UX decisions need human taste

  • Security-critical paths — always have a human verify auth/crypto/data handling

  • First-time patterns — agents learn from repetition, not invention

Start with repetitive work that has clear acceptance criteria and verifiable outcomes. Keep ambiguous or high-risk decisions under appropriate human review.

Getting Started: A 5-Step Adoption Path

Template adoption flow: clone, run adopt.sh, tokens replaced, agents active

Ready to try this on your own project? Here's the practical path:

Self-healing code review system: AI agents reviewing, fixing, and learning in a continuous loop
  1. Start with just the PR Reviewer agent — it delivers value immediately without changing how your team works

  2. Add the GitHub Action for automatic review triggering — zero-friction, zero configuration

  3. Enable the Reflector after 5-10 review cycles — by then you'll have enough data for meaningful patterns

  4. Gradually add specialist agents (engineer, tester) as you identify which review categories are most common

  5. Build the full PM → Builder → Specialist pipeline only after the review loop is battle-tested

Introduce one stage at a time and check whether accepted fixes, review effort and release quality improve. Publish savings only when a reproducible measurement supports them.

The Future: Agents That Design Their Own Workflows

We're already seeing the next evolution: agents that not only fix code and improve instructions, but redesign their own workflows when they detect systemic inefficiencies.

Imagine a Reflector that notices 'the security agent keeps flagging the same pattern in auth middleware' and responds not just by adding a rule, but by proposing a shared utility that eliminates the pattern entirely. Or a PM agent that learns which task decompositions lead to fewer review issues and adjusts its planning strategy accordingly.

This is where AI-assisted development is heading: not just automating the work we already do, but discovering better ways to work that humans wouldn't have found on their own.

Try the Template

Our full agent workflow template is open and portable — drop it into any TypeScript project with Jira integration. Set up in 5 minutes, see results on your next PR.

Further reading and related controls

McKinsey's interview with Sonar's CEO discusses verification, code quality and the limits of output-only productivity measures: How AI is shaking up coding.

Connect this workflow to AI software delivery governance and release evidence and AI agent sandboxing and authority boundaries.

Make your next piece count

Give good ideas a better way to ship.

Start with a brief. Keep the editorial decisions yours.

Part of the Archy AI Platform