Skip to content

wedsamuel1230/embedded-engineering-skills

v2.0.0MIT

Embedded workflows for Arduino, ESP-IDF, Zephyr, STM32Cube, Pico SDK and MicroPython, with target-specific debugging and explicit evidence.

arduino-cli-skill

Use when users need Arduino CLI commands for board discovery, library installation, compilation, upload, or serial-port troubleshooting on Windows, macOS, or Linux. Use it as the CLI branch of a broader workflow when the project also involves Arduino IDE, PlatformIO, vendor tools, hardware, power, or deployment.

arduino-code-generator

Generate Arduino and embedded C++ snippets for sensors, actuators, buses, state machines, timing, data logging, and hardware abstraction. Use when a user requests implementation code and provide the exact board, framework, toolchain, pins, voltage, memory, and library versions first. Bundled templates target UNO, ESP32, and RP2040; document unsupported board or vendor-framework behavior instead of guessing.

arduino-project-builder

Build complete Arduino and embedded projects across Arduino IDE, Arduino CLI, PlatformIO, and vendor-specific toolchains. Use when users request an application combining firmware, sensors, actuators, networking, power, or deployment rather than a code snippet. The bundled scaffold targets UNO, ESP32, and Raspberry Pi Pico; use the board profile and document limitations for other targets.

arduino-serial-monitor

Read and analyze Arduino or embedded serial output for structured runtime debugging across Arduino IDE, Arduino CLI, PlatformIO, and vendor-specific monitor tools. Use when boot output, sensor data, resets, communication failures, timing symptoms, or field behavior need evidence rather than compile-only reasoning.

arduino-workflow-router

Route Arduino and embedded-system requests across Arduino IDE, Arduino CLI, PlatformIO, and vendor-specific tools. Use when a request combines firmware, board constraints, electronics, power, networking, calibration, enclosure, upload, debugging, OTA, or maintenance, or when the exact board or toolchain is not yet clear.

battery-selector

Helps choose the right battery type and charging solution for Arduino/ESP32/RP2040 projects. Use when user asks about battery options, charging circuits, power source selection, or says "what battery should I use". Covers chemistry selection, safety, voltage regulation, and charging circuits.

board-selection

Use when choosing or replacing an Arduino Uno, Uno R4, ESP32, ESP32-S3, Raspberry Pi Pico, Pico W, or another embedded board from project requirements. Compare exact board constraints, toolchains, libraries, power, memory, peripherals, recovery, and lifecycle fit before implementation.

board-support

Resolve a named Arduino, ESP32, RP2040, or other embedded board to a source-backed exact profile, including pin/peripheral capability, voltage/current, buses, framework/core/toolchain, and variant or revision risks. Use this whenever a user asks for a board reference, pinout, GPIO restrictions, board capability, board profile, or safe handoff before pin assignment. Do not use it to choose a board from requirements; use board-selection for that decision.

bom-generator

Generates Bill of Materials (BOM) from project descriptions for Arduino/ESP32/RP2040 projects. Use when user needs component lists, parts shopping lists, cost estimates, or asks "what parts do I need". Outputs formatted BOMs with part numbers, quantities, suppliers (DigiKey, Mouser, Amazon, AliExpress), and compatibility warnings. Run scripts/generate_bom.py for xlsx/csv export.

boot-flash-recovery

Diagnose embedded boot, flash layout, image validation and reset loops with a non-destructive recovery path. Use when requests involve bootloader/application offsets, vector tables, partitions, bad firmware or a device that no longer starts.

bus-debugging

Diagnose SPI, UART, CAN and I2C protocol failures using transaction evidence and electrical constraints. Use when requests involve corrupt bytes, wrong SPI mode, framing, bus-off, chip-select timing or DMA transfers; use I2C bring-up for basic discovery.

circuit-debugger

Systematic hardware debugging guide for Arduino/ESP32/RP2040 circuits. Use when user reports: circuit not working, components getting hot, no power, intermittent failures, unexpected behavior, sensor not responding, LED not lighting, motor not spinning. Guides through power checks, continuity testing, signal tracing, and component isolation using multimeter techniques.

code-review-facilitator

