Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add commands/captainluzik/oh-my-embedded/flashgit clone --depth 1 https://github.com/captainluzik/oh-my-embeddedWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00015 | $0.00563 |
| Opus 5 | $0.00008 | $0.00282 |
| Sonnet 5 | $0.00003 | $0.00113 |
| Haiku 4.5 | $0.00002 | $0.00056 |
Grade A, and why
flash scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
What it actually says
Detect the project type and build + flash firmware to the connected device.
Detection rules
- If
sdkconfigorCMakeLists.txtwithidf_component_registerexists: ESP-IDF project. - If
platformio.iniexists: PlatformIO project. - If neither is found, tell the user and stop.
Arguments
$ARGUMENTS may contain:
- A serial port (e.g.
/dev/ttyUSB0,COM3) to override auto-detection. - A board name or target chip (e.g.
esp32s3,uno) to pass to the build system. - The word
monitorto start a serial monitor after flashing.
Parse $ARGUMENTS before running any commands.
ESP-IDF workflow
- Run
idf.py buildin the project root. Show build output. Stop on error. - Determine the flash port:
- If a port was given in
$ARGUMENTS, use it. - Otherwise run
idf.py flashwithout-pand let ESP-IDF auto-detect.
- If a port was given in
- Run
idf.py flash(append-p <port>if a port was specified). - If
monitorwas in$ARGUMENTS, runidf.py monitor(append-p <port>if specified).
Example commands:
idf.py build
idf.py flash -p /dev/ttyUSB0
idf.py monitor -p /dev/ttyUSB0
PlatformIO workflow
- Run
pio runto build. Show output. Stop on error. - Run
pio run --target uploadto flash.- If a port was given in
$ARGUMENTS, append--upload-port <port>. - If a board/environment was given, append
-e <env>.
- If a port was given in
- If
monitorwas in$ARGUMENTS, runpio device monitor.
Example commands:
pio run
pio run --target upload --upload-port /dev/ttyUSB0
pio device monitor
After flashing
Report:
- Build size (flash + RAM usage if available in build output).
- The port used.
- Whether the monitor was started.
If flashing fails with a "port not found" or "no device" error, suggest:
- Checking USB cable and connection.
- Running
ls /dev/tty*(Linux/macOS) or checking Device Manager (Windows) to find the port. - Holding the BOOT button while connecting (ESP32 boards).
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 64 lines · 15 tokens per session scan A ffba53a2205b
flash is a command published in the GitHub repository captainluzik/oh-my-embedded (23 stars, last pushed 6mo ago), licensed MIT. It adds 15 tokens to every session and 563 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other commands, from other repositories
hardware-specs
Read this before writing any code that touches peripherals, memory, Wi-Fi, camera, or audio. All GPIO and address numbers below are verified against the vendor BSP (ref/demo/ESP32-S3-CAM-OVxxxx/examples/ESP-IDF-v5.5.1/04dvpcameradisplay/components/waveshareesp32s3camovxxxx/include/bsp/esp32s3camovxxxx.h) and this…
monitor
Command "monitor" from chayuto/ws-ESP32-S3-CAM, covering read serial output from the board, fix 1 — stty -hupcl + dd (works reliably), fix 2 — pyserial but set dtr/rts before open, optional: pulse rts only to reset without touching dtr and healthy read (once the dtr trap is avoided).
peripherals
Use the vendor BSP waveshare/esp32s3camovxxxx for anything nontrivial. It hides the CH32V003 IO-expander quirks, I²C bus init, camera pin config, and codec addresses. Header: ref/demo/ESP32-S3-CAM-OVxxxx/examples/ESP-IDF-v5.5.1/04dvpcameradisplay/components/waveshareesp32s3camovxxxx/include/bsp/esp32s3camovxxxx.h.
safe-dev
Use this flow when adding a new subsystem (new task, new driver, new Kconfig symbol). Every crash we've had in this project came from skipping one of these checks. Usage: /safe-dev .
build
Activate ESP-IDF v5.5.3+ and build out-of-tree. Usage: /build.
flash
Usage: /flash (same path used with /build).