Installs into .claude/skills of the current project.
Are you the author of Io?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-arex-skill-arex-skill)
---
name: io
description: "Resolve data sources, load and save HyperTools data, and open
numeric LSL streams."
disable-model-invocation: true
metadata:
disco-role: operating
license: MIT
---
# IO
Use this route for `hyp.load`, `hyp.save`, `hypertools.io.sources`,
`hyp.io.lsl_stream`, and the streaming helpers that turn resolved input into a
form the visualization layer can consume.
## Use this sub-skill when the user wants to
- Load built-in datasets, local files, remote URLs, Hugging Face ids, Google
Sheets/Drive links, Dropbox links, FiveThirtyEight datasets, or Kaggle
datasets.
- Save arrays, DataFrames, lists of arrays, fitted models, and other
serializable results to disk.
- Check how a string resolves to a dataset source, or why a source failed.
- Open a live numeric LSL stream for later plotting.
- Inspect or normalize stream rows with `hypertools.io.streaming.is_stream`
and `row_to_vector`.
## Route elsewhere when the task is really about
- Plotting, animating, or exporting a figure/movie from loaded or streaming
data: use `../visualization/`.
- Choosing, tuning, or reusing `reduce`/`align`/`normalize`/`ndims` stages
after a load: use `../pipeline/`.
- Any model-selection or plotting-style work that does not start with source
resolution or file/stream I/O.
## Read first
- `references/io-reference.md` for source precedence, file formats, trust
rules, remote handling, and LSL semantics.
- `references/troubleshooting.md` for missing extras, unsupported extensions,
pickle trust, and LSL/network failures.
- `scripts/smoke_io.py` to run a tiny local round-trip check; add
`--lsl-local-smoke` when `pylsl` is installed and you want a real local
outlet/inlet check.
## Fast routing guide
- Decide whether a string is a built-in name, local path, explicit prefix, or
URL before doing anything else.
- If a remote payload is pickle-backed, require an explicit trust decision.
- If the extension is not a supported data format, expect pickle fallback
unless the bytes clearly match a known binary format.
- If the input is an LSL outlet or stream generator, keep it numeric and hand
the rendering step to the visualization route.
- If a raw string might be data or just text, use
`hypertools.io.sources.is_loadable_string` before routing it.
- If `hyp.load(..., reduce=..., ndims=..., align=..., normalize=...)` is used
on ordinary data, the pipeline owns those stage choices; streaming datasets
reject those kwargs at load time.
## Success signals
- `hyp.load(...)` returns raw data, a DataFrame/array/list/dict, or a
streaming `IterableDataset`.
- `hyp.save(...)` creates the requested file and round-trips through
`hyp.load(...)`.
- `hyp.io.lsl_stream(...)` returns a generator of numeric vectors.
- The smoke script prints a round-trip success message and, when requested, a
local LSL success message.