PluginBench
Skill
Official
Pass
Audit score 90

cardputer-buddy

anthropics/claude-plugins-official

Iterate on Cardputer-Adv MicroPython apps after provisioning—push code, watch logs, run REPL commands.

What is cardputer-buddy?

Cardputer Buddy manages the MicroPython app bundle on an M5Stack Cardputer device after initial setup via m5-onboard. Use it to add new apps, push individual file changes without re-flashing, monitor device serial output, or execute one-shot commands on the device.

  • Add new MicroPython apps by dropping .py files into the apps directory and pushing them over USB-serial
  • Push individual changed files to the device without re-flashing the entire firmware
  • Watch device serial logs in real-time to debug running apps
  • Execute one-shot REPL commands on the device for testing or inspection
  • Automatically scan and list all .py files in /flash/apps/ as menu entries on device boot

How to install cardputer-buddy

npx skills add https://github.com/anthropics/claude-plugins-official --skill cardputer-buddy
Prerequisites
  • Cardputer device already provisioned via m5-onboard skill
  • Local clone of build-with-claude repository with buddy/ directory
  • USB connection to the device and its serial port identifier (e.g., /dev/cu.usbmodem1101)
  • Python 3 environment with access to buddy/scripts/ tools
Claude Code
Cursor
Windsurf
Cline

How to use cardputer-buddy

  1. 1.Identify your device's serial port using detect.py or system tools (e.g., /dev/cu.usbmodem1101, /dev/ttyACM0, COM3)
  2. 2.To add a new app: create a .py file in buddy/device/apps/ following the pattern in hello_cardputer.py, then run `python3 onboard/scripts/install_apps.py --port <PORT> --src buddy`
  3. 3.To push a single changed file: run `python3 buddy/scripts/push.py --port <PORT> --files apps/snake.py` (adjust filename as needed)
  4. 4.To watch device logs: run `python3 buddy/scripts/tail_serial.py --port <PORT>` and interact with the device to see output
  5. 5.To run a one-shot command: use `python3 buddy/scripts/repl_run.py --port <PORT> --script "import os; print(os.listdir('/flash'))"` (adjust script as needed)

Use cases

Good for
  • Develop a new interactive app for the Cardputer and test it without full re-flashing cycles
  • Debug a running Claude Buddy or Snake app by tailing serial output while interacting with the device
  • Push a single bug fix to an existing app and verify it works on next boot
  • Run quick diagnostic commands like listing files or checking memory without opening a full REPL session
  • Iterate rapidly on game or utility app logic during active development
Who it's for
  • MicroPython developers working with M5Stack Cardputer devices
  • Makers building custom apps on provisioned Cardputer hardware
  • Hardware enthusiasts debugging device behavior during development
  • Teams extending the Claude Buddy, Snake, or Hello Cardputer app bundle

cardputer-buddy FAQ

Do I need to re-flash the device every time I change an app?

No. Use push.py to send individual .py files over USB-serial, or use install_apps.py to add new apps. Changes take effect on the next device boot.

How do I add a completely new app to the Cardputer?

Create a new .py file in buddy/device/apps/ following the conventions in hello_cardputer.py (keyboard polling, font, exit), then run install_apps.py. The app will appear in the menu on next boot.

What if I need to debug an app that's already running on the device?

Use tail_serial.py to watch device logs in real-time while interacting with the app, or use repl_run.py to execute diagnostic commands.

Where do I find the serial port identifier for my device?

Run detect.py in the onboard scripts, or check your system's device list (e.g., /dev/ on macOS/Linux, COM ports on Windows).

Can I modify the launcher menu or main.py?

Yes, main.py is in buddy/device/ and scans /flash/apps/ at boot. Push changes to main.py using push.py just like any other file.

Full instructions (SKILL.md)

Source of truth, from anthropics/claude-plugins-official.


name: cardputer-buddy description: Iterate on the Cardputer-Adv MicroPython app bundle (Claude Buddy, Snake, Hello) after the device is already provisioned via m5-onboard. Use when the user wants to add a new app, push a single changed .py without re-flashing, watch device serial logs, or run a one-shot REPL command. Trigger on "add an app", "push to the cardputer", "tail the device", "run on the device", or follow-up work after /maker-setup.

Cardputer Buddy app bundle

The buddy/ directory in the local build-with-claude clone is the MicroPython payload that m5-onboard installs onto /flash/. Work inside that clone.

Device layout

/flash/
├── main.py              launcher menu (replaces UIFlow's boot flow)
├── buddy_*.py           shared libs (BLE, UI, state, protocol, chars)
├── burst_frames.py      sprite frames
└── apps/
    ├── claude_buddy.py  BLE client → Claude Desktop's Hardware Buddy
    ├── hello_cardputer.py
    └── snake.py

main.py scans /flash/apps/ at boot and lists every .py as a menu entry. Drop a file into buddy/device/apps/, push it, and it appears on next boot.

Adding an app

Crib from buddy/device/apps/hello_cardputer.py — smallest example of keyboard polling, font, and exit conventions. Then push without re-flashing:

python3 onboard/scripts/install_apps.py --port <PORT> --src buddy

<PORT> is whatever detect.py reported last run (e.g. /dev/cu.usbmodem1101, /dev/ttyACM0, COM3).

Dev loop tooling (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'))"