Agent skill

Flowio Flow Cytometry

by jaechang-hits in jaechang-hits/SciAgent-Skills

Parse/write FCS (Flow Cytometry) files v2.0-3.1. An agent skill from jaechang-hits/SciAgent-Skills.

BSD-3-ClauseAuto-check passedData & Analytics

Install Flowio Flow Cytometry

skills CLI
$ npx skills add jaechang-hits/SciAgent-Skills --skill flowio-flow-cytometry -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jaechang-hits/SciAgent-Skills flowio-flow-cytometry --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/jaechang-hits/SciAgent-Skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/cell-biology/flowio-flow-cytometry .claude/skills/flowio-flow-cytometry && rm -rf skills-src

Use ~/.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/

Facts

Skill name
flowio-flow-cytometry
GitHub stars
374
Used in
1 other repo
Token cost
~3k tokens
SKILL.md length
681 words
Files
1
Skills in repo
169
Repo updated
First seen
Licence
BSD-3-Clause

At a glance

Parse/write FCS (Flow Cytometry) files v2.0-3.1. An agent skill from jaechang-hits/SciAgent-Skills.

  • Works in 5 steps: Reading FCS Files → Channel Metadata → Creating FCS Files → …
  • Tasks that involve CSV and tabular files
  • SKILL.md covers Overview, When to Use, Prerequisites and Quick Start, plus 9 more sections
  • Calls pip

What it does

Flowio Flow Cytometry is an agent skill from jaechang-hits/SciAgent-Skills. Parse/write FCS (Flow Cytometry) files v2.0-3.1. Events as NumPy, channel metadata, multi-dataset files, CSV/FCS export. Use FlowKit for gating/compensation.

Its SKILL.md is about 3k 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 Data & Analytics, covering CSV and tabular files. It works with NumPy. The repository describes itself as: 197 bioinformatics & life science skills for Claude Code and AI agents — BixBench 92.0% accuracy. RNA-seq, single-cell, drug discovery, proteomics, and more. Powers OmicsHorizon. The licence is BSD-3-Clause.

When your agent uses it

  • Tasks that involve CSV and tabular files

Example prompts

  • “/flowio-flow-cytometry”

Requirements

  • Python 3

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Reading FCS Files
  2. Channel Metadata
  3. Creating FCS Files
  4. Multi-Dataset FCS Files
  5. Modifying and Re-Exporting

What it can do on your machine

Read from SKILL.md and the folder at commit 82c862c. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • pip

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com
    • isac-net.org

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Flowio Flow Cytometry loads about 3k tokens when it runs. Until then it costs about 45 tokens; SKILL.md has 681 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~45
When it runs · the whole SKILL.md, loaded when a task matches
~3k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from jaechang-hits/SciAgent-Skills at commit 82c862c, republished under its BSD-3-Clause licence (© jaechang-hits). 681 words, ~3,048 tokens.

