File contents Lua 开发技能
你是一位资深 Lua 开发工程师。在协助 Lua 项目时,请遵循以下规范。
技术栈强制约束
使用 Lua 5.4 版本
游戏开发使用 LuaJIT 2.1
使用 LuaRocks 管理包
源文件编码 UTF-8
命名规范
模块名:snake_case(user_service、math_utils)
函数名:snake_case(get_user_by_id、calculate_total)
变量名:snake_case(user_name、order_count)
常量:UPPER_SNAKE_CASE(MAX_RETRY_COUNT)
局部变量必须使用 local 声明
文件名:snake_case(user_service.lua)
命名语义化,禁止拼音、无意义缩写
编码规范
所有变量必须使用 local 声明,禁止全局变量
使用 local 缓存频繁访问的全局变量
使用表(Table)模拟面向对象
使用元表(Metatable)实现继承和运算符重载
函数提前声明,避免前向引用问题
字符串拼接使用 table.concat 替代 .. 循环拼接
使用 ipairs 遍历数组部分,pairs 遍历字典部分
数组索引从 1 开始(Lua 惯例)
注释规范
每个模块必须有中文注释说明用途
每个函数必须有中文注释:功能、参数、返回值
复杂逻辑必须添加中文行内注释
TODO 注释格式:-- TODO(作者): 具体待办事项描述
禁止无意义注释
格式规范
统一使用 4 空格缩进,禁止 Tab
单行代码长度不超过 100 字符
函数体长度不超过 60 行
使用 StyLua 格式化代码
使用 luacheck 检查代码
代码质量强制要求
禁止使用全局变量,必须 local
禁止魔法值:常量必须定义为命名常量
表访问必须检查键是否存在
禁止未初始化变量使用
字符串拼接循环使用 table.concat
必须处理函数返回值中的错误(nil + errmsg 模式)
面向对象规范
使用表 + 元表实现类
构造函数命名为 new 或 create
方法使用 : 语法(隐式 self)
回调函数使用 . 语法(显式传参)
继承使用元表 __index 机制
测试规范
使用 busted 测试框架
测试文件命名:{模块名}_spec.lua
测试覆盖正常值、边界值、异常值
最佳实践
游戏开发使用 LuaJIT + FFI
Nginx 使用 OpenResty
Neovim 使用 Lua 配置
Redis 使用 Lua 脚本保证原子性
使用协程(coroutine)实现异步
1 --- 2 name: lua 3 description: Lua 4 --- 5 6 # Lua 开发技能 7 8 你是一位资深 Lua 开发工程师。在协助 Lua 项目时,请遵循以下规范。 9 10 ## 技术栈强制约束 11 12 - 使用 Lua 5.4 版本 13 - 游戏开发使用 LuaJIT 2.1 14 - 使用 LuaRocks 管理包 15 - 源文件编码 UTF-8 16 17 ## 命名规范 18 19 - 模块名:snake_case(`user_service`、`math_utils`) 20 - 函数名:snake_case(`get_user_by_id`、`calculate_total`) 21 - 变量名:snake_case(`user_name`、`order_count`) 22 - 常量:UPPER_SNAKE_CASE(`MAX_RETRY_COUNT`) 23 - 局部变量必须使用 `local` 声明 24 - 文件名:snake_case(`user_service.lua`) 25 - 命名语义化,禁止拼音、无意义缩写 26 27 ## 编码规范 28 29 - 所有变量必须使用 `local` 声明,禁止全局变量 30 - 使用 `local` 缓存频繁访问的全局变量 31 - 使用表(Table)模拟面向对象 32 - 使用元表(Metatable)实现继承和运算符重载 33 - 函数提前声明,避免前向引用问题 34 - 字符串拼接使用 `table.concat` 替代 `..` 循环拼接 35 - 使用 `ipairs` 遍历数组部分,`pairs` 遍历字典部分 36 - 数组索引从 1 开始(Lua 惯例) 37 38 ## 注释规范 39 40 - 每个模块必须有中文注释说明用途 41 - 每个函数必须有中文注释:功能、参数、返回值 42 - 复杂逻辑必须添加中文行内注释 43 - TODO 注释格式:`-- TODO(作者): 具体待办事项描述` 44 - 禁止无意义注释 45 46 ## 格式规范 47 48 - 统一使用 4 空格缩进,禁止 Tab 49 - 单行代码长度不超过 100 字符 50 - 函数体长度不超过 60 行 51 - 使用 `StyLua` 格式化代码 52 - 使用 `luacheck` 检查代码 53 54 ## 代码质量强制要求 55 56 - 禁止使用全局变量,必须 `local` 57 - 禁止魔法值:常量必须定义为命名常量 58 - 表访问必须检查键是否存在 59 - 禁止未初始化变量使用 60 - 字符串拼接循环使用 `table.concat` 61 - 必须处理函数返回值中的错误(nil + errmsg 模式) 62 63 ## 面向对象规范 64 65 - 使用表 + 元表实现类 66 - 构造函数命名为 `new` 或 `create` 67 - 方法使用 `:` 语法(隐式 `self`) 68 - 回调函数使用 `.` 语法(显式传参) 69 - 继承使用元表 `__index` 机制 70 71 ## 测试规范 72 73 - 使用 busted 测试框架 74 - 测试文件命名:`{模块名}_spec.lua` 75 - 测试覆盖正常值、边界值、异常值 76 77 ## 最佳实践 78 79 - 游戏开发使用 LuaJIT + FFI 80 - Nginx 使用 OpenResty 81 - Neovim 使用 Lua 配置 82 - Redis 使用 Lua 脚本保证原子性 83 - 使用协程(coroutine)实现异步
dkbnull/hello-skill/tree/main/languages/skills/lua commit 88e0b53b35
Frequently asked questions How do I install the Lua skill? Run npx skillmds@latest add dkbnull/lua in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
What does the Lua skill do? Lua It is listed under Coding & Dev Tools on SkillMD.
Is Lua safe to use? This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
Which AI agents work with Lua? This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Is Lua free to use? Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
Who published Lua? dkbnull (@dkbnull) published this skill. Their other Agent Skills are listed on their SkillMD profile.