lua-basics — скилл для Claude Code: правила Lua для FiveM
Скилл задаёт ИИ-агенту стиль Lua-кода для ресурсов FiveM: именование, локальные переменные, таблицы и обработка ошибок.
npx skills add germanfndez/fiveai-skills --skill lua-basics -a claude-codeЧто делает lua-basics
Скилл включается, когда агент пишет или проверяет Lua в ресурсе FiveM, а также когда вы спрашиваете про именование, структуру, производительность, таблицы или ошибки. Внутри — набор жёстких правил: константы в ALL_CAPS, локальные переменные в camelCase, глобальные в PascalCase, _ для неиспользуемых. Локальные объявляются как можно ближе к первому использованию, а файловые глобальные собираются в начале одного клиентского или серверного файла.
Отдельная таблица решений разводит ожидаемые сбои и ошибки программиста. Если что-то не найдено или пришёл неверный ввод — возвращайте nil, err или false. Невозможное состояние ловится через assert. Флаг с более чем двумя смыслами превращается в enum-таблицу, а не в boolean. Для добавления в массив скилл советует t[#t + 1] = v вместо table.insert.
Скилл ссылается на собственные файлы правил: rules/functions.md, rules/tables.md, rules/variables.md, rules/conditionals.md, rules/errors.md и rules/reference-links.md. Если вы пишете Lua вне FiveM, часть советов про таблицы и локальные переменные всё равно применима, но контракт активации привязан именно к ресурсам FiveM.
Какие задачи решает
- привести именование переменных и функций в ресурсе к одному виду
- заменить
table.insertна прямую запись по индексу - развернуть вложенные
ifв guard clauses с ранним возвратом - развести ожидаемые сбои и ошибки программиста через
assert - вынести повторные обращения к полям таблицы в локальные переменные
Примеры запросов агенту
- проверь этот Lua-файл по правилам lua-basics
- перепиши функцию с
table.insertна индексную запись - добавь guard clauses и
assertв начало этой функции
Как установить lua-basics
1Через Skills CLI (Vercel)
npx skills add germanfndez/fiveai-skills --skill lua-basics -a claude-code2Вручную: положить файлы
~/.claude/skills/lua-basics/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/lua-basics/
1Через Skills CLI (Vercel)
npx skills add germanfndez/fiveai-skills --skill lua-basics -a codex2Вручную: положить файлы
.agents/skills/lua-basics/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add germanfndez/fiveai-skills --skill lua-basics -a cursor2Вручную: положить файлы
.cursor/skills/lua-basics/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install germanfndez/fiveai-skills lua-basics2Вручную: положить файлы
.github/skills/lua-basics/SKILL.md1Через Skills CLI (Vercel)
npx skills add germanfndez/fiveai-skills --skill lua-basics -a gemini-cli2Командой платформы
gemini skills install https://github.com/germanfndez/fiveai-skills --path skills/lua-basicsВручную: положить файлы
.devin/skills/lua-basics/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add germanfndez/fiveai-skills --skill lua-basics -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о lua-basics
Как установить lua-basics в Claude?
Выполните npx skills add germanfndez/fiveai-skills --skill lua-basics -a claude-code. После этого файл скилла лежит в ~/.claude/skills/lua-basics/SKILL.md.
Что делает lua-basics?
Задаёт агенту правила написания и проверки Lua для ресурсов FiveM: именование, область видимости, работа с таблицами, условия и обработка ошибок.
Чем этот скилл отличается от обычных советов по Lua?
Он привязан к контракту активации: срабатывает на Lua-код в ресурсе FiveM и на вопросы про именование, структуру, производительность, таблицы или ошибки.
Исходный текст
SKILL.md · MIT
---
name: lua-basics
description: "Trigger: Lua code, Lua functions, tables, variables, conditionals, error handling, naming conventions, review Lua, optimize Lua. Write effective, performant Lua for FiveM resources."
license: MIT
metadata:
author: germanfndez
version: "1.0.0"
---
# Lua Basics
Idiomatic, performant Lua patterns for FiveM: functions, tables, variables, conditionals and errors.
## Activation Contract
Load this skill when writing or reviewing any Lua in a FiveM resource, or when the user asks about Lua naming, structure, performance, tables or error handling.
## Hard Rules
- Naming: `ALL_CAPS` constants, `camelCase` locals, `PascalCase` globals, `_` for unused variables.
- Prefer `local`; declare locals as close to first use as possible; group file-level globals at the top of a single client/server file.
- Do not use `table.insert`; append with `t[#t + 1] = v` or maintain your own size counter.
- Iterate arrays with numeric `for i = 1, #t`; imply array indices (`{ a, b }`) instead of writing them out.
- Extract repeated table dereferences into locals; use `t.key` for constant keys and `t[var]` for dynamic keys.
- Use guard clauses and early returns; never write `if x then return true else return false end`.
- Prefer positive boolean expressions; set defaults with `value = value or default`.
- Use `assert` for pre-conditions instead of `if not x then error() end`; fail loudly on unexpected state; return errors as values for expected failures.
- Limit parameters; avoid boolean parameters in APIs (use enums); pass named local functions instead of inline ones.
- Keep functions small, single-level of abstraction, and document exports.
## Decision Gates
| Situation | Pattern |
|---|---|
| Expected failure (not found, invalid input) | return `nil, err` or `false` |
| Programmer error / impossible state | `assert` / `error` |
| Flag with more than two meanings | enum table, not boolean |
| Function reused more than once as argument | `local function` then pass by name |
| Append to array | `t[#t + 1] = v` |
## Execution Steps
1. Apply naming and scope rules to every identifier.
2. Replace nested `if` with guard clauses.
3. Replace `table.insert` and `pairs` on arrays with index writes and numeric loops.
4. Add `assert` pre-conditions at function entry.
5. Re-read for size: split any function mixing high- and low-level code.
## Output Contract
Return Lua that follows the naming, locality, table and error-handling rules above; annotate any deliberate deviation.
## References
- rules/functions.md — size, naming, parameters, exports, guard clauses.
- rules/tables.md — indices, dereferencing, table.insert, iteration, size.
- rules/variables.md — naming, enums vs booleans, declaration location.
- rules/conditionals.md — defaults, boolean expressions, readability.
- rules/errors.md — assert, pre-conditions, errors as values, fail loudly.
- rules/reference-links.md — official Lua and FiveM documentation.
Upstream docs: https://www.lua.org/manual/5.4/
© germanfndez · MIT · germanfndez/fiveai-skills