Automated code review for Arduino/ESP32/RP2040 projects focusing on best practices, memory safety, and common pitfalls. Use when user wants code feedback, says "review my code", needs help improving code quality, or before finalizing a project. Generates actionable checklists and specific improvement suggestions.

datasheet-interpreter

Extracts key specifications from component datasheet PDFs for maker projects. Use when user shares a datasheet PDF URL, asks about component specs, needs pin assignments, I2C addresses, timing requirements, or register maps. Downloads and parses PDF to extract essentials. Complements datasheet-parser for quick lookups.

embedded-build-workflow

Inspect, reproduce or migrate embedded build workflows with PlatformIO, native ESP-IDF, Arduino CLI, Zephyr/west, Pico SDK, STM32Cube or MicroPython. Use when a request concerns build environments, mixed frameworks, dependency pins, CI, SDK migration or flash/PSRAM configuration. Do not use for ordinary application logic, GPIO lookup or flashing an unknown device.

embedded-project-loop

Use first when Arduino or embedded hardware work spans sessions, parts delivery, wiring, soldering, flashing, measurements, field tests, recovery, or a durable next-todo is needed. Maintain explicit evidence and concrete physical-world user gates instead of assuming completion.

enclosure-designer

Use when users need a 3D-printable enclosure for an Arduino, ESP32, or RP2040 project and need help with measurements, cutouts, print settings, or environmental protection.

error-message-explainer

Explain Arduino and embedded compiler, upload, boot, power, and runtime errors in plain English. Use when a user shares an error or failure from Arduino IDE, Arduino CLI, PlatformIO, or a vendor-specific tool. Separate build, upload, hardware, and system evidence and give a board-specific recovery path without assuming UNO, ESP32, or RP2040 behavior.

fault-forensics

Analyze embedded panic logs, Cortex-M fault registers, core dumps and addresses against the matching firmware ELF. Use when requests involve HardFault, BusFault, UsageFault, reset crashes or corrupted backtraces; no unsupported CPU decoding.

field-power-and-connectivity-triager

Use when maker projects work on USB bench power but fail on their intended supply path, especially for WiFi or sensor-heavy boards such as ESP32, including brownout, current-peak, regulator, and wiring-path diagnosis.

freertos-patterns

Use when users need ESP32 FreeRTOS or RP2040 multicore patterns for task creation, queues, synchronization, memory checks, task notifications, or cross-core coordination.

hardware-tdd

Use when planning tests for Arduino, ESP32, ESP32-S3, Pico, or Pico W firmware; deciding what can run off-target; using Wokwi or simulation; writing host fakes; or accepting a physical hardware feature without confusing compile proof with system proof.

i2c-bringup-diagnostician

Use when users need to diagnose I2C bring-up failures on Arduino or ESP32-class boards, including no devices found, wrong readings, address conflicts, scanner-detects-but-library-fails cases, pull-up problems, or board-family-specific bus quirks.

library-selection

Use when selecting, replacing, pinning, or auditing an Arduino, ESP32, RP2040, C++, or vendor-framework library. Compare architecture support, framework and version compatibility, API behavior, footprint, maintenance, provenance, security, and hardware assumptions before installation.

memory-budgeting

Use when Arduino or embedded projects hit SRAM, flash, heap, stack, partition, JSON-buffer, or performance limits, or when reviewing String use, F() placement, OTA slots, FreeRTOS stacks, or memory margin.

memory-timing-debugging

Diagnose runtime heap/stack failures, deadline misses, deadlocks and queue overload in embedded firmware. Use when requests involve leaks, jitter, watchdog starvation, priority inversion or task stalls; not initial scheduling architecture alone.

mermaid-diagram-generator

Use when users need Mermaid diagrams for Arduino code structure, state machines, timing diagrams, task architecture, or workflow documentation.

micropython-development

Develop and debug MicroPython firmware and Python applications using mpremote, REPL, board-specific ports and frozen modules. Use when requests involve MicroPython boot failures, heap limits, native firmware builds or device file transfer; not CPython.

non-blocking-patterns

Use when Arduino or embedded C++ code uses delay(), needs button debouncing, periodic work, cooperative scheduling, watchdog-safe timing, state machines, or latency/jitter control under sensor, network, or motor load.

