What problem does it solve? Developing BLE firmware with the Apache NimBLE stack requires precise API usage, correct initialization ordering, and awareness of many subtle pitfalls (unsynced host operations, missing conn_handle, mbuf misuse). This Skill grounds AI-generated code in the real esp-nimble repository documentation, headers, and examples so the output compiles and behaves correctly. ## Core Features & Use Cases - Scenario Recipes: 13 step-by-step recipes covering host initialization, address configuration, peripheral advertising, beacons, notifications, scanning, central connections, custom GATT services, SMP pairing, extended/periodic advertising, PHY updates, connection parameter updates, and Bluetooth Mesh nodes. - Real API Reference: Verified function signatures, constants, and structs from nimble/host/include/host/ headers, grouped by ble_gap, ble_gatt, ble_sm, and FreeRTOS NPL port. - Pitfall Database: 15 documented mistakes with wrong-vs-correct code pairs, plus ESP-IDF Kconfig and Mynewt syscfg configuration references. - Use Case: Ask the AI to build a BLE heart-rate peripheral on ESP32-C3; it follows the host_init, gatt_server, and notify recipes to produce code with correct sync callbacks, service table registration, and mbuf-based notifications. ## Quick Start Ask the AI to create a NimBLE BLE peripheral with a custom GATT service for an ESP32-C3 project.