The feedback that made my launch
Part 1 of 2. The stars were nice. The honest feedback was better.
I built aislop because I kept seeing the same patterns in AI-written code. Narrative comments that restate the line below them. Wrappers that wrap nothing. Catch blocks that swallow the error and move on. I wanted a tool that catches those, so a human reviewer never has to.
For a while it sat at 21 stars. Then I posted it on Hacker News, and over a couple of days it went past 200. I am genuinely happy about that. But the stars are not the part I want to write about. The part I want to write about is one message from one stranger, and why it made the whole launch worth it.
First, the part I got wrong
Before the good story, the honest one. Under launch traffic the dashboard started throwing errors. People connected a repo, ran a scan, and watched the results page fail to load. The cause was plain once I looked: every request was loading a full scan payload into memory and parsing it. Fine at ten requests a minute, not fine under a spike. I fixed it that afternoon and added headroom. The scans themselves never failed. The page that fetched them did.
Rough timing for a first impression, and I am sorry to anyone who hit it. The thing that breaks is never the thing you stress-tested.
The message that mattered
Someone who maintains a Python library with tens of thousands of stars ran aislop on his own projects. One of them, written largely before the current wave of AI tools even existed, scored in the low teens. He pointed it at another of his libraries and it scored 1 out of 100.
His note was short and honest. He expected a tool with "slop" in the name to detect AI-generated code. Instead it had graded his careful, mostly-human code as if it were the problem. He did not have to say any of that. He could have closed the tab and moved on. Instead he wrote back, pointed at exactly what felt wrong, and offered to get on a call. We talked.
That is the thing. A maintainer with that much on his plate took the time to tell me, kindly and directly, that my tool was wrong. People do not owe you that. When they give it anyway, you listen.
Why I did not get defensive
The reflex is to explain. "Well, the score measures maintainability, not whether the code is AI-written." All true, and completely useless. When someone who writes excellent code tells you your tool called it slop, the score is the message, and the message landed wrong.
So instead of explaining, I did the thing he suggested. I scanned his library myself, one finding at a time, to see exactly why clean code scored a 1.
What the 1 was actually made of
The library produced 426 findings. I broke them down by rule, and the result was uncomfortable. Three rules accounted for most of them, and they were firing on normal library code. A one-line method like this:
def filter(self, message): return bool(message.animation)is not a wrapper to delete. It is exactly how that library exposes its public API. A comment that explains a non-obvious ordering constraint is not narration. It is the comment you most want to keep. The 1 was not a verdict on his code. It was a verdict on my rules.
This is why I build it
A real maintainer, real code, honest feedback, and a clear bug to go fix. That loop is the reason I started this. The launch numbers are fun, but a person taking my tool seriously enough to tell me where it falls down is worth more than any of them.
So here is my ask. Run it on your own code: npx aislop scan.
If it gets something wrong, that is exactly what I want to hear. Tell me on
GitHub Discussions
or find me at x.com/heavykenny.
In part two I
go through what I actually changed after that score, and the one fix I built, loved for an hour,
and then threw away.