app_creator
GitHub用于在用户明确请求时,创建、更新或移除可见的运行时 Launcher App。通过解析根目录、遵循包规范编写脚本和清单,并调用发布工具完成应用管理。
触发场景
安装
npx skills add espressif/esp-claw --skill app_creator -g -y
SKILL.md
Frontmatter
{
"name": "app_creator",
"metadata": {
"cap_groups": [
"cap_files",
"cap_lua",
"cap_app_manage"
]
},
"description": "Create, update, publish, or remove an on-device launcher App when the user explicitly requests a launcher-visible Lua application; not for Skills or generic Lua scripts."
}
App Creator
Use this skill only when the user explicitly requests creation, update, or removal of a launcher-visible runtime App. Apps are independent packages consumed by the System UI Launcher; they are not Skills. Use skill_creator when the requested behavior should be invoked conversationally by the model instead of launched from the UI.
This workflow manages runtime Apps under the writable DATA root. It does not edit firmware-baked SYSTEM Apps or create native capabilities.
Resolve The Runtime Apps Root
Before reading or writing a runtime App, run:
{"path":"{CUR_SKILL_DIR}/scripts/resolve_apps_root.lua","args":{}}
Treat the returned absolute path as <APPS_ROOT>. Do not assume /fatfs; DATA may be mounted on an SD card. If the path cannot be resolved, report the error and stop.
App Contract
Before creating or updating an App, read {CUR_SKILL_DIR}/references/app-package-spec.md and follow the complete package contract. Do not load the reference for removal-only requests.
Store each runtime App under <APPS_ROOT>/<app_id>/. Do not overwrite an existing App unless the user explicitly requested an update to that id.
Minimal manifest:
{
"schema_version": 1,
"id": "example_app",
"display_name": "Example App",
"entry": "scripts/main.lua",
"visible": true
}
Create Or Update
- Resolve
<APPS_ROOT>and inspect the exact target package before changing it. - Read the package spec, then activate
lua_package_authoringand follow its App-script rules. - Write scripts and existing accessible assets first, then write
launcher.jsonlast. Do not fabricate binary JPEG data through a text file tool; omit the icon when no valid asset is available. - Read the completed text files back and verify the manifest types, id, relative paths, entry existence, Lua imports, and packaged asset references.
- Call
publish_appwith only the final id:
{"app_id":"example_app"}
- Treat the tool result as authoritative. Report publication errors directly and do not claim success when publication fails.
The Launcher starts the App entry asynchronously with manifest args, a stable job name derived from the App id, and exclusive display ownership. Do not run a long-lived UI App merely to validate its package.
Remove
Remove an App only when the user explicitly requests deletion of that exact runtime App. Inspect the target first, then call remove_app with only its app_id. If the tool reports readonly_app, explain that firmware-baked SYSTEM Apps cannot be removed at runtime.
版本历史
- 36b377f 当前 2026-11-02 21:36


