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,64 @@
---
name: sketch-patterns
description: Canonical Arduino sketch templates for the Uno Q (blink, fade/PWM, button, analog read) and how to upload them. Load this whenever the user asks to write, run, upload, or flash a sketch, or asks for blink/fade/button/sensor code.
---
# Uno Q Sketch Patterns
Target the MCU with FQBN `arduino:zephyr:unoq`. Sketches are 3.3 V.
## Uploading
To run a sketch on the board, call the **`uno_q_flash`** tool with
`action` = `upload` and the full `.ino` in `code`. It compiles and flashes over
SWD. Do not describe the steps — emit the tool call.
## Blink (built-in LED, D13)
```cpp
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
delay(500);
}
```
## Fade (PWM — only D3, D5, D6, D9, D10, D11)
```cpp
const int PIN = 9; // must be a ~ PWM pin
void setup() { pinMode(PIN, OUTPUT); }
void loop() {
for (int v = 0; v <= 255; v++) { analogWrite(PIN, v); delay(4); }
for (int v = 255; v >= 0; v--) { analogWrite(PIN, v); delay(4); }
}
```
## Button (input with pull-up)
```cpp
const int BTN = 2;
void setup() {
pinMode(BTN, INPUT_PULLUP);
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, digitalRead(BTN) == LOW ? HIGH : LOW);
}
```
## Analog read (03.3 V only!)
```cpp
void setup() { Serial.begin(115200); }
void loop() {
int raw = analogRead(A0); // 0..1023
float volts = raw * 3.3 / 1023.0; // NEVER exceed 3.3 V on A0-A5
Serial.println(volts);
delay(200);
}
```