<?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: Scan AI Slop</title>
    <description>The latest articles on DEV Community by Scan AI Slop (scanaislop).</description>
    <link>https://dev.to/scanaislop</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.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F13579%2F4c1b7572-bd32-4acd-ad0d-0a080260f9ad.png</url>
      <title>DEV Community: Scan AI Slop</title>
      <link>https://dev.to/scanaislop</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/scanaislop"/>
    <language>en</language>
    <item>
      <title>aislop is now on the GitHub Marketplace</title>
      <dc:creator>Taiwo Olawuwo</dc:creator>
      <pubDate>Fri, 19 Jun 2026 08:57:25 +0000</pubDate>
      <link>https://dev.to/scanaislop/aislop-is-now-on-the-github-marketplace-1845</link>
      <guid>https://dev.to/scanaislop/aislop-is-now-on-the-github-marketplace-1845</guid>
      <description>&lt;p&gt;If you are writing and shipping code with Claude Code, Cursor, or Codex, this is your missing quality layer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://scanaislop.com" rel="noopener noreferrer"&gt;aislop&lt;/a&gt; started as a CLI built for one specific problem, catching the patterns AI agents leave behind that look fine in review and quietly degrade a codebase. Swallowed exceptions. &lt;code&gt;as any&lt;/code&gt; everywhere the types got complicated. TODO stubs where the real logic should be.&lt;/p&gt;

&lt;p&gt;Today it hit a milestone, it's live on the GitHub Marketplace. &lt;/p&gt;

&lt;p&gt;That means installing &lt;a href="https://scanaislop.com" rel="noopener noreferrer"&gt;aislop&lt;/a&gt; on a repo is now a two-click process. No manual CI setup. Every PR gets scanned automatically, findings go back to the agent that wrote the code, and nothing merges below your quality threshold.&lt;/p&gt;

&lt;p&gt;The core is the same:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;50+ rules across 8 languages&lt;/li&gt;
&lt;li&gt;Sub-second, deterministic, no LLM at runtime&lt;/li&gt;
&lt;li&gt;Catches swallowed exceptions, unsafe type casts, narrative comments, dead code, oversized files, dependency vulnerabilities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But the barrier to getting a team set up is now basically zero.&lt;br&gt;
If you're already running &lt;code&gt;npx aislop scan&lt;/code&gt; locally, the Marketplace app is the natural next step, same gate, every PR, no config work.&lt;/p&gt;

&lt;p&gt;If you haven't tried it yet, this is a good moment to start. Install now on Github: &lt;a href="https://github.com/marketplace/aislop-ai-code-quality-gate" rel="noopener noreferrer"&gt;https://github.com/marketplace/aislop-ai-code-quality-gate&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is the link to the opensource project on GitHub: &lt;a href="https://github.com/scanaislop/aislop" rel="noopener noreferrer"&gt;https://github.com/scanaislop/aislop&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Visit to learn more on: &lt;a href="https://scanaislop.com" rel="noopener noreferrer"&gt;https://scanaislop.com&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>AI Made Coding Easier. It Also Made Bad Code Easier to Ship.</title>
      <dc:creator>Makanju Oluwafemi</dc:creator>
      <pubDate>Fri, 19 Jun 2026 04:39:33 +0000</pubDate>
      <link>https://dev.to/scanaislop/ai-made-coding-easier-it-also-made-bad-code-easier-to-ship-2bp4</link>
      <guid>https://dev.to/scanaislop/ai-made-coding-easier-it-also-made-bad-code-easier-to-ship-2bp4</guid>
      <description>&lt;p&gt;At its core, software development has always been about a simple cycle:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Write &amp;gt; Review &amp;gt; Deploy &amp;gt; Monitor&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You ship code. The code goes through reviews. You deploy it. Then you monitor production to make sure everything stays stable. When you're working in a team, code reviews are non-negotiable. They're one of the best ways to maintain quality, catch issues early, and ensure everyone is building toward the same standards. But we're now living in a very different era. An era where a developer or, honestly, a random dude with an idea can build products through conversation.&lt;/p&gt;

&lt;p&gt;Hehe, interesting times!&lt;/p&gt;

&lt;h2&gt;
  
  
  From GitHub Copilot to "Build Me an App"
&lt;/h2&gt;

&lt;p&gt;I remember when developers were almost shy about admitting they used coding assistants. Back in the early GitHub Copilot days, saying &lt;em&gt;"I use AI to help me write code"&lt;/em&gt; sometimes felt like admitting you were taking shortcuts.&lt;/p&gt;

