| name | luatos-new-project-skill |
| description | 新建LuatOS项目代码:从零开始生成完整的LuatOS项目。触发条件:用户需要创建全新的LuatOS项目,从零开始编写代码。先分析需求和参考demo,再生成main.lua和功能模块。 |
新建LuatOS项目技能
概述
本技能用于从零开始创建全新的LuatOS项目,生成完整的项目代码结构和所有功能模块。
触发条件
必须调用本技能的场景:
- 用户需要创建全新的LuatOS项目
- 用户需要从零开始编写代码
- 用户要求生成完整的项目结构
执行流程(强制)
步骤1:MCP服务器检查
引用 luatos-project-common-skill 的 公共流程1:MCP服务器状态检查
IF MCP服务器检查失败 THEN
输出错误信息,终止执行
END
步骤2:确定保存目录 ⚠️ 必须执行
执行规则:
- 检查用户是否在请求中指定了保存目录
- IF 用户未指定保存目录 THEN
- 根据项目名称创建新目录
- 目录命名规则:小写字母+下划线,与PROJECT变量保持一致
- ⚠️ 【强制】如果目录已存在,必须创建带数字后缀的新目录
- ⚠️ 【强制】禁止直接使用已有目录
- 输出:已创建项目目录 [目录路径]
- ELSE
- 使用用户指定的目录
- 验证目录是否存在,不存在则创建
- 输出:使用指定目录 [目录路径]
- 记录最终使用的项目目录路径,供后续步骤使用
重要:
- 必须明确输出目录创建/使用的信息
- 必须记录目录路径供后续步骤使用
- 不得跳过此步骤直接使用现有目录
步骤3:分析项目需求
1. 理解用户的项目需求
2. 识别需要实现的功能模块
3. 确定使用的核心库/扩展库
4. 识别产品型号(若未指定,需询问用户)
步骤4:参考Demo分析
引用 luatos-project-common-skill 的 公共流程2:确定参考Demo范围 和 公共流程3:分析相关Demo
步骤5:解耦化设计
引用 luatos-project-common-skill 的 公共流程4:解耦化设计规范
重要规则:
- 所有功能逻辑都必须创建独立的功能模块
- main.lua中只负责require功能模块,不包含任何功能代码
- 即使是简单的功能(如定时打印),也应该创建独立模块
步骤6:生成main.lua
引用 luatos-project-common-skill 的 公共流程7:main.lua模板选择
⚠️ 核心原则(强制遵守):
- 根据产品型号动态判断看门狗初始化代码是否启用
- 其他代码块(errDump、内存监控等)保持注释状态
- 用户需要根据需求手动取消其他注释
生成规则:
- 模板中的所有内容(包括注释和注释代码)必须原样复制到main.lua中
- 看门狗初始化代码:根据产品型号判断处理方式
- Air1601/1602/6201/8101系列:取消注释,启用看门狗
- Air700/780/8000系列:删除整个看门狗初始化代码块(包括注释)
- 标注"强烈建议打开此处的注释"的代码块保持注释状态,由用户根据需求手动取消注释
- 所有注释文字都必须保留,包括FOTA说明、errDump说明、内存监控说明等
- 仅修改以下占位符:
<项目名> → 替换为实际项目名
<功能模块名> → 替换为实际功能模块名
[author] → 替换为作者名(可选)
[功能描述] → 替换为功能描述
禁止事项(绝对禁止):
- ❌ 自动取消errDump配置代码的注释
- ❌ 自动取消内存监控定时器的注释
- ❌ 删除或修改任何注释文字
- ❌ 删除FOTA相关的注释说明
- ❌ 在require语句之后添加功能代码
main.lua代码位置规范:
| 位置 | 允许的内容 |
|---|
-- require其他功能模块 之后 | 仅允许 require 语句,require后不要调用功能模块的任何函数 |
sys.run() 之前 | 仅允许 sys.run() |
错误示例(禁止):
require "xxx_app"
sys.timerLoopStart(...) ← ❌ 功能代码不能放在require之后
sys.run()
正确示例:
require "xxx_app"
sys.run()
main.lua模板:
PROJECT = "<项目名>"
VERSION = "001.999.000"
log.info("main", PROJECT, VERSION)
require "<功能模块名>"
sys.run()
步骤7:生成功能模块代码
根据解耦化设计规范,生成各个功能模块的代码文件:
| 模块类型 | 说明 |
|---|
| 应用模块 | 实现具体业务逻辑 |
| 驱动模块 | 硬件接口驱动 |
| 工具模块 | 通用工具函数 |
| 资源文件 | 图片、字体、配置等 |
步骤8:验证代码
引用 luatos-project-common-skill 的:
公共流程5:Require验证
公共流程6:API正确性验证
公共流程6.1:资源文件路径验证
额外检查项:
- 文件名长度 ≤ 23字节
- main.lua符合模板要求
- 所有功能模块正确解耦
步骤9:输出项目结构
项目目录/
├── main.lua -- 主入口文件
├── readme.md -- 项目说明(可选)
├── [功能模块1].lua -- 功能模块
├── [功能模块2].lua -- 功能模块
└── [资源文件] -- 资源文件
强制约束
- 必须先执行MCP服务器检查
- 必须使用解耦化设计
- 必须创建全新的项目目录,禁止使用或复用已有目录
- 如果检测到目录已存在,必须删除后重建,或创建带数字后缀的新目录(如 hello_luatos_001)
- 必须在输出中明确说明是新建目录还是使用已有目录
- 必须生成完整的main.lua(包含所有必需元素)
- 必须验证所有require和API调用的正确性
- 必须确保文件名长度 ≤ 23字节
- 禁止基于内置记忆编写代码,必须参考demo
- 禁止编造不存在的API或函数