
Embedded Systems Skill
- 169 installs
- 404kidwiz/claude-supercode-skills
Develop firmware, real-time systems, and hardware-software integration for IoT and embedded devices.
About
Build robust embedded systems and IoT applications. Teaches firmware architecture, real-time constraints, hardware-software integration patterns, device communication protocols, and strategies for resource-constrained environments.
- Firmware development
- Real-time systems
- Hardware integration
- Device drivers
- IoT protocols
Embedded Systems by the numbers
- 169 all-time installs (skills.sh)
- Ranked #2,374 of 4,492 Backend & APIs skills by installs in the Skillselion catalog
- Data as of Aug 11, 2026 (Skillselion catalog sync)
npx skills add https://github.com/404kidwiz/claude-supercode-skills --skill embedded-systemsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 169 |
|---|---|
| Repository | 404kidwiz/claude-supercode-skills ↗ |
What it does
Develop firmware, real-time systems, and hardware-software integration for IoT and embedded devices.
Files
Embedded Systems Engineer
Purpose
Provides embedded software development expertise specializing in RTOS, bare-metal firmware, and Embedded Linux. Focuses on safety-critical code, power optimization, and hardware abstraction for microcontrollers (STM32, ESP32) and embedded Linux systems.
When to Use
- Writing firmware for microcontrollers (STM32, NXP, ESP32)
- Configuring Real-Time Operating Systems (Zephyr, FreeRTOS)
- Developing drivers for sensors/peripherals (I2C, SPI, UART)
- Building Embedded Linux systems (Yocto, Buildroot)
- Implementing OTA (Over-The-Air) update mechanisms
- Analyzing crash dumps or debugging hardware faults (JTAG/SWD)
--- ---
2. Decision Framework
OS Selection
What is the hardware capability?
│
├─ **Microcontroller (MCU) - < 1MB RAM**
│ ├─ Hard Real-Time? → **Zephyr / FreeRTOS** (Preemptive scheduler)
│ ├─ Safety Critical? → **SafeRTOS / Rust (Bare Metal)**
│ └─ Simple Loop? → **Bare Metal (Superloop)**
│
└─ **Microprocessor (MPU) - > 64MB RAM**
├─ Complex UI / Networking? → **Embedded Linux (Yocto/Buildroot)**
└─ Hard Real-Time? → **RT-Linux (PREEMPT_RT)** or **Dual Core (Linux + MCU)**Language Choice (2026 Standards)
| Language | Use Case | Recommendation |
|---|---|---|
| C (C11/C17) | Legacy / HALs | Still dominant. Use strict static analysis (MISRA). |
| C++ (C++20) | Complex Logic | Use noexcept, no-rtti for embedded. Zero-cost abstractions. |
| Rust | New Projects | Highly Recommended. Memory safety without GC. embedded-hal. |
| MicroPython | Prototyping | Good for rapid testing, bad for production real-time. |
Update Strategy (OTA)
1. Dual Bank (A/B): Safe but requires 2x Flash. 2. Compressed Image: Saves Flash, requires RAM for decompression. 3. Delta Updates: Minimal bandwidth, complex patching logic.
Red Flags → Escalate to `security-engineer`:
- JTAG port left open in production units
- Secure Boot keys stored in plain text code
- Firmware updates not signed (integrity check only, no authenticity)
- Using
strcpyor unbounded buffers in C code
--- ---
Workflow 2: Zephyr RTOS Application
Goal: Read sensor via I2C and print to console.
Steps:
1. Device Tree (`app.overlay`)
&i2c1 {
status = "okay";
bme280@76 {
compatible = "bosch,bme280";
reg = <0x76>;
label = "BME280";
};
};2. Configuration (`prj.conf`)
CONFIG_I2C=y
CONFIG_SENSOR=y
CONFIG_CBPRINTF_FP_SUPPORT=y3. Code (`main.c`)
#include <zephyr/kernel.h>
#include <zephyr/device.h>
#include <zephyr/drivers/sensor.h>
void main(void) {
const struct device *dev = DEVICE_DT_GET_ANY(bosch_bme280);
while (1) {
sensor_sample_fetch(dev);
struct sensor_value temp;
sensor_channel_get(dev, SENSOR_CHAN_AMBIENT_TEMP, &temp);
printk("Temp: %d.%06d C\n", temp.val1, temp.val2);
k_sleep(K_SECONDS(1));
}
}--- ---
4. Patterns & Templates
Pattern 1: State Machine (Bare Metal)
Use case: Handling complex device logic without an OS.
typedef enum { STATE_IDLE, STATE_READING, STATE_SENDING, STATE_ERROR } SystemState;
void loop() {
static SystemState state = STATE_IDLE;
switch(state) {
case STATE_IDLE:
if (timerExpired()) state = STATE_READING;
break;
case STATE_READING:
if (readSensor()) state = STATE_SENDING;
else state = STATE_ERROR;
break;
case STATE_SENDING:
sendData();
state = STATE_IDLE;
break;
// ...
}
}Pattern 2: Interrupt Deferred Processing
Use case: Keeping ISRs (Interrupt Service Routines) short.
- ISR: Set a flag or push data to a ring buffer. Return immediately.
- Main Loop / Task: Check buffer/flag and process data (e.g., parse GPS NMEA string).
- Why? Long ISRs block other interrupts and crash the system.
Pattern 3: Watchdog Feeder
Use case: Auto-reset if the system freezes.
void watchdog_task(void *pvParameters) {
while(1) {
// Only kick if critical flags are set
if (check_system_health()) {
wdt_feed();
}
vTaskDelay(1000);
}
}--- ---
6. Integration Patterns
iot-engineer:
- Handoff: Embedded Eng writes the driver (I2C) → IoT Eng writes the MQTT logic.
- Collaboration: Power budget (how often to wake up radio).
- Tools: Power Profiler.
mobile-app-developer:
- Handoff: Embedded Eng implements BLE GATT Server → Mobile Dev implements Client.
- Collaboration: Defining the GATT Service/Characteristic UUIDs.
- Tools: nRF Connect.
cloud-architect:
- Handoff: Embedded Eng implements OTA agent → Cloud Architect implements Update Server (S3/Signed URL).
- Collaboration: Security token format (JWT/X.509).
- Tools: AWS IoT Jobs.
---