m5-onboard
End-to-end onboarding for a freshly-plugged-in M5Stack ESP32 device (Cardputer, Cardputer-Adv, Core, CoreS3, Stick) — detect on USB, flash UIFlow 2.0 firmware, and install the Claude Buddy MicroPython app bundle. Use whenever the user plugs in or wants to flash/provision/reset an M5Stack or ESP32 board, or says "m5-onboard go".
npx skills add anthropics/claude-plugins-official --skill m5-onboard --agent claude-code
Same command for any agent — swap --agent for codex, cursor, copilot.
Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.
What it does
End-to-end onboarding for a freshly-plugged-in M5Stack ESP32 device (Cardputer, Cardputer-Adv, Core, CoreS3, Stick) — detect on USB, flash UIFlow 2.0 firmware, and install the Claude Buddy MicroPython app bundle. Use whenever the user plugs in or wants to flash/provision/reset an M5Stack or ESP32 board, or says "m5-onboard go".
How it works
The skill guides an automated cold-start workflow: detect on USB, identify the board, fetch the UIFlow 2.0 firmware, flash the device, and install apps into /flash/ so the device boots into user software. It uses a main orchestrator script (scripts/onboard.py) that calls sub-scripts in order, handling reboots and progress reporting. It provides specific command lines for actions:
- Fresh card provisioning:
python3 scripts/onboard.py --apps buddy(default path for Cardputer-Adv) - Install only:
python3 scripts/install_apps.py --port <PORT> --src buddy - Partial run or smoke tests:
python3 scripts/smoke_test.pyIt requires running the Bash interaction in background mode with log streaming for Claude Code's Bash tool and instructs on user prompts during the FLASH stage to press hardware buttons for download mode (BtnG0 and BtnRST sequence). It explains port discovery, firmware fetching, flashing with specific baud rates, and post-flash app installation behavior, including BLE and NVS boot options for Cardputer-Adv.
When to use it
Use this when a user plugs in an M5Stack device and wants it provisioned. The decision tree includes: fresh/unknown device (default onboard), already-flashed device with apps to install (install_apps.py --src buddy), device with issues (smoke_test.py), and user curiosity about device capabilities (smoke_test.py). If multiple devices are connected, it asks which port to target. Default variant is Cardputer-Adv; explicit variants can be chosen via onboard.py --variant.
Stages
- Detect — enumerate ports and identify ESP32-S3 native USB or USB-UART bridges.
- Identify — read factory-test partition and I2C to suggest firmware variant.
- Fetch firmware — download UIFlow 2.0 binary to temp dir via M5Burner API.
- Flash — use
esptool write_flashwith 460800 baud for UART bridges or 115200 baud with--no-stubfor native-USB S3; handle recovery if needed. - Install apps — paste-mode REPL upload of app files into
/flash/, reboot viarepl_reset, and adjust boot behavior to start our bundle. - Smoke test — optional checks for I2C, LCD, speaker, and buttons.
What it can touch
The toolset touches serial ports, firmware binaries, and the device filesystem: attempt to install apps into /flash/, modify NVS boot options when a root main.py is present, and perform reboots via REPL utilities.
Caveats
Native-USB ESP32-S3 boards require a physical BtnG0+BtnRST sequence to enter download mode; software-based entry is not available. Do not unplug during FLASH. Baud rates: 460800 for UART bridges, 115200 with --no-stub on native USB. NVS boot_option handling may be required (boot_option=2 for Cardputer-Adv). The workflow is designed for macOS, Linux, and Windows; default variant assumes Cardputer-Adv unless specified. The bundle places a root main.py under /flash/ and leaves UIFlow launcher intact otherwise.
# M5Stack Onboarding This skill automates the full cold-start workflow for an M5Stack ESP32 device: detect on USB, identify model, flash UIFlow 2.0, and push a MicroPython app bundle onto `/flash/` so the device boots into user software. The apps we ship (Claude Buddy, Snake, Hello) talk over BLE or USB. The workflow runs on macOS, Linux, and Windows; the skill was developed against an M5Stack Basic v2.6 (CH9102 bridge, ESP32-D0WDQ6-V3, 16 MB flash) and generalized to cover the rest of the Core family, with the Cardputer-Adv (ESP32-S3, native USB) as the current default target. ## Where the scripts live This skill ships as part of the `cwc-makers` plugin for reference, but the executable scripts and the `buddy/` app bundle live in a local clone of https://github.com/moremas/build-with-claude (the `/maker-setup` command creates this clone). Run every `scripts/*.py` invocation below from inside that clone's `onboard/` directory so `--apps buddy` resolves to the sibling `buddy/device/` payload. ## When to use Use this when a user plugs in an M5Stack device and wants it provisioned. The decision tree: - **Fresh/unknown device** → run `onboard.py --apps buddy` end-to-end (detect → ident
- Where the scripts live
- When to use
- Which variant to assume
- The workflow
- Relaying physical steps to the user (REQUIRED)
- Stages
- Critical gotchas (baked into the scripts — do not second-guess)
- After provisioning (what the user sees on the device)
- Files
- Dependencies
- Platform notes
sudo usermod -aG dialout $USER
What does the m5-onboard skill do?
End-to-end onboarding for a freshly-plugged-in M5Stack ESP32 device (Cardputer, Cardputer-Adv, Core, CoreS3, Stick) — detect on USB, flash UIFlow 2.0 firmware, and install the Claude Buddy MicroPython app bundle. Use whenever the user plugs in or wants to flash/provision/reset an M5Stack or ESP32 board, or says "m5-onboard go".
How do I install it?
Run `npx skills add anthropics/claude-plugins-official --skill m5-onboard --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.
Where does this skill come from?
From anthropics/claude-plugins-official, a repository with 33,027 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.
Is a popular skill a good skill?
Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.