agentleFS
luumenlabsluumenlabs/luau-skills/skills/roblox/roblox-core/SKILL.md

roblox-core

Skill12 starsChanged 8 months agoMITView on GitHub

Use for foundational Roblox experience development: deciding what runs on the client or server, where scripts and modules belong, how to structure reusable code, and how to handle everyday services, attributes, bindables, workspace objects, input, camera, raycasts, collisions, and CFrame-based gameplay scripting in Studio.

2 other projects use a version of this.

Adopted by

Most recently taken up by

  • Other versions2 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 2

    1. nonlooped/roblox-suite★ 25same name
    2. zukoma42-dev/claude-skills★ 0same 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 repository8 other files it gives its agents.

The file

Show its rules and text

We split this skill into the rules it gives an agent

29 rules. About 0 are common, 18 are distinctive, and 11 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈18

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 11

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Use this skill when the task is primarily about core Roblox runtime structure and everyday gameplay scripting:

    line 10
  2. Distinctive:

    Do not use this skill when the task is mainly about:

    line 19
  3. Distinctive:

    Use this skill if the main question is structural: where code lives, what runs where, what replicates, or how to organize reusable Roblox …

    line 27
  4. Very specific:

    Use this skill for foundational engine patterns that appear in most experiences: services, modules, attributes, bindables, basic input, …

    line 28
  5. Very specific:

    If the task centers on RemoteEvent, RemoteFunction, trust boundaries, request validation, or multiplayer message design, hand off to …

    line 29
  6. Very specific:

    If the task is mainly "which API/member do I call" across a large Roblox surface area, hand off to roblox-api.

    line 30
  7. Very specific:

    If the task centers on saving, loading, quotas, versioning, cross-server state, or ephemeral shared state, hand off to roblox-data.

    line 31
  8. Very specific:

    If the task involves Open Cloud, web APIs, credentials, OAuth, or external tooling automation, hand off to roblox-cloud or roblox-oauth.

    line 32
  9. Distinctive:

    If a request mixes core structure with out-of-scope systems, answer only the foundational Roblox portion and explicitly exclude the rest.

    line 33
  10. Distinctive:

    If unsure, prefer the narrower interpretation and omit material that would overlap networking, data, cloud, or API-reference skills.

    line 34
  11. Distinctive:

    Start by identifying the runtime side for each responsibility:

    line 38
  12. Distinctive:

    Place code in containers that match replication behavior:

    line 42
  13. Distinctive:

    Prefer explicit script intent:

    line 48
  14. Very specific:

    Use LocalScript or Script with RunContext = Client for client code.

    line 49
  15. Very specific:

    Use Script with RunContext = Server or normal server placement for server code.

    line 50
  16. Very specific:

    Use ModuleScript for reusable logic and configuration.

    line 51
  17. Very specific:

    Use WaitForChild() when accessing replicated objects from the client unless the load order is guaranteed by the container being used.

    line 53
  18. Very specific:

    Treat ModuleScript return values as cached per Luau environment:

    line 54
  19. Distinctive:

    Keep shared modules side-agnostic unless the module is intentionally server-only or client-only.

    line 57
  20. Distinctive:

    Use attributes for lightweight per-instance state and configuration that should live on the instance itself.

    line 58
  21. Distinctive:

    Use bindables only for communication on the same side of the client-server boundary.

    line 59
  22. Distinctive:

    Read and write object state through clear references.

    line 62
  23. Distinctive:

    Use raycasts for intentional spatial queries.

    line 63
  24. Distinctive:

    Use collision groups or part properties for collision behavior.

    line 64
  25. Very specific:

    Use CFrame operations when orientation and relative transforms matter.

    line 65
  26. Distinctive:

    Keep examples and guidance at the foundational level.

    line 66
  27. Distinctive:

    No advanced remote-security design is included.

    line 91
  28. Distinctive:

    No persistence, Open Cloud, OAuth, or external API automation guidance is included.

    line 92
  29. Distinctive:

    No exhaustive API catalog material is included.

    line 93

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

