Ruview/plugins/ruview
ruv df9d3b0eea fix(plugins): move marketplace manifest to repo root for /plugin marketplace add ruvnet/RuView
Claude Code looks for `.claude-plugin/marketplace.json` at the cloned repo's
ROOT — not in a subdirectory — so `/plugin marketplace add ruvnet/RuView`
(and `claude plugin marketplace add ruvnet/RuView`) was failing with
"Marketplace file not found".

- Move `plugins/.claude-plugin/marketplace.json` → `.claude-plugin/marketplace.json`
  (repo root); the `ruview` plugin's `source` is now `./plugins/ruview`.
- README.md / plugins/ruview/README.md: install instructions now use
  `/plugin marketplace add ruvnet/RuView` + `/plugin install ruview@ruview`
  (with `claude --plugin-dir ./plugins/ruview` as the no-install fallback);
  manifest path references updated.
- plugins/ruview/scripts/smoke.sh: resolve the manifest at the repo root;
  also assert the plugin `source` is `./plugins/ruview`.
- ADR-0001 updated (scope, directory contract, smoke contract, consequences).

Verified: `claude plugin validate .` + `./plugins/ruview` pass; smoke 13/13;
`claude plugin marketplace add ./` → `claude plugin install ruview@ruview` →
`claude plugin details ruview` works end-to-end (16 skill-entries + 3 agents).

Co-Authored-By: claude-flow <ruv@ruv.net>
2026-05-11 19:52:04 -04:00
..
.claude-plugin feat(plugins): RuView Claude Code + Codex marketplace plugin 2026-05-11 17:39:16 -04:00
agents feat(plugins): RuView Claude Code + Codex marketplace plugin 2026-05-11 17:39:16 -04:00
codex feat(plugins): RuView Claude Code + Codex marketplace plugin 2026-05-11 17:39:16 -04:00
commands feat(plugins): RuView Claude Code + Codex marketplace plugin 2026-05-11 17:39:16 -04:00
docs/adrs fix(plugins): move marketplace manifest to repo root for /plugin marketplace add ruvnet/RuView 2026-05-11 19:52:04 -04:00
scripts fix(plugins): move marketplace manifest to repo root for /plugin marketplace add ruvnet/RuView 2026-05-11 19:52:04 -04:00
skills feat(plugins): RuView Claude Code + Codex marketplace plugin 2026-05-11 17:39:16 -04:00
README.md fix(plugins): move marketplace manifest to repo root for /plugin marketplace add ruvnet/RuView 2026-05-11 19:52:04 -04:00

ruview — Claude Code + Codex plugin for WiFi sensing

End-to-end toolkit for RuView (WiFi-DensePose): onboarding, ESP32 hardware setup, configuration, sensing applications, model training, advanced multistatic sensing, and witness verification — from practical to advanced.

