# Implementing Firmware

> Implements ESP-IDF or PlatformIO firmware with mandatory requirement docstring tags and MISRA-C linting. Use when writing embedded C code, implementing firmware features, or adding requirement-traced functions.

- Skill: `qte77/implementing-firmware` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add qte77/implementing-firmware`
- Raw SKILL.md: https://api.skillmd.com/api/skills/qte77/implementing-firmware/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: qte77 (https://skillmd.com/u/qte77)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/qte77/implementing-firmware

---


# Firmware Implementation

**Target**: $ARGUMENTS

Implement firmware code with mandatory requirement traceability tags, following ESP-IDF or PlatformIO patterns.

## References (MUST READ)

Read these before proceeding:

- `references/esp-idf-patterns.md` — Component structure, FreeRTOS, sdkconfig, idf.py
- `references/platformio-patterns.md` — platformio.ini, pio commands, library management
- `references/c-safety-rules.md` — MISRA-C cppcheck flags, clang-tidy, tagging rules

## Workflow

1. **Detect framework:**
   - `CMakeLists.txt` + `sdkconfig*` → ESP-IDF
   - `platformio.ini` → PlatformIO
   - Neither → ask user which framework to use
2. **Read existing requirements** — Check for `docs/requirements.md` to understand which SW-REQs need implementing
3. **Implement code** with mandatory docstrings on every new function:

   ```c
   /**
    * @brief <What this function does>
    *
    * @requirement SW-REQ-NNN
    * @parent      PRD-REQ-NNN
    * @test        TEST-NNN
    *
    * @param ...
    * @return ...
    */
   ```

4. **Create test stubs** in `test/` with matching `@test TEST-NNN` references
5. **Lint with cppcheck:**

   ```bash
   cppcheck --addon=misra.py --std=c11 --enable=all --xml src/ 2> misra-report.xml
   ```

6. **Build:**
   - ESP-IDF: `idf.py build`
   - PlatformIO: `pio run`
7. **Report** — Count tagged functions, list any warnings

## Rules

- Every new function **must** have `@requirement`, `@parent`, and `@test` tags
- Follow existing code style (indentation, naming conventions) in the project
- Use ESP-IDF error handling patterns (`ESP_ERROR_CHECK`, `esp_err_t` returns)
- Do not suppress MISRA warnings without documenting the deviation
- Create header declarations alongside implementations
- Test stubs must compile even if test logic is not yet implemented

