feat(uno-q): bundle the granular skill set alongside arduino-uno-q on every node

Vendors the fork's 11 granular UNO Q skills (bridge, flashing, led-matrix,
uno-q-hardware, sketch-patterns, modulino, linux-led, audio, vision, wireless,
arduino-app-lab) next to the comprehensive arduino-uno-q skill, and installs the
whole set into every agent's workspace on each board.

Why both: the comprehensive skill is the rich cloud reference (read_skill →
references); the granular skills are keyword-triggered and match the fork's eager
skill-inliner rules, so the on-board Qwen auto-inlines them (no read_skill
round-trip). flashing + led-matrix carry the exact uno_q_flash + frame-API /
ArduinoGraphics-not-installed detail that makes flashing reliable.

- push-skill.sh generalized: a single skill dir (has SKILL.md) OR a parent dir
  installs every skill under it; provision-fleet now ships all of skills/.
- Verified on board 65301572: cloud/Sonnet-5 lists all 12 skills.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
Omar Sobh
2026-07-16 09:32:11 -07:00
co-authored by Claude Opus 4.8
parent d2135a1938
commit 62c435c648
14 changed files with 555 additions and 37 deletions
@@ -0,0 +1,34 @@
---
name: arduino-app-lab
description: Arduino App Lab concepts on the Uno Q — Apps, Bricks, and the dual-side (Python + sketch) project structure. Load this when the user mentions App Lab, Bricks, or how a Uno Q "app" is organized across the Linux and Arduino sides.
---
# Arduino App Lab (Uno Q)
App Lab is Arduino's environment for Uno Q projects that span **both** sides of the
board. A project ("App") bundles a Linux-side program (usually Python) and an
Arduino sketch, wired together over the Bridge.
## Structure
- **App** — the whole project (Python + sketch + metadata, e.g. `app.yaml`).
- **Bricks** — reusable building blocks (a sensor, an actuator, a UI panel) you
compose into an App.
- **Bridge** — the RPC glue between the Python (MPU) and sketch (MCU) halves (see
the `bridge` skill).
The uno-q-bridge app that ZeroClaw deploys (`zeroclaw peripheral setup-uno-q`) is
itself an App Lab app: a `sketch/` on the MCU plus a `python/` socket server on the
Linux side exposing GPIO over TCP :9999.
## How this maps to ZeroClaw tools
- Flashing an App's sketch → `uno_q_flash` (compile + SWD flash).
- The Python side's GPIO service → `gpio_read` / `gpio_write`.
- You do not need the App Lab GUI to flash from ZeroClaw — `uno_q_flash` drives
`arduino-cli` + OpenOCD directly.
## Pitfalls
- An App's two halves run on different processors — pins live on the MCU, network
and AI on the MPU. Don't try to reach Arduino pins from Python except via Bridge.