ruview-hardware-setup

ruview-hardware-setup is a skill for Claude Code from ruvnet/RuView. It costs 56 tokens per session (2,152 once invoked), scanned C, original, MIT.

A guide for bringing RuView sensing hardware online with ESP32 boards. It covers building and flashing firmware, connecting the device to Wi-Fi, and checking its serial output.

In plain words
What is it for?
Use it to prepare ESP32-S3 or ESP32-C6 devices, install firmware, provision network settings, and monitor the device while troubleshooting.
Why use it?
It turns an unconfigured board into a working sensing node and helps diagnose devices that do not send data. It also identifies supported boards and important power risks for small clones.

Skill for Claude Code

Written for Claude Code: allowed-tools in frontmatter.

Needs its repository: it runs a file that does not travel with it, so clone the repository first. The line is python firmware/esp32-csi-node/provision.py --port COM8 \.

Part of the ruview plugin — 10 skills, 7 commands, 3 agents shipped together

Good fit Use it to prepare ESP32-S3 or ESP32-C6 devices, install firmware, provision network settings, and monitor the device while troubleshooting.

Compare 6 skills from other repositories ↓
About the project

RuView is a WiFi sensing platform that uses disturbances in radio signals, captured by low-cost ESP32 sensors, to detect presence, movement, breathing, and heart rate without cameras or wearables. It is intended for spatial monitoring and smart-home integrations. The catalogue add-ons support workflows for operating and integrating RuView.

ruvnet/RuView · 92,661 stars · on GitHub · cognitum.one

Install

Getting it into your agent

It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.

Clone the repo
git clone --depth 1 https://github.com/ruvnet/RuView
agentmods
npx agentmods add skills/ruvnet/ruview/ruview-hardware-setup

Made for: Claude Code.

Or install ruview, the plugin that ships this one along with the rest of its 10 skills, 7 commands, 3 agents.

Wrote 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.

agentmods badge for ruview-hardware-setup

