roblox-luau-patterns — скилл для Claude Code: паттерны Luau в Roblox
Скилл для написания и рефакторинга модулей Roblox на Luau: жизненный цикл объектов, сигналы, планирование задач, pcall и очистка ресурсов.
npx skills add TabooHarmony/roblox-brain --skill roblox-luau-patterns -a claude-codeЧто делает roblox-luau-patterns
Скилл включается, когда вы пишете или переписываете модули Roblox на Luau. Он разбирает форму модуля: обычные функции для преобразований без состояния, модуль с приватным состоянием для одного владельца подсистемы, объект с метатаблицей, когда несколько независимых значений делят поведение. Конструкторы вызываются через ., методы экземпляра через :, изменяемые поля живут на экземпляре, а не на таблице класса.
Отдельный блок про владение ресурсами. Подключения к сигналам, экземпляры и задачи требуют владельца, который их отключит или отменит при разрушении. Советует настраивать объект до присвоения родителя, чтобы не показывать частичное состояние, и экспортировать типизированные полезные нагрузки сигналов вида Signal<T...>. Ещё скилл следит за семантикой ошибок: пример с pcall показывает, что успешный вызов с nil и провал — разные вещи, и смешивать их нельзя. Повторять операцию стоит только тогда, когда её безопасно повторить.
По планированию задач скилл требует осознанно выбирать task.defer, task.spawn, task.delay и task.cancel, избегать устаревшего wait() и опроса без причины. Если нужен опрос, придётся выбрать явный интервал и замерить его. Есть чек-лист ревью: понятный владелец, узкий публичный API, отсутствие циклических require, состояния успеха и отсутствия данных остаются различимыми. Ввод с клиента скилл отправляет в соседний roblox-networking, а семантику, типы и запуск разбирают другие скиллы набора.
Какие задачи решает
- выбрать форму модуля под задачу, а не плодить класс-менеджер ради пространства имён
- найти подключения к сигналам, которые никто не отключает
- развести успешный вызов с nil и настоящую ошибку в pcall
- убрать дублирующиеся обработчики после респавна
- заменить устаревший wait() и опрос без причины на task-функции
Примеры запросов агенту
- Разбери этот модуль Roblox на Luau: где тут утечка памяти и кто владелец подключений?
- Перепиши обработчик респавна, чтобы после возрождения не появлялись дублирующиеся обработчики
- Проверь планирование задач в этом скрипте и убери лишний опрос
Как установить roblox-luau-patterns
1Через Skills CLI (Vercel)
npx skills add TabooHarmony/roblox-brain --skill roblox-luau-patterns -a claude-code2Вручную: положить файлы
~/.claude/skills/roblox-luau-patterns/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/roblox-luau-patterns/
1Через Skills CLI (Vercel)
npx skills add TabooHarmony/roblox-brain --skill roblox-luau-patterns -a codex2Вручную: положить файлы
.agents/skills/roblox-luau-patterns/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add TabooHarmony/roblox-brain --skill roblox-luau-patterns -a cursor2Вручную: положить файлы
.cursor/skills/roblox-luau-patterns/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install TabooHarmony/roblox-brain roblox-luau-patterns2Вручную: положить файлы
.github/skills/roblox-luau-patterns/SKILL.md1Через Skills CLI (Vercel)
npx skills add TabooHarmony/roblox-brain --skill roblox-luau-patterns -a gemini-cli2Командой платформы
gemini skills install https://github.com/TabooHarmony/roblox-brain --path skills/core/roblox-luau-patternsВручную: положить файлы
.devin/skills/roblox-luau-patterns/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add TabooHarmony/roblox-brain --skill roblox-luau-patterns -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о roblox-luau-patterns
Как установить roblox-luau-patterns в Claude?
Выполните npx skills add TabooHarmony/roblox-brain --skill roblox-luau-patterns -a claude-code. Скилл окажется в ~/.claude/skills/roblox-luau-patterns/SKILL.md.
Что делает roblox-luau-patterns?
Помогает писать и рефакторить модули Roblox на Luau: выбор формы модуля, владение сигналами и задачами, семантика ошибок через pcall, планирование через task-функции.
С какими скиллами он работает вместе?
Семантику Luau разбирает roblox-luau-core, типы — roblox-luau-types, запуск проекта — roblox-architecture, ввод с клиента уходит в roblox-networking.
Исходный текст
SKILL.md · MIT
---
name: roblox-luau-patterns
description: "Use when writing or refactoring Roblox Luau modules, object lifecycles, signals, task scheduling, pcall, and cleanup."
when_to_use: "Also for memory leaks, connections never disconnected, duplicate handlers after respawn, task.spawn/defer/delay misuse, retries, and reviewing module structure."
last_reviewed: 2026-10-14
sources:
- https://luau-lang.org/
- https://luau.org/library
- https://create.roblox.com/docs/reference/engine/classes/ObjectValue
- https://create.roblox.com/docs/reference/engine/classes/StringValue
- https://create.roblox.com/docs/reference/engine/classes/CFrameValue
- https://devforum.roblox.com/t/studio-beta-reference-instances-directly-with-attributes/4753441
- https://raw.githubusercontent.com/Kampfkarren/kampfkarren-luau-guidelines/main/README.md
- original
---
# Luau Patterns
## When to Load
Load for module shapes, resource ownership, scheduling, and failure contracts. See `roblox-luau-core` for semantics, `roblox-luau-types` for types, `roblox-architecture` for startup.
## Quick Reference
### Choose a shape
- **Plain functions:** default for stateless transformation or validation.
- **Module with private state:** one explicit subsystem owner. Do not create a manager class merely to namespace functions.
- **Object with metatable:** multiple independent values need shared behavior and lifecycle.
- **Existing library abstraction:** follow it when the project already uses it consistently. Do not add Promise, signal, cleanup, or framework dependencies for one call site.
Constructors use `.`, instance methods use `:`, and mutable fields belong on the instance, not the class table.
### Make ownership visible
Signal connections, instances, and tasks need cleanup owners. Disconnect/cancel at teardown. Export typed custom signal payloads (`Signal<T...>`).
Configure before parenting to hide partial state. Parent earlier only when ancestry is required; explain why. This does not guarantee replication ordering.
### Preserve failure semantics
```luau
local ok, value = pcall(dataStore.GetAsync, dataStore, key)
if not ok then
return nil, `read failed: {value}`
end
return value, nil -- value may legitimately be nil
```
Do not collapse "call succeeded and returned nil" into "call failed." Retry only when the domain operation is safe to repeat. Persistence, HTTP, purchases, and remotes belong to their domain skills.
### Naming and return contracts
Practitioner conventions: mark yielding functions `Async`, keep return counts consistent, and prefer named module exports. Respect existing project contracts; details in full.md.
### Schedule deliberately
Use `task.defer`, `task.spawn`, `task.delay`, and `task.cancel` deliberately. Avoid legacy `wait()` and unjustified polling. Prefer a real state-change signal; otherwise choose and measure an explicit cadence.
### Review
Clear owner, narrow public API, no circular require, no accidental concurrent startup, success and missing-data states remain distinct, connections/tasks cleaned up, client input routed to `roblox-networking`.
> Details: [references/full.md](references/full.md)
© TabooHarmony · MIT · TabooHarmony/roblox-brain