So there you are, in incident review. Two days ago, right around midnight, you were the one who found the bug that took down all of prod: some long-forgotten intern had typed
goto fail twice. Now you're here, cleaning up the pieces and trying to figure out what to do next. Your CTO gets your attention.
Hey, you! You said this was a dumb mistake that could have happened to anyone, right? So if it's so easy to make… where else have we made it?
Time's of the essence, so you think of the fastest way to get your answer. "Good question! I'll check real quick," you stammer out, as you rack your brain for the right syntax. Ah, there it is, good ol'
grep. You can grab the line that follows a
goto, and if the next line is at the same indent level and is also a
goto, it's probably a bug.
It doesn't take long for the results to come back in. "Just one other spot, it looks like," as you—and the room—breathe a collective sigh of relief. "Yep, just some old test code in a deprecated project. I'll ping the committer to fix it."
This scenario plays out every day in conference rooms around the world. And when it does, the next thing that happens is that your script gets forgotten. Soon enough, it rotates out of shell history, and maybe you even move on to another company. And with that move, the memory is lost, and inevitably the mistake—that "could have happened to anyone"—will indeed happen again.
lint.ai is your path to breaking this cycle. It enables you to take that code you just wrote, exactly as you wrote it, and drop it into a file in your repo. Now, every new commit, every new PR is checked with your code. Now, every line in the repo is not just searched retroactively, but protected proactively, forever.
lint.ai codifies and makes permanent the institutional memory of what went wrong and how to avoid a recurrence. And by easing the onramp for code quality enforcement to the lowest imaginable common denominator—a shell script—it allows you to capture rules in the moment and often at zero cost, by giving you a place to check in the code that has already been written and a framework that runs it on every future iteration.