&lt;p&gt;Fast forward to today, and we've reached a point where people can write code using natural language. I genuinely never thought we'd get here this quickly. And since then, it's been one hell of a ride.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why 7 Out of 10 Developers Ship AI-Assisted Code
&lt;/h2&gt;

&lt;p&gt;Today, most developers are shipping AI-assisted code. Not because they're bad developers. Not because they're lazy. Because it makes them faster.&lt;/p&gt;

&lt;p&gt;AI helps close the gap between domain expertise and implementation.&lt;/p&gt;

&lt;p&gt;You can go from "I've never heard of this technology" to "I can build something with it" within 30 minutes to an hour of focused work.&lt;/p&gt;

&lt;p&gt;Traditionally, learning a new framework, library, or service required days of reading documentation and experimenting.&lt;/p&gt;

&lt;p&gt;Now, AI can accelerate that process dramatically.&lt;br&gt;
That's the magic.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Part Nobody Talks About
&lt;/h2&gt;

&lt;p&gt;The problem is that while AI is incredibly good at generating code, it's not always good at generating good code.&lt;/p&gt;

&lt;p&gt;Recently, I built a product using Antigravity, and while it helped me move fast, I noticed several issues almost immediately:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Poor code quality&lt;/li&gt;
&lt;li&gt;Weak function modularization&lt;/li&gt;
&lt;li&gt;Security concerns&lt;/li&gt;
&lt;li&gt;Repeated implementation patterns&lt;/li&gt;
&lt;li&gt;Lack of reusable abstractions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The code worked. But "working" and "maintainable" are two very different things.&lt;/p&gt;

&lt;p&gt;And that's really the challenge with AI-assisted development today. The volume of code being generated is growing faster than our ability to review it properly.&lt;/p&gt;

&lt;p&gt;A lot of the issues aren't outright bugs. They're the subtle things that slowly make a codebase harder to maintain over time. Swallowed exceptions, generic variable names, dead code, unnecessary comments, duplicated logic, unsafe type assertions, and TODO stubs that somehow make it to production.&lt;/p&gt;

&lt;p&gt;That's what got me interested in &lt;a href="https://scanaislop.com/" rel="noopener noreferrer"&gt;ScanAISlop&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;One thing I like about it is that it isn't trying to play detective and tell you whether a human or AI wrote the code.&lt;/p&gt;

&lt;p&gt;Instead, it focuses on the stuff that actually matters: bad patterns, weak abstractions, security concerns, unnecessary complexity, and all those little things that make a codebase harder to maintain over time.&lt;/p&gt;

&lt;p&gt;The approach is pretty straightforward. No LLM sitting behind the scenes making guesses. The checks are deterministic, so the same code produces the same result every single time.&lt;/p&gt;

&lt;p&gt;And because the rules are opinionated, the output tends to be a lot more useful than tools that flag everything and leave you sorting through noise.&lt;/p&gt;

&lt;p&gt;You can try it right now on any public GitHub repository.&lt;/p&gt;

&lt;p&gt;Simply replace:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;github.com/&amp;lt;owner&amp;gt;/&amp;lt;repo&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;with:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;scanaislop.com/&amp;lt;owner&amp;gt;/&amp;lt;repo&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;and you'll get an instant report showing potential quality, security, and maintainability issues across the codebase.&lt;/p&gt;

&lt;p&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fff76svj0spmm0nx2c286.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fff76svj0spmm0nx2c286.png" alt=" " width="799" height="590"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I ran the CLI against one of my own projects, and the results were surprisingly useful. Instead of giving me a vague score, it pointed directly to the kinds of issues that reviewers typically miss when scanning large AI-generated pull requests.&lt;/p&gt;

&lt;p&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F080panzzxen5hxz8ywf5.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F080panzzxen5hxz8ywf5.png" alt=" " width="800" height="552"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;try &lt;code&gt;npx aislop scan&lt;/code&gt; to try-out the CLI&lt;/p&gt;

&lt;p&gt;The most interesting part?&lt;/p&gt;

