agentleFS
AshExplainedAshExplained/roblox-skills/roblox-luau-architecture/SKILL.md

roblox-luau-architecture

Skill5 starsChanged 5 months agoMITView on GitHub

Design, inspect, and refactor Roblox Luau game architecture. Use for ModuleScript/service boundaries, client-server flow, RemoteEvents/RemoteFunctions, ReplicatedStorage organization, reusable systems, script placement, and safe Studio MCP code-edit workflows.

The file

Show its rules and text

We split this skill into the rules it gives an agent

16 rules. About 0 are common, 11 are distinctive, and 5 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈11

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 5

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Keep Roblox game code modular, server-authoritative, and easy to extend.

    line 10
  2. Very specific:

    Start with list_roblox_studios, set_active_studio if needed, and get_studio_state.

    line 14
  3. Very specific:

    Read relevant scripts with script_read before editing.

    line 16
  4. Very specific:

    Check get_console_output for regressions.

    line 19
  5. Very specific:

    Put authoritative game logic in ServerScriptService or server-owned modules.

    line 23
  6. Very specific:

    Put shared constants, type definitions, remotes, and pure shared helpers in ReplicatedStorage.

    line 24
  7. Distinctive:

    Put player input, camera, local-only UI, and visual prediction in client scripts.

    line 25
  8. Distinctive:

    Keep workspace scripts rare and intentional.

    line 26
  9. Distinctive:

    Avoid scattering duplicated constants across client and server.

    line 27
  10. Distinctive:

    Treat every client remote payload as untrusted.

    line 31
  11. Distinctive:

    Prefer narrow remotes with explicit action names and typed payload checks.

    line 32
  12. Distinctive:

    Use RemoteFunctions sparingly.

    line 34
  13. Distinctive:

    Never let the client decide currency, inventory, ownership, damage, quest completion, or purchase grants.

    line 35
  14. Distinctive:

    Keep modules small enough that another system can depend on them without importing unrelated behavior.

    line 48
  15. Distinctive:

    Locality: put related behavior and its valuable-state rules in one module so a change, a bug, or the knowledge to reason about it lives in …

    line 56
  16. Distinctive:

    When proposing or making architecture changes, include:

    line 63

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Roblox Luau Architecture

Goal

Keep Roblox game code modular, server-authoritative, and easy to extend. Use Roblox Studio MCP to inspect existing scripts before changing architecture.

MCP Workflow

  1. Start with list_roblox_studios, set_active_studio if needed, and get_studio_state.
  2. Locate code with script_search or script_grep.
  3. Read relevant scripts with script_read before editing.
  4. Apply edits with multi_edit.
  5. Playtest with start_stop_play.
  6. Check get_console_output for regressions.

Placement Rules

  • Put authoritative game logic in ServerScriptService or server-owned modules.
  • Put shared constants, type definitions, remotes, and pure shared helpers in ReplicatedStorage.
  • Put player input, camera, local-only UI, and visual prediction in client scripts.
  • Keep workspace scripts rare and intentional; prefer service-style scripts that manage tagged instances or configured folders.
  • Avoid scattering duplicated constants across client and server.

Remote Boundaries

  • Treat every client remote payload as untrusted.
  • Prefer narrow remotes with explicit action names and typed payload checks.
  • Rate-limit player-triggered remotes that can affect economy, inventory, combat, or placement.
  • Use RemoteFunctions sparingly; avoid long-yielding server calls from the client.
  • Never let the client decide currency, inventory, ownership, damage, quest completion, or purchase grants.

Module Pattern

Use modules for:

  • Services with Init and Start style lifecycle.
  • Data access wrappers.
  • Economy calculations.
  • Reward tables and balancing constants.
  • UI controllers on the client.
  • Shared utility functions that are deterministic and side-effect-light.

Keep modules small enough that another system can depend on them without importing unrelated behavior.

Prefer Deep Modules

Aim for deep modules: a lot of behavior behind a small, stable interface. A shallow module — where the interface is nearly as complex as its implementation — earns its keep only if it hides real complexity.

  • Interface = everything a caller must know: the function signature plus invariants, ordering, error modes, and which side (client/server) may call it. In Roblox, a remote's contract is part of its interface.
  • Deletion test: imagine deleting a module. If complexity vanishes, it was a pass-through — inline it. If the same complexity reappears across several call sites, it was earning its keep — keep it and deepen it.
  • Locality: put related behavior and its valuable-state rules in one module so a change, a bug, or the knowledge to reason about it lives in one place — not scattered across a LocalScript, a server Script, and three constants files.
  • One adapter satisfying an interface is a hypothetical seam; two is a real one. Don't build indirection for a single implementation.

Good seams get names from the game's own vocabulary (the "coin economy service", the "quest tracker"), not generic ones ("Handler", "Manager").

Refactor Output

When proposing or making architecture changes, include:

  • Current script locations and responsibilities.
  • Proposed module/service boundaries.
  • Remote contract changes.
  • Migration steps.
  • Playtest and console checks.

Next

Slice the architecture work with roblox-to-issues so it lands one safe change at a time, and verify each with roblox-playtest-qa. For valuable-state modules, review the trust boundary with roblox-security-economy; for cleanup of existing debt, use roblox-code-maintenance-refactor.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.