flowio — Claude Code skill: read and write FCS files
Reads and writes flow cytometry FCS 2.0, 3.0 and 3.1 files: metadata, channels, events as NumPy. Useful when you need to look inside an FCS file or feed it to pandas.
npx skills add K-Dense-AI/scientific-agent-skills --skill flowio -a claude-codeWhat flowio does
The skill gives your agent a working knowledge of FlowIO 1.4.0, a library for Flow Cytometry Standard files. It covers HEADER, TEXT, ANALYSIS and channel metadata, event extraction into a two-dimensional NumPy array, legacy files holding several datasets, and writing a new FCS 3.1.
Metadata-only work comes first: only_text=True keeps large or unfamiliar files cheap to open. When you do pull events, pick the semantics on purpose. as_array(preprocess=True) applies gain, logarithmic and time scaling taken from the FCS metadata; preprocess=False returns decoded values without those steps. Keys in flow.text are lowercase with the leading $ stripped, so look up date, not $DATE. One catch: FlowIO 1.4.0 strips every $ character from the decoded TEXT segment, including ones inside values, so keep the original file when exact metadata fidelity matters.
Compensation, logicle/biexponential transforms, gating and FlowJo workspaces are out of scope — FlowKit handles those. You need Python 3.9–3.13, uv and FlowIO 1.4.0; NumPy comes with the library, pandas is optional. Parsing runs locally with no credentials or network. Writing through create_fcs() takes an already-open binary handle and flattened one-dimensional event data in row-major order, and the required interpretation keywords are generated by FlowIO — metadata cannot override them.
What it helps with
- check the version, event count and channels of an FCS file
- pull TEXT metadata without loading events
- get events as a two-dimensional NumPy array
- open a legacy file with multiple datasets
- write a new list-mode FCS 3.1 file
Example prompts for the agent
- Inspect
sample.fcswithonly_text=Trueand show the version, event count and channel labels - Extract events from
sample.fcswithpreprocess=Trueand verify the array shape against$TOTand$PAR - Open
legacy-multi-dataset.fcswithread_multiple_data_setsand print the event count for each dataset
How to install flowio
1Skills CLI (Vercel)
npx skills add K-Dense-AI/scientific-agent-skills --skill flowio -a claude-code2Manually: put the files in place
~/.claude/skills/flowio/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/flowio/
1Skills CLI (Vercel)
npx skills add K-Dense-AI/scientific-agent-skills --skill flowio -a codex2Manually: put the files in place
.agents/skills/flowio/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add K-Dense-AI/scientific-agent-skills --skill flowio -a cursor2Manually: put the files in place
.cursor/skills/flowio/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install K-Dense-AI/scientific-agent-skills flowio2Manually: put the files in place
.github/skills/flowio/SKILL.md1Skills CLI (Vercel)
npx skills add K-Dense-AI/scientific-agent-skills --skill flowio -a gemini-cli2Platform CLI
gemini skills install https://github.com/K-Dense-AI/scientific-agent-skills --path skills/flowioManually: put the files in place
.devin/skills/flowio/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add K-Dense-AI/scientific-agent-skills --skill flowio -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about flowio
How do I install flowio in Claude Code?
Run npx skills add K-Dense-AI/scientific-agent-skills --skill flowio -a claude-code. The skill lands at ~/.claude/skills/flowio/SKILL.md.
What does flowio do?
It lets the agent use FlowIO 1.4.0: reading FCS 2.0, 3.0 and 3.1, inspecting metadata and channels, extracting events into NumPy, handling multi-dataset files, and writing FCS 3.1.
How is flowio different from FlowKit?
FlowIO stays low-level: metadata, channels, events, file writing. Compensation, logicle/biexponential transforms, gating and FlowJo workspaces are not part of it — that is FlowKit's job.