When to Use

Use this skill when the task is primarily about core Roblox runtime structure and everyday gameplay scripting:

  • Choosing whether logic belongs on the client, server, or both.
  • Deciding where Script, LocalScript, and ModuleScript instances should live.
  • Organizing code across ServerScriptService, ServerStorage, ReplicatedStorage, ReplicatedFirst, StarterPlayer, StarterGui, and Workspace.
  • Using services, module reuse, attributes, and bindables inside normal gameplay code.
  • Working with common Studio scripting workflows like playtesting, Explorer layout, WaitForChild(), and Output-driven debugging.
  • Implementing straightforward input, camera, raycasting, collision, and CFrame behavior as part of ordinary experience scripting.

Do not use this skill when the task is mainly about:

  • Exhaustive engine API lookup or class-by-class reference browsing.
  • Cross-boundary remote design, advanced remote security, or server-authority architecture.
  • Persistence, memory stores, messaging, Open Cloud, OAuth, or external automation.

Decision Rules

  • Use this skill if the main question is structural: where code lives, what runs where, what replicates, or how to organize reusable Roblox logic.
  • Use this skill for foundational engine patterns that appear in most experiences: services, modules, attributes, bindables, basic input, workspace access, collisions, raycasts, camera, and CFrame.
  • If the task centers on RemoteEvent, RemoteFunction, trust boundaries, request validation, or multiplayer message design, hand off to roblox-networking.
  • If the task is mainly "which API/member do I call" across a large Roblox surface area, hand off to roblox-api.
  • If the task centers on saving, loading, quotas, versioning, cross-server state, or ephemeral shared state, hand off to roblox-data.
  • If the task involves Open Cloud, web APIs, credentials, OAuth, or external tooling automation, hand off to roblox-cloud or roblox-oauth.
  • If a request mixes core structure with out-of-scope systems, answer only the foundational Roblox portion and explicitly exclude the rest.
  • If unsure, prefer the narrower interpretation and omit material that would overlap networking, data, cloud, or API-reference skills.

Instructions

  1. Start by identifying the runtime side for each responsibility:
    • Server for authoritative world state, spawning, rule enforcement, and shared simulation.
    • Client for player-local input, camera, moment-to-moment presentation, and local feedback.
    • Shared modules only when both sides need the same code or constants.
  2. Place code in containers that match replication behavior:
    • ServerScriptService for server-only scripts and modules.
    • ServerStorage for server-only assets or modules that do not need to replicate.
    • ReplicatedStorage for shared modules and replicated assets.
    • ReplicatedFirst only for earliest client startup work.
    • StarterPlayerScripts, StarterCharacterScripts, StarterGui, and StarterPack for client behavior copied into each player.
  3. Prefer explicit script intent:
    • Use LocalScript or Script with RunContext = Client for client code.
    • Use Script with RunContext = Server or normal server placement for server code.
    • Use ModuleScript for reusable logic and configuration.
  4. Retrieve services once near the top of a script with game:GetService() and keep names aligned with service names.
  5. Use WaitForChild() when accessing replicated objects from the client unless the load order is guaranteed by the container being used.
  6. Treat ModuleScript return values as cached per Luau environment:
    • Require once per script and reuse the returned table or function.
    • Avoid circular requires.
    • Keep shared modules side-agnostic unless the module is intentionally server-only or client-only.
  7. Use attributes for lightweight per-instance state and configuration that should live on the instance itself.
  8. Use bindables only for communication on the same side of the client-server boundary. Prefer module-owned bindables when they simplify a local event API.
  9. For input and camera code, keep implementation client-side and adapt to the player's active input mode rather than assuming desktop-only controls.
  10. For workspace scripting:
    • Read and write object state through clear references.
    • Use raycasts for intentional spatial queries.
    • Use collision groups or part properties for collision behavior.
    • Use CFrame operations when orientation and relative transforms matter.
  11. Keep examples and guidance at the foundational level. Do not drift into persistence, advanced networking security, or exhaustive reference lookups.

