Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add SteadfastAsArt/geoscience-skills --skill dlisiogit clone --depth 1 https://github.com/SteadfastAsArt/geoscience-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/steadfastasart/geoscience-skills/dlisio)<a href="https://agentmods.dev/skills/steadfastasart/geoscience-skills/dlisio"><img src="https://agentmods.dev/badge/skills/steadfastasart/geoscience-skills/dlisio/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/steadfastasart/geoscience-skills/dlisio"><img src="https://agentmods.dev/badge/skills/steadfastasart/geoscience-skills/dlisio.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00116 | $0.01394 |
| Opus 5.5 | $0.00046 | $0.00558 |
| Sonnet 5.5 | $0.00023 | $0.00279 |
| Haiku 4.5 | $0.00012 | $0.00139 |
Grade A, and why
dlisio scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 127 lines — stays where its author put it; the contents beside it link to each section on GitHub.
DLIS/LIS reading and controlled LAS export
Use dlisio for binary RP66 DLIS and LIS79 input. It returns structured NumPy arrays and metadata objects; it does not write DLIS. Use lasio for LAS.
Select a logical file and frame
Inspect the physical file before selecting data. Logical files and frames may
have different depths, sampling rates and channel identities. dlis.load()
returns a PhysicalFile context manager, not a generator. Read array data
inside the context, then retain copied arrays or DataFrames after closing it.
from dlisio import dlis
def inventory(path):
items = []
with dlis.load(str(path)) as files:
for logical_index, logical in enumerate(files):
for frame_index, frame in enumerate(logical.frames):
items.append({
'logical_file': logical_index, 'frame': frame_index,
'fingerprint': frame.fingerprint,
'index_type': frame.index_type, 'index': frame.index,
'channels': [(ch.fingerprint, ch.units, ch.dimension)
for ch in frame.channels],
})
return items
A channel's identity includes type, mnemonic, origin and copy number. Names
alone need not be unique. Use channel.fingerprint to access its array field;
frame.curves() uses fingerprints as dtype titles even when names are disambiguated.
The FRAMENO field records frame sequence numbers, not measured depth.
Read scalar and array channels
from dlisio import dlis
import pandas as pd
def read_frame(path, logical_file_index=0, frame_index=0):
with dlis.load(str(path)) as files:
if not 0 <= logical_file_index < len(files):
raise ValueError('Logical file index out of range')
logical = files[logical_file_index]
if not 0 <= frame_index < len(logical.frames):
raise ValueError('Frame index out of range')
frame = logical.frames[frame_index]
records = frame.curves()
scalar = {name: records[name].copy() for name in records.dtype.names
if records[name].ndim == 1}
arrays = {ch.fingerprint: records[ch.fingerprint].copy()
for ch in frame.channels if records[ch.fingerprint].ndim > 1}
metadata = {'frame': frame.fingerprint, 'index_type': frame.index_type,
'index': frame.index,
'channels': {ch.fingerprint: {'name': ch.name, 'units': ch.units,
'dimension': ch.dimension} for ch in frame.channels}}
return pd.DataFrame(scalar), arrays, metadata
What ships with it
3 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago Changed · -55 lines f2bd27cbdca6
- 1mo ago Changed · +2 lines · +1 tokens per session ee0b589de333
- 2mo ago First seen · 180 lines · 115 tokens per session scan A 2a37c6b559b4
dlisio is a skill published in the GitHub repository SteadfastAsArt/geoscience-skills (73 stars, last pushed 1mo ago), licensed MIT. It adds 116 tokens to every session and 1,394 once invoked, about $0.0005 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
xarray-netcdf
Labeled multi-dimensional array analysis with xarray: NetCDF/HDF5 I/O, lazy Dask loading, rechunking, Zarr stores, and CF conventions.
obspy-seismology
Seismological data analysis with ObsPy — FDSN waveform download, response removal, phase picking, moment tensor inversion, and seismicity mapping.
jupyter-notebook
Iterative Python via live Jupyter kernel (hamelnb).
pennylane
Builds and differentiates PennyLane quantum circuits, hybrid PyTorch or JAX models, molecular VQE and QAOA workflows. Use for variational quantum algorithms, quantum machine learning, simulator validation, and moving validated circuits to provider plugins. For hardware-specific compilation use qiskit or cirq; for…
cuopt-numerical-optimization-api
LP, MILP, and QP (beta) with cuOpt — Python, C, and CLI. Use when the user is solving LP, MILP, or QP with any cuOpt interface.
rocm-kernels
Provides guidance for writing and benchmarking optimized Triton kernels for AMD GPUs (MI355X, R9700) on ROCm, targeting HuggingFace diffusers (LTX-Video, SD3, FLUX) and transformers. Core kernels: RMSNorm, RoPE 3D, GEGLU, AdaLN. Includes XCD swizzle, autotune, diffusers integration patterns, and LTX-Video pipeline…