Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add andrian-syh/roblox-best-practices-skill --skill roblox-best-practicesgit clone --depth 1 https://github.com/andrian-syh/roblox-best-practices-skillWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/andrian-syh/roblox-best-practices-skill/roblox-best-practices)<a href="https://agentmods.dev/skills/andrian-syh/roblox-best-practices-skill/roblox-best-practices"><img src="https://agentmods.dev/badge/skills/andrian-syh/roblox-best-practices-skill/roblox-best-practices/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/andrian-syh/roblox-best-practices-skill/roblox-best-practices"><img src="https://agentmods.dev/badge/skills/andrian-syh/roblox-best-practices-skill/roblox-best-practices.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00168 | $0.04321 |
| Opus 5.5 | $0.00067 | $0.01728 |
| Sonnet 5.5 | $0.00034 | $0.00864 |
| Haiku 4.5 | $0.00017 | $0.00432 |
Grade A, and why
roblox-best-practices scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured today.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 201 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Roblox Game Development Best Practices
Framework-agnostic standards for clean, resource-frugal Luau. They govern how each script is written, not how the project is structured.
Goals, in priority order: correct → secure (server-authoritative) → efficient (CPU/memory/network) → readable → consistent.
Skill version 2.3.1. If this contradicts a newer release, the installed copy is stale; see CHANGELOG.md.
Session Invariants (must survive compaction)
A summary that drops these rules silently downgrades every file written afterwards. Two standing obligations:
- Carry it forward verbatim in any summary, handoff, plan, or task note. It is active instruction, never compressed into "follow the Roblox skill".
- Re-read this file before acting whenever the card's full text is not visible in your context. Never reconstruct these rules from memory — a half-remembered layout rule looks deliberate and is worse than none.
ROBLOX LUAU SKILL - INVARIANT CARD
1 Three sections, this order:
-- // VARIABLES // -- Services > Modules > Objects > Configuration > State Management
-- // FUNCTIONS // -- definitions only (ModuleScript: Private before Public)
-- // INITIALIZATION // -- everything that runs
2 Documentation Comments (Luau Comments) - default style, adapts to the project.
Default block: --[[ ]] above the function, desc > @param > @return.
Moonwave --[=[ ]=] or --- is equally correct when that is the project's style.
- Desc <= 3 lines and <= 250 chars, contract-level, states PURPOSE.
- Desc never names what the body does to get there: no APIs, algorithms,
collaborators, data structures, or code paths.
- Desc carries NO volatile content: no numbers, thresholds, tunable names,
feature names, or anything that needs editing when the body is retuned.
When a detail cannot be avoided, state it at the most general level
that stays true after the body changes.
- Tags use Moonwave syntax: @param <name> <type> -- <description>
and @return <type> -- <description>. Only when they add what the
signature cannot show.
- English preferred as the universal language. No em dashes or double-hyphen
dashes as punctuation (the -- in a tag is a separator, not punctuation).
No emoji.
- IN-BODY COMMENTS: banned in code you write. Make names and
structure say it; put the why in the block above. Never delete
an existing one; propose removal once, Advisory only.
- Tool directives (--!strict, -- selene:, -- stylua:, any linter's allow
comment) are not commentary. Never remove one. Never add a suppression
unasked: fix the code, or report the finding and let the user decide.
- Self-documenting code outranks commentary everywhere.
- Existing project comment style wins. Recommend this style when the user
asks to restyle; never impose it.
3 Server is authoritative. Validate every remote arg: type, range, ownership, rate.
4 Clean up everything created. Every connection has an owner and a teardown path.
5 No avoidable per-frame garbage. Never poll what has a signal.
Cold paths are exempt, and periodic work on a timer is scheduling.
6 UpdateAsync + backoff. Save on PlayerRemoving. Flush on BindToClose.
7 Re-validate after every yield: player gone? instance dead? session changed?
Only where a yield sits between the check and its use.
8 Never add --!strict unbidden. Never make a [Beta] feature the production default.
9 Reuse before writing: project, then stdlib, then engine API. Search, never
assume - no claim about a file you have not opened. No wrapper or
abstraction without a caller. But brevity has two hard limits:
- It NEVER reduces what was asked for. Short because it does less = failed.
- It NEVER costs readability. One statement per line, descriptive names,
blank lines kept. Less code means less WORK, not less whitespace.
10 User authority outranks this skill. Recommend; never refactor unasked.
What ships with it
40 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- references/adaptive-mode.md 9.0 KB
- references/api-currency.md 64 KB
- references/cases/client-infra.md 6.7 KB
- references/cases/combat.md 7.6 KB
- references/cases/data-economy.md 7.0 KB
- references/cases/monetization.md 5.5 KB
- references/cases/progression.md 4.2 KB
- references/cases/session-flow.md 5.6 KB
- references/cases/world-interaction.md 5.9 KB
- references/community-libraries.md 10 KB
- references/device-performance.md 17 KB
- references/diagnosis.md 11 KB
- references/edge-cases.md 18 KB
- references/evaluation-matrix.md 16 KB
- references/external-editors.md 39 KB
- references/false-positives.md 34 KB
- references/genres.md 11 KB
- references/limits-budgets.md 12 KB
- references/luau-language.md 31 KB
- references/minimal-code.md 18 KB
- references/monetization-policy.md 4.1 KB
- references/patterns.md 1.3 KB
- references/patterns/data.md 12 KB
- references/patterns/lifecycle.md 7.7 KB
- references/patterns/network.md 14 KB
- references/patterns/world.md 6.2 KB
- references/performance.md 36 KB
- references/release-readiness.md 6.9 KB
- references/review-checklist.md 6.6 KB
- references/runtime-rules.md 3.7 KB
- references/section-layout.md 11 KB
- references/security.md 16 KB
- references/server-authority.md 11 KB
- references/studio-mcp.md 25 KB
- references/style-rules.md 11 KB
- references/team-workflow.md 23 KB
- references/templates.md 9.0 KB
- references/ui-crossplatform.md 17 KB
- references/verification.md 13 KB
- references/workflow.md 9.2 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- today Changed · +3 lines 62bb6e58bfe0
- 12d ago Changed · +1 lines 9ee37fc8561f
- 23d ago Changed · +4 lines · -16 tokens per session c3f439697392
- 2mo ago First seen · 193 lines · 184 tokens per session scan A 6ff927bf06a6
roblox-best-practices is a skill published in the GitHub repository andrian-syh/roblox-best-practices-skill (11 stars, last pushed yesterday), licensed MIT. It adds 168 tokens to every session and 4,321 once invoked, about $0.0007 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
roblox-audio
Build or debug Roblox music, spatial audio, effects, text-to-speech, and speech-to-text. Use for audio graphs, asset permissions, playback problems, or migration from Sound.
roblox-open-cloud
Use Roblox Open Cloud for external automation or supported in-experience HTTP calls. Covers API keys, OAuth, scopes, Secrets Store, webhooks, rate limits, and choosing REST versus engine APIs.
roblox-datastores
Implement or debug persistent Roblox player data, leaderboards, migrations, and deletion requests. Use for concurrent writes, session locking, recovery, caching, quotas, or choosing DataStores versus MemoryStores.
roblox-gamepasses
Implement Roblox game passes, developer products, subscriptions, and Robux transfers. Use for purchase prompts, server-side fulfillment, ownership checks, recurring benefits, and monetization policy.
roblox-teleport
Move Roblox players between places, public servers, or reserved servers. Use for TeleportAsync, matchmaking, loading screens, teleport failures, and persistent-data handoff.
roblox-testing
Test, debug, or profile Roblox experiences. Use for Studio debugging, TestEZ, logging, connection cleanup, memory or network diagnostics, MicroProfiler, Scene Analysis, and Script Profiler.