mcpField
L
lua-basics

lua-basics

github.com/germanfndez开发19386 次安装2 周前更新
代码仓库

关于 lua-basics

lua-basics 是用于编写和审查 FiveM resource 中 Lua 代码的技能,提供代码结构、表操作、性能和错误处理方面的具体规范。

主要功能

  1. 01命名与变量作用域规范
  2. 02数组遍历和表操作模式
  3. 03卫语句与布尔默认值
  4. 04断言和错误值处理建议
  5. 05函数规模与 API 设计规则

适用场景

  1. 01为 FiveM resource 编写 Lua
  2. 02审查 Lua 命名和结构
  3. 03改进数组与表的处理方式
  4. 04处理预期及意外错误

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/germanfndez/fiveai-skills --skill lua-basics

安装后在 Claude Code 中输入/lua-basics确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

rules/
conditionals.md
errors.md
functions.md
reference-links.md
tables.md
variables.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

执行步骤

  1. 对每个标识符应用命名和作用域规则。
  2. 将嵌套的 if 替换为守卫子句。
  3. 将数组上的 table.insert 和 pairs 替换为索引赋值和数值循环。
  4. 在函数入口处添加 assert 前置条件检查。
  5. 重新检查函数规模:拆分任何混合高层和底层代码的函数。

输出约定

返回符合上述命名、局部性、表和错误处理规则的 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 官方文档。

上游文档:https://www.lua.org/manual/5.4/

评论

支持 Markdown