Architecture Decision
Donchitos/Claude-Code-Game-Studios
Create an ADR documenting a technical decision: context, alternatives considered, consequences.
Script a Roblox experience in Luau: get services, create and parent Instances, connect events, run server Scripts vs client LocalScripts, and communicate across the client/server boundary with…
$ npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill roblox-luau -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install gamedev-skills/awesome-gamedev-agent-skills roblox-luau --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/gamedev-skills/awesome-gamedev-agent-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/other-engines/roblox-luau .claude/skills/roblox-luau && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "roblox-luau" agent skill from https://github.com/gamedev-skills/awesome-gamedev-agent-skills/tree/main/skills/other-engines/roblox-luau into .claude/skills/roblox-luau/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "roblox-luau", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/gamedev-skills/awesome-gamedev-agent-skills/tree/main/skills/other-engines/roblox-luauType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill roblox-luau -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install gamedev-skills/awesome-gamedev-agent-skills roblox-luau --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gamedev-skills/awesome-gamedev-agent-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/other-engines/roblox-luau .agents/skills/roblox-luau && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "roblox-luau" agent skill from https://github.com/gamedev-skills/awesome-gamedev-agent-skills/tree/main/skills/other-engines/roblox-luau into .agents/skills/roblox-luau/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "roblox-luau", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill roblox-luau -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install gamedev-skills/awesome-gamedev-agent-skills roblox-luau --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gamedev-skills/awesome-gamedev-agent-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/other-engines/roblox-luau .cursor/skills/roblox-luau && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "roblox-luau" agent skill from https://github.com/gamedev-skills/awesome-gamedev-agent-skills/tree/main/skills/other-engines/roblox-luau into .cursor/skills/roblox-luau/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "roblox-luau", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/gamedev-skills/awesome-gamedev-agent-skills.git --path skills/other-engines/roblox-luau--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill roblox-luau -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install gamedev-skills/awesome-gamedev-agent-skills roblox-luau --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gamedev-skills/awesome-gamedev-agent-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/other-engines/roblox-luau .gemini/skills/roblox-luau && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "roblox-luau" agent skill from https://github.com/gamedev-skills/awesome-gamedev-agent-skills/tree/main/skills/other-engines/roblox-luau into .gemini/skills/roblox-luau/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "roblox-luau", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install gamedev-skills/awesome-gamedev-agent-skills roblox-luauInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill roblox-luau -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/gamedev-skills/awesome-gamedev-agent-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/other-engines/roblox-luau .github/skills/roblox-luau && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "roblox-luau" agent skill from https://github.com/gamedev-skills/awesome-gamedev-agent-skills/tree/main/skills/other-engines/roblox-luau into .github/skills/roblox-luau/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "roblox-luau", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill roblox-luau -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install gamedev-skills/awesome-gamedev-agent-skills roblox-luau --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/gamedev-skills/awesome-gamedev-agent-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/other-engines/roblox-luau .opencode/skills/roblox-luau && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "roblox-luau" agent skill from https://github.com/gamedev-skills/awesome-gamedev-agent-skills/tree/main/skills/other-engines/roblox-luau into .opencode/skills/roblox-luau/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "roblox-luau", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
roblox-luauScript a Roblox experience in Luau: get services, create and parent Instances, connect events, run server Scripts vs client LocalScripts, and communicate across the client/server boundary with…
Roblox Luau is an agent skill from gamedev-skills/awesome-gamedev-agent-skills. Script a Roblox experience in Luau: get services, create and parent Instances, connect events, run server Scripts vs client LocalScripts, and communicate across the client/server boundary with RemoteEvents/RemoteFunctions (server-authoritative). Use when building or debugging Roblox Studio scripts — when the user mentions Roblox, Luau, services, RemoteEvent, Instance.new, PlayerAdded, or client vs server. For saving player data use roblox-datastores.
Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/client-server.md`).
It sits in Development. The repository describes itself as: 74 game-dev skills for AI coding agents — Godot, Unity, Unreal, Phaser, PixiJS, three.js, Bevy, pygame, LÖVE, Roblox. Portable SKILL.md Agent Skills (the format Anthropic… The licence is Apache-2.0.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 0a70cfc. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are lua).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Roblox Luau loads about 2.2k tokens when it runs, and up to ~3.4k if it reads all its reference files. Until then it costs about 117 tokens; SKILL.md has 579 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from gamedev-skills/awesome-gamedev-agent-skills at commit 0a70cfc, republished under its Apache-2.0 licence (© gamedev-skills). 579 words, ~2,201 tokens.
.claude/skills/roblox-luau/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Script a Roblox experience in Luau: services, Instances, events, the
server/client split, and secure cross-boundary communication. Targets the current
Roblox engine and Studio.
RemoteEvent/
RemoteFunction communication.Script/LocalScript/ModuleScript objects, .rbxl(x)
places, or a Rojo *.project.json, and code calls game:GetService(...).When not to use: persisting data across sessions → roblox-datastores.
Remote protocol architecture, exploit hardening, rate limits, high-frequency replication, and
multi-client abuse testing → roblox-networking. Generic Lua questions unrelated to the Roblox
API. Engine-agnostic input/save architecture → input-systems / save-systems.
game:GetService("Name"). Common ones: Players,
Workspace, ReplicatedStorage (shared client+server), ServerScriptService
(server-only code), ServerStorage, RunService, UserInputService (client).Script runs on the server; a LocalScript
runs on a client (in StarterPlayerScripts, StarterGui, or the player's
character). A ModuleScript is shared code you require.local p = Instance.new("Part"), set its
properties, then set p.Parent last (parenting triggers replication).:Connect to signals like Players.PlayerAdded,
part.Touched, or RunService.Heartbeat. Disconnect when done to avoid leaks.RemoteEvent:FireServer(...); the server validates and
applies. The server is authoritative for all game state.-- ServerScriptService/Leaderboard.server.luau (a Script = runs on the server)
local Players = game:GetService("Players")
local function onPlayerAdded(player: Player)
local stats = Instance.new("Folder")
stats.Name = "leaderstats" -- this name makes it show on the leaderboard
local coins = Instance.new("IntValue")
coins.Name = "Coins"
coins.Value = 0
coins.Parent = stats
stats.Parent = player -- parent LAST
end
Players.PlayerAdded:Connect(onPlayerAdded)local Workspace = game:GetService("Workspace")
local part = Instance.new("Part")
part.Size = Vector3.new(4, 1, 4)
part.Position = Vector3.new(0, 10, 0)
part.Anchored = true -- won't fall under gravity
part.BrickColor = BrickColor.new("Bright blue")
part.Parent = Workspace -- set Parent last so it replicates once, fullylocal debounce = false
local connection
connection = part.Touched:Connect(function(hit: BasePart)
local character = hit.Parent
local humanoid = character and character:FindFirstChildOfClass("Humanoid")
if not humanoid or debounce then return end
debounce = true
humanoid.Health -= 10
task.wait(1) -- task.wait, NOT the deprecated wait()
debounce = false
end)
-- Later, when the part is removed or the round ends:
-- connection:Disconnect()-- ReplicatedStorage: create a RemoteEvent named "BuyItem" (in Studio or via code).
-- CLIENT (LocalScript): request a purchase. The client can lie — this is only a request.
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local buyItem = ReplicatedStorage:WaitForChild("BuyItem") -- wait: may not have replicated yet
buyButton.MouseButton1Click:Connect(function()
buyItem:FireServer("sword") -- send the item id only; never the price/result
end)-- SERVER (Script): the ONLY place the transaction is decided.
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local buyItem = ReplicatedStorage:WaitForChild("BuyItem")
local PRICES = { sword = 100, shield = 75 }
buyItem.OnServerEvent:Connect(function(player: Player, itemId)
-- TRUST NOTHING from the client. Validate types and values.
if type(itemId) ~= "string" then return end
local price = PRICES[itemId]
if not price then return end -- unknown item
local coins = player.leaderstats.Coins
if coins.Value < price then return end -- can't afford
coins.Value -= price -- server applies the change
grantItem(player, itemId)
end)local RunService = game:GetService("RunService")
-- Heartbeat fires every frame AFTER physics; dt is seconds since the last step.
RunService.Heartbeat:Connect(function(dt)
spinner.CFrame *= CFrame.Angles(0, math.rad(90) * dt, 0) -- 90deg/sec, frame-independent
end)-- ReplicatedStorage/GameConfig (a ModuleScript) — usable by server and client.
local GameConfig = {}
GameConfig.MaxHealth = 100
function GameConfig.damageFor(weapon: string): number
return ({ sword = 25, bow = 15 })[weapon] or 0
end
return GameConfiglocal GameConfig = require(game:GetService("ReplicatedStorage"):WaitForChild("GameConfig"))
print(GameConfig.MaxHealth)RemoteEvent/RemoteFunction. Validate every argument's type and range on the
server and keep the server authoritative over health, currency, and inventory.LocalScript doesn't run where you put it → LocalScripts run in
StarterPlayerScripts, StarterCharacterScripts, StarterGui, or tools — not in
Workspace or ServerScriptService. Server Scripts belong in
ServerScriptService/Workspace.task.wait/task.spawn/task.delay, not the old
wait()/spawn()/delay() (worse scheduling and throttling).Parent
last so the instance replicates once in its final state.nil on the client right after join → objects stream/replicate over time; use
parent:WaitForChild("Name") instead of indexing directly on the client.:Connect handlers leak and can
fire on destroyed objects; store the connection and :Disconnect() (or use
Instance:GetAttributeChangedSignal/:Once where appropriate).RemoteFunction blocks
waiting for a return and a malicious/slow client can stall the server; prefer
one-way RemoteEvents unless you genuinely need a reply.nocheck/non-strict places get it automatically;
strict-mode places opt in with the UseNewLuauTypeSolver workspace property, and
LuauTypeCheckMode sets a place's default checking mode. It runs only at edit time
(no runtime cost), so triage type warnings against the solver the place actually has
enabled, not older behavior.RemoteFunction vs RemoteEvent,
:WaitForChild timing, BindableEvent for same-context messaging, attributes,
CollectionService tags, and :Once/connection cleanup), read
references/client-server.md.roblox-datastores — persist player data across sessions (server-only).roblox-networking — production remote contracts, server validation, rate limits, replication,
streaming, prediction, and multi-client testing.save-systems — engine-agnostic persistence concepts.game-ai / input-systems — portable AI and input patterns to implement in Luau.© gamedev-skills, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (references) in skills/other-engines/roblox-luau of gamedev-skills/awesome-gamedev-agent-skills.
Open the folder on GitHubat commit 0a70cfc
Roblox Luau next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Roblox Luau this skillgamedev-skills/awesome-gamedev-agent-skills | 1.4k | — | ~2.2k | Automated safety check: Pass | Apache-2.0 | |
| Architecture DecisionDonchitos/Claude-Code-Game-Studios | 26k | — | ~1.7k | Automated safety check: Pass | MIT | |
| Create Releasemlightcad/cad-viewer | 1.1k | — | ~1.3k | Automated safety check: Pass | MIT | |
| Renderdoc GPU Debugrudybear/renderdoc-skill | 212 | — | ~4k | Automated safety check: Pass | MIT | |
| Refactor KalivraDevBawky/Kalivra | 173 | — | ~1k | Automated safety check: Pass | Custom licence | |
| Forgecad Design SpecForgeCAD/forgecad-public-kit | 941 | — | ~2.5k | Automated safety check: Pass | MIT |
Donchitos/Claude-Code-Game-Studios
Create an ADR documenting a technical decision: context, alternatives considered, consequences.
mlightcad/cad-viewer
Create a concise English release message from commits since the last vX.Y.Z tag, then bump every workspace package to the same version with pnpm changeset and pnpm changeset version.
rudybear/renderdoc-skill
GPU frame debugging with RenderDoc via rdc-cli. An agent skill from rudybear/renderdoc-skill.
DevBawky/Kalivra
Plan, implement, or review architecture refactors in the Kalivra Electron app while preserving project-file compatibility, balance calculations, Undo/Redo, exports, and process security.
ForgeCAD/forgecad-public-kit
Create a ForgeCAD design brief, HLD, or LLD before coding by walking through use, assembly, interfaces, decisions, and verification.
tryopendata/skills
Generates OpenChart (https://github.com/tryopendata/openchart) chart, table, graph, sankey, tilemap, and geo map specs from data, and guides editorial design decisions.
gamedev-skills/awesome-gamedev-agent-skills
Plan, generate, source, normalize, and validate cohesive visual game assets.
gamedev-skills/awesome-gamedev-agent-skills
Build production Roblox interfaces with ScreenGui/PlayerGui lifecycle, responsive UDim2 layouts, safe insets, reusable editable Instances, cross-device input and selection, restrained motion…
gamedev-skills/awesome-gamedev-agent-skills
Build a production behavior-tree runtime (Blackboard, action/condition leaves, sequence/selector/parallel composites, decorators) and a Utility AI system (response curves — linear, exponential…
gamedev-skills/awesome-gamedev-agent-skills
Structure a Bevy app around its Entity Component System: build the App with plugins, define Component/Resource types, write systems with Query/Res/Commands, filter and order systems, and use the…
gamedev-skills/awesome-gamedev-agent-skills
Build a card game: card data, deck/hand/discard zones, draw/shuffle/reshuffle, a turn structure, costs, and effect resolution.
gamedev-skills/awesome-gamedev-agent-skills
Build a first-person shooter: move+mouse-look controller, hitscan or projectile shooting, weapons, health, and enemy AI.
Categories
Script a Roblox experience in Luau: get services, create and parent Instances, connect events, run server Scripts vs client LocalScripts, and communicate across the client/server boundary with…. Roblox Luau is an agent skill from gamedev-skills/awesome-gamedev-agent-skills. Script a Roblox experience in Luau: get services, create and parent Instances, connect events, run server Scripts vs client LocalScripts, and communicate across the client/server boundary with RemoteEvents/RemoteFunctions (server-authoritative).
Roblox Luau fits situations like: debugging Roblox Studio scripts — when the user mentions Roblox; client vs server.
Run `npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill roblox-luau -a claude-code`. Or copy the skill folder (skills/other-engines/roblox-luau in gamedev-skills/awesome-gamedev-agent-skills) into .claude/skills/roblox-luau in your project. Claude Code loads it when a task matches its description.
Run `npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill roblox-luau -a codex`. Or copy the skill folder (skills/other-engines/roblox-luau in gamedev-skills/awesome-gamedev-agent-skills) into .agents/skills/roblox-luau in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add gamedev-skills/awesome-gamedev-agent-skills --skill roblox-luau -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/roblox-luau, .gemini/skills/roblox-luau, .github/skills/roblox-luau and .opencode/skills/roblox-luau in your project.
SKILL.md names no scripts, command-line tools or credentials: Roblox Luau is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Roblox Luau is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 8.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.2k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Roblox Luau: Architecture Decision (Donchitos/Claude-Code-Game-Studios, 26k stars), Create Release (mlightcad/cad-viewer, 1.1k stars), Renderdoc GPU Debug (rudybear/renderdoc-skill, 212 stars) and Refactor Kalivra (DevBawky/Kalivra, 173 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
gamedev-skills (a GitHub organization) maintains it in gamedev-skills/awesome-gamedev-agent-skills, which has 1,389 GitHub stars. The repository holds 53 skills in this directory. The repository was last updated on October 9, 2026.
Source: gamedev-skills/awesome-gamedev-agent-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.