<< All versions

Skill v1.0.1

currentAutomated scan100/100
tabooharmony/roblox-brain/roblox-luau-core

+3 new

──Details
PublishedOctober 21, 2026 at 10:23 PM
Content Hashsha256:c0f9b034dfcd60c5...
Git SHA62bdabddc9b0
Bump Typepatch
Compare with v1.0.0
──Files
Files (1 file, 3.1 KB)
SKILL.md3.1 KBactive
SKILL.md · 62 lines · 3.1 KB

version: "1.0.1" name: roblox-luau-core description: "Use when writing, editing, or debugging any Luau: tables, control flow, string patterns, scope, closures, and errors ported from JS/Python." when_to_use: "Also for Luau syntax errors, nil indexing, wrong loop or table behavior, string formatting, and reviewing Luau code for correctness." last_reviewed: 2026-10-14 sources:

  • https://luau.org/syntax
  • https://create.roblox.com/docs/luau/control-structures
  • https://luau.org/library
  • https://raw.githubusercontent.com/Kampfkarren/kampfkarren-luau-guidelines/main/README.md
  • https://raw.githubusercontent.com/Roblox/creator-docs/main/content/en-us/reference/engine/libraries/vector.yaml

Luau Core Language

When to Load

Load for Luau semantics and JS/Python translation. Types: roblox-luau-types; lifecycle: roblox-luau-patterns; engine APIs: domain skills.

Quick Reference

  • Only false and nil are falsy. 0, "", and {} are truthy.
  • Equality does not coerce types. 0 == "0" is false. Inequality is ~=.
  • Array conventions are 1-based. #array is meaningful only for a sequence without nil gaps.
  • Assigning nil removes a table key; assigning a table copies the reference; table.clone is shallow.
  • Dictionary iteration order is unspecified. Do not make behavior depend on it.
  • Dynamic keys require brackets: record[field]. Dot syntax uses a literal identifier.
  • Missing arguments become nil; extra results and arguments can be discarded.
  • Prefer an if expression over condition and a or b when a may be falsy.
  • Locals start at their declaration; repeat locals reach until. Forward-declare mutual recursion.
  • Luau string patterns are not regular expressions. Their syntax and capabilities differ.
  • Backtick interpolation and .. are valid. Join many fragments once in hot loops.
  • NaN does not equal itself and defeats </>; test with x ~= x.
  • Binary data uses the buffer library: fixed size, 0-based offsets, explicit-width reads/writes. Avoid buffer.readinteger/writeinteger (stubs, not released runtime).
  • For Base64, hashing, or compression use EncodingService (buffers, not strings; JSON via HttpService). Details: see full reference.
luau
local label = if enabled then "On" else "Off"
local message = `{name}: {score}`
local byId: {[number]: string} = {}
byId[userId] = name
for index, value in values do
print(index, value)
end

Translation traps

  • JavaScript ===, !==, null, optional chaining, spread, arrow functions, and array methods are not Luau syntax.
  • Python None, zero-based list assumptions, list comprehensions, exceptions, and implicit tuple behavior do not translate directly.
  • x or fallback tests truthiness, not only absence. It replaces a valid false value.
  • typeof(value) recognizes Roblox datatypes; type(value) reports the underlying Luau type category.

Review

Valid Luau, no nil gaps, no assumed dictionary order, no accidental aliases, no cross-language syntax, no fallbacks hiding false or nil.

Detailed language traps and translation examples: references/full.md
← v1.0.0All versions