Using References

  • Open references/scripting-overview.md for the basic Roblox scripting workflow in Studio and the standard service-module-function-event script shape.
  • Open references/client-server-runtime.md to reason about authority, replication, edit versus runtime data models, and what each side can safely assume.
  • Open references/script-locations-and-script-types.md when deciding between Script, LocalScript, ModuleScript, run contexts, and container placement.
  • Open references/services.md for the core game:GetService() pattern and which container or gameplay services matter most in foundational code.
  • Open references/modulescripts-and-reuse-patterns.md for module caching, shared code placement, configuration modules, and encapsulation patterns.
  • Open references/attributes.md for per-instance state, replication-order cautions, and change-detection patterns.
  • Open references/bindable-events.md for same-side script communication, async events, sync callbacks, and argument-shape cautions.
  • Open references/input-overview.md for client-side input handling and adapting to preferred input type across devices.
  • Open references/workspace-basics-camera-raycasting-collisions-and-cframes.md for the most common world-facing runtime patterns.

Checklist

  • Each responsibility is assigned to the correct runtime side.
  • Script and module placement matches replication and visibility needs.
  • Shared code is in ModuleScript form instead of duplicated across scripts.
  • Client code uses WaitForChild() where replication order is uncertain.
  • Services are retrieved once and reused.
  • Attributes are used for lightweight instance state, not arbitrary module data.
  • Bindables are only used on one side of the client-server boundary.
  • Input and camera code stays client-side.
  • Raycasts, collisions, and CFrame operations are used intentionally for spatial logic.
  • No advanced remote-security design is included.
  • No persistence, Open Cloud, OAuth, or external API automation guidance is included.
  • No exhaustive API catalog material is included.

Common Mistakes

  • Putting server-only logic in ReplicatedStorage or other replicated containers.
  • Expecting a plain Script to run everywhere without considering location or RunContext.
  • Using LocalScript where a shared ModuleScript should hold reusable logic.
  • Assuming replicated objects already exist on the client and skipping WaitForChild().
  • Treating bindables as cross-network communication tools.
  • Mutating a module return value without realizing the cached reference is reused within that environment.
  • Using attributes for large structured data that belongs in a module or system object.
  • Driving camera or input code from the server.
  • Using Touched for non-physical overlap logic that should be a raycast or explicit spatial query.
  • Moving parts with raw position logic when relative transforms or facing direction require CFrame.

Examples

Choose placement by responsibility

-- ServerScriptService/SpawnController
-- Spawns and manages shared world state on the server.
-- StarterPlayer/StarterPlayerScripts/InputController
-- Reads player input and drives local presentation on the client.
-- ReplicatedStorage/Shared/Constants
-- Shared module used by both sides.
local Constants = {
    MaxHealth = 100,
    RoundLength = 120,
}

return Constants

Use the standard script shape

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")

local RoundConfig = require(ReplicatedStorage:WaitForChild("RoundConfig"))

local function onPlayerAdded(player)
    print(player.Name, "joined; round length:", RoundConfig.RoundLength)
end

Players.PlayerAdded:Connect(onPlayerAdded)

Keep client-only camera code local

local Workspace = game:GetService("Workspace")

local camera = Workspace.CurrentCamera
camera.CameraType = Enum.CameraType.Scriptable
camera.CFrame = CFrame.lookAt(Vector3.new(0, 10, 20), Vector3.new(0, 5, 0))
camera.Focus = CFrame.new(0, 5, 0)

Use attributes and bindables for local structure

local part = script.Parent
part:SetAttribute("Active", true)

local changed = Instance.new("BindableEvent")
changed.Event:Connect(function(state)
    print("State changed:", state)
end)

changed:Fire(part:GetAttribute("Active"))

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.