roblox-debugging-bugfix
Skill2 starsChanged 29 days agoMITView on GitHub
Disciplined debugging for Roblox games kept in git and synced to Studio with Rojo. Build a fast repro loop driven through Roblox Studio's built-in MCP (start_stop_play, get_console_output, execute_luau, character_navigation, screen_capture), rank falsifiable hypotheses, probe with tagged logs in temporary scripts, fix the repo source, and re-verify in a fresh Play. Use for console errors, broken UI, failed gameplay systems, remote or data issues, regressions, intermittent bugs, and root-cause reports.
1 other project uses a version of this, 1 of them edited.
Adopted by
Most recently taken up by
- AshExplained/roblox-skillsedited, first seen Jul 1, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 1
- AshExplained/roblox-skills★ 514% same
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository19 other files it gives its agents.
- template/CLAUDE.mdCLAUDE.md
- roblox-lessonsSkill
- audio-designSkill
- game-feelSkill
- game-ui-uxSkill
- level-designSkill
- roblox-creator-store-security-auditSkill
- roblox-dataSkill
- roblox-devSkill
- roblox-monetizationSkill
- roblox-networkingSkill
- roblox-publish-checklistSkill
- roblox-release-operationsSkill
- roblox-security-economySkill
- roblox-securitySkill
- roblox-studio-mcpSkill
- roblox-to-issuesSkill
- roblox-toolingSkill
- save-systemsSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 2 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 27
If you cannot build a loop, stop and say so: list what you tried and ask the human for a captured artifact or a specific manual test (real …
- Distinctive: line 35
Write 3-5 ranked, falsifiable hypotheses before testing any.
- Very specific: line 46
Delete every temporary script and grep the repo for the [DEBUG- prefix.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Roblox Debugging Bugfix
Where this conflicts with the roblox-lessons skill, roblox-lessons wins.
Goal
Move from symptom to verified fix without guessing. All game code lives in the git repo and reaches Studio through Rojo; fixes are made in repo files, never only in the Studio copy.
Phase 1: Build a repro loop first (this is the skill)
Everything else is mechanical once you have a fast, repeatable pass/fail signal. Spend disproportionate effort here, before touching a fix. Ways to build one, roughly in order:
- Studio playtest repro:
start_stop_play, drive the steps withcharacter_navigation,user_mouse_inputorexecute_luauin the Client datamodel, then readget_console_output. - Direct harness: exercise the suspect code with a fixture input. Pure shared modules:
execute_luaucanrequireaClone()of the ModuleScript (pluginrequirecaches the first load). Live server APIs:execute_luau'ssharedis a plugin sandbox, not the game's, so create a temporaryScriptthat calls the API and writes results to its own attributes; read them, thenDestroy()it. - Targeted scenario: spawn the minimal instances/state that hit the code path.
- Replay a captured payload: capture the real remote payload (an
OnClientEventlistener storing JSON on aLocalPlayerattribute) or the offending save, and push it back through the code path; include forged payloads that must be rejected.
Make the loop fast, narrow and deterministic (pin randomness and timing). Connections made inside one execute_luau call die when it returns; for checks across calls use a temporary LocalScript driven by an attribute.
Intermittent bugs: aim for a higher reproduction rate, not a clean one-shot. Loop the trigger, add stress, narrow timing windows.
If you cannot build a loop, stop and say so: list what you tried and ask the human for a captured artifact or a specific manual test (real purchases, phones, multi-client).
Phase 2: Reproduce
Confirm the loop produces the failure the user described (not a lookalike), that it repeats, and capture the exact symptom for later verification.
Phase 3: Hypothesize
Write 3-5 ranked, falsifiable hypotheses before testing any. Each predicts: "if X is the cause, changing Y makes it disappear." Show the list to the user; they often re-rank instantly. Proceed on your ranking if they are away.
Phase 4: Instrument
One probe per hypothesis; change one variable at a time. Prefer reading real values (instances, attributes, captured payloads via execute_luau) over log spam. Tag every diagnostic print with a unique prefix like [DEBUG-a4f2]. Diagnostic prints go only in temporary scripts (for example src/server/TempVerify.server.lua, src/client/TempVerify.client.lua, or a temporary Script created via execute_luau), never in production scripts. For performance, measure first (os.clock, MicroProfiler, instance counts) and bisect.
Phase 5: Fix and verify
- Make the smallest root-cause fix in the repo source; wait for Rojo to sync (poll the script's
Sourcefor the new text) before pressing Play. - Fresh Play, re-run the repro, confirm
get_console_outputis clean (no new errors or warnings). - Turn the repro into a durable check where a seam exists: a TestEZ spec for pure shared modules, or a documented MCP verification step. If no good seam exists, report that as a finding.
- Delete every temporary script and grep the repo for the
[DEBUG-prefix; it must return nothing.
Common bug classes
- Client/server state mismatch; UI not updating after a server change.
- Remote payload trusted without validation.
- Duplicated or never-disconnected connections.
- Save load/save races; initial-sync payload consumed by the wrong listener (a queued RemoteEvent payload reaches only the first listener).
- Publish-before-yield bugs on
sharedservice tables. - Renamed or missing instance paths; Rojo not synced, so Studio runs stale code.
- Races between character spawn, UI creation and server init.
Fix rules
- Root-cause fixes over defensive silence; never swallow errors without context.
- Validate at trust boundaries; no unrelated refactors in bug fixes.
- The human owner pushes commits; commit only verified work when asked.
Output
- Repro (the MCP steps) and root cause (which hypothesis held).
- Files changed and verification performed.
- Residual risks and any human-only test.
- Post-mortem: what would have prevented it (missing seam, tangled boundary, hidden coupling)?
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

