Install any skill in seconds. Free to start, no credit card required.
Get Started Free →This skill should be used when the user asks to "run initial analysis", "analyze single-cell data", "QC my data", "run bioinformatics pipeline", "generate analysis report", "explore my dataset", "do exploratory data analysis", "initial data analysis", or needs to perform quality control, dimensionality reduction, clustering, or marker analysis on single-cell biology data (CyTOF, scRNA-seq, flow cytometry, proteomics).
.claude/skills/openlair-init-analysis/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 16% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 12% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 221% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -26% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 31% | 0% |
Automated 7-step analysis pipeline for high-dimensional single-cell biology data with plain-language report generation.
The pipeline auto-detects input data type:
| Data Type | File Formats | Detection Pattern | |-----------|-------------|-------------------| | scRNA-seq | .h5ad, .h5 (10X), .mtx + barcodes | Gene names, count matrix | | CyTOF | .csv, .h5ad | Phospho-markers (p.ERK, p.AKT, etc.) | | Flow cytometry | .fcs, .csv | Surface markers, scatter channels |
Run the complete 7-step analysis:
bashpython3 scripts/run_pipeline.py <input_path> \ [--data-type auto|cytof|scrnaseq|flow] \ [--subsample 500] \ [--output-dir ./analysis_output] \ [--report-style clinical|technical]
Arguments:
input_path: Path to data file (.h5ad, .csv, .h5) or directory of CSV files--data-type: Data type override (default: auto for auto-detection)--subsample: Max cells per group for tractable analysis (default: 500)--output-dir: Output directory (default: ./analysis_output)--report-style: clinical for plain-language medical summaries, technical for bioinformatics detail (default: clinical)Output Files:
analysis_output/
├── figures/ # All generated plots (PNG)
├── processed/
│ └── adata_processed.h5ad # Processed AnnData object
├── report.html # Complete analysis report
└── analysis_summary.json # Machine-readable summary statisticsFor custom workflows, import individual step modules:
pythonfrom step1_load_data import load_data from step2_qc import run_qc from step3_normalize import normalize_data from step4_dim_reduction import run_dim_reduction from step5_clustering import run_clustering from step6_marker_analysis import run_marker_analysis from step7_report import generate_report
Each step function accepts an AnnData object and returns the modified AnnData plus a dictionary of results/figures.
Load data from various formats into AnnData. For directories of CSVs (e.g., CyTOF per-cell-line files), automatically concatenate with metadata. Apply subsampling if dataset is large.
Data-type-aware QC:
adata.raw for downstream differential analysis.PCA with scree plot and loadings analysis, followed by UMAP visualization colored by all available metadata and key markers.
Leiden graph-based clustering at multiple resolutions. Evaluate with ARI, NMI, Silhouette scores if reference labels exist. Visualize cluster composition across metadata categories.
Wilcoxon rank-sum differential expression per cluster. Marker correlation heatmap. If treatment/condition metadata exists: treatment response analysis with boxplots and effect heatmaps. If time metadata exists: time-course dynamics.
Generate HTML report with embedded figures and interpretations. Two styles:
For detailed guidance, consult:
references/plot_interpretation_guide.md - How to explain each plot type to non-expertsreferences/cytof_specifics.md - CyTOF-specific QC, normalization, and markersreferences/scrnaseq_specifics.md - scRNA-seq-specific processing detailsreferences/statistical_methods.md - Plain-language glossary of statistical methodsnan_to_num after z-score scaling — constant-value features produce NaN.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 18,304 | 17,259 | -6% | 1 | 1 | 0% | 474 | 1,549 | +227% | 0 | 0 | — |
case-02 | fail→fail | 38,417 | 28,821 | -25% | 1 | 1 | 0% | 5,599 | 1,553 | -72% | 0 | 0 | — |
case-03 | fail→fail | 17,497 | 15,616 | -11% | 1 | 1 | 0% | 435 | 1,509 | +247% | 0 | 0 | — |
case-04 | fail→pass | 19,426 | 17,054 | -12% | 1 | 1 | 0% | 2,642 | 3,058 | +16% | 0 | 0 | — |
case-05 | pass→pass | 18,051 | 17,036 | -6% | 1 | 1 | 0% | 2,215 | 3,321 | +50% | 0 | 0 | — |
case-06 | fail→pass | 20,193 | 15,496 | -23% | 1 | 1 | 0% | 2,636 | 2,949 | +12% | 0 | 0 | — |
case-07 | fail→fail | 17,330 | 18,219 | +5% | 1 | 1 | 0% | 1,928 | 3,548 | +84% | 0 | 0 | — |
case-08 | pass→pass | 18,118 | 15,670 | -14% | 1 | 1 | 0% | 2,054 | 2,912 | +42% | 0 | 0 | — |
case-09 | fail→pass | 9,052 | 8,379 | -7% | 1 | 1 | 0% | 599 | 1,923 | +221% | 0 | 0 | — |
case-10 | fail→pass | 19,494 | 8,283 | -58% | 1 | 1 | 0% | 2,434 | 1,792 | -26% | 0 | 0 | — |
case-11 | fail→pass | 18,352 | 14,913 | -19% | 1 | 1 | 0% | 2,301 | 3,024 | +31% | 0 | 0 | — |
case-12 | fail→pass | 21,992 | 7,775 | -65% | 1 | 1 | 0% | 1,920 | 1,690 | -12% | 0 | 0 | — |
case-13 | fail→fail | 13,563 | 7,056 | -48% | 1 | 1 | 0% | 1,366 | 1,584 | +16% | 0 | 0 | — |
case-14 | fail→fail | 10,812 | 6,912 | -36% | 1 | 1 | 0% | 873 | 1,496 | +71% | 0 | 0 | — |
case-15 | fail→pass | 13,957 | 7,431 | -47% | 1 | 1 | 0% | 993 | 1,610 | +62% | 0 | 0 | — |
case-16 | fail→pass | 20,275 | 17,107 | -16% | 1 | 1 | 0% | 2,354 | 3,149 | +34% | 0 | 0 | — |
case-17 | fail→fail | 20,061 | 12,532 | -38% | 1 | 1 | 0% | 2,574 | 2,451 | -5% | 0 | 0 | — |
case-18 | pass→pass | 15,182 | 8,506 | -44% | 1 | 1 | 0% | 1,783 | 1,758 | -1% | 0 | 0 | — |
case-19 | fail→pass | 16,238 | 8,352 | -49% | 1 | 1 | 0% | 1,958 | 1,790 | -9% | 0 | 0 | — |
case-20 | fail→fail | 19,627 | 31,475 | +60% | 1 | 1 | 0% | 2,687 | 6,328 | +136% | 0 | 0 | — |
case-21 | fail→pass | 18,314 | 13,571 | -26% | 1 | 1 | 0% | 2,307 | 2,827 | +23% | 0 | 0 | — |
case-22 | fail→pass | 20,976 | 17,440 | -17% | 1 | 1 | 0% | 2,684 | 3,118 | +16% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +50 percentage points is the difference between those two pass rates over the 19 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/31/2026 | +61% |
| gemini-3.6-flash | verified | 8/7/2026 | +36% |
Other measured skills in the registry, with their headline benchmark lift.