<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Conor</title>
    <description>The latest articles on DEV Community by Conor (@danche).</description>
    <link>https://dev.to/danche</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3878069%2Fe1900303-3f3c-4590-a63a-0b33d47e48af.jpg</url>
      <title>DEV Community: Conor</title>
      <link>https://dev.to/danche</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/danche"/>
    <language>en</language>
    <item>
      <title>I Built an AI Code Review Pipeline — One Command for Review + Auto-Fix + Tests + Report</title>
      <dc:creator>Conor</dc:creator>
      <pubDate>Tue, 14 Apr 2026 07:52:15 +0000</pubDate>
      <link>https://dev.to/danche/i-built-an-ai-code-review-pipeline-one-command-for-review-auto-fix-tests-report-5g9d</link>
      <guid>https://dev.to/danche/i-built-an-ai-code-review-pipeline-one-command-for-review-auto-fix-tests-report-5g9d</guid>
      <description>&lt;h1&gt;
  
  
  I Built an AI Code Review Pipeline — One Command for Review + Auto-Fix + Tests + Report
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;Zero dependencies, 6 AI providers, runs with &lt;code&gt;npx&lt;/code&gt;. Quality control for the Vibe Coding era.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The Problem: Who Reviews AI-Generated Code?
&lt;/h2&gt;

&lt;p&gt;AI-assisted coding tools (Cursor, Copilot, Windsurf) have made us 3-5x faster. But they've also created a new problem:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI writes fast, but who ensures quality?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You let Cursor write a component. It runs. But:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Any XSS vulnerabilities?&lt;/li&gt;
&lt;li&gt;Edge cases handled? Null checks?&lt;/li&gt;
&lt;li&gt;Types all &lt;code&gt;any&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;Error handling silently swallowing exceptions?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Manual code review? If you're a solo dev, a small team, or just busy shipping — there's no time.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;ai-review-pipeline&lt;/strong&gt; — let AI review AI-generated code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx ai-review-pipeline
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One command: Review → Test generation → HTML report. Fully automated.&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Does
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Default Mode: Review + Tests + Report (Read-Only)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx ai-rp &lt;span class="nt"&gt;--file&lt;/span&gt; src/ &lt;span class="nt"&gt;--full&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pipeline:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;① AI Code Review (score + issue list + fix suggestions)
       ↓
② AI Test Case Generation (functional / adversarial / edge cases)
       ↓
③ HTML Visual Report
       ↓
④ Has 🔴 issues → exit(1) blocks CI; all green → exit(0) passes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Doesn't touch your code. Review only, report only.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Terminal output in action:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;![Terminal screenshot — AI Review real-time output]&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffi3vshh078qzadpy3sec.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffi3vshh078qzadpy3sec.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  --fix Mode: Automated Fix Loop
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx ai-rp &lt;span class="nt"&gt;--fix&lt;/span&gt; &lt;span class="nt"&gt;--file&lt;/span&gt; src/views/Home.vue &lt;span class="nt"&gt;--full&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;① Review → finds 3 🔴 issues
       ↓
② AI auto-fix (quality issues only, never touches business logic)
       ↓
③ Re-review → 1 🔴 remaining
       ↓
④ Fix again → re-review → 0 🔴 ✅
       ↓
⑤ Test case generation
       ↓
⑥ HTML report
       ↓
⑦ Auto git commit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Keeps fixing until clean, up to N rounds (default 5). If still not clean after N rounds? It won't get stuck — generates tests and report anyway, then &lt;code&gt;exit(1)&lt;/code&gt; to tell CI "still has issues."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Auto-generated HTML report:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;![HTML Report — score, severity levels, fix suggestions at a glance]&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhh95d6sqivpqbax04zwh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhh95d6sqivpqbax04zwh.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Get Started in 30 Seconds
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Set an API key (pick any AI provider)&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'OPENAI_API_KEY=sk-xxx'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; .env.local

