large-file
Use BEFORE reading any data file that could be large (CSV/TSV, Parquet, HDF5, FITS, NetCDF, NDJSON, genomics FASTQ/FASTA/VCF/BAM, GRIB, ROOT, or big text/simulation logs like VASP OUTCAR). Returns a compact memory pointer — header/schema/shape/sample/key numbers — by introspection and sampling in bounded memory, so you never load a file bigger than the context window into the model. Reference data via the pointer; read specific ranges deterministically.
git clone --depth 1 https://github.com/ai4s-research/open-science /tmp/large-file && cp -r /tmp/large-file/runtime/skills/core/large-file ~/.claude/skills/large-fileSKILL.md
# Large files: reference, don't load
Scientific files routinely dwarf any context window (90 GB FASTQ, multi-GB
HDF5/FITS snapshots, 20 GB+ NetCDF rasters, huge VASP logs). Reading them raw
both OOMs and hallucinates — the materials case that consumed 20M+ tokens and
**failed** succeeded in ~1200 tokens with a memory-pointer approach.
**Rule: never `cat`/read a whole data file into your context.** Probe it first,
work from the returned pointer (schema + sample + key numbers), then read only
the specific rows/columns/ranges you need with the real library.
## Probe a file
The probe ships beside this SKILL.md. Run it on any data file **before** opening
it:
```bash
python "$XDG_CONFIG_HOME/opencode/skills/large-file/large_file_probe.py" DATA_FILE [--sample N]
```
It prints one compact JSON pointer on stdout — always tiny, regardless of file
size (a 13 MB CSV → ~800 bytes; a 16 MB HDF5 → ~450 bytes).
## What you get back
- **Tables (CSV/TSV)** — column names + inferred dtypes, approximate row count
(streamed, constant memory), and a head **and** tail sample.
- **Parquet** — schema + row/column/row-group counts, from file metadata only
(no column data read).
- **HDF5** — the dataset tree with shapes and dtypes (no array data read).
- **FITS** — HDU list with dimensions and header keys (memmapped headers).
- **NetCDF** — dimensions and variables with dtypes.
- **NDJSON** — union of keys, record count, and a sample.
- **Genomics (stdlib, gzip-aware — `.gz` is seen through automatically):**
- **FASTQ** (`.fastq`/`.fq`, incl. `.fastq.gz`) — read count, read-length
min/max/mean over a bounded scan, and sample read ids (never full
sequences). A 90 GB FASTQ is counted by streaming, not loaded.
- **FASTA** (`.fasta`/`.fa`/`.fna`) — sequence count, total residues, sample ids.
- **VCF** (`.vcf`, incl. `.vcf.gz`) — variant count, sample names from the
`#CHROM` header, contigs, and a sample of variant rows.
- **BAM/CRAM** (`.bam`/`.cram`) — reference list + header via `pysam` (header
only, no alignment records read).
- **GRIB** (`.grib`/`.grib2`) — variables/coords via `cfgrib`, or a message
sample via `pygrib`.
- **ROOT** (`.root`) — tree/branch listing with entry counts via `uproot`
(metadata only).
- **Text / logs** — line count and head/tail; scientific logs (VASP `OUTCAR`,
`OSZICAR`) also get deterministic numeric extraction (e.g. final
`free energy TOTEN`, `energy(sigma->0)`, convergence flag) — the numbers, not
the prose.
Binary formats degrade gracefully: if the library (`pyarrow`/`h5py`/`astropy`/
`netCDF4`/`pysam`/`cfgrib`/`uproot`) isn't installed, the pointer says so with an
install hint — it never dumps raw bytes. FASTQ/FASTA/VCF need no library at all.
## Then read only what you need
Work from the pointer. When you need actual values, read a bounded slice with
the real library — never the whole file:
```python
import pandas as pd
df = pd.read_csv("big.csv", nrows=10_000) # a bounded window
df = pd.read_csv("big.csv", usecols=["id", "temp_c"]) # only needed columns
import pyarrow.parquet as pq
df = pq.read_table("big.parquet", columns=["val"]).to_pandas()
import h5py
with h5py.File("sim.h5") as h: block = h["density"][0:64, 0:64, :] # a sub-array
```
Report which columns/ranges you read, so the analysis stays traceable.A test skill that says hello. Use when you want to test skill loading or verify that the skill system is working.
Verify apps/desktop frontend changes visually without launching the Tauri app or a live model
Use whenever you write or run scientific analysis code (physics, earth/geo, biology, chemistry, or social science) in this workspace — before executing it and again after generating results. Runs a deterministic domain-correctness gate that catches code which runs but is scientifically wrong (unit/dimension mismatch, Euclidean distance on lat/lon without a CRS, 0-based/1-based coordinate and strand errors, impossible SMILES valence, uncorrected multiple comparisons, averaging a categorical code). Surfaces structured findings; never claims the code is correct.
Use when the user asks to run heavy or GPU work on Modal (the cloud compute platform) — writing a Modal function in the workspace, running it with the user's own `modal` CLI + token, and bringing results back. Data-to-compute for jobs too big for the laptop, without a Slurm cluster.
Use whenever you generate or review a chart, plot, table, or paper figure in this workspace, including work delegated by paper-writing, literature-survey, and experiment skills. Applies the Open Science publication style, enforces readable final-size layout for figures and tables, and rejects generic diagram-tool output as a publication figure. Interactive Plotly/HTML may be used for exploration, but paper delivery requires a static publication-ready export.
Use when the user asks to run, submit, monitor, or cancel a job on a remote machine over SSH — their own GPU/CPU server, a workstation, or a Slurm cluster ("the cluster", a login node, "my 3090 box", "the compute server"). Picks a saved machine, runs the work directly over SSH (or via Slurm when present), tracks it, and fetches results back into the workspace.
Use whenever you run statistical analysis for the social sciences (regression, hypothesis tests, econometrics) or read Stata (.dta) / SPSS (.sav) data in this workspace. Enforces an execute-don't-interpret boundary (surface estimates, don't volunteer causal claims), checks the analysis against a preregistration plan for HARKing, verifies reproducible seeds, and reproduces .dta/.sav estimates via R. Flags integrity risks; never certifies the analysis is sound.
Use when the user asks to review, verify, or audit a report, manuscript, or analysis in the workspace for traceability — resolving citations, flagging numbers with no source, and checking figures against the code that generated them. Emits a structured review block the app renders as reviewer findings. Verifies traceability, never "correctness".