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 pygimligit 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/pygimli)<a href="https://agentmods.dev/skills/steadfastasart/geoscience-skills/pygimli"><img src="https://agentmods.dev/badge/skills/steadfastasart/geoscience-skills/pygimli/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/pygimli"><img src="https://agentmods.dev/badge/skills/steadfastasart/geoscience-skills/pygimli.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.01415 |
| Opus 5.5 | $0.00046 | $0.00566 |
| Sonnet 5.5 | $0.00023 | $0.00283 |
| Haiku 4.5 | $0.00012 | $0.00142 |
Grade A, and why
pygimli 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 — 180 lines — stays where its author put it; the contents beside it link to each section on GitHub.
pyGIMLi - Geophysical Inversion
Quick Reference
import pygimli as pg
from pygimli.physics import ert, srt
# Load ERT data
data = ert.load("survey.ohm")
# Invert
mgr = ert.ERTManager(data)
model = mgr.invert(lam=20, verbose=True)
# View result
mgr.showResult()
Key Classes
| Class | Purpose |
|---|---|
pg.Mesh |
Finite element meshes |
pg.DataContainer |
Survey data and geometry |
pg.Inversion |
Base inversion framework |
ert.ERTManager |
ERT processing and inversion |
srt.SRTManager |
Seismic refraction inversion |
Essential Operations
Load and View ERT Data
import pygimli as pg
from pygimli.physics import ert
data = ert.load("survey.ohm")
print(f"Measurements: {data.size()}")
ert.showData(data) # Pseudosection
ERT Inversion
from pygimli.physics import ert
mgr = ert.ERTManager(data)
model = mgr.invert(
lam=20, # Regularization
verbose=True
)
mgr.showResult()
resistivity = mgr.model
Seismic Refraction
from pygimli.physics import srt
data = srt.load("traveltimes.sgt")
mgr = srt.SRTManager(data)
model = mgr.invert(lam=30, zWeight=0.3)
mgr.showResult()
Create Custom Mesh
import pygimli as pg
from pygimli.physics import ert
data = ert.load("survey.ohm")
mesh = pg.meshtools.createParaMesh(
data.sensors(),
quality=34.0,
paraMaxCellSize=5,
boundary=2
)
pg.show(mesh)
Save and Export
# Save mesh and model
mgr.mesh.save("result_mesh.bms")
pg.save(model, "resistivity_model.vector")
# Export to VTK for ParaView
mgr.mesh.exportVTK("result", mgr.model)
Array Types
| Code | Array |
|---|---|
wa |
Wenner-alpha |
wb |
Wenner-beta |
dd |
Dipole-dipole |
pd |
Pole-dipole |
pp |
Pole-pole |
slm |
Schlumberger |
gr |
Gradient |
Data Formats
| Format | Extension | Description |
|---|---|---|
| BERT/pyGIMLi | .ohm | Unified data format |
| Syscal | .txt | IRIS export |
| Res2DInv | .dat | 2D inversion format |
| ABEM | .ohm | ABEM Terrameter |
| SRT | .sgt | Seismic traveltimes |
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 · +2 lines · +1 tokens per session bcb7423864c9
- 2mo ago First seen · 178 lines · 115 tokens per session scan A a08ffaadc556
pygimli 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,415 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…