esp-matter-skill

Guides Matter firmware development on ESP32 chips using the esp-matter SDK.

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

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Developing Matter devices on ESP32 involves a complex data model (nodes, endpoints, clusters, attributes), strict initialization ordering, and many Kconfig options; mistakes produce devices that fail to boot, commission, or report attributes. This Skill provides scenario-driven recipes, real API signatures, configuration references, and pitfall fixes grounded in the actual esp-matter SDK source and examples. ## Core Features & Use Cases - Scenario Recipes: Step-by-step guides for building lights, sensors, switches, door locks, window coverings, HVAC appliances, bridges, on-device controllers, Thread Border Routers, ICD low-power devices, factory data provisioning, and Matter OTA. - API & Config Reference: Real function signatures for node/endpoint/cluster/attribute/command/event/OTA/controller APIs plus a full Kconfig option reference, all traced to SDK headers. - Pitfall Prevention: Documented fixes for the most common failures, such as creating endpoints after esp_matter::start(), missing nvs_flash_init(), and unsafe cross-task attribute updates. - Use Case: A developer asks how to build a color temperature light on ESP32-C6 over Thread; the Skill routes to the lighting recipe, supplies the canonical app_main pattern, the correct Wi-Fi/Thread Kconfig combination, and chip-tool commissioning commands. ## Quick Start Ask the AI to create a Matter on/off light firmware for ESP32-C6 using esp-matter, including the data model setup, build commands, and chip-tool pairing steps.

Frequently Asked Questions about esp-matter-skill

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

FAQPage Schema
How do I create a Matter device on ESP32 with esp-matter?

Initialize NVS first, then call node::create() with attribute and identification callbacks, create device-type endpoints such as on_off_light::create(), and finally call esp_matter::start(). Endpoints must be created before start() or they will not register with the Matter server.

How do I commission an ESP32 Matter device with chip-tool?

Start chip-tool in interactive mode and run pairing ble-wifi with a node ID, Wi-Fi credentials, passcode 20202021, and discriminator 3840 for test builds. Thread devices use pairing ble-thread with the operational dataset, and the first flash should use idf.py erase_flash.

Which ESP32 chips support Matter over Thread?

ESP32-H2 is Thread-only, while ESP32-C5, ESP32-C6, and ESP32-C61 support both Wi-Fi and Thread with one radio path selected per build via CONFIG_OPENTHREAD_ENABLED. ESP32, ESP32-S3, ESP32-C3, and ESP32-C2 support Wi-Fi only.

Why does my Matter device fail commissioning or pairing?

Common causes are disabled test setup params without a flashed factory partition, leftover NVS from a previous fabric, or mismatched Wi-Fi/Thread/mdns Kconfig on dual-radio chips. Erase flash, verify CONFIG_ENABLE_TEST_SETUP_PARAMS for development, or generate a factory partition with esp-matter-mfg-tool.

How do I update Matter attributes from a sensor task safely?

Matter is single-threaded, so schedule updates onto the Matter event loop with chip::DeviceLayer::SystemLayer().ScheduleLambda or guard calls with ScopedChipStackLock. Use attribute::update() rather than set_val() so changes trigger callbacks and subscription reporting.

Can ESP32 act as a Matter controller or commissioner?

Yes, a client-only firmware shape enables this via CONFIG_ESP_MATTER_CONTROLLER_ENABLE with the Matter server disabled. Initialize matter_controller_client with node ID, fabric ID, and port after esp_matter::start(), then use the matter esp controller shell commands for pairing and cluster control.