&lt;p&gt;The CLI is completely open source and MIT licensed. You can inspect the rules, contribute improvements, open issues, or even help shape what good AI-assisted engineering should look like.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Please take a minute to try it out and star the repo: &lt;a href="https://github.com/scanaislop/aislop" rel="noopener noreferrer"&gt;https://github.com/scanaislop/aislop&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As AI continues to generate more code, I think tools like this become increasingly important—not because AI is bad, but because engineering standards shouldn't disappear just because code is easier to produce.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Advantage
&lt;/h2&gt;

&lt;p&gt;This is where engineering fundamentals still matter. Understanding how systems work, knowing how to structure a codebase, understanding design systems, knowing when to abstract a component, and knowing when not to.&lt;/p&gt;

&lt;p&gt;These things still separate experienced engineers from people who are simply prompting their way through development.&lt;/p&gt;

&lt;p&gt;For example, if I'm using a table across multiple screens, I'd rather create a reusable component once than copy and paste:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;across ten different files. AI can absolutely generate the table.&lt;/p&gt;

&lt;p&gt;But it takes engineering judgment to recognize that it should become a reusable building block.&lt;/p&gt;

&lt;p&gt;And most times, you have to explicitly tell your coding assistant that. AI can generate code. Experience tells you what code should exist in the first place.&lt;/p&gt;

&lt;h2&gt;
  
  
  The New Skill Isn't Coding Faster
&lt;/h2&gt;

&lt;p&gt;The new skill isn't necessarily writing code faster. It's reviewing code better. It's knowing what should be abstracted. It's spotting security issues. It's identifying AI-generated slop before it reaches production.&lt;/p&gt;

&lt;p&gt;Because the future isn't AI versus developers. The future is developers who know how to think, using AI as leverage.&lt;/p&gt;

&lt;p&gt;And those developers will always have an edge.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>programming</category>
      <category>productivity</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Why Your Team Needs a Quality Gate for AI-Generated Code (And How to Set One Up in Minutes)</title>
      <dc:creator>Taiwo Olawuwo</dc:creator>
      <pubDate>Mon, 08 Jun 2026 11:54:07 +0000</pubDate>
      <link>https://dev.to/scanaislop/why-your-team-needs-a-quality-gate-for-ai-generated-code-and-how-to-set-one-up-in-minutes-2721</link>
      <guid>https://dev.to/scanaislop/why-your-team-needs-a-quality-gate-for-ai-generated-code-and-how-to-set-one-up-in-minutes-2721</guid>
      <description>&lt;p&gt;&lt;em&gt;Your agents are already in production. Is anyone checking their work?&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;If your team is using any AI coding assistant — Claude Code, Cursor, Codex, Copilot — agents are already writing code that's ending up in your codebase. The question isn't whether to use them. It's whether you have any systematic way to check what they produce before it reaches production.&lt;/p&gt;

&lt;p&gt;Most teams don't. They rely on code review, which worked fine when engineers wrote every line themselves. It scales poorly when agents are generating hundreds of lines per session.&lt;/p&gt;

&lt;p&gt;That's the gap aislop fills.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is &lt;a href="https://scanaislop.com" rel="noopener noreferrer"&gt;aislop&lt;/a&gt;?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/scanaislop/aislop" rel="noopener noreferrer"&gt;aislop&lt;/a&gt; is a free, open-source CLI that scans your codebase and scores it against 50+ rules specifically designed to catch the patterns AI coding agents leave behind. It runs in under a second, requires no LLM at runtime, and works across TypeScript, JavaScript, Python, Go, Rust, Ruby, PHP, and Java.&lt;/p&gt;

&lt;p&gt;You run it. You get a score out of 100. You see exactly what's wrong and where.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx aislop scan
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it to get started. No account, no config, no setup.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why does AI-generated code need its own quality gate?
&lt;/h2&gt;

&lt;p&gt;AI-generated code fails differently than human-written code. It compiles. It passes tests. It looks reasonable in a 30-second review. But it has structural tells that accumulate into real problems over time:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Narrative comments&lt;/strong&gt; that describe what the code does line by line, instead of why — a sign the model was narrating, not documenting. These add noise without adding information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Swallowed exceptions&lt;/strong&gt; where the catch block exists but nothing happens inside it. The error is handled in appearance only. In production, it disappears silently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Generic naming&lt;/strong&gt; — &lt;code&gt;data2&lt;/code&gt;, &lt;code&gt;result&lt;/code&gt;, &lt;code&gt;temp&lt;/code&gt; — that makes sense in isolation but makes a whole file harder to read and reason about as the codebase grows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;as any&lt;/code&gt; and &lt;code&gt;@ts-ignore&lt;/code&gt;&lt;/strong&gt; in TypeScript where the agent hit a type complexity it didn't want to resolve. These aren't just style issues — they actively remove the safety guarantees your type system is supposed to provide.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TODO stubs&lt;/strong&gt; left where the hard logic should be. The function exists. The important part doesn't.&lt;/p&gt;

