Verified against Replit Agent · 2026-07-25
Debug a specific, reproducible bug without triggering a rewrite
A Replit Agent debugging brief that requires the bug to be reproduced before it's fixed, bans defensive checks that mask the real cause, and names the adjacent flows to re-check after the fix lands.
The prompt
Ready to copy — highlighted parts are example details you can swap.
StudyBot (the Discord reminder bot) is a working app you (or an earlier session) already built in Replit. It has one specific, reproducible bug. Fix exactly that bug with the smallest correct change — this is a debugging pass, not an invitation to refactor or rewrite anything else you notice along the way. THE BUG The /remind command sometimes posts the reminder twice in the channel STEPS TO REPRODUCE Run /remind with a time less than 60 seconds away, then wait for it to fire — about 1 in 3 attempts posts the message twice, roughly 2 seconds apart EXPECTED VS ACTUAL Expected: exactly one reminder message posted at the scheduled time Actual: occasionally two identical reminder messages posted a couple seconds apart DEBUGGING DISCIPLINE Before changing any code, reproduce the bug yourself using the steps above and confirm you're seeing the same actual behavior I'm describing — if you can't reproduce it with these exact steps, say so and ask what's different about my environment rather than guessing at a fix for a bug you haven't actually observed. Once reproduced, trace the actual root cause — the specific line, the specific piece of state, the specific request that's wrong — and explain it in plain language before touching any code, the same way a human engineer would explain a diagnosis before writing a fix. Do not fix the bug by wrapping the symptom in a defensive check that hides it (a try/catch that silently swallows the error, an if-statement that skips the broken code path) unless that genuinely is the correct fix — if the underlying cause is something else entirely and a defensive check would just mask it, say so and fix the actual cause instead. Make the smallest change that fixes the root cause. If you notice unrelated code nearby that looks wrong or outdated while you're in there, do not fix it as part of this change — name it separately, at the end, as something worth a future look, and leave it untouched. VERIFICATION After the fix, walk back through the exact repro steps above and confirm the actual behavior now matches expected. Then check the two or three most obviously related flows that touch the same code path — the /schedule command (uses the same scheduling function) and the daily automated reminder job — and confirm the fix didn't change their behavior, since a fix scoped to one exact symptom can still have side effects on a shared function or shared piece of state used elsewhere. OUTPUT 1. The root cause, in plain language. 2. The diff — only the lines that changed, nothing reformatted or touched that didn't need to be. 3. Confirmation that the original repro steps now produce the expected behavior. 4. Anything unrelated you noticed but deliberately left alone, per the rule above.
Customize
Optional — swap in your own details for the highlighted parts above.
Why this works
Requiring the agent to actually reproduce the bug itself before proposing a fix targets a specific and common agentic-coding failure. Given a bug description in natural language, an agent can generate a plausible-sounding fix for a plausible-sounding cause without ever running the actual repro steps — and skipping that step is strictly worse in an environment like Replit's own always-running workspace, where the agent genuinely has the means to execute the app and watch it fail, than in a static code-review context where it never could. The prompt is what makes it use that means instead of pattern-matching a guess from the description alone. The explicit ban on defensive-check fixes that mask a symptom addresses a known shortcut failure mode: a try/catch wrapped around a flaky database write can make an intermittent double-post disappear from the logs without fixing the actual race condition causing it. The bug looks fixed because the symptom stopped being visible, but the underlying non-idempotent scheduling logic — the likely real cause of a reminder firing twice — is untouched and will resurface differently later, quite possibly in a code path the defensive check never covered in the first place. Naming specific related flows to re-check after the fix, rather than a generic "make sure nothing else broke," matters because Replit Agent operates across a real, shared codebase where a scheduling function fixed for one command is very likely reused by another command or an automated job. A fix verified only against the original repro steps can look complete while silently breaking a second caller of the same shared function that nobody thought to re-test — naming the specific adjacent flows up front turns "hopefully nothing else uses this" into an actual, bounded checklist someone can work through, rather than a hope resting on how thorough the fixing session happened to feel at the time.
Verified against
Replit Agent Replit Agent (chat-based build mode in Replit) · 2026-07-25
Changelog
- 2026-07-25 — Initial publish, verified against Replit Agent with a mandatory reproduce-before-fix step and a ban on symptom-masking defensive checks.
Need this built into your business?
If a prompt isn't enough — custom software, built and maintained for you — that's Scult's day job.
EXPLORE CUSTOM SOFTWARE
