exploratory-data-analysis — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited exploratory-data-analysis (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Inspect scientific files before downstream analysis. The bundled script recognizes more than 100 simple and compound suffixes and writes a bounded Markdown report. It performs content-level analysis only for the common formats listed below; other recognized formats receive file metadata and a reference-catalog entry.
The six reference files contain 239 format entries. Some entries describe the same suffix in different domain contexts, so this is not a count of unique formats or implemented parsers.
Bundled content parsers:
.npy, .npz), CSV/TSV samples, JSON, and HDF5| Task | Action |
|---|---|
| Unknown file | Detect extension and load the matching reference file before analyzing content. |
| Tabular data | Summarize dimensions, types, missingness, ranges, outliers, duplicates, and candidate keys. |
| Sequence data | Count records, length distribution, GC content, quality scores when available, and format issues. |
| Imaging or arrays | Report shape, channels/axes, dtype, value range, metadata, and scale/calibration when present. |
| Final report | Write a concise Markdown EDA report with findings, caveats, and next analysis options. |
The reference catalog is organized into six categories. These entries guide custom analysis; they do not imply that eda_analyzer.py parses every listed format.
Structure files, computational chemistry outputs, molecular dynamics trajectories, and chemical databases.
File types include: .pdb, .cif, .mol, .mol2, .sdf, .xyz, .smi, .gro, .log, .fchk, .cube, .dcd, .xtc, .trr, .prmtop, .psf, and more.
Reference file: references/chemistry_molecular_formats.md
Sequence data, alignments, annotations, variants, and expression data.
File types include: .fasta, .fastq, .sam, .bam, .vcf, .bed, .gff, .gtf, .bigwig, .h5ad, .loom, .counts, .mtx, and more.
Reference file: references/bioinformatics_genomics_formats.md
Microscopy images, medical imaging, whole slide imaging, and electron microscopy.
File types include: .tif, .nd2, .lif, .czi, .ims, .dcm, .nii, .mrc, .dm3, .vsi, .svs, .ome.tiff, and more.
Reference file: references/microscopy_imaging_formats.md
NMR, mass spectrometry, IR/Raman, UV-Vis, X-ray, chromatography, and other analytical techniques.
File types include: .fid, .mzML, .mzXML, .raw, .mgf, .spc, .jdx, .xy, .cif (crystallography), .wdf, and more.
Reference file: references/spectroscopy_analytical_formats.md
Mass spec proteomics, metabolomics, lipidomics, and multi-omics data.
File types include: .mzML, .pepXML, .protXML, .mzid, .mzTab, .sky, .mgf, .msp, .h5ad, and more.
Reference file: references/proteomics_metabolomics_formats.md
Arrays, tables, hierarchical data, compressed archives, and common scientific formats.
File types include: .npy, .npz, .csv, .xlsx, .json, .hdf5, .zarr, .parquet, .mat, .fits, .nc, .xml, and more.
Reference file: references/general_scientific_formats.md
When a user provides a file path, first identify the file type:
Example:
User: "Analyze data.fastq"
→ Extension: .fastq
→ Category: bioinformatics_genomics
→ Format: FASTQ Format (sequence data with quality scores)
→ Reference: references/bioinformatics_genomics_formats.mdBased on the file type, read the corresponding reference file to understand:
Search the reference file for the specific extension (e.g., search for "### .fastq" in bioinformatics_genomics_formats.md).
Use the bundled script for its supported parsers, or implement a domain-specific analysis after reading the relevant reference entry.
Option A: Run the analyzer from the checkout
uv run skills/exploratory-data-analysis/scripts/eda_analyzer.py <filepath> [output.md]Option B: Run the installed analyzer
uv run ~/.agents/skills/exploratory-data-analysis/scripts/eda_analyzer.py <filepath> [output.md]PEP 723 metadata in the script creates an isolated environment with the libraries used by its content parsers.
Option C: Custom analysis in the conversation Based on the format information from the reference file, perform appropriate analysis:
For tabular data (CSV, TSV, Excel):
For sequence data (FASTA, FASTQ):
For images (TIFF, ND2, CZI):
For arrays (NPY, HDF5):
The bundled script reports file metadata, the matching reference entry, sampled or full content statistics, parser errors, and format-level follow-up options. Label every sample explicitly. For a custom analysis, use the following sections:
#### Required Sections:
/beautiful-data-viz: greyscale first, color only to encode information)#### Template Location Use assets/report_template.md as a guide for report structure.
Save the markdown report with a descriptive filename:
{original_filename}_eda_report.mdexperiment_data.fastq → experiment_data_eda_report.mdFor multiple related files, write one report per file, then add a short comparison summary covering shared structure, mismatches, and how the files relate before recommending an integration path.
Reference files are large (10,000+ words each); do not load one whole. Search for the section heading matching the extension (e.g., grep "### .pdb" in references/chemistry_molecular_formats.md) and extract just that entry. Each entry gives the format description, typical data, use cases, Python libraries with code examples, and the recommended EDA approach. When analyzing several files of the same type, reuse the extracted entry instead of re-reading the reference.
/beautiful-data-viz), tables, or temporary summaries needed to support the report..npy inspection uses memory mapping, FASTA uses full-file streaming, FASTQ is an explicitly bounded streaming sample, and each implemented format family has a fixture.# User provides: "Analyze reads.fastq"
# 1. Detect file type
extension = '.fastq'
category = 'bioinformatics_genomics'
# 2. Read reference info
# Search references/bioinformatics_genomics_formats.md for "### .fastq"
# 3. Perform analysis: stream records instead of loading the file into memory
from Bio import SeqIO
lengths = []
for record in SeqIO.parse('reads.fastq', 'fastq'):
lengths.append(len(record))
# also accumulate GC counts and per-read mean quality here
# 4. Generate report
# Include: format description, analysis results, QC recommendations
# 5. Save as: reads_eda_report.mdCustom analysis of formats outside the bundled parsers may require specialized libraries:
Problem: Import error when trying to read a file
Solution: Add the parser to the project environment with uv, or run a one-off command with uv run --with.
uv run --with biopython python analysis.pyCommon requirements by category:
biopython, pysam, pyBigWigrdkit, mdanalysis, cclibtifffile, nd2reader, aicsimageio, pydicomnmrglue, pymzml, pyteomicspandas, numpy, h5py, scipyIf a file extension is not in the references:
For very large files:
On a shared HPC login node, inspect only small samples. Submit full-file inspection as a batch job (sbatch) with explicit CPU, memory, and thread limits.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.