&lt;p&gt;None of these are bugs your tests will catch. They're quality problems that accumulate quietly until your codebase is meaningfully harder to maintain — and until the agents reading that code to generate their next PR are learning from bad examples.&lt;/p&gt;




&lt;h2&gt;
  
  
  The three concrete benefits
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. You stop relying on reviewer attention to catch mechanical issues&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When &lt;a href="https://scanaislop.com" rel="noopener noreferrer"&gt;aislop&lt;/a&gt; runs before review, the structural problems are already surfaced. Reviewers can focus on logic, architecture, and business context — the things only a human can evaluate — instead of hunting for unused imports and TODO stubs in a 400-line diff.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. You set one consistent standard across every agent on your team&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Different engineers prompt differently. Different agents produce differently. Without a shared quality gate, your codebase standards depend on whoever reviewed a given PR on a given day. aislop gives you one bar, enforced consistently on every merge.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. You close the loop — sending bad code back to the agent that wrote it&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When &lt;a href="https://scanaislop.com" rel="noopener noreferrer"&gt;aislop&lt;/a&gt; finds something it can't auto-fix, &lt;code&gt;npx aislop fix --claude&lt;/code&gt; hands the findings directly back to Claude Code, Codex, or Cursor for a second pass. The agent fixes its own output before a human reviews it. You get cleaner PRs without adding reviewer time.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to set it up
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Run a baseline scan&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx aislop scan
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This scores your current codebase, grouped by engine (formatting, linting, code quality, AI slop, security). Whatever number comes back is your starting point.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Auto-fix the easy stuff&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx aislop fix
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This applies all the mechanical fixes — unused imports, trivial comments, formatting issues — and re-scans so you see the new score. Anything requiring judgment is left for you or your agent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Gate it in CI&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;The interactive wizard writes a &lt;code&gt;.aislop/config.yml&lt;/code&gt; and optionally drops a GitHub Actions workflow file. Set your score threshold. From that point on, every PR runs through the gate automatically and can't merge below your bar.&lt;/p&gt;

&lt;p&gt;Total setup time: under ten minutes.&lt;/p&gt;




&lt;h2&gt;
  
  
  The bottom line
&lt;/h2&gt;

&lt;p&gt;AI coding assistants have made execution faster. They haven't made judgment automatic. aislop sits between the two — catching what agents consistently get wrong before it reaches your reviewers, your users, or the agents writing the next PR.&lt;/p&gt;

&lt;p&gt;Your agents are already writing production code. Make every PR meet your standard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://scanaislop.com" rel="noopener noreferrer"&gt;Run your first scan →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>softwaredevelopment</category>
      <category>tooling</category>
    </item>
    <item>
      <title>The Output Layer Problem: Why AI Velocity Makes Quality Gates More Important, Not Less</title>
      <dc:creator>Taiwo Olawuwo</dc:creator>
      <pubDate>Mon, 08 Jun 2026 11:44:07 +0000</pubDate>
      <link>https://dev.to/scanaislop/the-output-layer-problem-why-ai-velocity-makes-quality-gates-more-important-not-less-5he5</link>
      <guid>https://dev.to/scanaislop/the-output-layer-problem-why-ai-velocity-makes-quality-gates-more-important-not-less-5he5</guid>
      <description>&lt;p&gt;&lt;em&gt;The faster your agents ship code, the faster slop accumulates. Here's why the solution isn't slowing down.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;There's a version of the AI productivity story that goes like this: agents write the code, humans review the diff, everyone ships faster. Clean. Straightforward. Optimistic.&lt;/p&gt;

&lt;p&gt;The problem is that the middle part — "humans review the diff" — doesn't scale at the same rate as the first part. Agent output has compressed. Human attention hasn't.&lt;/p&gt;

&lt;p&gt;When a developer using Claude Code or Cursor can generate in an afternoon what used to take a week, the review queue doesn't empty faster. It fills up with bigger diffs, more files touched, more surface area to hold in your head at once. The execution layer has gotten faster. The judgment layer is the same size it was.&lt;/p&gt;