ota-deployment-guardian

Use when users need safe over-the-air update workflows for ESP32-class boards or Arduino Uno R4 WiFi, including OTA sketch requirements, network port discovery failures, remote recovery planning, and rollout safety checks.

pico-sdk-development

Build and debug native Raspberry Pi Pico SDK applications with CMake, RP2040/RP2350 targets, PIO and SWD. Use when requests concern Pico SDK configuration, linker output, multicore/PIO or native SDK migration; distinguish Arduino-Pico.

pin-assignment

Use when assigning Arduino, ESP32, ESP32-S3, Pico, or Pico W pins; creating a GPIO map; assigning buttons, LEDs, sensors, buses, or actuators; migrating a pin map; or generating constexpr int declarations. Check the exact board and physical pin constraints before emitting the user's ordered raw declaration format.

power-budget-calculator

Calculates total power consumption and battery life for Arduino/ESP32/RP2040 projects. Use when user asks about battery life, power requirements, current draw, or needs to estimate runtime. Includes sleep mode analysis, power optimization tips, and battery sizing recommendations. Run scripts/calculate_power.py for accurate calculations.

probe-debugging

Plan and conduct target-specific GDB, SWD/JTAG and OpenOCD or vendor-probe debugging. Use when requests involve attaching a probe, breakpoints, reset/halt, inaccessible targets or live register inspection; not flashing by default.

readme-generator

Auto-generates professional README.md files for Arduino/ESP32/RP2040 projects following open-source best practices. Use when user wants to document their project for GitHub, needs help writing a README, or says "make my project shareable". Follows awesome-readme standards with sections for Overview, Hardware, Software, Setup, Usage, Troubleshooting, and Contributing.

realtime-control-design

Design task ownership, control deadlines and overload behavior for an embedded controller running alongside sensors, networking or flash writes. Use when users ask for action timing, control-loop jitter, watchdog headroom, multicore isolation or keeping a robot responsive. Do not use for a simple single-loop timer or merely to maximize CPU usage.

sensor-calibration-workbench

Use when makers need calibration workflows for sensors such as CO2 sensors, load cells, magnetometers, color sensors, or analog sensors, including warm-up behavior, reference measurements, coefficient storage, and drift checks.

sensor-signal-filtering

Use when the main problem is a noisy or aliased analog/ADC signal and the task needs signal-chain diagnosis or filter-path selection across sampling, anti-aliasing, RC/input conditioning, ADC source impedance/settling, latency, startup, saturation, or raw/fault observability. Apply it when software filtering and hardware signal conditioning interact, even when the request only says that an analog sensor is unstable. Hand reusable Arduino snippets to arduino-code-generator, board facts to board-support, voltage/pin/rail safety to wiring-safety-check or circuit-debugger, and calibration after detection to sensor-calibration-workbench.

stm32-development

Build and diagnose STM32Cube HAL/LL projects using their existing CMake, Make, CubeIDE or PlatformIO toolchain. Use when requests involve STM32 clocks, startup/linker files, generated code, SWD or HAL peripheral setup.

usb-debugging

Diagnose embedded USB enumeration, descriptors, CDC/REPL ports and intermittent disconnects. Use when requests involve a missing USB device, wrong interface, native USB versus serial bridge, endpoint failures or conflicting monitors.

wireless-telemetry

Design and diagnose embedded telemetry, packet freshness and wireless coexistence using UDP, ESP-NOW or a serial bridge. Use when users need AP+STA operation, low-latency data, sequence/boot identifiers, packet-loss analysis or bench-control leases. Do not use for generic web networking, ordinary serial logs or to promise RF latency without measurements.

wiring-safety-check

Use when wiring an Arduino, ESP32, ESP32-S3, Pico, or Pico W to sensors, LEDs, motors, relays, buses, or external supplies, especially when 5 V and 3.3 V logic, current limits, pull-ups, level shifting, inductive loads, or safe defaults matter.

zephyr-development

Build and debug Zephyr applications with west, devicetree, Kconfig and versioned workspaces. Use when a request concerns Zephyr board qualifiers, overlays, build failures, runners or RTOS diagnostics.