go-go-golems/esp32-s3-m5/esp-idf-embedded-preact-zustand-webui
Claude Code and agent skill by go-go-golems/esp32-s3-m5
- community
- ext:[{"type":"hook","description":"Pre/post lifecycle hooks"}]
Checking that the SKILL.md file is still in the repository.
Find, reuse, and implement the repo’s proven pattern for a device-hosted web UI bundled with Vite (Preact + Zustand) and embedded into an ESP-IDF firmware image, then served over esp_http_server (optionally with WebSocket). Use when you need the existing playbook + working firmware example, want the exact Vite/CMake knobs for deterministic asset names, or need to locate the key docs/files (0017 tutorial + 0013 ticket) quickly.
Install
npx vskill@latest install go-go-golems/esp32-s3-m5/esp-idf-embedded-preact-zustand-webuiSemi-extensibleMentions customization, but needs skill-specific knowledge. Read the extensible skills standard
SKILL.md
ESP-IDF embedded Preact+Zustand Web UI (repo pattern)
Quick anchors (open these first)
- Open
docs/playbook-embedded-preact-zustand-webui.mdfor the JS/Vite→firmware embedding playbook. - Use
0017-atoms3r-web-ui/as the worked firmware example: 0017-atoms3r-web-ui/web/vite.config.ts(deterministic output, single JS, outputs intomain/assets/)0017-atoms3r-web-ui/main/CMakeLists.txt(EMBED_TXTFILESforindex.html,assets/app.js,assets/app.css)0017-atoms3r-web-ui/main/http_server.cpp(routes for/,/assets/app.js,/assets/app.css,/api/*,/ws)0017-atoms3r-web-ui/web/src/store/ws.ts(minimal Zustand WebSocket store pattern)- Use
0045-xiao-esp32c6-preact-web/as the ESP32‑C6 worked example (wifi console + embedded UI + sourcemap): 0045-xiao-esp32c6-preact-web/main/http_server.c(NUL-trimmed embedded assets,/assets/app.js.map)0045-xiao-esp32c6-preact-web/web/vite.config.ts(build.sourcemap: true)0045-xiao-esp32c6-preact-web/build.sh(post-build gzip for sourcemap)
Fast search workflow (docmgr + rg)
1) Use docmgr to find the authored docs and ticket trail:
docmgr doc search --query "preact"docmgr doc search --query "zustand"docmgr doc search --query "deterministic filenames"
2) Use ripgrep to jump to implementation:
rg -n -S "outDir: '../main/assets'|inlineDynamicImports|entryFileNames: 'assets/app.js'|EMBED_TXTFILES|/assets/app.js|/ws" 0017-atoms3r-web-ui
3) If you need end-to-end bring-up steps, open:
ttmp/2025/12/26/0013-ATOMS3R-WEBSERVER--atoms3r-web-server-graphics-upload-and-websocket-terminal/playbooks/01-verification-playbook-atoms3r-web-ui.md
Reuse checklist (keep firmware-friendly)
- Emit deterministic asset names (
/assets/app.js,/assets/app.css) and avoid extra files (publicDir: false,emptyOutDir: true). - Keep the initial UI to “1 JS + 1 CSS” (disable chunking via
inlineDynamicImports: true). - Embed assets with
EMBED_TXTFILES(orEMBED_FILESfor binary/gz) and ensure basenames won’t collide.
Common pitfalls (fix fast)
- `Uncaught SyntaxError: illegal character U+0000`:
EMBED_TXTFILEStypically appends a trailing0x00terminator. If you serveend - startbytes verbatim for JS/CSS/HTML, the browser may reject the payload. Fix by trimming a single trailing NUL beforehttpd_resp_send. - Garbled UTF-8 in UI text (e.g.
loading…): explicitly includecharset=utf-8inContent-Typefortext/html,text/css, andapplication/javascript. - Sourcemaps can bloat flash: prefer gzipping the map and embedding via
EMBED_FILES, then serve/assets/app.js.mapwithContent-Encoding: gzip(browser devtools will still decode it).
Security
- Security scanPassed, 95 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-embedded-preact-zustand-webui/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Extension points
hookPre/post lifecycle hooks
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-embedded-preact-zustand-webui)