Borrowing it
Nothing to install: this file belongs to plurigrid/asi. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/plurigrid/asi/main/.claude/skills/cyton-dongle/SKILL.mdgit clone --depth 1 https://github.com/plurigrid/asiWrote 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/plurigrid/asi/cyton-dongle)<a href="https://agentmods.dev/skills/plurigrid/asi/cyton-dongle"><img src="https://agentmods.dev/badge/skills/plurigrid/asi/cyton-dongle/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/plurigrid/asi/cyton-dongle"><img src="https://agentmods.dev/badge/skills/plurigrid/asi/cyton-dongle.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
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.1 | $0.00028 | $0.02831 |
| Opus 5 | $0.00014 | $0.01416 |
| Sonnet 5 | $0.00006 | $0.00566 |
| Haiku 4.5 | $0.00003 | $0.00283 |
Grade A, and why
cyton-dongle 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 9d 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 — 260 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Cyton Dongle
USB wireless receiver (RFD22301/RFDuino) for OpenBCI Cyton 8/16-channel EEG board.
Hardware
- Dongle: FTDI FT231X USB-UART → RFDuino 2.4 GHz radio
- Serial: 115200 baud, 8N1
- Device:
/dev/cu.usbserial-*(macOS) or/dev/ttyUSB*(Linux) - Sample Rate: 250 Hz
- Channels: 8 (Cyton) or 16 (Cyton + Daisy)
- Packet: 33 bytes (0xA0 start, 24 bytes channel data, 6 bytes aux, 1 byte counter, 0xC0 stop)
First-Time Pairing (Critical)
A new dongle and board are typically on different radio channels. The standard 0xF0 0x01 channel-set command requires both sides to handshake — it fails when they're on different channels.
Use 0xF0 0x02 (CHANNEL_SET_OVERRIDE) to force the dongle to each channel without requiring board response, then check system status:
import serial, time
ser = serial.Serial('/dev/cu.usbserial-XXXXX', 115200, timeout=2)
time.sleep(2)
for chan in range(26):
ser.reset_input_buffer()
ser.write(bytes([0xF0, 0x02, chan])) # override dongle (no handshake)
time.sleep(0.5)
ser.read(ser.in_waiting or 512)
ser.reset_input_buffer()
ser.write(bytes([0xF0, 0x07])) # system status query
time.sleep(0.5)
resp = ser.read(ser.in_waiting or 512).decode('utf-8', errors='ignore')
if 'System is Up' in resp:
print(f'FOUND BOARD ON CHANNEL {chan}')
break
else:
print(f'Ch {chan}: Down')
ser.close()
Radio Commands (0xF0 prefix)
| Bytes | Command | Notes |
|---|---|---|
0xF0 0x00 |
CHANNEL_GET | Returns current dongle channel |
0xF0 0x01 <ch> |
CHANNEL_SET | Coordinated change, requires board online |
0xF0 0x02 <ch> |
CHANNEL_OVERRIDE | Dongle-only, no handshake — use for pairing |
0xF0 0x03 |
POLL_TIME_GET | Current poll time |
0xF0 0x04 <t> |
POLL_TIME_SET | Set poll time |
0xF0 0x05 |
BAUD_DEFAULT | 115200 |
0xF0 0x06 |
BAUD_FAST | 230400 |
0xF0 0x07 |
SYS_STATUS | "System is Up" or "System is Down" |
0xF0 0x0A |
BAUD_HYPER | 921600 |
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.
- 9d ago First seen · 260 lines · 28 tokens per session scan A 4361c10a629a
cyton-dongle is a skill published in the GitHub repository plurigrid/asi (62 stars, last pushed 2mo ago), licensed MIT. It adds 28 tokens to every session and 2,831 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-09-01.
Other skills, from other repositories
neuroskill-bci
Use live BCI cognitive and mood state from NeuroSkill.
ruview-advanced-sensing
Advanced RuView capabilities — RuvSense multistatic sensing (attention-weighted fusion, geometric diversity, persistent field model), cross-viewpoint fusion across multiple nodes, RF tomography (ISTA L1 solver, voxel grids), longitudinal biomechanics drift, pre-movement intention signals, adversarial signal detection…
ruview-applications
Run RuView sensing applications — presence/occupancy, breathing & heart rate, activity & fall detection, 17-keypoint pose estimation (WiFlow), sleep monitoring & apnea screening, environment mapping, Mass Casualty Assessment (MAT), and the 3D point-cloud fusion demo. Use when someone wants to actually do something…
lab-hardware-cad
Design custom laboratory hardware as parametric build123d models and export fabrication-ready STEP, STL, and DXF files - microfluidic chips and molds, optomechanical mounts and breadboard adapters, cuvette and microplate holders, tube racks, animal-behavior rigs, and 3D-printed instrument fixtures. Use when a research…
opentrons-integration
Author, review, migrate, simulate, and troubleshoot official Opentrons Python Protocol API v2 protocols for Flex and OT-2 robots. Use for robot-specific liquid handling, deck and labware setup, pipettes, modules, runtime parameters, liquid classes, and Opentrons App analysis. Use pylabrobot instead when one workflow…
pylabrobot
Develop and review PyLabRobot lab-automation resources, liquid-handling plans, offline simulations, and supported-device integrations. Use for PyLabRobot protocols or API questions; keep physical execution behind an explicit operator safety gate.