Part of the ruview marketplace — manifest at the repo root: .claude-plugin/marketplace.json (this plugin's source is ./plugins/ruview).

Install / test

# In Claude Code — add this repo as a plugin marketplace, then install:
/plugin marketplace add ruvnet/RuView
/plugin install ruview@ruview

# Or try it locally without installing (from a clone of the repo):
claude --plugin-dir ./plugins/ruview

For Codex (OpenAI CLI), see codex/ — all seven /ruview-* commands mirrored as Codex prompts, plus an AGENTS.md and install instructions in codex/README.md.

What's inside

Skills (auto-discovered from skills/)

Skill What it does
ruview-quickstart Onboarding & first run — Docker demo, repo build, fastest path to a live dashboard
ruview-hardware-setup ESP32-S3 / C6 firmware build, flash, WiFi provisioning, serial monitoring
ruview-configure sdkconfig variants, NVS provisioning, channel/MAC overrides (ADR-060), edge modules (ADR-041), sensing-server flags, mesh, Cognitum Seed
ruview-applications Run presence, vitals, pose (WiFlow), sleep, environment mapping, MAT, point-cloud fusion, novel RF apps
ruview-model-training Camera-free pose, camera-supervised pose (92.9% PCK@20, ADR-079), RuVector embeddings (AETHER), domain generalization (MERIDIAN), local SNN, GPU on GCloud, HF publishing
ruview-advanced-sensing RuvSense multistatic, cross-viewpoint fusion, RF tomography, persistent field model, intention signals, adversarial detection, mesh security
ruview-cli-api wifi-densepose CLI binary (incl. MAT subcommands), REST API (wifi-densepose-api), browser/WASM (wifi-densepose-wasm, wifi-densepose-wasm-edge)
ruview-mmwave mmWave / FMCW radar — ESP32-C6 + MR60BHA2 (60 GHz HR/BR/presence), HLK-LD2410 (24 GHz), mmWave↔CSI fusion (48-byte fused vitals)
ruview-verify Rust tests, deterministic Python proof, firmware hashes, ADR-028 witness bundle + self-verification, pre-merge checklist

Commands (commands/)

Command Purpose
/ruview-start Get started — pick Docker / build / hardware and walk through it
/ruview-flash Build + flash ESP32 firmware (8MB / 4MB), confirm CSI stream
/ruview-provision Provision WiFi creds, sink IP, channel / MAC-filter onto a node
/ruview-app Run a sensing application
/ruview-train Train / evaluate / publish a model (incl. GPU)
/ruview-advanced Use multistatic / tomography / cross-viewpoint / mesh-security features
/ruview-verify Run the trust pipeline + pre-merge checklist

Agents (agents/)

Agent Role
ruview-onboarding-guide Walks a newcomer from zero to a working setup
ruview-config-engineer Sets up / tunes a deployment (firmware, NVS, edge modules, mesh, Seed)
ruview-training-engineer Trains, evaluates, and ships models

Compatibility

  • Claude Code — skills, commands, and agents are auto-discovered; no claude-flow MCP server required (skills drive RuView's own tooling: cargo, python, idf.py, docker, node). Optional: npx @claude-flow/cli@latest security scan is referenced for security changes.
  • Codex (OpenAI CLI) — workflows mirrored under codex/prompts/; drop them in ~/.codex/prompts/ (or point Codex at codex/). codex/AGENTS.md carries the project rules.
  • Target repo — assumes the ruvnet/RuView / wifi-densepose layout: v2/crates/, firmware/esp32-csi-node/, archive/v1/, scripts/, docs/adr/. On Windows, ESP-IDF builds go through the Python-subprocess pattern in CLAUDE.local.md.

Namespace coordination

This plugin claims the kebab-case ruview-* namespace for its skills, commands, and agents (skills: ruview-quickstart, ruview-hardware-setup, ruview-configure, ruview-applications, ruview-model-training, ruview-advanced-sensing, ruview-cli-api, ruview-mmwave, ruview-verify; commands: /ruview-start, /ruview-flash, /ruview-provision, /ruview-app, /ruview-train, /ruview-advanced, /ruview-verify; agents: ruview-onboarding-guide, ruview-config-engineer, ruview-training-engineer). It does not write to any claude-flow memory namespace. If combined with the ruflo marketplace, defer to ruflo-agentdb ADR-0001 §"Namespace convention" — there is no overlap (ruview-* vs. ruflo-*).

Verification

bash plugins/ruview/scripts/smoke.sh

Structural contract: plugin.json has version + keywords and does not enumerate skills/commands/agents; every skill/command/agent file exists with valid frontmatter; README has a Compatibility section and a Namespace coordination block; ADR-0001 exists with status Proposed; no wildcard tools in skills; Codex mirror present and parity — every commands/<name>.md has a matching codex/prompts/<name>.md.

Architecture Decisions

Hardware note

COM8 is the default ESP32 serial port in this plugin's docs — confirmed against an attached ESP32-S3 (USB VID:PID 303A:1001, Espressif) running the RuView CSI firmware (live adaptive_ctrl ticks + csi_collector: CSI cb #… len=128 … on the serial monitor). The repo's CLAUDE.local.md historically referenced COM7; some README snippets reference COM9. Always confirm the actual port (python -c "import serial.tools.list_ports as l; print([p.device for p in l.comports()])", or Device Manager) before flashing. On Windows, provision.py --help needs PYTHONUTF8=1 to print (non-ASCII in the help text); the build/flash path goes through the Python-subprocess pattern in CLAUDE.local.md (ESP-IDF v5.4 ≠ Git Bash).