README.md
[![agentmods](https://agentmods.dev/badge/skills/ruvnet/ruview/ruview-hardware-setup.svg)](https://agentmods.dev/skills/ruvnet/ruview/ruview-hardware-setup)
Your own site
<a href="https://agentmods.dev/skills/ruvnet/ruview/ruview-hardware-setup"><img src="https://agentmods.dev/badge/skills/ruvnet/ruview/ruview-hardware-setup.svg" alt="Measured on agentmods" height="20"></a>
Per session 56 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,152 The whole file, excluding the scripts and references it only reads on demand.
Security scan C 2 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector warn 7 Sept 2026
SkillSpector: 1 finding, up to high

These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →

  • high Data Exfiltration · line 30
    Code enumerates, copies, or searches environment variables for secrets. Bulk environment access can collect credentials unrelated to the skill's stated purpose.
    Fix: Read only explicitly required environment variables by name. Avoid enumerating or copying the full environment, and never log or transmit credentials to untrusted destinations.
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00056 $0.02152
Opus 5 $0.00028 $0.01076
Sonnet 5 $0.00011 $0.00430
Haiku 4.5 $0.00006 $0.00215

Measured 3d ago against content hash 06524b26cf1b, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-07, from the pricing page.

Security

Grade C, and why

ruview-hardware-setup scanned grade C with 2 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 3d 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.

Harvests environment variableshighData exfiltration

Enumerating or grepping the environment for keys collects credentials unrelated to what the mod says it does.

env = os.environ.copy()

Runs shell commandslowCapability

Expected in a hook, worth knowing in a rule or an instructions file.

r = subprocess.run([python, idf_py, 'build'], # flash: [python, idf_py, '-p', 'COM8', 'flash']
plugins/ruview/skills/ruview-hardware-setup/SKILL.md · 130 lines

How it starts

The opening of the file, as written. The whole thing — 130 lines — stays where its author put it; the contents beside it link to each section on GitHub.

RuView Hardware Setup

Bring a RuView sensing node online: build firmware → flash → provision WiFi → confirm CSI stream.

Supported devices

Device Flash Chip Role
ESP32-S3 (8MB) 8 MB Xtensa dual-core WiFi CSI sensing node (default)
ESP32-S3 SuperMini 4 MB Xtensa dual-core Compact CSI node — use sdkconfig.defaults.4mb
ESP32-C6 + Seeed MR60BHA2 RISC-V + 60 GHz FMCW mmWave HR/BR/presence

Not supported: original ESP32, ESP32-C3 (single-core).

⚠️ Ask about board form factor before flashing. If the user's board is a coin-sized clone (ESP32-S3-Zero, SuperMini, or similar — not a full DevKitC/XIAO-style board with a real USB connector and visible regulator), warn them before they walk away from it: this firmware runs the WiFi radio continuously (WIFI_PS_NONE) plus a full DSP pipeline (edge_tier=2), which is sustained high current draw that full-size dev boards handle fine but tiny clones with minimal copper/budget regulators may not. At least one field report: boards ran hot during a normal session and failed to power on again afterward (regulator damage suspected). Tell them to give the board airflow (don't stack/enclose it) and check it by touch during the first several minutes of any new deployment.

1. Build firmware (Windows — Python subprocess, NOT bash directly)

ESP-IDF v5.4 does not support MSYS2/Git Bash. Use the Espressif Python venv as a subprocess with MSYSTEM* env vars stripped. The proven command lives in CLAUDE.local.md — reproduce it:

/c/Espressif/tools/python/v5.4/venv/Scripts/python.exe -c "
import subprocess, os
env = os.environ.copy()
for k in ['MSYSTEM','MSYSTEM_CHOST','MSYSTEM_PREFIX','MINGW_PREFIX','CHERE_INVOKING']:
    env.pop(k, None)
env['IDF_PATH'] = r'C:\Users\ruv\esp\v5.4\esp-idf'
env['IDF_PYTHON_ENV_PATH'] = r'C:\Espressif\tools\python\v5.4\venv'
env['IDF_TOOLS_PATH'] = r'C:\Espressif'
env['PATH'] = (
    r'C:\Espressif\tools\xtensa-esp-elf\esp-14.2.0_20241119\xtensa-esp-elf\bin;'
    r'C:\Espressif\tools\cmake\3.30.2\cmake-3.30.2-windows-x86_64\bin;'
    r'C:\Espressif\tools\ninja\1.12.1;'
    r'C:\Espressif\tools\idf-exe\1.0.3;'
    r'C:\Espressif\tools\ccache\4.10.2\ccache-4.10.2-windows-x86_64;'
    r'C:\Espressif\tools\python\v5.4\venv\Scripts;'
    + env['PATH']
)
python = r'C:\Espressif\tools\python\v5.4\venv\Scripts\python.exe'
idf_py = os.path.join(env['IDF_PATH'], 'tools', 'idf.py')
r = subprocess.run([python, idf_py, 'build'],   # flash: [python, idf_py, '-p', 'COM8', 'flash']
    cwd=r'C:\Users\ruv\Projects\wifi-densepose\firmware\esp32-csi-node',
    env=env, capture_output=True, text=True, timeout=300)
print(r.stdout[-3000:]); print(r.stderr[-2000:]); print('RC:', r.returncode)
"

Read the full file on GitHub · 130 lines

Changes

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.

  1. 3d ago First seen · 130 lines · 56 tokens per session scan C 06524b26cf1b

Subscribe to this mod's changes

ruview-hardware-setup is a skill published in the GitHub repository ruvnet/RuView (92,661 stars, last pushed today), licensed MIT. It adds 56 tokens to every session and 2,152 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it C with 2 findings (harvests environment variables, runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.

Related

Other skills, from other repositories

meraki-wireless-ops

Cisco Meraki wireless (read-only) — SSID configuration, RF profiles, Air Marshal, channel utilization, signal quality, client connectivity events via Cisco's official Meraki MCP. Use when inspecting Meraki SSIDs, auditing RF configuration, or investigating WiFi connectivity.

automateyournetwork/netclaw · 60 tokens

conducting-wireless-network-penetration-test

Conducts authorized wireless network penetration tests to assess the security of WiFi infrastructure by testing for weak encryption protocols, captive portal bypasses, evil twin attacks, WPA2/WPA3 handshake capture, rogue access point detection, and client-side attacks. The tester evaluates wireless authentication…

26zl/cybersec-toolkit · 104 tokens

beu1000-evuba

A hardware-specific guide for writing firmware for the BE-U1000, a RISC-V microcontroller, on Baikal Electronics EVU-BA development boards. It documents the chip, board wiring, SDK, build setup, and built-in peripherals.

alexex1993/mcu-skills · 289 tokens

atmega32u4-beetle

Firmware development for the Beetle — the CJMCU / DFRobot "Mini Arduino Leonardo" USB board (ATmega32U4 @ 16 MHz, 5 V, 21×28 mm, castellated pads) — its native USB (CDC serial + HID keyboard/mouse/joystick), Caterina bootloader and 1200 bps touch upload, ten exposed I/O pads, four PWM pins across Timer0/Timer1, five…

alexex1993/mcu-skills · 0 tokens

esp32s3-cam-40pin

Firmware development for the 40-pin ESP32-S3-WROOM-1 camera board — the Freenove ESP32-S3-WROOM (FNK0085) and the AliExpress "ESP32-S3 CAM" / "ESP32-S3-WROOM N16R8 CAM" clones that copy its header: 20 pins a side, a 24-pin DVP camera FPC connector for an OV2640/OV3660, an on-board microSD slot on the SDMMC bus, a…

alexex1993/mcu-skills · 0 tokens

esp32-wroom-30pin

Firmware development for the 30-pin ESP32-WROOM-32 development board — the DOIT ESP32 DevKit V1 / ESP32 CH340 Type-C / NodeMCU-ESP32 30-pin form factor, 15 pins per side, CH340G or CP2102 USB-UART bridge, AMS1117 LDO, user LED on GPIO2. Use when working on a 30-pin ESP32 devkit (ESP32-D0WDQ6 / ESP32-D0WD-V3…

alexex1993/mcu-skills · 0 tokens