roblox-code-review
Skill92 starsChanged 47 days agoMITView on GitHub
Review Roblox/Luau code for exploits, data loss, memory leaks, performance problems, lifecycle bugs, policy issues, and deprecated or superseded APIs, using a severity-ranked checklist and the full 2026 deprecation map. Use when reviewing a PR or script, auditing a game before launch, modernizing legacy code, or asked what is wrong with some Roblox code.
2 other projects use a version of this.
Adopted by
Most recently taken up by
- schmusch/roblox-ai-workflowtheir own version, first seen Oct 25, 2026
- szlay/roblox-basetheir own version, first seen Jul 24, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- schmusch/roblox-ai-workflow★ 2same name
- szlay/roblox-base★ 1same name
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 repository25 other files it gives its agents.
- AGENTS.mdAGENTS.md
- docs/agents.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- roblox-analytics-liveopsSkill
- roblox-architectureSkill
- roblox-audioSkill
- roblox-characters-animationSkill
- roblox-data-storesSkill
- roblox-game-systemsSkill
- roblox-inputSkill
- roblox-luauSkill
- roblox-monetizationSkill
- roblox-networkingSkill
- roblox-npc-aiSkill
- roblox-open-cloudSkill
- roblox-performanceSkill
- roblox-physicsSkill
- roblox-securitySkill
- roblox-studio-mcpSkill
- roblox-teleport-matchmakingSkill
- roblox-testingSkill
- roblox-text-chatSkill
- roblox-toolingSkill
- roblox-uiSkill
- roblox-world-buildingSkill
The file
We split this skill into the rules it gives an agent
6 rules. About 0 are common, 2 are distinctive, and 4 are 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.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 9
Verify claims against the code (and the engine reference when unsure) — don't pattern-match blindly.
- Very specific: line 23
Every OnServerEvent/OnServerInvoke: types checked with typeof, numbers math.isfinite, strings length/UTF-8 checked, instances IsA + …
- Very specific: line 25
No server-only logic, admin lists, or secrets in ReplicatedStorage/StarterPlayer/Workspace.
- Distinctive: line 43
No yields at module top level.
- Very specific: line 48
No per-frame FindFirstChild/GetDescendants/Instance.new.
- Very specific: line 54
All player-authored text shown to others filtered server-side (FilterStringAsync), fail closed.
≈ “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 code review
Review in severity order. Report each finding with file:line, severity, what breaks, and the fix. Verify claims against the code (and the engine reference when unsure) — don't pattern-match blindly.
Severity guide
| Severity | Examples |
| Critical | Client-authoritative rewards/damage/currency; unvalidated remote args (NaN, instance spoofing); purchases granted outside ProcessReceipt or non-idempotent; data saved with SetAsync from multiple servers without session locking; secrets/API keys in replicated code; unfiltered player text shown to others. |
| High | Data loss paths (no BindToClose, saving default data after a failed load, no retry); memory leaks (connections, player-keyed tables); InvokeClient; per-frame remotes; infinite yields (WaitForChild without timeout on optional instances, RemoteFunction handlers that can yield forever); streaming-unsafe client indexing. |
| Medium | Deprecated/superseded APIs; wait/spawn/delay; polling loops; server-side tweens; missing pcall on network/yielding APIs; missing late-joiner handling; race conditions on CharacterAdded. |
| Low | Style, naming, missing types, magic numbers, dead code, minor inefficiencies. |
Checklist
Security (roblox-security)
- Every
OnServerEvent/OnServerInvoke: types checked withtypeof, numbersmath.isfinite, strings length/UTF-8 checked, instancesIsA+IsDescendantOf(trusted), rate limited, context checked. - No server-only logic, admin lists, or secrets in
ReplicatedStorage/StarterPlayer/Workspace. ProximityPrompt/ClickDetector/Touchedhandlers re-validate distance/state on the server.- Gameplay-critical unanchored parts are server-owned.
Data (roblox-data-stores)
- Session locking (ProfileStore or equivalent);
UpdateAsyncfor read-modify-write; retries with backoff. BindToCloseflushes saves in parallel; no saves ofInstance/Vector3/mixed tables.- Failed loads never overwritten with defaults; player-keyed tables cleared on leave.
- Keys stable (
User_{UserId}), Studio uses a separate store/universe.
Monetization (roblox-monetization)
- Single
ProcessReceipt; idempotent byPurchaseId; returnsPurchaseGrantedonly after persisting. - Pass perks checked on join and after in-session purchase; prices not hardcoded; paid random items
disclose odds and respect
PolicyService.
Correctness & lifecycle (roblox-architecture)
- Handles players already in game (
for _, p in Players:GetPlayers()) and characters already spawned. - Per-character state rebuilt on respawn; per-player state cleaned on
PlayerRemoving. - No yields at module top level; no circular requires; one owner per piece of state.
- Deferred-event safe (doesn't rely on handlers running synchronously).
- Client code streaming-safe (
WaitForChild/nil checks forWorkspacecontent).
Performance (roblox-performance)
- No per-frame
FindFirstChild/GetDescendants/Instance.new; params objects reused. - Event-driven instead of polling; think loops throttled and staggered.
- Tweens and cosmetic effects on clients; remotes batched/throttled; payloads minimal.
- Connections disconnected / instances destroyed; no unbounded caches.
Text & safety (roblox-text-chat)
- All player-authored text shown to others filtered server-side (
FilterStringAsync), fail closed. - Chat uses
TextChatService; public editable text rate-limited (≥ 1 minute).
Modern API usage
task.*,*Asyncvariants,Raycast, mover constraints,PivotTo,Animator:LoadAnimation,TextChatService,UIDragDetector,workspacecollision-group APIs,CreatePath+ComputeAsync.- Full map of deprecated and superseded members: references/deprecated-apis.md.
Code quality (roblox-luau)
--!strictwith typed public APIs; services viaGetService; no_G/shared.- Clear module boundaries; config separated from logic; tests for pure logic (
roblox-testing).
Output format
## Summary
<2–3 sentences: overall risk, the most important fixes>
## Findings
1. [Critical] src/server/Shop.server.luau:42 — Price read from client argument.
Impact: exploiters buy anything for 0 coins. Fix: look up ITEMS[itemId].price on the server.
2. [High] ...
## Modernization (optional)
- Replace `wait()` → `task.wait()` (12 occurrences) ...Offer to apply fixes; when fixing, keep behavior identical except for the bug, and re-run the relevant
checks (type check, tests, Studio playtest via roblox-studio-mcp).
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.