&lt;span class="c"&gt;# 2. Run&lt;/span&gt;
npx ai-review-pipeline &lt;span class="nt"&gt;--file&lt;/span&gt; src/ &lt;span class="nt"&gt;--full&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That's it. No &lt;code&gt;npm install&lt;/code&gt;. No config file. No account signup.&lt;/p&gt;
&lt;h2&gt;
  
  
  6 AI Providers, Auto-Detected
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;sk-xxx              &lt;span class="c"&gt;# → OpenAI&lt;/span&gt;
&lt;span class="nv"&gt;DEEPSEEK_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;sk-xxx            &lt;span class="c"&gt;# → DeepSeek&lt;/span&gt;
&lt;span class="nv"&gt;ANTHROPIC_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;sk-ant-xxx       &lt;span class="c"&gt;# → Claude&lt;/span&gt;
&lt;span class="nv"&gt;DASHSCOPE_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;sk-xxx           &lt;span class="c"&gt;# → Qwen (Alibaba)&lt;/span&gt;
&lt;span class="nv"&gt;GEMINI_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;xxx                 &lt;span class="c"&gt;# → Google Gemini&lt;/span&gt;
&lt;span class="nv"&gt;AI_REVIEW_PROVIDER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;ollama          &lt;span class="c"&gt;# → Local Ollama (free, private)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Default Model&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;OpenAI&lt;/td&gt;
&lt;td&gt;gpt-4o-mini&lt;/td&gt;
&lt;td&gt;Stable, great ecosystem&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek&lt;/td&gt;
&lt;td&gt;deepseek-chat&lt;/td&gt;
&lt;td&gt;Cheapest, fast&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude&lt;/td&gt;
&lt;td&gt;claude-sonnet-4&lt;/td&gt;
&lt;td&gt;Strongest code understanding&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini&lt;/td&gt;
&lt;td&gt;gemini-2.0-flash&lt;/td&gt;
&lt;td&gt;Generous free tier&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ollama&lt;/td&gt;
&lt;td&gt;qwen2.5-coder&lt;/td&gt;
&lt;td&gt;Fully local, zero cost&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Don't want to send code to the cloud? Use Ollama:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama pull qwen2.5-coder
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'AI_REVIEW_PROVIDER=ollama'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; .env.local
npx ai-rp &lt;span class="nt"&gt;--file&lt;/span&gt; src/ &lt;span class="nt"&gt;--full&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What It Reviews
&lt;/h2&gt;

&lt;p&gt;Issues are categorized by severity:&lt;/p&gt;

&lt;h3&gt;
  
  
  🔴 Critical (Blocks Merge)
&lt;/h3&gt;

&lt;p&gt;Logic errors, security vulnerabilities (XSS, injection, credential leaks), data risks (race conditions, precision errors)&lt;/p&gt;

&lt;h3&gt;
  
  
  🟡 Warning (Should Fix)
&lt;/h3&gt;

&lt;p&gt;Unhandled edge cases (null, undefined, timeout), type issues (&lt;code&gt;any&lt;/code&gt;, unsafe casts), missing error handling&lt;/p&gt;

&lt;h3&gt;
  
  
  🟢 Info (Improve Later)
&lt;/h3&gt;

&lt;p&gt;Code duplication, unclear naming, performance hints&lt;/p&gt;

&lt;h2&gt;
  
  
  Test Case Generation
&lt;/h2&gt;

&lt;p&gt;Not just review — it also generates three types of test cases:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Covers&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;✅ Functional&lt;/td&gt;
&lt;td&gt;CRUD, state flows, component rendering&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;⚔️ Adversarial&lt;/td&gt;
&lt;td&gt;XSS injection, SQL injection, overflow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔲 Edge Cases&lt;/td&gt;
&lt;td&gt;Null, 0, negative, MAX_SAFE_INTEGER&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Output includes descriptions and &lt;strong&gt;runnable test code&lt;/strong&gt; (auto-detects your stack: Vitest / Jest / pytest / Go testing).&lt;/p&gt;

&lt;h2&gt;
  
  
  CI/CD Integration
&lt;/h2&gt;

&lt;h3&gt;
  
  
  GitHub Actions
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;AI Code Review&lt;/span&gt;
  &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npx ai-review-pipeline --json&lt;/span&gt;
  &lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.OPENAI_API_KEY }}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Git Hook (lefthook)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# lefthook.yml&lt;/span&gt;
&lt;span class="na"&gt;pre-push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;commands&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;ai-review&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npx ai-rp --fix --max-rounds &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Auto-review before push. Blocks if issues remain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Design Decisions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Unified Pipeline, Not Separate Commands
&lt;/h3&gt;

&lt;p&gt;In v2, I had three commands: &lt;code&gt;review&lt;/code&gt;, &lt;code&gt;fix&lt;/code&gt;, &lt;code&gt;test&lt;/code&gt;. After using it daily, I realized:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;90% of the time you want "review + tests + report" in one shot.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;v3 unified everything into one pipeline. &lt;code&gt;--fix&lt;/code&gt; is an enhancement flag. Old commands kept as aliases for backward compatibility.&lt;/p&gt;

&lt;h3&gt;
  
  
  Safety Mechanisms
&lt;/h3&gt;

&lt;p&gt;Auto-fix has a safety valve: the fixed file can't be less than 50% of the original. Prevents AI from "fixing" by deleting half your code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Zero Dependencies
&lt;/h3&gt;