&lt;p&gt;This is what we'd call the output layer problem: the gap between how fast code is produced and how thoroughly it can be evaluated. And it's where a surprising amount of slop quietly enters production.&lt;/p&gt;




&lt;h2&gt;
  
  
  What slop looks like at speed
&lt;/h2&gt;

&lt;p&gt;AI-generated code isn't bad in the way junior developer code is bad. It doesn't usually have obvious logic errors or missing edge cases you'd catch in five minutes. It compiles. It passes your tests. It looks, at a glance, like perfectly reasonable code.&lt;/p&gt;

&lt;p&gt;What it tends to have instead are the structural signatures of code that wasn't written to be maintained:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Narrative comments&lt;/strong&gt; that explain what the code does line-by-line rather than why it does it — a tell that the model was narrating rather than documenting&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generic naming&lt;/strong&gt; that makes sense in the context of a single function but degrades the readability of a whole file over time&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swallowed exceptions&lt;/strong&gt; where error handling was stubbed in and never completed — the catch block exists, but nothing happens inside it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;as any&lt;/code&gt; and &lt;code&gt;@ts-ignore&lt;/code&gt;&lt;/strong&gt; scattered through TypeScript where the model hit a type complexity it didn't want to resolve properly&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TODO stubs&lt;/strong&gt; left in place where the agent ran out of context or confidence and deferred the hard part&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these are catastrophic individually. Together, across a codebase where agents are writing code at volume, they compound into something that's genuinely difficult and expensive to work with — not because any single file is broken, but because the accumulated weight of small quality deficits makes the whole system harder to change.&lt;/p&gt;

&lt;p&gt;This is what the vibe coding optimism tends to skip over. Building software is fast now. Running, maintaining, and evolving software is still the same job it always was — and that job is harder when the input material is structurally inconsistent.&lt;/p&gt;




&lt;h2&gt;
  
  
  The review bottleneck is real, and it's getting worse
&lt;/h2&gt;

&lt;p&gt;If you're a tech lead on a team that's adopted AI-assisted coding in any serious way, you've probably already felt this. PRs are bigger. The diff is longer. Your engineers are shipping more, but you're spending more time in review just to keep up with what they're producing — let alone to actually evaluate it carefully.&lt;/p&gt;

&lt;p&gt;The instinct is to review faster. Skim the obvious stuff, focus on the logic, trust that tests will catch the rest.&lt;/p&gt;

&lt;p&gt;The problem is that the patterns aislop flags — unused exports, oversized functions, trivial comments, unsafe type assertions, swallowed exceptions — are exactly the things that get skimmed past in a fast review. They're not bugs. They're not even wrong, exactly. They're just the structural residue of code that was generated rather than crafted, and they accumulate quietly until the codebase is meaningfully harder to work in.&lt;/p&gt;

&lt;p&gt;Speed-reviewing your way through AI-generated output doesn't solve the output layer problem. It just defers it.&lt;/p&gt;




&lt;h2&gt;
  
  
  What a quality gate actually changes
&lt;/h2&gt;

&lt;p&gt;A deterministic quality gate doesn't replace engineering judgment. It protects it.&lt;/p&gt;

&lt;p&gt;When &lt;a href="https://scanaislop.com" rel="noopener noreferrer"&gt;aislop&lt;/a&gt; scans a PR before it reaches review, the mechanical issues are already surfaced and scored. The reviewer doesn't have to catch them — they're in the findings. The auto-fixable ones are already gone. What's left for the human reviewer is the stuff that actually requires a human: the architectural decisions, the business logic, the tradeoffs that only make sense if you know why the system works the way it does.&lt;/p&gt;

&lt;p&gt;That's the division of labour that makes AI-assisted coding actually work at scale. Agents handle the execution. Deterministic tooling handles the structural quality check. Humans handle the judgment calls that context-free tools can't make.&lt;/p&gt;

&lt;p&gt;Without the middle layer, you get a situation where reviewers are either doing the machine's job (checking for &lt;code&gt;as any&lt;/code&gt; and TODO stubs in a 400-line diff) or not doing it (approving PRs that look fine but quietly degrade the codebase). Neither option is sustainable as agent output volume grows.&lt;/p&gt;




&lt;h2&gt;
  
  
  The compounding problem nobody talks about
&lt;/h2&gt;

&lt;p&gt;There's a second-order effect here that's worth naming directly.&lt;/p&gt;

