Roblox Best Practices Skill
An Agent Skill that gives AI coding assistants a working standard for Roblox and Luau development. It covers how each script is written, how systems are assembled, and where the platform's real limits sit, without assuming anything about your framework, folder layout, or game genre.
Works with Claude Code, Cursor, Codex, Gemini, Windsurf, Cline, Zed, and any other tool that reads the Agent Skills standard.
What it gives your agent
Implementation blueprints, not just rules. Twenty-two recipes for the systems Roblox developers actually build: player data, currency, inventory, trading, developer products, gacha, leaderboards, damage validation, abilities, projectiles, NPC AI at scale, round lifecycles, matchmaking, placement systems, pets, HUD sync, rate limiting, and more. Each one carries its assembly order, the failure modes specific to that case, the budget it has to fit inside, and how to prove it works.
A review that does not cry wolf. A severity taxonomy (Blocker, Correctness, Advisory) and a catalog of what not to flag: which allocations are actually hot, what does not leak, what is not a trust boundary, and where a discouraged API is simply not a deprecated one. Findings must clear a four step confidence gate before they are reported.
Current to the July 2026 engine. Server Authority, the Character Controller Library, the new Luau type solver, InstanceHandle attributes, unified data store limits, and the 2026 Luau standard library. Every capability is tagged for maturity, and anything the skill could not confirm is marked as unverified rather than asserted.
Platform ceilings in one place. Data store size and request budgets, memory store quotas, message size caps, attribute windows, animation track limits. The agent checks them while designing, instead of discovering them in production.
Safe hands on the Studio MCP. When the agent drives Studio directly, it identifies which MCP variant it is connected to from the tools actually present, runs a preflight before the first write, and knows which operations cannot be undone: play mode discarding work, a mistyped path silently creating a new script, inserted assets carrying backdoor scripts. It also knows which calls quietly burn your budget, and avoids them.
Context that stays cheap. The skill is 22 files, but only the entry point loads on activation. Everything else is routed on demand, so a task pulls the one reference it needs and nothing more.
Installation
Windows (PowerShell)
irm https://raw.githubusercontent.com/andrian-syh/roblox-best-practices-skill/main/install.ps1 | iex
macOS and Linux
curl -fsSL https://raw.githubusercontent.com/andrian-syh/roblox-best-practices-skill/main/install.sh | bash
Both scripts launch the Node installer when Node is available and fall back to a native menu when it is not.
Direct npx
npx --allow-git=all github:andrian-syh/roblox-best-practices-skill
The --allow-git=all flag is required on npm v12 and later, which block Git fetches by default. The one liners above handle this for you.
Flags
| Flag | Effect |
|---|---|
--all, -a |
Install for the Universal path and every supported agent |
--tag <tag>, -t <tag> |
Install a specific released version, for example v1.0.0 |
--help, -h |
Show CLI help |
How installation works
Version selection. The installer fetches published tags from GitHub and offers the bundled version plus the five most recent releases. Older versions stay installable through the manual entry option or the --tag flag.
Universal destination. The skill always installs to ./.agents/skills/roblox-best-practices/, which makes it available to any tool reading the standard workspace path.
Additional agents. The installer scans your home directory for known agent configuration folders, pre-selects the ones it finds, and lets you filter the list as you type. Folders that do not exist are skipped.
Supported agents
| Scope | Directory | Tools |
|---|---|---|
| Universal (always) | ./.agents/skills/ |
Antigravity, Amp, Cline, Codex, Kimi Code CLI, OpenCode, Warp, Zed, and others |
| Global | ~/.claude/skills/ |
Claude Code |
| Global | ~/.cursor/skills/ |
Cursor |
| Global | ~/.gemini/config/skills/ |
Gemini |
| Global | ~/.codex/skills/ |
Codex |
| Global | ~/.windsurf/skills/ |
Windsurf and Cascade |
| Global | ~/.roo/skills/ |
Roo Code |
| Global | ~/.trae/skills/ |
Trae AI |
| Global | (and more) | 63 agents in total, listed in bin/agents.txt |
How the skill behaves
Two modes
Default. Applies this skill's conventions as written. Suited to new or greenfield work.
Adaptive. Studies the project's existing conventions first, presents what it found alongside a proposed standard, and waits for your approval before writing code. Safety rules still apply in full; only stylistic and structural conventions adapt.
Three supervision levels
| Token | Level | Behavior |
|---|---|---|
!ask |
Supervised | Confirms before every meaningful decision |
!bal |
Balanced (default) | Proceeds normally, stops for real ambiguity or wide impact changes |
!go |
Autonomous | Decides and records every assumption in the summary |
Confirmation gates
The agent resolves these once per session rather than assuming: which community libraries own a concern (ProfileStore, Packet, Trove, Knit, Fusion), and whether the place actually runs Server Authority. Roblox does not enable Server Authority by default, and assuming the wrong mode inverts the correct answer for input, camera, simulation stepping, and movement validation.
Reference map
Only the entry point loads by default. Everything below is read on demand.
Authoring
| Reference | Covers |
|---|---|
| templates.md | Annotated layouts for Scripts, LocalScripts, and ModuleScripts |
| adaptive-mode.md | Analyzing and adopting an existing project's conventions |
| community-libraries.md | ProfileStore, Packet, ByteNet, Trove, Knit, Fusion, and friends |
| luau-language.md | Typing, the new type solver, scheduling, deferred events, time APIs |
Implementation blueprints
| Reference | Covers |
|---|---|
| cases/data-economy.md | Player data, currency, inventory, trading |
| cases/monetization.md | Developer products, passes, subscriptions, gacha |
| cases/progression.md | Leaderboards, daily rewards, streaks, offline progress |
| cases/combat.md | Damage validation, abilities, projectiles, NPC AI at scale |
| cases/session-flow.md | Round lifecycle, matchmaking, cross server events |
| cases/world-interaction.md | Interactables, placement and building, pets |
| cases/client-infra.md | HUD sync, rate limiting and anti cheat, analytics |
Depth and guardrails
| Reference | Covers |
|---|---|
| performance.md | Hot loops, memory, network, rendering, profiling |
| patterns.md | Data stores, remotes, cleanup, pooling, streaming, character lifecycle |
| security-monetization.md | Threat model, validation layers, purchases, text filtering, policy |
| server-authority.md | Authoritative simulation, with it and without it |
| limits-budgets.md | Platform ceilings for data, messaging, attributes, animation |
| ui-ux-testing.md | UI construction, cross platform input, testable architecture |
| genres.md | Risk profiles per genre, from simulators to horror |
| false-positives.md | Severity taxonomy and the catalog of what not to flag |
| api-currency.md | Dated baseline of confirmed engine and Luau APIs |
| verification.md | Proving a change works, and the command bar VM pitfall |
| studio-mcp.md | Operating a Studio MCP connection safely and without wasting tokens |
Full entry point: SKILL.md.
Script layout
Every script is divided into three top level sections, with a five level header hierarchy for subdivision.
-- // VARIABLES // --
-- | Services | --
-- | Modules | --
-- | Objects | --
-- | Configuration | --
-- | State Management | --
-- // FUNCTIONS // --
-- | Private | --
-- | Public | --
-- // INITIALIZATION // --
Ceremony scales to the script. Small files use the three headers alone, and pure data or type modules are exempt entirely.
Non negotiable runtime rules
- Server is authoritative. Validate every remote argument for type, range, ownership, and rate.
- Clean up everything you create. Every connection has an owner and a teardown path.
- No avoidable per frame garbage. Hoist what can be hoisted out of genuinely hot paths.
- React, do not poll. Use signals rather than loops that watch a condition.
- Save data safely.
UpdateAsyncwith backoff, saved on leave, flushed on shutdown. - Budget the network. Batch, send deltas, and use unreliable events for loss tolerant data.
- Re-validate after every yield. The player may have left and the instance may be gone.
Each rule carries scoped exceptions, documented so that legitimate code is not reported as a violation.
Maintenance
Roblox ships changes continuously, and guidance that is a year old quietly becomes wrong. This skill is maintained against that.
The aim is an update at the end of each month, tracking what Roblox actually shipped that month across both fronts:
- Luau, the language itself: new syntax and standard library additions, type solver behavior, compiler and runtime changes.
- Roblox Studio and the engine: new and deprecated APIs, systems moving between beta and general release, changed platform limits, and Studio tooling that affects how an agent works.
Each cycle also carries improvements beyond the refresh: sharper guardrails, new implementation blueprints, and corrections where reality has moved past what the skill says. Anything that cannot be confirmed against the official documentation is marked unverified rather than asserted, so the skill stays honest about its own edges.
Released versions are tagged and documented in CHANGELOG.md.
Contributing
Issues and pull requests are welcome at the repository. Corrections are especially valuable: if the skill states something the engine no longer does, that is a bug worth reporting.
License
MIT.
No comments yet
Be the first to share your take.