Skill v1.0.1
currentAutomated scan100/100+11 new
name: mcu-variables description: Read, monitor, trend, export, or explicitly modify MCU variables resolved from ELF and DWARF. Use for C/C++ globals and supported runtime object paths, scalar trends, CSV history, requested variable tuning, or shared sampling. Use paused debug inspection for frame-local variables. metadata: version: "1.0.1"
MCU Variables
Before you run
- MCP first: if this session provides EmberProbe MCP tools (such as
variables_read), use them; the scripts here are the fallback. The authorization and hardware rules on this page apply to both. - Applies to: listing, reading, controlling shared sampling, trending, or exporting variables, and — only on explicit request — modifying one.
- Requires: the EmberProbe Agent Bridge; live reads/writes also need a connected, powered target. Listing ELF symbols and exporting CSV from an existing chart do not touch the probe.
- Preconditions: an ELF is selected for reads; starting sampling uses the configured probe and current watch lists, sharing a compatible debug connection when available. Stopping or querying sampling needs no ELF or connected probe. A write needs plan-bound confirmation or an applicable workspace permission explicitly reported by the Bridge (including the sidebar full-access grant).
- Side effects: reads are non-intrusive; sampling controls change the shared sidebar/chart state;
scripts/write.jschanges target RAM and verifies it by readback. - Success evidence: reads return resolved values (preserve exact 64-bit
valueText); writes return the readback verification. A read or export success does not prove the firmware behaves correctly.
For failure handling, retry limits, cross-skill routing, and result scoping, read ../_emberprobe/agent-workflow.md.
Choose the narrowest operation that satisfies the request:
For frame-local C++ values and GDB's class/STL summaries and paged expansion, use mcu-debug-control's paused inspection workflow. This skill reads ELF/DWARF globals and their supported runtime layouts; it does not substitute for task/frame-local GDB inspection.
- For listing, reading, sampling, trending, chart integration, CSV export of chart history, or a CSV snapshot of current array/struct values, read references/reading.md and use
scripts/read.js. - For starting, stopping, or querying persistent sidebar/chart sampling, read the sampling controls in references/reading.md and use
scripts/sampling.js. - Only when the user explicitly asks to set, tune, override, or otherwise modify a variable, read references/writing.md and use
scripts/write.js.
A name defined in several source files fails with VARIABLE_AMBIGUOUS; pick the intended candidate (ask the user if unclear) and use its file::name form, as described in references/reading.md.
Never turn a read or monitoring request into a write. A write request starts planning but is not itself approval to execute the returned write plan. Preserve exact 64-bit valueText fields when reporting values, and base failures on the structured stderr diagnostic instead of guessing a probe or service cause.