一键导入
esp-idf-setup
Set up ESP-IDF development environment, create new projects, and verify configuration
菜单
Set up ESP-IDF development environment, create new projects, and verify configuration
Standardize credential handling for an ESP32 project (credentials.h.example, .gitignore, pre-commit protection)
Generate a CLAUDE.md for a project with build commands, hardware constraints, architecture, and development tasks
Audit project completeness against the monorepo standard checklist (docs, config, registration)
Generate a standardized README.md for an ESP32 project by analyzing source code, justfile, and hardware configuration
Register a project in the monorepo — justfile mod, CI matrix, standard file inventory
Audit sdkconfig.defaults by inferring needed settings from source code analysis
| name | esp-idf-setup |
| description | Set up ESP-IDF development environment, create new projects, and verify configuration |
| argument-hint | [setup|new <name> <platform>|check] |
| user-invocable | true |
| allowed-tools | Bash(docker:*), Bash(just:*), Bash(mkdir:*), Bash(ls:*), Write, Edit, Read, Glob |
Apply this skill when the user:
setup)new <name> <platform>)check)Based on $ARGUMENTS:
setup → Environment setupnew <name> <platform> → Create new projectcheck → Verify environmentAll ESP-IDF builds run inside Docker containers. No local ESP-IDF installation needed.
# Full environment: Docker images + dev tools
just setup-all
# Or individually:
just docker-build # Build ESP-IDF container image
just install-dev-tools # Install host-side linters/formatters
These run natively (not in container):
esptool — for flashing firmware (pip install esptool)clang-format — C/C++ formatting (brew install clang-format)cppcheck — C/C++ linting (brew install cppcheck)ruff — Python linting (pip install ruff)pre-commit — git hooks (pip install pre-commit)just docker-dev # Root-level interactive shell
just webserver::shell # Project-specific shell
Run the environment check:
just check-environment
Also check:
Available serial ports:
ls -la /dev/cu.usbserial-* /dev/ttyUSB* 2>/dev/null || echo "No USB serial devices found"
Docker availability:
docker --version
Project structure:
just --list
Provide a summary: Docker status, serial ports, projects found, missing dependencies.
If issues found:
just install-dev-tools"esp32 — ESP-IDF based ESP32 projectesp32-cam — ESP32-CAM specific projectarduino — Arduino platform projectstm32 — STM32 platform projectpackages/<domain>/$name/
├── justfile
├── CMakeLists.txt
├── sdkconfig.defaults
├── version.txt
├── main/
│ ├── CMakeLists.txt
│ └── main.c
└── README.md
# Project Name
# Run `just --list` to see available recipes
set positional-arguments
import '../../../tools/esp32.just'
project_dir := "packages/<domain>/project-name"
port := env("PORT", _detected_serial) # or _detected_s3 for ESP32-S3
target := "esp32" # or "esp32s3"
default:
@just --list
[group: "build"]
build:
#!/usr/bin/env bash
set -euo pipefail
echo "Building project-name..."
{{container_cmd}} compose -f {{compose_file}} run --rm \
-w /workspace/{{project_dir}} \
esp-idf \
bash -c "idf.py set-target {{target}} && idf.py build"
cmake_minimum_required(VERSION 3.16)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(project-name)
idf_component_register(
SRCS "main.c"
INCLUDE_DIRS "."
REQUIRES driver nvs_flash esp_wifi
)
CONFIG_IDF_TARGET="esp32"
CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
CONFIG_PARTITION_TABLE_SINGLE_APP=y
CONFIG_LOG_DEFAULT_LEVEL_INFO=y
packages/arduino-projects/$name/
├── src/
│ └── main.cpp
├── include/
├── lib/
├── platformio.ini
└── README.md
packages/stm32-projects/$name/
├── src/
│ └── main.c
├── include/
├── Makefile
└── README.md
packages/<domain>/<name>/import '../../../tools/esp32.just'mod name 'packages/<domain>/<name>'just name::buildCreate idf_component.yml in component directory:
dependencies:
espressif/led_strip: "^2.0.0"
Place in project's components/ directory.
just webserver::menuconfig
just xbox::menuconfig
mod/wiring-doc