&lt;p&gt;Agents don't just write new code. They read the existing codebase to understand context for what they're generating. When the codebase has accumulated structural slop — inconsistent naming, commented-out dead code, generic variable names that don't signal intent — agents use that as training signal for what's acceptable.&lt;/p&gt;

&lt;p&gt;Slop, in other words, teaches agents to produce more slop. A codebase that's been maintained with a quality gate produces materially better agent output than one that hasn't — because the agent has better patterns to learn from and fewer ambiguous examples to confuse it.&lt;/p&gt;

&lt;p&gt;This is the compounding argument for catching slop early. It's not just about the current PR. It's about the quality floor of every PR that comes after it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Codifying what "good" looks like
&lt;/h2&gt;

&lt;p&gt;The article that inspired this one — from the Leaders of Code podcast, featuring Jon Hyman of Braze and Jody Bailey of Stack Overflow — makes the point that one of the most consequential engineering tasks of the next few years will be getting experienced engineers' knowledge out of their heads and into a form that agents can use.&lt;/p&gt;

&lt;p&gt;That's true of architectural decisions and business context. It's equally true of code quality standards.&lt;/p&gt;

&lt;p&gt;Right now, most teams' sense of what acceptable code looks like lives in the heads of senior engineers and in the informal feedback loop of code review. When an agent violates those standards, a reviewer catches it — if they're paying attention, if they're not in a hurry, if the diff isn't too large to parse carefully.&lt;/p&gt;

&lt;p&gt;A quality gate externalises that standard. It makes the bar explicit, consistent, and enforceable without depending on reviewer attention in any given review cycle. That's not a replacement for the senior engineer's judgment. It's a way of making that judgment durable and scalable — which is exactly what needs to happen as agent output grows.&lt;/p&gt;




&lt;h2&gt;
  
  
  What to do with this
&lt;/h2&gt;

&lt;p&gt;If you're running a team that uses Claude Code, Codex, Cursor, or any other AI coding assistant at any meaningful volume, three things are worth doing now rather than later.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Set a baseline score.&lt;/strong&gt; Run &lt;code&gt;npx aislop scan&lt;/code&gt; on your current codebase. Whatever comes back is your current baseline — the accumulated structural debt from however your team has been working. You can't improve what you haven't measured.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gate new additions, not just the baseline.&lt;/strong&gt; The value of a CI gate isn't in fixing everything at once — it's in preventing new slop from accumulating while you address the existing debt incrementally. Set your threshold, commit the config, block merges that fall below it. New agent output gets checked before it reaches review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hand failing findings back to the agent.&lt;/strong&gt; When aislop surfaces an issue that isn't auto-fixable, &lt;code&gt;npx aislop fix --claude&lt;/code&gt; sends it directly to the agent that wrote the code for a second pass. You're not adding reviewer work — you're closing the loop before the human ever sees it.&lt;/p&gt;

&lt;p&gt;The execution layer has gotten dramatically faster. The judgment layer is still human-sized. A quality gate is what keeps those two things from diverging in ways that are expensive to fix later.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;aislop is a free, open-source CLI for scoring AI-generated code. It's sub-second, deterministic, and requires no configuration to start. &lt;a href="https://scanaislop.com" rel="noopener noreferrer"&gt;Run it in your repo →&lt;/a&gt;, &lt;a href="https://github.com/scanaislop/aislop" rel="noopener noreferrer"&gt;Github →&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>productivity</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>Introducing aislop: The Quality Gate for AI-Written Code</title>
      <dc:creator>Kenny Olawuwo.</dc:creator>
      <pubDate>Sat, 06 Jun 2026 19:58:48 +0000</pubDate>
      <link>https://dev.to/scanaislop/introducing-aislop-the-quality-gate-for-ai-written-code-326g</link>
      <guid>https://dev.to/scanaislop/introducing-aislop-the-quality-gate-for-ai-written-code-326g</guid>
      <description>&lt;p&gt;I got tired of reviewing pull requests that looked fine until they were not.&lt;/p&gt;

&lt;p&gt;The code compiled. The tests passed. The diff looked reasonable. Then, buried in the middle, there would be a catch block that swallowed every error, a &lt;code&gt;TODO&lt;/code&gt; that returned fake data, or another &lt;code&gt;as any&lt;/code&gt; cast because the agent did not finish the type work.&lt;/p&gt;

