关于 lua-basics
lua-basics 是用于编写和审查 FiveM resource 中 Lua 代码的技能,提供代码结构、表操作、性能和错误处理方面的具体规范。
主要功能
- 01命名与变量作用域规范
- 02数组遍历和表操作模式
- 03卫语句与布尔默认值
- 04断言和错误值处理建议
- 05函数规模与 API 设计规则
适用场景
- 01为 FiveM resource 编写 Lua
- 02审查 Lua 命名和结构
- 03改进数组与表的处理方式
- 04处理预期及意外错误
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ germanfndez/ fiveai-skills --skill lua-basics安装后在 Claude Code 中输入/lua-basics确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
rules/conditionals.mderrors.mdfunctions.mdreference-links.mdtables.mdvariables.md详细介绍
Lua 基础
适用于 FiveM 的惯用、高性能 Lua 模式:函数、表、变量、条件语句和错误处理。
激活约定
在 FiveM 资源中编写或审查任何 Lua 代码时,或用户询问 Lua 命名、结构、性能、表或错误处理时,加载此技能。
硬性规则
- 命名:常量使用
ALL_CAPS,局部变量使用camelCase,全局变量使用PascalCase,未使用的变量使用_。 - 优先使用
local;尽量在首次使用之前就近声明局部变量;在单个客户端或服务端文件顶部集中声明文件级全局变量。 - 不要使用
table.insert;使用t[#t + 1] = v追加,或维护自己的大小计数器。 - 使用数值
for i = 1, #t遍历数组;使用{ a, b }隐式指定数组索引,而不是显式写出索引。 - 将重复的表解引用提取为局部变量;常量键使用
t.key,动态键使用t[var]。 - 使用守卫子句和提前返回;绝不要写
if x then return true else return false end。 - 优先使用肯定形式的布尔表达式;使用
value = value or default设置默认值。 - 使用
assert检查前置条件,而不是if not x then error() end;遇到意外状态时明确报错;对于预期的失败,将错误作为值返回。 - 限制参数数量;避免在 API 中使用布尔参数(改用枚举);传入命名的局部函数,而不是内联函数。
- 保持函数简短、抽象层级单一,并为导出项编写文档。
决策指南
| 情况 | 模式 |
|---|---|
| 预期失败(未找到、输入无效) | 返回 nil, err 或 false |
| 程序员错误/不可能出现的状态 | assert / error |
| 含义超过两种的标志 | 使用枚举表,而不是布尔值 |
| 函数作为参数重复使用多次 | 先定义 local function,再按名称传入 |
| 向数组追加 | t[#t + 1] = v |
执行步骤
- 对每个标识符应用命名和作用域规则。
- 将嵌套的
if替换为守卫子句。 - 将数组上的
table.insert和pairs替换为索引赋值和数值循环。 - 在函数入口处添加
assert前置条件检查。 - 重新检查函数规模:拆分任何混合高层和底层代码的函数。
输出约定
返回符合上述命名、局部性、表和错误处理规则的 Lua 代码;对任何有意偏离的地方加以说明。
参考资料
- rules/functions.md — 函数规模、命名、参数、导出项、守卫子句。
- rules/tables.md — 索引、解引用、table.insert、迭代、大小。
- rules/variables.md — 命名、枚举与布尔值、声明位置。
- rules/conditionals.md — 默认值、布尔表达式、可读性。
- rules/errors.md — assert、前置条件、将错误作为值、明确报错。
- rules/reference-links.md — Lua 和 FiveM 官方文档。
评论
支持 Markdown