Core Concepts
Common Workflows
The patterns you'll reach for daily. Most start the same way — run /init once so answers are grounded in your board — then describe what you want in plain language.
Start a new project
Run flash inside a firmware folder and it opens straight into the TUI. Outside one, the launcher lets you open a recent project or scaffold a new one — pick an MCU/board, a framework, and a build system (PlatformIO or a native ESP-IDF / Zephyr / Arduino / Pico toolchain). Then analyse it:
/init # index & analyse the project/init --verbose # with counts, smells, coupling and violationsHardware interaction
Watch the serial monitor
The DEBUG navbar panel is a multi-tab serial monitor: open several ports at once, each with its own baud rate and buffer, split two side by side, and read log-level-coloured output (it understands ESP-IDF and STM32 formats). Toggle it from the navbar or watch it fill while the agent works.
Firmware development
Write drivers
Describe the part and target; Flash grounds the code in your board model and datasheets:
write an I2C driver for the temperature sensor on this boardwrite a UART driver for the GPS module at 9600 baudBuild & flash
Use the BUILD panel to install the toolchain, build, and flash — Flash resolves the right commands for your board — or just ask:
build the projectbuild and flash, then show serial outputWork with HALs & SDKs
Ask vendor-specific configuration questions grounded in the SDK version you target:
configure I2C on this STM32 using the HALset up a GPIO interrupt in ESP-IDFinitialize DMA for the ADCDebug with serial output
Analyse errors
Paste a crash dump or point Flash at the serial log, and let the debug agent work the fix loop against the board — plan → fix → build → flash → verify:
my SPI peripheral isn't responding — help me debugthe device panics on boot — find where it hangsTrace execution
Add targeted logging and confirm the path on hardware. Give the agent a success marker (a line that should appear or stop) and it verifies on-target instead of guessing.
Plan mode
For anything touching several files, switch modes so Flash explores and proposes before it edits. /mode cycles normal, plan, teach and research:
/mode plan # explore & propose first/mode normal # executeDocumentation & context
/init writes a FLASH.md at your project root that's injected into every session — the board summary, build commands, and conventions. Keep it tight; it's the highest-leverage context you have. Point Flash at specific files with @path when you want it to focus.
Bash mode
Prefix a line with ! to run a shell command and send its output to the chat — handy for git, toolchain, or quick checks:
! git status! pio device listReference files
Use @to browse and inline-expand a file's contents into your prompt, so the agent reasons over exactly what you mean:
explain @src/main.cwhy does @drivers/spi.c hang on init?Session management
Steer the session as you go:
/model # switch the active model/model fast <m> # pin a cheap auxiliary model/provider # switch LLM provider/config set … # tweak configuration for this sessionQuick reference
| Do this | Type |
|---|---|
| Analyse the project | /init |
| Architecture report | /architecture |
| Manage components | /peripherals |
| Explore before editing | /mode plan |
| Run a shell command | ! <cmd> |
| Reference a file | @path |
| Switch model / provider | /model · /provider |