&lt;p&gt;The entire tool has &lt;strong&gt;0 required dependencies&lt;/strong&gt;. Node.js 18+ built-in &lt;code&gt;fetch&lt;/code&gt; for API calls, &lt;code&gt;child_process&lt;/code&gt; for git, &lt;code&gt;fs&lt;/code&gt; for files. The only optional peer dependency is &lt;code&gt;https-proxy-agent&lt;/code&gt; for proxy setups.&lt;/p&gt;

&lt;h3&gt;
  
  
  Exit Codes for CI
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Exit Code&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Review passed&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;All clear&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Has 🔴 issues&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Block merge&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;--fix&lt;/code&gt; success&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Fixed + committed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;--fix&lt;/code&gt; failed&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Still has issues&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Even when &lt;code&gt;--fix&lt;/code&gt; fails, tests and report are still generated — the report is for humans, not for passing CI.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Compares
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;ai-review-pipeline&lt;/th&gt;
&lt;th&gt;CodeRabbit&lt;/th&gt;
&lt;th&gt;SonarQube&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Setup&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;npx&lt;/code&gt;, zero config&lt;/td&gt;
&lt;td&gt;SaaS, signup&lt;/td&gt;
&lt;td&gt;Deploy server&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dependencies&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Java runtime&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auto-fix&lt;/td&gt;
&lt;td&gt;✅ Multi-round&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Test gen&lt;/td&gt;
&lt;td&gt;✅ 3 types&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI models&lt;/td&gt;
&lt;td&gt;6 providers + local&lt;/td&gt;
&lt;td&gt;Fixed&lt;/td&gt;
&lt;td&gt;Rule engine&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data privacy&lt;/td&gt;
&lt;td&gt;Ollama = fully local&lt;/td&gt;
&lt;td&gt;Code → cloud&lt;/td&gt;
&lt;td&gt;Self-hosted ok&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost&lt;/td&gt;
&lt;td&gt;Pay per token (pennies)&lt;/td&gt;
&lt;td&gt;$15/mo+&lt;/td&gt;
&lt;td&gt;Community = free&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The key difference: this is a &lt;strong&gt;CLI tool&lt;/strong&gt;, not a SaaS. Your code goes directly to the AI API — no middleman server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Project Config
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx ai-rp init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Generates &lt;code&gt;.ai-pipeline.json&lt;/code&gt; — commit to git, share with team:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"review"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"threshold"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;95&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"maxRounds"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"customRules"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"No any types allowed"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"API keys must not be hardcoded"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"All API calls must have error handling"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"test"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"stack"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"auto"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"maxCases"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;customRules&lt;/code&gt; is the highlight — write your team's standards, AI enforces them on every review.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Reference
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Default: review + tests + report (read-only)&lt;/span&gt;
ai-rp
ai-rp &lt;span class="nt"&gt;--file&lt;/span&gt; src/views/Home.vue &lt;span class="nt"&gt;--full&lt;/span&gt;
ai-rp &lt;span class="nt"&gt;--file&lt;/span&gt; src/ &lt;span class="nt"&gt;--full&lt;/span&gt;

&lt;span class="c"&gt;# Fix mode: review + auto-fix + tests + report&lt;/span&gt;
ai-rp &lt;span class="nt"&gt;--fix&lt;/span&gt;
ai-rp &lt;span class="nt"&gt;--fix&lt;/span&gt; &lt;span class="nt"&gt;--file&lt;/span&gt; src/a.vue &lt;span class="nt"&gt;--full&lt;/span&gt; &lt;span class="nt"&gt;--max-rounds&lt;/span&gt; 3

&lt;span class="c"&gt;# Standalone test generation&lt;/span&gt;
ai-rp &lt;span class="nb"&gt;test&lt;/span&gt; &lt;span class="nt"&gt;--file&lt;/span&gt; src/utils.ts

&lt;span class="c"&gt;# Initialize config&lt;/span&gt;
ai-rp init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx ai-review-pipeline &lt;span class="nt"&gt;--file&lt;/span&gt; src/ &lt;span class="nt"&gt;--full&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3 minutes to give your codebase a health check.&lt;/p&gt;




&lt;p&gt;If you found this useful, check out the repo and drop a ⭐:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/hyxnj666-creator/ai-review-pipeline" rel="noopener noreferrer"&gt;GitHub - ai-review-pipeline&lt;/a&gt;&lt;br&gt;
📦 &lt;a href="https://www.npmjs.com/package/ai-review-pipeline" rel="noopener noreferrer"&gt;npm - ai-review-pipeline&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Got questions or feedback? Drop a comment below — I read every one.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>codereview</category>
      <category>devtools</category>
    </item>
  </channel>
</rss>
