ESP-Claw is an AI agent framework that runs on Espressif IoT chips and lets people define device behavior through conversation. It handles local sensing, decision-making, and execution for connected devices, with support for event-driven actions, structured memory, and MCP communication.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/espressif/esp-claw/cap_im_platformnpx skills add espressif/esp-claw --skill cap_im_platformgit clone --depth 1 https://github.com/espressif/esp-clawWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/espressif/esp-claw/cap_im_platform)<a href="https://agentmods.dev/skills/espressif/esp-claw/cap_im_platform"><img src="https://agentmods.dev/badge/skills/espressif/esp-claw/cap_im_platform.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00020 | $0.01131 |
| Opus 5 | $0.00010 | $0.00566 |
| Sonnet 5 | $0.00004 | $0.00226 |
| Haiku 4.5 | $0.00002 | $0.00113 |
Grade A, and why
cap_im_platform scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 101 lines — stays where its author put it; the contents beside it link to each section on GitHub.
IM Messaging
Use this skill only when the user asks to send an extra text message, image, or local file through an IM channel. Normal agent replies are sent automatically and do not need IM send tools.
Channel Selection
Prefer the current request source_cap. Do not send through another IM channel unless the user explicitly asks. Do not invent a target chat when the current context or user request does not provide one.
| Channel | Text | Image | File | Chat target |
|---|---|---|---|---|
Feishu cap_im_feishu |
feishu_send_message |
feishu_send_image |
feishu_send_file |
May omit chat_id for current inbound replies when context has it. Explicit targets may be Feishu chat_id values, or user open_id values beginning with ou_. |
QQ cap_im_qq |
qq_send_message |
qq_send_image |
qq_send_file |
May omit chat_id for current inbound replies when context has it. Explicit targets are normalized as c2c:<openid> or group:<group_openid>. |
Telegram cap_im_tg |
tg_send_message |
tg_send_image |
tg_send_file |
May omit chat_id for current inbound replies when context has it. Explicit targets are numeric strings such as 123456789 or -1001234567890. |
WeChat cap_im_wechat |
wechat_send_message |
wechat_send_image |
Not supported | Always requires explicit chat_id; the callable implementation does not fall back to runtime context. Preserve concrete room or contact ids exactly. |
Chat Targets
For Feishu, QQ, and Telegram, pass explicit chat_id when starting a new outbound send or when the target would otherwise be ambiguous. For WeChat, always pass chat_id.
Rules
- Call the direct channel capability: text tools for text, image tools for image files, and file tools for local non-image files.
- For WeChat, always pass
chat_idand use onlywechat_send_messageorwechat_send_image; generic non-image file send is not available. - Use image tools for
.jpg,.jpeg,.png,.gif, or.webp. Use file tools for non-image files such as.txt,.json,.log,.csv,.pdf, or archives. pathmust be a real local device path. If unknown, inspect storage first with file tools such aslist_dir.- Do not pass remote URLs directly to IM send tools. Download or locate the file on local storage first.
- In this demo app, inbound IM attachments are typically saved under
<storage_root>/inbox. captionis optional for image and file sends. For Feishu media sends, caption is delivered as a follow-up text message.- Feishu text is sent through a Markdown-capable interactive card when possible, with fallback to plain text if card construction or delivery fails.
- If the send tool returns an error, report the error directly. Do not retry or switch channels unless the user asks.
- If a capability returns success text or JSON such as
{"ok":true}, tell the user the message or file has already been sent; do not phrase it as pending. - QQ generic file delivery may still depend on QQ platform-side support. If
qq_send_filefails, report the failure clearly and only consider image send when the file is actually an image.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 101 lines · 20 tokens per session scan A 35201e9b6dea
cap_im_platform is a skill published in the GitHub repository espressif/esp-claw (2,080 stars, last pushed 2d ago), licensed Apache-2.0. It adds 20 tokens to every session and 1,131 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
auto-perf-optimize
Run agent-driven VS Code performance or memory investigations. Use when asked to launch Code OSS, automate a VS Code scenario, run the Chat memory smoke runner, capture renderer heap snapshots, take workflow screenshots, compare run summaries, or drive a repeatable scenario before heap-snapshot analysis.
chat-perf
Run chat perf benchmarks and memory leak checks against the local dev build or any published VS Code version. Use when investigating chat rendering regressions, validating perf-sensitive changes to chat UI, or checking for memory leaks in the chat response pipeline.
chat-pet-sprite-creation
Use when creating or changing VS Code chat pet sprite art, sprite sheets, state animations, eye treatments, Stable/Insiders variants, or pet transitions under src/vs/workbench/contrib/chat/browser/widget/media/chatPet.
cpu-profile-analysis
Analyze V8/Chrome CPU profiles (.cpuprofile) and DevTools trace files (Trace-.json). Use when: profiling performance, investigating slow functions, comparing code paths, finding bottlenecks, analyzing timeToRequest, understanding call trees from sampling profiler data, analyzing layout/paint/rendering, investigating…