arduino-esp32-skill

Generates and debugs Arduino firmware sketches for ESP32-series SoCs using verified v3.x APIs.

28|3|Updated Jun 24, 2026
One-click install
npx skills add https://github.com/JasonYANG170/esp-dev-skill --skill arduino-esp32-skill-jasonyang170
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: arduino-esp32-skill
Source: https://github.com/JasonYANG170/esp-dev-skill/tree/main/repos/arduino-esp32
Command: npx skills add https://github.com/JasonYANG170/esp-dev-skill --skill arduino-esp32-skill-jasonyang170

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Writing Arduino firmware for ESP32 chips often fails due to outdated v2.x APIs, chip-specific peripheral differences, and subtle initialization-order bugs. This Skill grounds every generated sketch in the real arduino-esp32 repository documentation and examples, eliminating hallucinated APIs and common pitfalls. ## Core Features & Use Cases - Scenario Recipes: Step-by-step guides with complete call chains for GPIO/interrupts, Serial/UART, I2C, SPI, LEDC/PWM, ADC, timers, Wi-Fi STA/AP, BLE (GATT/beacons), ESP-NOW, Zigbee, Matter, WebServer, OTA, Preferences/NVS, FreeRTOS tasks, and deep sleep. - Verified API Reference: Function signatures, config macros, partition tables, and chip/peripheral support matrices taken directly from docs/en/api/*.rst and library headers. - Pitfall Prevention: 12+ documented WRONG/CORRECT patterns covering v3.x LEDC migration, NetworkServer.accept(), setHostname ordering, callback thread safety, and NVS key limits. - Use Case: Ask for a BLE GATT server on an ESP32-C3 and receive a complete sketch with correct NimBLE stack handling, CCCD descriptors, and advertising setup copied from the repository's Server example. ## Quick Start Ask the AI to create an ESP32-S3 sketch that connects to Wi-Fi, reads an ADC sensor, and publishes the value over a WebServer endpoint.

Frequently Asked Questions about arduino-esp32-skill

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I use LEDC PWM on ESP32 with Arduino core 3.x?

Use ledcAttach(pin, freq, resolution) followed by ledcWrite(pin, duty). The old v2.x functions ledcSetup and ledcAttachPin were removed in 3.x, and the Peripheral Manager now auto-binds channels to pins.

How do I create a BLE GATT server on ESP32-C3?

Include BLEDevice.h, call BLEDevice::init(), create a server and service with createService(), add characteristics with PROPERTY_READ/WRITE/NOTIFY flags, then start advertising. ESP32-C3 uses the NimBLE stack, so permissions are set via characteristic properties rather than setAccessPermissions.

Which ESP32 chips support Zigbee in Arduino?

Only ESP32-C6, C5, and H2 have native 802.15.4 radios for Zigbee. Other SoCs require an external RCP module via ZigbeeGateway with setRadioConfig. The Tools menu mode (ZCZR vs ED) must match the device role or compilation fails.

Why does my ESP32 sketch trigger a task watchdog reset?

The loop() function runs in a FreeRTOS loopTask with an 8192-byte stack and must not block for long periods. Move blocking work into a separate task with xTaskCreate, or use non-blocking polling with short delays to yield CPU time.

Can I use this for pure ESP-IDF C projects or ESP8266?

No. This Skill covers only the Arduino API layer (setup/loop) over ESP-IDF for ESP32-series chips. Pure ESP-IDF C projects need an ESP-IDF skill, and ESP8266 requires the ESP8266 RTOS SDK skill instead.

Why does WiFi.setHostname have no effect on ESP32?

setHostname must be called before WiFi.mode() and WiFi.begin(). If Wi-Fi is already running, call WiFi.mode(WIFI_MODE_NULL) first, then setHostname, then restart the connection for the change to take effect.