Skip to main content

Command menu

Jump to a page or search the catalog

AI Tools & Scripts

Roblox Luau Safety Check

Check Roblox Luau code before you publish: remotes that trust a client's price or amount, loadstring and require(assetId) backdoors, webhooks and keys in scripts players can read, DataStore calls without pcall, unfiltered text.

$5.00

What you get: 1 file · 56.28 KB · ZIP

See purchase options

Product description

A shop remote that runs coins.Value -= price with the price the client sent lets any exploiter buy a sword for -1000 coins and walk away richer, and a Discord webhook in a ModuleScript under ReplicatedStorage can be read by every player who decompiles it. This skill finds those and the other Roblox mistakes below before you publish, and tells you how to fix each one.

Your agent runs a scanner on your .luau and .lua files and your Rojo project files (default.project.json and other *.project.json / .jsonc files). It reads the project file to learn where each folder lands in the game, so it knows which LocalScripts and ModuleScripts players receive and which code stays on the server; without a project file it uses Rojo's usual src/server, src/client and src/shared folders and the .server.luau / .client.luau names. It understands Luau strings, interpolated strings, if-then-else expressions and type annotations, follows client arguments through local variables in OnServerEvent, OnServerInvoke, Knit client methods and Comm handlers, treats a price the server looks up (ShopItems[itemName].Price) as the server's value, and skips installed packages. It never runs your code or contacts Roblox. It returns BLOCK, REVIEW, or NOT FLAGGED, with the file, line, reason, and a safer approach, and the rules guide links the official Roblox page behind each rule. Secrets are never printed.

What it checks

It has 5 BLOCK and 10 REVIEW rules.

BLOCK (fix before shipping)

  • R01: a remote handler writes a value the client sent into leaderstats, a currency or stat field, health (TakeDamage), saved data (profile.Data, including Data[key] = value with a client key), a stat attribute, a stat helper such as AddCoins or coinStore:Increment, or a DataStore write (UpdateAsync judged inside its transform), without a fixed limit, a clamp, a server lookup or a validator
  • R02: loadstring, or LoadStringEnabled turned on in a script or in the Rojo project file
  • R03: require() of an asset ID (a number, hex, tonumber(...), or a name set to a number), the classic free-model backdoor
  • R04: webhook URLs, keys or tokens in URL queries, Authorization headers, and key-shaped values under key, token, secret or password names, in a LocalScript or a ModuleScript that replicates to players (game words such as TokenShop_v2 are left alone)
  • R05: a .ROBLOSECURITY account cookie anywhere in the code

REVIEW (check before release)

  • R11: remote arguments used with no run-time check (type annotations are not checks), and numbers that reach stats after range checks but with no NaN check
  • R12: remote handlers that do costly work (Async calls, Instance.new, Clone) in a file with no cooldown or rate limit
  • R13: RemoteFunction:InvokeClient
  • R14: getfenv or setfenv
  • R15: DataStore calls outside pcall, a Promise or a retry helper
  • R16: obfuscated or hidden code: long escaped byte strings, long string.char lists, long encoded strings, code pushed off-screen with spaces
  • R17: the same secrets as R04 in server code or in scripts whose place in the game cannot be told, and values under secret names that may be secrets but do not look like generated keys
  • R18: a remote handler destroys, moves or re-parents an Instance the client passed, or changes the health or stats of an Instance the client picked, without checking that it belongs to the player or is in range
  • R19: player text from a remote put on a TextLabel or sent to all clients in a file that never filters text
  • R20: developer product rewards given in PromptProductPurchaseFinished instead of ProcessReceipt, or a LocalScript that asks the server for them from that event

What's included

  • The scanner (Python 3.9+, standard library only)
  • A rules guide with the reason, safer approach and official Roblox documentation link for each rule
  • A risky and a safe example Rojo project, and the real report the scanner produces on the risky one

Limits

It reads each file as written and follows client values through local variables inside one handler, not into other modules, so checks done in a shared validation module, middleware or remote libraries such as BridgeNet, ByteNet, Red, Zap or Blink are not seen, and handlers registered through those libraries are not analysed. Stats are recognised by whole words in their names (Coins, Cash, Gems, XP, Level, Wins and similar), so a currency with an unusual name can be missed, and secrets under unusual names are not reported. A rate limit or text filter anywhere in a file counts for every handler in it. Place files (.rbxl, .rbxm) and Studio settings outside the project file are not read. Roblox's own remote example (a part made from the client's colour and position) gets R11 and R12 on purpose. NOT FLAGGED is not a guarantee.

Contents

One ZIP file with 30 files: SKILL.md, the scanner in scripts/ (7 Python files), references/rules.md (every rule with its reason and safer approach), and examples/ (20 example files plus report.md, the real scanner output on the risky example).

How to use: This is an agent skill: a folder with a SKILL.md file and Python scripts that an AI coding agent such as Claude Code, Cursor, or Codex CLI can run. Unzip it into your agent's skills folder (for Claude Code: ~/.claude/skills/), then ask your agent to check your project. The scripts also run on their own with Python 3.9 or newer, with nothing to install. They read your files only: no network access, and nothing is sent anywhere.

What you get

1 file · 56.28 KB

  • roblox-luau-safety-check-1.0.0.zipZIP · 56.28 KB
LicenseCommercial use allowed
Package checkPassed

Getly opened the uploaded files and found nothing that would stop them opening. It is not a virus scan or a quality rating.

PublishedNov 12, 2026
File size56.28 KB
File formatZIP
Versionv1.0

Tags

robloxluaurojogamedevsecurityai agent skill
R
RR HH

Frequently asked questions

Do I get access instantly?

Yes. This is a digital product - you can download it right after checkout, straight from your library.

Can I use it for commercial projects?

Yes. Commercial use is allowed: use it in your own business and in things you sell. You may not resell or redistribute the file itself.

What's your refund policy?

You can request a refund within 30 days. If something isn't right, request it from your order and the Getly team reviews it.

What file formats and sizes will I get?

You'll download 1 file - ZIP - 56.28 KB in total.

Do I get free updates?

Yes - when the seller ships a new version, you can re-download the latest files from your library at no extra cost. Check the changelog for recent updates.

Price

$5.00