Install
openclaw skills install @yuyun2000/uiflow2-ui-designerDesign, generate, beautify, optimize, or review UIFlow2 interfaces, graphics, dashboards, gauges, animations, round-screen layouts, e-paper screens, and LED-matrix experiences for M5Stack devices. Use with uiflow2-coder when MicroPython API correctness or hardware compatibility matters; do not use f
openclaw skills install @yuyun2000/uiflow2-ui-designer为 M5Stack UIFlow2 设备设计有明确视觉层级、交互反馈和性能边界的界面。既可以从零生成,也可以审查并优化现有 MicroPython UI。默认用中文说明,代码和 API 名保持英文。
本 skill 负责设计决策;相邻的 uiflow2-coder 负责官方 API 事实。不要复制 Web 端布局、CSS 动效或字体假设到嵌入式屏幕。
| 客观条件 | 直接选择 | 明确不要做 |
|---|---|---|
能导入 lvgl、m5ui、M5Page,且需求有按钮/开关/列表/图表/多页/触摸 | m5ui 语义控件 | 不用 label 或 Canvas 假造可点击控件 |
| 已在 m5ui 页面内,只需自定义图标/静态图形/低频仪表/简单单缓冲动画 | 单个 m5ui.M5Canvas + begin_draw()/end_draw() | 不额外分配双 Canvas,不逐笔提交 |
| 连续整帧动画同时要求隐藏清屏/半成品帧,且 raw LVGL API、draw buffer 和 RAM 已确认 | raw lv.canvas + lv.draw_buf_create() 双缓冲 | 不把 M5Canvas 当作自动双缓冲 |
| m5ui/LVGL 不可导入,或已确认上层对象/内存不足,只需少量静态标签/图片/图元 | M5.Widgets;动画挂到 M5GFX Canvas | 不假设 Widgets 有 LVGL 语义按钮/开关/列表 |
| 没有可用上层能力,或目标是极简像素/局部图形 | M5.Lcd/M5.Display.newCanvas(),完成后一次 push() | 不在屏幕上逐笔绘制多步帧 |
docs/source 和 m5stack/libs;否则报告缺少依赖。M5Label 只用于没有专用组件的静态/
只读文字或数值,M5Canvas 只用于专用控件不能表达的自定义图形,不能用松散
标签和图元仿造已有控件。M5.update() 必须持续执行。动画和传感器更新使用有界帧率、time.ticks_ms() 和 time.ticks_diff(),不阻塞事件处理。NOT RUN 或 PARTIAL。lvgl、m5ui.M5Page 和所需控件时,优先用 m5ui 原生控件。m5ui.M5Canvas,用 begin_draw()/end_draw() 批量提交。lv.canvas + lv.draw_buf_create() 双缓冲;这是 LVGL 高级路径,不要把它当成普通 M5Canvas 调用。M5.Widgets 的轻量组件;它没有 LVGL 的布局、样式和事件体系。M5.Lcd/M5.Display。多步绘制必须使用复用的 M5.Lcd.newCanvas(),不能直接逐笔画到屏幕。NOT RUN/PARTIAL。NOT RUN/PARTIAL。fillScreen()、clear()、重新初始化控件或分配全屏 buffer。用户要代码时先给可运行代码,再简要说明视觉方向、关键 token、查过的官方文档和验证步骤。用户要审查时先列 P0/P1/P2 问题和证据,再给最小修改建议。始终区分静态检查、运行通过和视觉实机验证。