Download SKILL.mdSave it as .claude/skills/flowio-flow-cytometry/SKILL.md (or your agent's skills folder).
name
flowio-flow-cytometry
description
Parse/write FCS (Flow Cytometry) files v2.0-3.1. Events as NumPy, channel metadata, multi-dataset files, CSV/FCS export. Use FlowKit for gating/compensation.
license
BSD-3-Clause

FlowIO — Flow Cytometry File Handler

Overview

FlowIO is a lightweight Python library for reading and writing Flow Cytometry Standard (FCS) files. It parses FCS metadata, extracts event data as NumPy arrays, and creates new FCS files. Supports FCS versions 2.0, 3.0, and 3.1. Minimal dependencies — ideal for data pipelines and preprocessing before advanced analysis.

When to Use

  • Parsing FCS files to extract event data as NumPy arrays
  • Reading channel metadata (names, ranges, types) from FCS files
  • Converting flow cytometry data to pandas DataFrames or CSV
  • Creating new FCS files from NumPy arrays or processed data
  • Handling multi-dataset FCS files (separating combined datasets)
  • Batch processing directories of FCS files
  • Preprocessing flow cytometry data before downstream analysis
  • For compensation, gating, and FlowJo workspace support, use FlowKit instead
  • For advanced cytometry visualization (density plots, gating plots), use matplotlib or plotly

Prerequisites

bash
pip install flowio numpy pandas

Requires Python 3.9+. No compiled dependencies — installs on any platform.

Quick Start

python
from flowio import FlowData

flow = FlowData("experiment.fcs")
print(f"Events: {flow.event_count}, Channels: {flow.channel_count}")
print(f"Channels: {flow.pnn_labels}")

events = flow.as_array()  # Shape: (n_events, n_channels)
print(f"Data shape: {events.shape}")

Core API

1. Reading FCS Files

The FlowData class is the primary interface for reading FCS files.

python
from flowio import FlowData

# Standard reading
flow = FlowData("sample.fcs")
print(f"Version: {flow.version}")          # '3.0', '3.1', etc.
print(f"Events: {flow.event_count}")
print(f"Channels: {flow.channel_count}")

# Event data
events = flow.as_array()                   # Preprocessed (gain, log scaling)
raw = flow.as_array(preprocess=False)      # Raw values
print(f"Shape: {events.shape}")            # (n_events, n_channels)

# Memory-efficient: metadata only (skip DATA segment)
flow_meta = FlowData("sample.fcs", only_text=True)
print(f"Instrument: {flow_meta.text.get('$CYT', 'Unknown')}")

# Handle problematic files
flow = FlowData("bad.fcs", ignore_offset_discrepancy=True)
flow = FlowData("bad.fcs", use_header_offsets=True)

# Exclude null channels
flow = FlowData("sample.fcs", null_channel_list=["Time", "Null"])
2. Channel Metadata

Extract channel names, types, and ranges from FCS files.

python
flow = FlowData("sample.fcs")

# Channel names
pnn = flow.pnn_labels   # Short names: ['FSC-A', 'SSC-A', 'FL1-A', ...]
pns = flow.pns_labels   # Descriptive: ['Forward Scatter', 'Side Scatter', 'FITC', ...]
pnr = flow.pnr_values   # Range/max values per channel

# Channel type indices
scatter_idx = flow.scatter_indices   # [0, 1] — FSC, SSC
fluoro_idx = flow.fluoro_indices     # [2, 3, 4] — fluorescence channels
time_idx = flow.time_index           # Time channel index (or None)

# Access by type
events = flow.as_array()
scatter_data = events[:, scatter_idx]
fluoro_data = events[:, fluoro_idx]

# Full metadata (TEXT segment dictionary)
text = flow.text
print(f"Date: {text.get('$DATE', 'N/A')}")
print(f"Instrument: {text.get('$CYT', 'N/A')}")
3. Creating FCS Files

Generate new FCS files from NumPy arrays.

python
import numpy as np
from flowio import create_fcs

# Basic creation
events = np.random.rand(10000, 5) * 1000
channels = ["FSC-A", "SSC-A", "FL1-A", "FL2-A", "Time"]
create_fcs("output.fcs", events, channels)

# With descriptive names and metadata
create_fcs(
    "output.fcs",
    events,
    channels,
    opt_channel_names=["Forward Scatter", "Side Scatter", "FITC", "PE", "Time"],
    metadata={"$SRC": "Python pipeline", "$DATE": "17-FEB-2026", "$CYT": "Synthetic"},
)
# Output: FCS 3.1, single-precision float
4. Multi-Dataset FCS Files

Handle FCS files containing multiple datasets.

python
from flowio import FlowData, read_multiple_data_sets, MultipleDataSetsError

# Detect multi-dataset files
try:
    flow = FlowData("sample.fcs")
except MultipleDataSetsError:
    datasets = read_multiple_data_sets("sample.fcs")
    print(f"Found {len(datasets)} datasets")
    for i, ds in enumerate(datasets):
        print(f"Dataset {i}: {ds.event_count} events, {ds.channel_count} channels")
        events = ds.as_array()

# Read specific dataset by offset
first = FlowData("multi.fcs", nextdata_offset=0)
next_offset = int(first.text.get("$NEXTDATA", "0"))
if next_offset > 0:
    second = FlowData("multi.fcs", nextdata_offset=next_offset)
5. Modifying and Re-Exporting

Read, modify, and save FCS data.

python
from flowio import FlowData, create_fcs

# Read original
flow = FlowData("original.fcs")
events = flow.as_array(preprocess=False)  # Use raw for modification

# Filter events (e.g., threshold on FSC)
mask = events[:, 0] > 500
filtered = events[mask]
print(f"Before: {len(events)}, After: {len(filtered)}")

# Save filtered data as new FCS
create_fcs(
    "filtered.fcs",
    filtered,
    flow.pnn_labels,
    opt_channel_names=flow.pns_labels,
    metadata={**flow.text, "$SRC": "Filtered"},
)

# Or write with updated metadata (no event modification)
flow.write_fcs("updated.fcs", metadata={"$SRC": "Updated"})

Key Concepts

FCS File Structure

FCS files consist of four segments:

SegmentContentFlowData attribute
HEADERVersion, byte offsetsflow.header
TEXTKey-value metadata ($DATE, $CYT, channel names)flow.text
DATAEvent data (binary/float)flow.events (bytes), flow.as_array()
ANALYSISOptional processed resultsflow.analysis
Preprocessing (as_array)

When preprocess=True (default), FlowIO applies:

  1. Gain scaling: Multiply by PnG gain values
  2. Log transform: Apply PnE exponential transform if present (value = a × 10^(b × raw))
  3. Time scaling: Convert time channel to proper units

Use preprocess=False when you need raw values for modification or custom transforms.

Common Workflows

Workflow: Batch FCS Summary
python
from pathlib import Path
from flowio import FlowData
import pandas as pd

fcs_files = list(Path("data/").glob("*.fcs"))
summaries = []
for f in fcs_files:
    try:
        flow = FlowData(str(f), only_text=True)
        summaries.append({
            "file": f.name, "version": flow.version,
            "events": flow.event_count, "channels": flow.channel_count,
            "date": flow.text.get("$DATE", "N/A"),
        })
    except Exception as e:
        print(f"Error: {f.name}: {e}")

df = pd.DataFrame(summaries)
print(df)
Workflow: FCS to DataFrame with Channel Statistics
python
from flowio import FlowData
import pandas as pd
import numpy as np

flow = FlowData("sample.fcs")
df = pd.DataFrame(flow.as_array(), columns=flow.pnn_labels)

# Per-channel statistics
for col in df.columns:
    print(f"{col}: mean={df[col].mean():.1f}, median={df[col].median():.1f}, std={df[col].std():.1f}")

# Export
df.to_csv("output.csv", index=False)
print(f"Exported {len(df)} events, {len(df.columns)} channels")

Key Parameters

ParameterFunctionDefaultOptionsEffect
preprocessas_array()TrueTrue/FalseApply gain/log scaling
only_textFlowData()FalseTrue/FalseSkip DATA segment (metadata only)
ignore_offset_discrepancyFlowData()FalseTrue/FalseTolerate HEADER/TEXT offset mismatch
use_header_offsetsFlowData()FalseTrue/FalsePrefer HEADER over TEXT offsets
ignore_offset_errorFlowData()FalseTrue/FalseSkip all offset validation
null_channel_listFlowData()NoneList of namesExclude channels during parsing
nextdata_offsetFlowData()Nonebyte offsetRead specific dataset in multi-dataset files
opt_channel_namescreate_fcs()NoneList of namesDescriptive channel names (PnS)
metadatacreate_fcs()NoneDictCustom TEXT segment key-value pairs
Show full SKILL.md (281 more words)Show less

Best Practices

  1. Use only_text=True for metadata scanning: When processing many files, skip DATA segment parsing for 10-100x speedup.

  2. Use preprocess=False for data modification: Always work with raw values when filtering/modifying events, then re-export. Preprocessing is irreversible.

  3. Anti-pattern — modifying flow.events directly: FlowIO does not support in-place event modification. Extract with as_array(), modify, then create_fcs() to save.

  4. Preserve metadata on re-export: Pass flow.text as metadata to create_fcs() to retain original acquisition info.

  5. Check for multi-dataset files: Catch MultipleDataSetsError and use read_multiple_data_sets() — some instruments write multiple acquisitions into one file.

Common Recipes

Recipe: Extract Fluorescence Channels Only
python
from flowio import FlowData
import numpy as np

flow = FlowData("sample.fcs")
events = flow.as_array()
fluoro = events[:, flow.fluoro_indices]
names = [flow.pnn_labels[i] for i in flow.fluoro_indices]
print(f"Fluorescence channels: {names}, shape: {fluoro.shape}")
Recipe: File Inspection Report
python
from flowio import FlowData

flow = FlowData("unknown.fcs")
print(f"Version: {flow.version} | Events: {flow.event_count:,} | Channels: {flow.channel_count}")
for i, (pnn, pns) in enumerate(zip(flow.pnn_labels, flow.pns_labels)):
    ctype = "scatter" if i in flow.scatter_indices else "fluoro" if i in flow.fluoro_indices else "time" if i == flow.time_index else "other"
    print(f"  [{i}] {pnn:10s} | {pns:30s} | {ctype}")
for key in ["$DATE", "$CYT", "$INST", "$SRC"]:
    print(f"  {key}: {flow.text.get(key, 'N/A')}")
Recipe: Normalize Events to [0, 1] Range

When to use: Prepare fluorescence channels for machine learning or cross-sample comparison.

python
from flowio import FlowData
import numpy as np

flow = FlowData("sample.fcs")
events = flow.as_array()

# Normalize each fluorescence channel to [0, 1]
fluoro_idx = flow.fluoro_indices
fluoro = events[:, fluoro_idx]
pnr = np.array(flow.pnr_values)[fluoro_idx]  # Per-channel max range
normalized = fluoro / pnr
print(f"Normalized shape: {normalized.shape}, range: [{normalized.min():.3f}, {normalized.max():.3f}]")

Troubleshooting

ProblemCauseSolution
DataOffsetDiscrepancyErrorHEADER/TEXT offset mismatchUse ignore_offset_discrepancy=True
MultipleDataSetsErrorFile contains multiple datasetsUse read_multiple_data_sets() instead
FCSParsingErrorCorrupt or non-standard FCS fileTry ignore_offset_error=True; verify file is valid FCS
Out of memory on large filesMillions of events loaded at onceUse only_text=True for metadata; process in chunks by channel
Unexpected channel countNull/padding channels in fileUse null_channel_list=["Time", "Null"] to exclude
Modified data has wrong valuesApplied preprocessing before modificationUse preprocess=False for raw data when modifying events
Channel names missing (empty PnS)Instrument didn't set descriptive namesUse pnn_labels (short names) instead; PnS is optional in FCS spec
  • matplotlib-scientific-plotting — create scatter plots, density plots, and histograms from extracted cytometry data
  • scikit-learn-machine-learning — clustering and dimensionality reduction on cytometry event data

References

© jaechang-hits, BSD-3-Clause. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/cell-biology/flowio-flow-cytometry of jaechang-hits/SciAgent-Skills.

Open the folder on GitHubat commit 82c862c

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in jaechang-hits/SciAgent-Skills, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Flowio Flow Cytometry 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.

Flowio Flow Cytometry compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Flowio Flow Cytometry this skilljaechang-hits/SciAgent-Skills3741 repos~3kAutomated safety check: PassBSD-3-Clause
Exploratory Data AnalysisOleafly/Oleafly2122 repos~3.4kAutomated safety check: NotesMIT
Verified Data Analysis with pandaspipeshub-ai/pipeshub-ai3.8k—~1.2kAutomated safety check: PassApache-2.0
Vaex Out-of-Core DataFramesdavila7/claude-code-templates33k12 repos~1.6kAutomated safety check: PassMIT
Hybrid-Engine Data Analysiscode-yeongyu/oh-my-openagent70k—~1.4kAutomated safety check: PassCustom licence
Flowiodavila7/claude-code-templates33k10 repos~4.2kAutomated safety check: PassMIT

Similar skills

  • Perform bounded, local exploratory analysis of explicitly supported scientific files.

    212 GitHub starsUsed in 2 repos~3.4k tokens
    Data & AnalyticsAuto-check: notes
  • Verified Data Analysis with pandas

    pipeshub-ai/pipeshub-ai

    Loads, cleans, aggregates and joins tabular data with pandas under a verification rule: every number reported must be one that the code actually printed.

    3.8k GitHub stars~1.2k tokensUpdated today
    Data & AnalyticsAuto-check passed
  • Vaex Out-of-Core DataFrames

    davila7/claude-code-templates

    Processes tabular datasets too large for RAM with Vaex: lazy DataFrames, fast aggregations, big-data plots and ML pipelines over CSV, HDF5, Arrow and Parquet.

    33k GitHub starsUsed in 12 repos~1.6k tokens
    Data & AnalyticsAuto-check passed
  • Hybrid-Engine Data Analysis

    code-yeongyu/oh-my-openagent

    Analyzes CSV, Parquet and JSON data with DuckDB, Polars, numpy and matplotlib, preferring a persistent kernel over repeated one-shot processes.

    70k GitHub stars~1.4k tokensUpdated today
    Data & AnalyticsAuto-check passed
  • Flowio

    davila7/claude-code-templates

    Parse FCS (Flow Cytometry Standard) files v2.0-3.1. An agent skill from davila7/claude-code-templates.

    33k GitHub starsUsed in 10 repos~4.2k tokens
    Data & AnalyticsAuto-check passed
  • Data Analysis

    EXboys/skilllite

    Analyze CSV/JSON data with statistics, filtering, and aggregation.

    170 GitHub stars~176 tokensUpdated 14 days ago
    Data & AnalyticsAuto-check passed

More from jaechang-hits/SciAgent-Skills

All 169 skills in this repo
  • Neb Irc Activation Energy

    jaechang-hits/SciAgent-Skills

    NEB-IRC activation energy pipeline for reaction barriers using GFN2-xTB and pysisyphus.

    374 GitHub stars~4k tokensUpdated 11 days ago
    Auto-check passed
  • Molecular Visualization 3dmol

    jaechang-hits/SciAgent-Skills

    3Dmol.js WebGL molecular visualization emitted as self-contained HTML.

    374 GitHub stars~3.2k tokensUpdated 11 days ago
    Auto-check passed
  • Cobrapy Metabolic Modeling

    jaechang-hits/SciAgent-Skills

    Constraint-based (COBRA) analysis of genome-scale metabolic models: FBA, FVA, knockouts, flux sampling, production envelopes, gapfilling, media optimization.

    374 GitHub starsUsed in 1 repo~4.9k tokens
    Auto-check passed
  • Rdkit Chemdraw Cdxml

    jaechang-hits/SciAgent-Skills

    Read, write, and edit ChemDraw CDX/CDXML files with RDKit's rdkit.Chem.rdChemDraw plus direct XML editing, always paired with a rendered PNG.

    374 GitHub stars~6.9k tokensUpdated 11 days ago
    Auto-check passed
  • Pubmed Database

    jaechang-hits/SciAgent-Skills

    Programmatic PubMed access via NCBI E-utilities REST API. An agent skill from jaechang-hits/SciAgent-Skills.

    374 GitHub starsUsed in 1 repo~4.4k tokens
    Auto-check passed
  • Sciagent Skill Creator

    jaechang-hits/SciAgent-Skills

    Scaffold a new SciAgent-Skills entry. An agent skill from jaechang-hits/SciAgent-Skills.

    374 GitHub stars~2.3k tokensUpdated 11 days ago
    Auto-check passed

Works with

Questions about Flowio Flow Cytometry

What does Flowio Flow Cytometry do?

Parse/write FCS (Flow Cytometry) files v2.0-3.1. An agent skill from jaechang-hits/SciAgent-Skills. Flowio Flow Cytometry is an agent skill from jaechang-hits/SciAgent-Skills.1.

When should I use Flowio Flow Cytometry?

Flowio Flow Cytometry fits situations like: tasks that involve CSV and tabular files.

How do I install Flowio Flow Cytometry in Claude Code?

Run `npx skills add jaechang-hits/SciAgent-Skills --skill flowio-flow-cytometry -a claude-code`. Or copy the skill folder (skills/cell-biology/flowio-flow-cytometry in jaechang-hits/SciAgent-Skills) into .claude/skills/flowio-flow-cytometry in your project. Claude Code loads it when a task matches its description.

How do I install Flowio Flow Cytometry in Codex?

Run `npx skills add jaechang-hits/SciAgent-Skills --skill flowio-flow-cytometry -a codex`. Or copy the skill folder (skills/cell-biology/flowio-flow-cytometry in jaechang-hits/SciAgent-Skills) into .agents/skills/flowio-flow-cytometry in your project. Codex loads it when a task matches its description.

Can I use Flowio Flow Cytometry in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jaechang-hits/SciAgent-Skills --skill flowio-flow-cytometry -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/flowio-flow-cytometry, .gemini/skills/flowio-flow-cytometry, .github/skills/flowio-flow-cytometry and .opencode/skills/flowio-flow-cytometry in your project.

What does Flowio Flow Cytometry need to run?

Going by SKILL.md and its folder, Flowio Flow Cytometry needs the command-line tools its instructions call (pip). Our summary lists: Python 3.

Does Flowio Flow Cytometry access the network?

SKILL.md names 2 domains. As links in the text: github.com and isac-net.org. This is read from the text; nothing was executed.

Is Flowio Flow Cytometry safe to install?

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.

What licence does Flowio Flow Cytometry use?

Flowio Flow Cytometry is published under the BSD-3-Clause licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Flowio Flow Cytometry use?

About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Flowio Flow Cytometry?

Skills that share tags, products or a category with Flowio Flow Cytometry: Exploratory Data Analysis (Oleafly/Oleafly, 212 stars), Verified Data Analysis with pandas (pipeshub-ai/pipeshub-ai, 3.8k stars), Vaex Out-of-Core DataFrames (davila7/claude-code-templates, 33k stars) and Hybrid-Engine Data Analysis (code-yeongyu/oh-my-openagent, 70k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Flowio Flow Cytometry?

jaechang-hits (a GitHub user) maintains it in jaechang-hits/SciAgent-Skills, which has 374 GitHub stars. The repository holds 169 skills in this directory. The repository was last updated on September 29, 2026.

Source: jaechang-hits/SciAgent-Skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.