
AI 插件开发工具插件系统【免费下载链接】claude-plugins-officialOfficial, Anthropic-managed directory of high quality Claude Code Plugins.项目地址https://gitcode.com/GitHub_Trending/cl/claude-plugins-official点击查看免费下载本篇技术指南聚焦于 claude-plugins-official 仓库中cwc-makers插件所附带的cardputer-buddy技能讲解在 M5Stack Cardputer-Adv 已通过m5-onboard完成刷机与应用安装之后如何以不重刷固件的方式持续迭代设备上的 MicroPython 应用包新增一个应用、把单个改动的.py推送到/flash/、实时观看设备串口日志、以及执行一次性 REPL 命令。读完本文你将掌握这套开发循环dev loop的完整命令、/flash/设备目录布局、端口参数的来源与跨平台差异以及这些操作背后的 REPL 机制与 NVS 引导配置原理。技能定位设备上电之后的事cwc-makers插件面向 Code-with-Claude Makers 的 Cardputer 套件其组件分工如下见 插件 README组件路径类型触发方式职责commands/maker-setup.md斜杠命令/maker-setup入口克隆仓库 执行完整上电引导skills/m5-onboard/技能/m5-onboard完整刷机手册探测、烧录、安装、各类坑skills/cardputer-buddy/技能/cardputer-buddy上电后的应用迭代推送、日志、REPLcardputer-buddy正是三者中负责上电之后的那一个。根据该技能 SKILL.md 的 frontmatter 定义它的触发条件是用户表达了以下任一意图add an app新增应用、push to the cardputer推送到设备、tail the device查看设备日志、run on the device在设备上运行以及/maker-setup之后的任何后续开发工作。也就是说Claude 会在对话中自动识别这些表述并激活该技能用户通常不需要手动调用。它有一个重要的前提约束技能内所有工作都必须在本机build-with-claude克隆目录内进行——这个克隆由/maker-setup命令创建git clone无 git 时回退为curl tar下载 GitHub tarball。buddy/目录就是m5-onboard安装到/flash/的 MicroPython 负载源与设备端一一对应。前置链路从/maker-setup到可迭代状态cardputer-buddy依赖的设备状态由另外两个组件建立理解这条链路有助于定位问题/maker-setup命令文档获取build-with-claude仓库随后调用m5-onboard技能执行onboard/scripts/onboard.py --apps buddy并负责把下载模式按钮的操作提示转达给用户。m5-onboard技能文档onboard.py是主编排器按序驱动 6 个阶段——Detectdetect.py枚举串口并识别芯片→ Identify交叉比对硬件签名→ Fetch firmwarefetch_firmware.py查询 M5Burner manifest 并下载 UIFlow 2.0→ Flashflash.py调 esptool 烧录→ Install appsinstall_apps.py推送应用包→ Smoke testsmoke_test.py校验 I2C/LCD/扬声器/按键。设备端引导完成后main.py会接管启动流程细节见下文设备布局一节此时用户便进入了可迭代状态也就是cardputer-buddy技能的工作区间。设备端布局/flash/目录结构上电安装完成后设备内部/flash/的文件布局如下原文完整保留/flash/ ├── main.py launcher menu (replaces UIFlows boot flow) ├── buddy_*.py shared libs (BLE, UI, state, protocol, chars) ├── burst_frames.py sprite frames └── apps/ ├── claude_buddy.py BLE client → Claude Desktops Hardware Buddy ├── hello_cardputer.py └── snake.py两个关键设计值得展开启动菜单的生成机制main.py在每次开机时扫描/flash/apps/目录把其中的每一个.py文件作为菜单项列出。因此新增应用本质上就是往buddy/device/apps/里放一个.py文件并推送过去下次开机它就会自动出现在菜单中无需修改启动器代码。BLE 相关共享库buddy_*.py前缀文件承载 BLE、UI、状态、协议、字符集等共享逻辑claude_buddy.py是 BLE 客户端负责连接 Claude Desktop 的 Hardware Buddy。从 m5-onboard 技能文档 可以补充该布局的两个底层原因根目录main.py取代 UIFlow 启动器install_apps.py在推送包含根级main.py的应用包时会同时写入 NVS 键boot_option2使 UIFlow 自带的启动器不再运行由我们的main.py接管引导流程。这对 ESP32-S3 上的 BLE 应用至关重要——UIFlow 默认的boot_option1会在后台启动 Flow 配对广播阻塞 NimBLE 控制器导致用户代码调用gap_advertise(...)时抛出OSError(-519) Memory Capacity Exceeded。boot.py不被覆盖应用包只在/flash/提供main.py从不替换 UIFlow 的boot.py因此想要恢复 UIFlow 只需在设备 REPL 中执行os.remove(/flash/main.py)后machine.reset()无需备份恢复流程。新增一个应用从 Hello 范例开始技能给出的新增应用路径非常具体从buddy/device/apps/hello_cardputer.py抄起——它是体积最小的示例涵盖了键盘轮询、字体使用与退出约定的标准写法。以它为模板开发新应用后推送时不走onboard.py完整流程那会重刷固件而是单独运行应用安装脚本python3 onboard/scripts/install_apps.py --port PORT --src buddy参数说明--port PORT目标串口取detect.py上次运行报告的端口例如/dev/cu.usbmodem1101macOS 原生 USB、/dev/ttyACM0Linux 原生 USB、COM3Windows。--src buddybuddy是已知的应用包名解析到仓库内buddy/device/目录任意其他--src值都会被当作文件系统路径处理见 m5-onboard 文档。关于--src的解析顺序m5-onboard 技能文档 给出了完整的回退链有助于理解它为什么任何克隆位置都能工作$M5_BUDDY_DIR环境变量——显式覆盖优先级最高适合指向本克隆之外的定制包Unix 用export M5_BUDDY_DIR/path/to/buddy/devicePowerShell 用$env:M5_BUDDY_DIRC:\path\to\buddy\device本仓库内buddy/device/目录通过os.path.realpath(__file__)向上回溯定位兼容符号链接式技能安装如~/.claude/skills/m5-onboard/~/Downloads/m5stack/buddy/device~/Desktop/m5stack/buddy/device。绝大多数安装命中第 2 条路径。install_apps.py的内部机制是粘贴模式 REPL 上传把源目录下每个.py按规则写入——根级*.py到/flash/、apps/*.py到/flash/apps/——随后通过repl_reset经 REPL 发送machine.reset()重启设备。端口参数的来源与跨平台命名PORT是这三个开发工具共用的唯一关键参数它的取值直接来自detect.py。从 m5-onboard 技能文档 可知detect.py会枚举串口、过滤出 USB-UART 桥CH9102 厂商 ID0x1A86、Silabs CP210x0x10C4、FTDI0x0403或 ESP32-S3 原生 USB-JTAG 接口0x303A并用 esptool 探测确认芯片。若省略--port它会在三平台间挑选最可能的候选若出现多个候选则主动询问不会盲目猜测。不同操作系统下的端口呈现形式平台原生 USBCardputer-Adv / CoreS3UART 桥CH9102旧款板macOS/dev/cu.usbmodem1101/dev/cu.usbserial-XXXXLinux/dev/ttyACM0/dev/ttyUSB0WindowsCOM3等设备管理器 → 端口COM4等Linux 上还有一个常见前置坑访问/dev/ttyUSB*//dev/ttyACM*需要用户属于dialoutDebian/Ubuntu/Arch或uucpFedora用户组否则detect.py能发现端口但后续打开时报Permission denied。一次性修复sudo usermod -aG dialout $USER后注销重登组变更仅对新会话生效。蓝牙串口会被detect.py过滤掉不会混入候选。开发循环工具链buddy/scripts/下的三个脚本技能的核心价值在于上电后不重刷固件的高频迭代全部依托buddy/scripts/目录下的三个工具命令原文完整保留# Push a subset of files over USB-serial python3 buddy/scripts/push.py --port PORT --files apps/snake.py # Watch device logs python3 buddy/scripts/tail_serial.py --port PORT # One-shot REPL exec python3 buddy/scripts/repl_run.py --port PORT --script import os; print(os.listdir(/flash))逐个拆解其用途与适用场景push.py——部分文件推送--files参数可指定单个或一组文件相对buddy/的路径如apps/snake.py覆盖 USB 串口直接写入。它是只改了一个.py就只想推这一个的标准手段与install_apps.py的全量目录推送互补。注意与 m5-onboard 的安装脚本不同push.py是否附带boot_optionNVS 写入、是否重启设备取决于buddy/scripts/内实现——若你的改动涉及根级main.py应结合上文install_apps.py的 NVS 语义谨慎处理详见下文机制与边界。tail_serial.py——设备日志流持续读取设备串口输出用于观察应用运行期行为。在 Claude Code 场景下配合run_in_background: true或 Monitor 工具可实时把设备侧日志转达给用户该技能文档对 m5-onboard 长任务的流式输出有明确建议——后台运行并tee到日志文件再以tail监控关键事件横幅避免前台静默被误判为挂起。repl_run.py——一次性 REPL 命令--script参数携带一段 MicroPython 代码在设备 REPL 中执行一次。示例中的import os; print(os.listdir(/flash))用于直接盘点设备文件系统排查文件是否真的落盘这类问题非常高效。与push.py同理单条 REPL 语句不涉及固件重刷。这些脚本背后的机制与边界要把这套工具链用对需要理解底层两条关键机制依据 m5-onboard 技能文档 记载1. REPL 多行代码必须走粘贴模式。逐行发送try:/except:这类块结构会让 REPL 无限累积缩进正确姿势是 Ctrl-E 进入粘贴模式、发送整个块、Ctrl-D 执行。mpy_repl.pyonboard/scripts/下的共享串口/REPL 辅助模块已封装这一逻辑粘贴模式上传正是install_apps.py推送.py文件的方式。2. 原生 USB 设备的软复位语义不同。对 UART 桥设备硬复位是 DTRFalse、RTSTrue 保持 100ms、RTSFalse 的脉冲但原生 USB 的 ESP32-S3 板Cardputer、Cardputer-Adv、CoreS3上 DTR/RTS 并未接到 EN/GPIO0该脉冲是无效操作必须改用mpy_repl.repl_reset()通过 REPL 发送machine.reset()完成推送后的重启。文档特别警告如果在 usbmodem 端口上依赖 DTR/RTS 重启文件已落盘但旧代码仍在运行——这种静默回归曾实际发生过。3. 应用包与 NVS 引导配置的联动。当包内存在根级main.py时install_apps.py会自动设置boot_option2。NVS 写入必须用set_str而非set_blob——UIFlow 启动时调用nvs.get_str()blob 标签的键会返回ESP_ERR_NVS_NOT_FOUND导致设备启动循环若此前误写过 blob需先nvs.erase_key(name)再set_str。该行为已内置在脚本中不应被手工 esptool 或自拼流程覆盖。迭代场景下的常见操作设备端视角上电后用户实际面对的操作详见 m5-onboard 技能文档 的 After provisioning 一节与开发迭代直接相关启动与导航右侧拨动开关开/关机开机后自动进入启动菜单方向键滚动Enter 启动高亮应用ESC 从应用返回菜单。事件 WiFi 自动连接main.py每次启动尝试连接硬编码的事件 WiFiSSIDcardputer凭据在buddy/device/wifi_event.py结果展示在 LCD 上连接是尽力而为的失败也继续进入菜单。迭代时若不在事件现场应编辑wifi_event.py或删除main.py中的_connect_wifi_with_splash()调用——这正是push.py单文件推送的典型用例。Claude Buddy 的 BLE 配对仅首次Claude Desktop 中依次进入Help → Troubleshooting → Enable Developer Tools一次性开启跨启动保留再经Developer menu → Hardware Buddy → Connect连接BLE 链路与 WiFi 状态无关。相关文档索引本文所依据与引用的仓库内文档均以仓库根目录为起点技能本体plugins/cwc-makers/skills/cardputer-buddy/SKILL.md完整刷机手册端口命名、REPL 机制、NVS 语义、平台注意事项plugins/cwc-makers/skills/m5-onboard/SKILL.md入口命令克隆仓库与引导编排plugins/cwc-makers/commands/maker-setup.md插件总览组件表、安装方式、前置条件plugins/cwc-makers/README.md需要说明的是buddy/应用包与onboard/scripts/、buddy/scripts/下的可执行脚本实际存放在/maker-setup于本机克隆的build-with-claude仓库中当前插件目录内仅以技能文档形式携带领域知识内容从上游 vendoredApache-2.0以便 Claude 在上下文中直接可用。实际执行时所有scripts/*.py调用都应从该克隆的相应目录内发起使--src buddy、--files apps/...等相对路径正确解析。赞分享AI 插件开发工具插件系统【免费下载链接】claude-plugins-officialOfficial, Anthropic-managed directory of high quality Claude Code Plugins.项目地址https://gitcode.com/GitHub_Trending/cl/claude-plugins-official点击查看免费下载相关推荐cwc-makers 插件实战指南用 Claude Code 一键完成 M5Stack Cardputer 烧录与 MicroPython 应用迭代cwc makers 插件实战指南用 Claude Code 一键完成 M5Stack Cardputer 烧录与 MicroPython 应用迭代 本篇技术AI 插件开发工具插件系统Claude Code 插件实战用 cwc-makers 的 /maker-setup 命令一键开箱 Code-with-Claude Makers CardputerClaude Code 插件实战用 cwc makers 的 /maker setup 命令一键开箱 Code with Claude Makers CardAI 插件开发工具插件系统M5Stack Onboarding 实战指南用 cwc-makers 插件的 m5-onboard 技能完成 ESP32 探测、UIFlow 2.0 刷机与 MicroPython 应用部署M5Stack Onboarding 实战指南用 cwc makers 插件的 m5 onboard 技能完成 ESP32 探测、UIFlow 2.0 刷机与AI 插件开发工具插件系统上一篇【亲测免费】 探索PyTorch之Glow高性能神经网络编译器下一篇终极指南用OpenCore Legacy Patcher让老Mac焕发新生创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考