@tabooharmony/roblox-luau-core

Use for Luau language semantics, tables, control flow, string patterns, scope, closures, and cross-language translation errors.

View in AI SkillSafe app
0 downloads
0 stars
0 demos
SKILL.md
nameroblox-luau-core
descriptionUse for Luau language semantics, tables, control flow, string patterns, scope, closures, and cross-language translation errors.
last_reviewed2026-08-31
sourceshttps://luau.org/syntax, https://luau.org/library

Luau Core Language

When to Load

Load for pure Luau syntax and semantics: truthiness, tables, iteration, functions, scope, operators, string patterns, and ports from JavaScript or Python. Use roblox-luau-types for type annotations, roblox-luau-patterns for ownership and lifecycle, and domain skills for Roblox APIs.

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 by context.
  • Prefer an if expression over condition and a or b when a may be false or nil.
  • Local names are scoped from their declaration onward. Forward-declare mutually recursive functions.
  • Luau string patterns are not regular expressions. Their syntax and capabilities differ.
  • Backtick interpolation and .. concatenation are both valid. Choose the clearer form; collect many fragments and join once in a hot loop.
  • NaN does not equal itself and defeats </> comparisons; test with x ~= x.
  • Binary data uses the buffer library: fixed size, 0-based offsets, explicit-width reads/writes. Avoid buffer.readinteger/writeinteger (stubs only, not released runtime).
  • For Base64, hashing, or compression use EncodingService (buffers, not strings; JSON still via HttpService). Details: see full reference.
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 in sequences, no assumed dictionary order, no accidental aliases, no cross-language syntax, no boolean expressions hiding false or nil.

Detailed language traps and translation examples: references/full.md

Embed badges

Add these to your README to show the skill's verification status.

SkillSafe verified badge
Verified badge
[![SkillSafe verified badge](https://api.skillsafe.ai/v1/badge/@tabooharmony/roblox-luau-core/verified)](https://skillsafe.ai/skill/@tabooharmony/roblox-luau-core/)
Installs badge
Installs badge
[![Installs badge](https://api.skillsafe.ai/v1/badge/@tabooharmony/roblox-luau-core/installs)](https://skillsafe.ai/skill/@tabooharmony/roblox-luau-core/)
Scan badge
Scan badge
[![Scan badge](https://api.skillsafe.ai/v1/badge/@tabooharmony/roblox-luau-core/scan)](https://skillsafe.ai/skill/@tabooharmony/roblox-luau-core/)
Eval pass rate badge
Eval pass rate
[![Eval pass rate badge](https://api.skillsafe.ai/v1/badge/@tabooharmony/roblox-luau-core/eval)](https://skillsafe.ai/skill/@tabooharmony/roblox-luau-core/)