&lt;p&gt;That is the part people underestimate about AI-generated code. The first problem is not that it is obviously broken. The first problem is that it often looks acceptable.&lt;/p&gt;

&lt;p&gt;I built &lt;code&gt;[aislop](https://github.com/scanaislop/aislop)&lt;/code&gt; for that gap.&lt;/p&gt;

&lt;h2&gt;
  
  
  What aislop is
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;aislop&lt;/code&gt; is an open-source CLI for scanning AI-written code before it reaches production. It looks for the patterns AI coding agents leave behind when they are optimizing for "make the prompt work" instead of "keep this codebase healthy."&lt;/p&gt;

&lt;p&gt;Run it once:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx aislop@latest scan
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or install it and make it part of your local workflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--save-dev&lt;/span&gt; aislop
aislop scan &lt;span class="nt"&gt;--changes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It scores the code, reports findings, and can auto-fix the mechanical issues. The more important part is the gate: it gives your team a way to catch AI slop before it becomes normal.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem it solves
&lt;/h2&gt;

&lt;p&gt;Claude Code, Cursor, Codex, Copilot, and other coding agents are useful. This is not an argument against them. I use them because they make real engineering work faster.&lt;/p&gt;

&lt;p&gt;But agents have a different failure profile than humans.&lt;/p&gt;

&lt;p&gt;They write error handling that makes the function stop throwing, even when that hides the real failure. They add comments that explain the code instead of explaining a decision. They duplicate helpers because discovering the existing helper requires context. They cast through type errors because the compiler is in the way of finishing the task.&lt;/p&gt;

&lt;p&gt;None of that means the agent is useless. It means the output needs a different quality gate.&lt;/p&gt;

&lt;p&gt;Your existing linter still matters. Tests still matter. Typechecking still matters. &lt;code&gt;aislop&lt;/code&gt; sits next to those tools and asks a narrower question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Did an AI coding agent leave behind patterns that will make this code harder to maintain?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What it catches
&lt;/h2&gt;

&lt;p&gt;Common findings include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Narrative comments above self-explanatory code&lt;/li&gt;
&lt;li&gt;Swallowed exceptions and empty fallbacks&lt;/li&gt;
&lt;li&gt;Unsafe &lt;code&gt;as any&lt;/code&gt; casts&lt;/li&gt;
&lt;li&gt;Hallucinated imports&lt;/li&gt;
&lt;li&gt;Duplicated helpers and dead code&lt;/li&gt;
&lt;li&gt;Production TODO stubs&lt;/li&gt;
&lt;li&gt;Hardcoded environment values&lt;/li&gt;
&lt;li&gt;Oversized files and functions that agents kept appending to&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are not always bugs on day one. That is why they survive review. The damage is cumulative: noisier files, weaker types, less trustworthy error handling, more duplicate logic, and slower future changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I wanted a dedicated tool
&lt;/h2&gt;

&lt;p&gt;General-purpose linters were designed around human-written code. They catch formatting issues, unused variables, unsafe syntax, and many useful correctness problems. They do not fully understand the repeated fingerprints of agent output.&lt;/p&gt;

&lt;p&gt;For example, a linter might catch this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;sync&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But it probably will not catch this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;sync&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The second version is what agents often write. It looks like error handling. In production, it means "the sync failed" and "there were no records" now look identical.&lt;/p&gt;

&lt;p&gt;That is the kind of pattern &lt;code&gt;aislop&lt;/code&gt; is built to flag.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it fits
&lt;/h2&gt;

&lt;p&gt;Start with changed files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aislop scan &lt;span class="nt"&gt;--changes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then add CI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aislop ci &lt;span class="nt"&gt;--changes&lt;/span&gt; &lt;span class="nt"&gt;--base&lt;/span&gt; origin/main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If your team uses agent hooks, install one:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aislop hook &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--claude&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The goal is simple: keep the speed of AI-assisted development, but stop the low-quality residue from merging unnoticed.&lt;/p&gt;

&lt;p&gt;That is the bet behind &lt;code&gt;aislop&lt;/code&gt;: AI coding agents are here to stay, so code quality tooling has to adapt.&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/scanaislop/aislop" rel="noopener noreferrer"&gt;github.com/scanaislop/aislop&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Site: &lt;a href="https://scanaislop.com" rel="noopener noreferrer"&gt;scanaislop.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>codequality</category>
      <category>cleancode</category>
      <category>vibecoding</category>
    </item>
  </channel>
</rss>
