-
-
antiBug: review drills for AI-written code
-
Start: a public GitHub commit, pasted code, or Try a sample
-
Claude plants one logic bug and checks the code still parses
-
The hunt: one line is broken and the clock is running
-
Wrong guess: +10 s and a hot/warm/cold hint
-
Hint: the bug's category, for +15 s
-
Reveal: original vs planted line, with the lesson and your time
-
Your click and the planted bug, labelled in the code
Inspiration
I write a lot of code with AI agents, and I merge more of it than I really read. A bug fixer would only make that worse, so I wanted the opposite: a drill that checks whether I actually understand what I just shipped.
What it does
antiBug turns the code your AI agent wrote into a timed debugging challenge. Point it at a commit in a public GitHub repo, paste a snippet, or click Try a sample. Claude plants one realistic logic bug in the lines that commit added, and the code still compiles. The clock starts and you click the line you think is broken. A wrong guess costs 10 seconds and tells you if you're hot, warm or cold; a hint costs 15. Then you see the original line next to the planted one, with a short lesson on why it would bite. Streak and best time stay in your browser.
It's for developers who work with AI coding agents and want to keep their review and debugging skills sharp.
How I built it
Next.js and TypeScript, with Claude planting the bugs. I planned it first with the Devpost Learn skills (scope, PRD, spec, then a build checklist) and built it in four slices. Claude's bug is never trusted as is: a checker rejects anything that doesn't parse, changes the line count, or only touches types or comments, and feeds the reason back for a retry. The answer is sealed in an encrypted token, so there's no database. It runs on Cloudflare Workers, with a Durable Object for the per-visitor drill limit.
Challenges I ran into
- One drill planted a skipped test in a test file instead of a logic bug, so test files now come last when picking where to plant.
- After a commit with no JS/TS changes, the error seemed to flash and do nothing; it now sits on the commit that failed.
- On Cloudflare, an in-memory rate limit doesn't hold across server copies, and the adapter needed a patch for Next 16.
What I learned
Never act on model output without checking it in code. And a real user test finds what unit tests miss: a first-time visitor had no code to try, which is why Try a sample exists.
Built With
- anthropic
- claude
- cloudflare-workers
- durable-objects
- github-api
- next.js
- react
- typescript
- vitest
Log in or sign up for Devpost to join the conversation.