RuView mmWave Radar Setup
ruvnet/RuView
Sets up and runs 60 GHz and 24 GHz mmWave radar sensing on ESP32 boards in RuView, alone or fused with WiFi CSI.
A skill your agent uses for VibePulse panel questions, permission behavior, setup, status, or doctor diagnostics for the optional local Codex bridge.
$ npx skills add niclasvestlund-YT/vibepulse --skill vibepulse -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install niclasvestlund-YT/vibepulse vibepulse --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/niclasvestlund-YT/vibepulse.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/plugins/plugins/vibepulse/skills/vibepulse .claude/skills/vibepulse && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "vibepulse" agent skill from https://github.com/niclasvestlund-YT/vibepulse/tree/main/.agents/plugins/plugins/vibepulse/skills/vibepulse into .claude/skills/vibepulse/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vibepulse", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/niclasvestlund-YT/vibepulse/tree/main/.agents/plugins/plugins/vibepulse/skills/vibepulseType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add niclasvestlund-YT/vibepulse --skill vibepulse -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install niclasvestlund-YT/vibepulse vibepulse --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/niclasvestlund-YT/vibepulse.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/plugins/plugins/vibepulse/skills/vibepulse .agents/skills/vibepulse && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "vibepulse" agent skill from https://github.com/niclasvestlund-YT/vibepulse/tree/main/.agents/plugins/plugins/vibepulse/skills/vibepulse into .agents/skills/vibepulse/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vibepulse", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add niclasvestlund-YT/vibepulse --skill vibepulse -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install niclasvestlund-YT/vibepulse vibepulse --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/niclasvestlund-YT/vibepulse.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/plugins/plugins/vibepulse/skills/vibepulse .cursor/skills/vibepulse && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "vibepulse" agent skill from https://github.com/niclasvestlund-YT/vibepulse/tree/main/.agents/plugins/plugins/vibepulse/skills/vibepulse into .cursor/skills/vibepulse/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vibepulse", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/niclasvestlund-YT/vibepulse.git --path .agents/plugins/plugins/vibepulse/skills/vibepulse--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add niclasvestlund-YT/vibepulse --skill vibepulse -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install niclasvestlund-YT/vibepulse vibepulse --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/niclasvestlund-YT/vibepulse.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/plugins/plugins/vibepulse/skills/vibepulse .gemini/skills/vibepulse && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "vibepulse" agent skill from https://github.com/niclasvestlund-YT/vibepulse/tree/main/.agents/plugins/plugins/vibepulse/skills/vibepulse into .gemini/skills/vibepulse/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vibepulse", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install niclasvestlund-YT/vibepulse vibepulseInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add niclasvestlund-YT/vibepulse --skill vibepulse -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/niclasvestlund-YT/vibepulse.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/plugins/plugins/vibepulse/skills/vibepulse .github/skills/vibepulse && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "vibepulse" agent skill from https://github.com/niclasvestlund-YT/vibepulse/tree/main/.agents/plugins/plugins/vibepulse/skills/vibepulse into .github/skills/vibepulse/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vibepulse", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add niclasvestlund-YT/vibepulse --skill vibepulse -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install niclasvestlund-YT/vibepulse vibepulse --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/niclasvestlund-YT/vibepulse.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/plugins/plugins/vibepulse/skills/vibepulse .opencode/skills/vibepulse && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "vibepulse" agent skill from https://github.com/niclasvestlund-YT/vibepulse/tree/main/.agents/plugins/plugins/vibepulse/skills/vibepulse into .opencode/skills/vibepulse/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "vibepulse", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
vibepulseA skill your agent uses for VibePulse panel questions, permission behavior, setup, status, or doctor diagnostics for the optional local Codex bridge.
Vibepulse is an agent skill from niclasvestlund-YT/vibepulse. Use for VibePulse panel questions, permission behavior, setup, status, or doctor diagnostics for the optional local Codex bridge.
Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Embedded systems and File uploads and storage. It works with Python and ESP32. The repository describes itself as: ESP32-S3 AMOLED for Claude Code & Codex usage, live agent activity, and answerable NEEDS YOU alerts. Local-first macOS/Windows host; optional encrypted relays. The licence is MIT.
Read from SKILL.md and the folder at commit 21b905d. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
python3gitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Vibepulse loads about 1.6k tokens when it runs. Until then it costs about 35 tokens; SKILL.md has 885 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from niclasvestlund-YT/vibepulse at commit 21b905d, republished under its MIT licence (© niclasvestlund-YT). 885 words, ~1,565 tokens.
.claude/skills/vibepulse/SKILL.md (or your agent's skills folder).Keep VibePulse interactions opt-in and local. Installing the plugin does not enable a provider; the saved VibePulse configuration controls routing.
Use mcp__vibepulse__ask only for one bounded question with 2-3 explicit
options when you can make a genuine recommendation. Keep labels and details
short, mark at most one option recommended, and send no secrets.
Use native request_user_input for free-form answers, secrets, multiple
questions, unsupported shapes, an unavailable panel, timeout, or computer
fallback. Never treat silence, panel absence, or fallback as approval.
Permission decisions remain subject to Codex policy.
For a physical Codex smoke test, use the exact short question
Ser du APPROVE? with Ja (APPROVE syns) and Nej (APPROVE saknas),
marking only Ja recommended. Pass only when the panel visibly shows
APPROVE, a human taps it, and the call returns status: answered,
option_index: 0, answer: Ja. SOMETHING IS WAITING without answer
buttons is the fit/privacy fallback, not a pass. After a flash, compare
git describe --tags --always --dirty from the build checkout with the service's
otaAvailableVersion before testing.
Explain that the encrypted relay remains not enabled by this plugin. When the owner separately enables it, opaque encrypted envelopes leave the LAN but the question and verdict stay end-to-end encrypted between host and panel.
When setup state is relevant, run python3 tools/vibepulse_setup.py status.
When troubleshooting is relevant, run python3 tools/vibepulse_setup.py doctor.
From a checkout, prefer its .venv/bin/python on POSIX or
.venv\Scripts\python.exe on Windows when present; a system python3 can be
older than the interpreter that actually runs the service. Also run
tools/tokenserver/smoke.py with that interpreter for a stale report.
Diagnose these safe signals separately: claudeProbe is the active quota
source outcome, claudeCredential is saved-credential readiness, and the
/api/tokens stale flags are the data actually sent to the panel. If
claudeProbe is usage_http_200 + ok and the relevant stale flag is false,
the source is live even when the saved credential says expired; call that a
future recovery risk, not the current stale cause. Start a new Claude Code CLI
turn to refresh the saved fallback. VibePulse rereads local credentials every
15 seconds, so do not prescribe a tokenserver restart first.
On plugin 0.1.7+, read VibePulse startup health: provider stale routes to
provider/credential checks; device path stale to panel power/network/discovery/
firmware; version drift means plugin and host sources differ; server unavailable
routes to service diagnostics. It is read-only and never approves.
If the local API and configured numbers relay are fresh while the glass is
stale, inspect GET / → interactions.panel for recent direct polling and
read passive logs. waiting does not prove failure on a relay-only network,
but fresh LAN and relay with stale glass localizes the device hop. Test relay
with the panel User-Agent; generic Python may get a misleading Cloudflare 403.
Computer USB can exhaust its 500 mA budget during Wi-Fi bursts, so use a
dedicated 5 V supply. Compare installed firmware with current main; old
firmware cannot discover another Mac/Windows host. Never reset or flash without
explicit permission, and never infer health from serial silence.
If passive serial repeatedly reports accepted token payloads while the glass
still says STALE, compare its Claude/Fable/Codex/Max Tracker stale bits.
Fresh bits localize stale bookkeeping/rendering; current firmware clears
transport stale synchronously and logs only those booleans. Do not treat
hämtning ok as UI proof or close the incident before the glass changes.
Never call one successful post-boot request a sustained stale-recovery pass.
Keep the panel on dedicated power beyond its 120-second stale window, require
recent direct polling again, and repeat the canonical physical question. If
the board still answers ping while direct panel polling ages out, the local and
numbers-relay payloads remain fresh, and the repeated question times out,
record a device-side application-HTTP stall rather than blaming provider data.
Current relay-configured firmware has a bounded self-recovery guard: after an
initial quota success, 60 seconds without progress while Wi-Fi still reports
association recycles the station transport and wakes the quota task, which
waits for a new IP before retrying. If no real success follows within another
45 seconds, the device performs one controlled restart. Cold boot stays disarmed
until a new real success, preventing a persistent upstream outage from becoming a restart
loop. Either guard firing is recovery evidence, not a PASS by itself. LAN-only
firmware deliberately does not recover merely because its host sleeps.
After a guarded restart, interactions.panel.httpStallRecoveryBoot can prove
the guard fired without serial, not that the stale window/question passed.
Treat fresh numbers plus timed-out questions as a separate transport check.
When more than one _vibepulse._tcp service is advertised on the same LAN,
DNS-SD result order cannot identify which computer owns the current question;
the panel may be polling a different healthy Mac or PC. Confirm the service
count without publishing hostnames or private addresses. For a panel shared by
several computers, use the existing end-to-end encrypted interaction relay on
the hosts and enable TK_VIBEPULSE_INTERACTION_RELAY in that panel's firmware.
If local /api/agent-status reports an active agent while the glass says no
active agent, also check the separate host and firmware live-status switches.
Do not claim a local active row proves the panel route, and do not flash a
relay-enabled image without a fresh explicit authorization.
Explain that this versioned skill does not learn or update itself; new lessons reach Codex after a plugin release and new task. Do not run install, disable, or uninstall without the user's explicit request.
© niclasvestlund-YT, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/plugins/plugins/vibepulse/skills/vibepulse of niclasvestlund-YT/vibepulse.
Open the folder on GitHubat commit 21b905d
Vibepulse next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Vibepulse this skillniclasvestlund-YT/vibepulse | 208 | — | ~1.6k | Automated safety check: Pass | MIT | |
| RuView mmWave Radar Setupruvnet/RuView | 97k | — | ~907 | Automated safety check: Notes | MIT | |
| Embedded Cpp14 MisraBlueAndi/Pixelix | 443 | — | ~2k | Automated safety check: Pass | MIT | |
| Flash Esp32s3RomanLut/hx_espnow_rc | 129 | — | ~794 | Automated safety check: Pass | MIT | |
| Guition Jc3636k718cMichalZaniewicz/esphome-guition-jc3636k718c-va | 167 | — | ~3k | Automated safety check: Pass | MIT | |
| Implement Next Taskrvdbreemen/OTGW-firmware | 207 | — | ~2.1k | Automated safety check: Pass | GPL-3.0 |
ruvnet/RuView
Sets up and runs 60 GHz and 24 GHz mmWave radar sensing on ESP32 boards in RuView, alone or fused with WiFi CSI.
BlueAndi/Pixelix
A skill your agent uses when writing, reviewing, or refactoring C/C++ firmware code in this repository (src/, lib/, test/) — creating or editing .h/.hpp/.cpp files, applying MISRA-oriented and…
RomanLut/hx_espnow_rc
Build, flash, recover, and verify the ESP32-S3 Super Mini MAVLink/ESP-NOW USB receiver in examples/rxesp32s3mavlinkrcusb.
MichalZaniewicz/esphome-guition-jc3636k718c-va
Reference for building/editing ESPHome configs on the Guition JC3636K718C round knob display (ESP32-S3, 1.8" 360x360 ST77916, CST816 touch, rotary knob, PCM5100A DAC, PDM mic, WS2812 LED ring).
rvdbreemen/OTGW-firmware
Drive the autonomous 2.0.0 ESP32-S3-only async + FreeRTOS migration (epic TASK-865).
jtenniswood/esphome-media-player
Flash ESPHome firmware to physical EspControl devices. An agent skill from jtenniswood/esphome-media-player.
niclasvestlund-YT/vibepulse
A skill your agent uses when making any Torget AMOLED app visual change, exact-size mockup, simulator capture, or physical review.
Categories
A skill your agent uses for VibePulse panel questions, permission behavior, setup, status, or doctor diagnostics for the optional local Codex bridge. Vibepulse is an agent skill from niclasvestlund-YT/vibepulse. Use for VibePulse panel questions, permission behavior, setup, status, or doctor diagnostics for the optional local Codex bridge.
Vibepulse fits situations like: vibePulse panel questions; permission behavior; doctor diagnostics for the optional local Codex bridge.
Run `npx skills add niclasvestlund-YT/vibepulse --skill vibepulse -a claude-code`. Or copy the skill folder (.agents/plugins/plugins/vibepulse/skills/vibepulse in niclasvestlund-YT/vibepulse) into .claude/skills/vibepulse in your project. Claude Code loads it when a task matches its description.
Run `npx skills add niclasvestlund-YT/vibepulse --skill vibepulse -a codex`. Or copy the skill folder (.agents/plugins/plugins/vibepulse/skills/vibepulse in niclasvestlund-YT/vibepulse) into .agents/skills/vibepulse in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add niclasvestlund-YT/vibepulse --skill vibepulse -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/vibepulse, .gemini/skills/vibepulse, .github/skills/vibepulse and .opencode/skills/vibepulse in your project.
Going by SKILL.md and its folder, Vibepulse needs the command-line tools its instructions call (python3 and git). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Vibepulse is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.6k tokens (SKILL.md is roughly 6.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Vibepulse: RuView mmWave Radar Setup (ruvnet/RuView, 97k stars), Embedded Cpp14 Misra (BlueAndi/Pixelix, 443 stars), Flash Esp32s3 (RomanLut/hx_espnow_rc, 129 stars) and Guition Jc3636k718c (MichalZaniewicz/esphome-guition-jc3636k718c-va, 167 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
niclasvestlund-YT (a GitHub user) maintains it in niclasvestlund-YT/vibepulse, which has 208 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on September 30, 2026.
Source: niclasvestlund-YT/vibepulse on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.