Claude-skill-registry k1-firmware-ops
Build selected K1.node2 pattern(s), upload firmware to the ESP32-S3 over LAN, verify the web API/UI, capture artifacts, and draft release notes.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/k1-firmware-ops" ~/.claude/skills/majiayu000-claude-skill-registry-k1-firmware-ops && rm -rf "$T"
manifest:
skills/data/k1-firmware-ops/SKILL.mdsource content
K1 Firmware Ops
Purpose
Create a repeatable, end-to-end flow for K1.node2: codegen → compile → OTA → API/UI QA → release notes.
Prerequisites
- PlatformIO CLI (
) installed and on PATH.pio - Node.js 18+ and npm installed.
- Playwright runtime installed (the steps below run
).npx playwright install
Config
Edit
tools/k1.config.json in the repo root to match your setup:
{ "device_ip": "192.168.1.50", "ota_method": "arduino", "dashboard_path": "/", "pattern": "Twilight", "upload_port": "3232" }
Procedure (follow these steps in order)
-
Build & Upload (uses existing project scripts and/or PlatformIO):
bash tools/k1_firmware_ops.sh --pattern "<PATTERN_NAME>" --ip "<DEVICE_IP>" --qa false- Artifacts land under
(build log and metadata).artifacts/<timestamp>/
- Artifacts land under
-
Install QA deps once:
cd tools/qa/playwright npm ci npx playwright install cd ../../.. -
Run API + UI tests (captures JSON report + screenshots):
bash tools/k1_firmware_ops.sh --pattern "<PATTERN_NAME>" --ip "<DEVICE_IP>" --qa true -
Generate release notes (Markdown summary with links to artifacts):
node tools/release/generate_release_notes.mjs
Examples
-
Rebuild and upload Twilight to
and run QA:192.168.1.50bash tools/k1_firmware_ops.sh --pattern "Twilight" --ip "192.168.1.50" --qa true -
Build only (no QA), using
defaults:tools/k1.config.jsonbash tools/k1_firmware_ops.sh
Guardrails
- Treat IPs and Wi‑Fi credentials as secrets; do not commit secrets.
- Prefer ArduinoOTA unless an HTTP OTA endpoint is documented and reachable.
- If
POST semantics differ from the tests, update/api/params
and the tests accordingly.tools/qa/params.sample.json