go-go-golems/esp32-s3-m5/esp-idf-sdkconfig-variant-builds
Claude Code and agent skill by go-go-golems/esp32-s3-m5
- community
Checking that the SKILL.md file is still in the repository.
Build ESP-IDF firmware variants with trustworthy sdkconfig overrides and prove that the intended Kconfig flags actually took effect. Use when creating headless/system/internal-pool style variants, overriding sdkconfig values per build, debugging suspicious config leakage from a shared project sdkconfig, or validating a build with generated sdkconfig files plus runtime status output.
Install
npx vskill@latest install go-go-golems/esp32-s3-m5/esp-idf-sdkconfig-variant-buildsSKILL.md
ESP-IDF sdkconfig variant builds
Use this skill when an ESP-IDF project needs multiple build variants and you must be sure a config flag really changed.
Core rule
If the project has a shared sdkconfig file, do not rely on -DSDKCONFIG_DEFAULTS=... alone for variant experiments.
Use all three:
- A dedicated build directory per variant.
- A dedicated build-local sdkconfig file via
-DSDKCONFIG="$BUILD_DIR/sdkconfig.variant". - A base + variant defaults chain via
-DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.<variant>".
This is the repo-proven pattern that fixed the allocator-variant leakage in 0082-papers3-wamr-allocator-control.
Bad pattern
This can silently inherit choices from the project's shared sdkconfig:
If a prior build or checked-in sdkconfig selected another choice item, this may not produce the variant you think it does.
Good pattern
The dedicated sdkconfig.variant isolates the build from the shared project sdkconfig.
Workflow
1. Define the Kconfig surface
- Put the variant choice in
main/Kconfig.projbuildor the appropriate component Kconfig. - Keep the choices explicit and mutually exclusive when possible.
- Add small defaults files such as:
sdkconfig.defaultssdkconfig.headlesssdkconfig.system_allocatorsdkconfig.internal_pool
Example choice pattern:
2. Build each variant in its own build directory
build-headlessbuild-system-allocatorbuild-internal-pool
Do not reuse one build directory for multiple variants unless you intentionally want that churn.
3. Force a build-local sdkconfig file
Always pass:
That is the critical guardrail against config leakage.
4. Chain defaults explicitly
Use:
Notes:
- Keep
sdkconfig.defaultsfirst. - Keep the variant file second so it overrides the base.
- Use semicolon-separated paths because CMake expects a list.
5. Reconfigure before build
Prefer:
Use reconfigure when:
- you changed any
sdkconfig.*file - you changed Kconfig definitions
- you are switching variants
- you do not fully trust the current build cache
6. Verify generated config, not just source files
After configure, inspect the generated files inside the build directory:
build-variant/config/sdkconfig.jsonbuild-variant/config/sdkconfig.cmakebuild-variant/config/sdkconfig.h
Use the bundled verifier:
What to look for:
sdkconfig.jsonshould show the boolean you expect.sdkconfig.cmakeshould show the selected config as"y"and the opposite choice empty.sdkconfig.hshould contain the active#define.
7. Add runtime proof
Generated config proof is necessary but not always sufficient. Add runtime logging or status output that surfaces the effective mode.
Examples:
allocator=system-allocatorallocator_backing=systemhost_api.display=disabledwamr.pool_buffer=0x0wamr.pool_size=0
If runtime status disagrees with the build-time files, trust the discrepancy and investigate before drawing conclusions.
Fast diagnosis checklist
When a variant result looks suspicious:
- Confirm the command used a unique
-Bbuild directory. - Confirm it also used
-DSDKCONFIG="$BUILD_DIR/sdkconfig.variant". - Inspect
build-variant/config/sdkconfig.json. - Inspect
build-variant/config/sdkconfig.cmake. - Inspect
build-variant/config/sdkconfig.h. - Check runtime status strings/logs.
- Only then interpret the experiment.
Repo anchors
Open these first in this repo:
0082-papers3-wamr-allocator-control/main/Kconfig.projbuild0082-papers3-wamr-allocator-control/sdkconfig.defaults0082-papers3-wamr-allocator-control/sdkconfig.system_allocator0082-papers3-wamr-allocator-control/sdkconfig.internal_poolttmp/2026/03/23/ESP-42-PAPERS3-WAMR-ALLOCATOR-CONTROL--papers3-minimal-wamr-allocator-control-firmware-to-isolate-instantiate-vs-psram-contamination/scripts/flash_and_probe_allocator_system.shttmp/2026/03/23/ESP-42-PAPERS3-WAMR-ALLOCATOR-CONTROL--papers3-minimal-wamr-allocator-control-firmware-to-isolate-instantiate-vs-psram-contamination/scripts/flash_and_probe_allocator_internal.sh
These scripts encode the corrected variant-build pattern.
Pseudocode
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/esp-idf-sdkconfig-variant-builds/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/go-go-golems/esp32-s3-m5/esp-idf-sdkconfig-variant-builds)