Working knowledge of the geoML Python package (github.com/italo-goncalves/geoML): variational Gaussian processes for spatial data, implicit geological modelling, block models, drillhole data…

GPL-3.0Auto-check passedData & Analytics

Install Geoml

skills CLI
$ npx skills add italo-goncalves/geoML --skill geoml -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install italo-goncalves/geoML geoml --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/italo-goncalves/geoML.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/geoml/skills/geoml .claude/skills/geoml && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
geoml
GitHub stars
109
Token cost
~4.9k tokens
SKILL.md length
2,385 words
Files
20 (incl. references)
Skills in repo
1
Repo updated
First seen
Licence
GPL-3.0

At a glance

Working knowledge of the geoML Python package (github.com/italo-goncalves/geoML): variational Gaussian processes for spatial data, implicit geological modelling, block models, drillhole data…

  • Works in 5 steps: Looking things up: the catalogue → The package → Common intuitions → …
  • Any task involving geoML -- writing modelling code
  • SKILL.md covers 0. Looking things up: the…, 1. The package, 2. Common intuitions and 3. Datasets, plus 1 more section
  • Calls python and pip

What it does

Geoml is an agent skill from italo-goncalves/geoML. Working knowledge of the geoML Python package (github.com/italo-goncalves/geoML): variational Gaussian processes for spatial data, implicit geological modelling, block models, drillhole data, compositional and categorical variables, warping and likelihoods, inducing points and local experts, cross-validation and calibration. Use this skill for any task involving geoML -- writing modelling code or notebooks, reading its output, choosing a kernel/warping/likelihood, or navigating the package. It says what to build…

Its SKILL.md is about 4.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 21 other files, including reference files (for example `references/manual/01-why-another-geostatistics.md`, `references/manual/02-the-gp-is-kriging.md` and `references/manual/03-inducing-points-and-the-elbo.md`).

It sits in Data & Analytics, covering Machine learning and Performance reviews. It works with GitHub and Python. The repository describes itself as: Spatial modeling using machine learning concepts. The licence is GPL-3.0.

When your agent uses it

  • Any task involving geoML -- writing modelling code
  • Reading its output
  • Choosing a kernel/warping/likelihood
  • Navigating the package

Example prompts

  • “/geoml”

Requirements

  • Python 3

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Looking things up: the catalogue
  2. The package
  3. Common intuitions
  4. Datasets
  5. The manual

What it can do on your machine

Read from SKILL.md and the folder at commit d9b07c9. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python
    • pip

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • italo-goncalves.github.io

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Geoml loads about 4.9k tokens when it runs, and up to ~53k if it reads all its reference files. Until then it costs about 151 tokens; SKILL.md has 2,385 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~151
When it runs · the whole SKILL.md, loaded when a task matches
~4.9k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~53k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from italo-goncalves/geoML at commit d9b07c9, republished under its GPL-3.0 licence (© italo-goncalves). 2,385 words, ~4,911 tokens.

Download SKILL.mdSave it as .claude/skills/geoml/SKILL.md (or your agent's skills folder). This skill also uses 19 other files; get the full folder from GitHub.
name
geoml
description
Working knowledge of the geoML Python package (github.com/italo-goncalves/geoML): variational Gaussian processes for spatial data, implicit geological modelling, block models, drillhole data, compositional and categorical variables, warping and likelihoods, inducing points and local experts, cross-validation and calibration. Use this skill for any task involving geoML -- writing modelling code or notebooks, reading its output, choosing a kernel/warping/likelihood, or navigating the package. It says what to build and why; the installed package's catalogue says exactly what each class accepts.

geoML

How to use the geoML package: the object model, the workflow, the recommendations and the geostatistical intuitions its API takes for granted. It says what to build and why. It does not list arguments: the installed package answers that exactly, through its catalogue (§0). Where anything here disagrees with the code, trust the code.

Writing a notebook or example code? Read references/notebook-style.md first, for the import aliases, the workflow arc, the plotting conventions and the tree paths. Worked examples are the manual's chapters, in references/manual/, each run against the package at every release (§4).


0. Looking things up: the catalogue

Every class and function a model or a script may use is described by the installed geoML itself: arguments, defaults, bounds, how a node's size follows from its arguments, which parents it takes, and how stable it is. Ask it rather than guessing, and before writing any constructor call:

bash
python -m geoml.catalogue --show BoxCox          # one entry, as text
python -m geoml.catalogue --show BasicGP --json  # the same, as JSON
python -m geoml.catalogue --list                 # the categories
python -m geoml.catalogue --list warping         # one category's entries

A short name that means two things (Gaussian is a kernel and a likelihood) lists the dotted candidates instead; pass the dotted one. The answer is for the version installed where the command runs, which is the version the code will run against.

Stability. Every entry is one of three:

  • public: use freely.
  • experimental: works and is tested, but its interface or its recommendation may still change. Say so when you use one.
  • internal: kept so that old saved models load. Never build a new model with one; --list leaves them out.

Where geoML is not installed, the same descriptions are on the reference pages of the documentation site, https://italo-goncalves.github.io/geoML/reference/.


1. The package

Install:

bash
pip install git+https://github.com/italo-goncalves/geoML

Backend: TensorFlow 2.x + TensorFlow-Probability, GPU-accelerated. All computation is in float64: geostatistical matrices are ill-conditioned and float32 breaks the Cholesky factorizations. Realizations are stored as float32 (half the disk, every read widened back to float64); geoml.set_realization_dtype("float64") keeps them wide.

License: GPL-3 (dual-licensed; see README). Version: 0.9.0.

Layout: five subpackages (data, latent, math, stats, viz) plus the older plots, around modules left flat on purpose: models, likelihood, kernels, transform, warping, parameter, datasets, metrics, persistence, storage. A saved model records the dotted path of every class in it and imports it by that path when it loads, which is why those modules never move.

1.1 The object model
  • Containers hold data and predictions. PointData, the grids (Grid1D/Grid2D/Grid3D), the variable-size block model BlockSet3D, and triangulated meshes (Surface3D, Solid3D). A container holds variables (continuous, vector, compositional, categorical), and each variable holds columns: measurements, a prediction, variances, quantiles, realizations.
  • Everything in a container is reached by tree path. container.values("V/prediction") is a numpy array, container.get("V/quantiles/0.5") the column itself (for as_image() or get_contour()), container.tree() the picture of what is there. _metadata/... holds per-location facts the model never reads: hole ids, depths, folds, filters. Paths are in references/notebook-style.md §0.
  • A model is a latent network plus one likelihood per variable. models.VGPNetwork is the core. The network is built from latent nodes: an input node carrying the inducing points, GP nodes, and operations that combine them. Its leaves are where the likelihoods attach: pass one leaf per likelihood, or name them together with variables={"Rock": likelihood, ...}. A likelihood carries a warping, the monotone map from the data to the Gaussian scale the model works on.
  • Predictions are written into the target container, not returned. model.predict(grid) fills the grid's columns. grid.unpredicted() names what no prediction reached yet, so a cancelled or partial prediction is finished with model.predict(grid, where=grid.unpredicted()).
  • Long calls report and can be cancelled. Inside with geoml.progress(callback): training, prediction, refinement, cross-validation and mesh sets report each unit they finish; the callback raising cancels the call.
  • Everything trainable is a Parametric holding RealParameters, constrained through their transforms and trained by Adam. Bounds a constructor clips to are in the catalogue.
1.2 Worked example (Jura, categorical)
python
import geoml
import geoml.latent as gl, geoml.transform as tr
import geoml.kernels as kr, geoml.likelihood as lk

geoml.set_seed(1234)                      # BEFORE constructing anything
jura_train, _ = geoml.datasets.jura()
labels = list(jura_train.get("Landuse").labels)

network_input = gl.BasicInput(
    inducing_points=jura_train, transform=tr.Isotropic(0.5))
network_output = gl.BasicGP(
    parent=network_input, size=len(labels), kernel=kr.Matern32(),
    fix_range=True)

model = geoml.models.VGPNetwork(
    data=jura_train, variables="Landuse", latent_network=network_output,
    likelihoods=lk.CategoricalGaussianIndicator(n_components=len(labels)),
    options=geoml.models.GPOptions(verbose=False))
model.train_full(5)

grid = geoml.data.Grid2D(start=[0, 0], end=[6, 6], n=[21, 21])
model.predict(grid)                       # writes into the container
image = grid.get("Landuse/predicted").as_image()

model.to_dot() renders the network as a diagram. The full modelling arcs are the case-study chapters: Walker Lake (15), Jura with a non-stationary multivariate network (16), and a folded quartz vein in 3D (17).

1.3 Where things live
ModuleFor
datathe containers and variables, meshes, block models, drillholes (DrillholeData, converted to points and never fed to a model), Zarr storage, and data.inducing for building inducing points
latentthe nodes a network is built from
likelihood, warpingthe observation model and the map to the Gaussian scale
kernels, transformcovariance functions, and the transforms of the input they read (anisotropy, projections, faults)
modelsVGPNetwork, GPOptions, and the workflows as free functions: refine, cross_validate, search_throw
metrics, plotsscores, and figures in two backends (Explorer for print, Interactive for plotly)
datasetsthe bundled data (§3)

python -m geoml.catalogue --list CATEGORY gives the classes of each.

1.4 Recommendations

What was measured to work, as of this version. Arguments for each class are in the catalogue.

  • Warpings. A single positive grade: BoxCox then ZScore; where the data hold zeros, give BoxCox a shift of the order of the smallest positive value, not the default. A variable centred on zero: YeoJohnson then ZScore. A vector of grades: BoxCox, RobustPCA, ZScore, SinhArcsinh, ZScore, chained with ChainedWarping. These parametric links replaced Spline, which stays for saved models (with backbone="rq" if you use it anyway). One marginal transform is where the benefit stops: stacking rotation-and-spline pairs made held-out scores worse.
  • Noise law. For a skewed grade under a log-like link, prefer a Gaussian likelihood: a heavy-tailed law (Laplace, EpsilonInsensitive) pushed back through the link can have an unbounded variance in data units and over-wide intervals, though its bound may look better. For data with gross errors, likelihood.Mixture (experimental) names the bad readings, with its warping led by ZScore(robust=True).
  • Several populations. Where one variable is drawn from populations that differ in level or skew, ore and waste say, use likelihood.LikelihoodMixture over continuous likelihoods, each with its own warping. With shares="latent" the shares change from place to place: read them from a GP node of their own, apart from the populations', and where a domain was logged let a CategoricalGaussianIndicator with bias=True, trained on every logged interval rather than the assayed ones alone, read the same node. On one deposit it beat a single likelihood on every metal out of fold, but its intervals came out narrower than the held-out data supported; check them.
  • Inducing points. The data's own locations plus a regular backbone, divided into overlapping experts: data.inducing.experts over data.inducing.combine. Where the survey does not fill its box -- a fan of drillholes -- take the backbone from data.inducing.from_hull, which keeps the lattice inside the data's hull and a margin around it. Experts come out compact and share points with every neighbour once each borrows at least as many points as it has neighbours: keep experts large enough for their overlap (an overlap of 0.1 on 25-point experts cannot reach six neighbours). How many points a model can absorb depends on the whole configuration; measure it on held-out data rather than carrying a number across problems.
  • Structure. One variable influencing another: Linear off the first's field, added to the second's GP through LinearCombination, with unit_norm=False so the model can decline the influence. A field that is not stationary: GPWalk moves the coordinates and a stationary kernel reads the moved space. Build the GP reading the walk with isotropic=True: a range per direction there is a second description of the anisotropy, which belongs in the input's transform. Independent parts of a model can sit on independent trees, one leaf each. Chapter 16 builds the first two, one leaf per variable.
  • Depth. Since 0.9.0 a GP node reading another node's uncertain output averages its kernel over it, the covariance between locations included (the expected kernel, GPOptions(propagation="joint"), the default); a model saved before keeps the old rule, which made deep networks overconfident (propagation="marginal"). Build a deep network with the coordinates concatenated beside the inner GP (Concatenate(root, inner)). A GP on an uncertain input takes the Gaussian, exponential, Matérn or rational quadratic kernel; spherical and cubic are refused there, and the error message says so. On a GaussianInput a BasicGP takes the mixture's moments (the variance of the mean over the input included) and the likelihood integrates what its realizations leave out; UncertainInputGP is deprecated. A location error is still better left untold: a noise term absorbs it. That variance costs time and memory in proportion to the inducing points; experts do not shorten it, train_by_expert holds a fraction of it in memory.
  • Training. GPOptions(training_tolerance=0.01) stops once the bound has settled; the last few percent of the bound buys sharpness held-out data does not support.
  • Many experts. When memory grows with their number, train and predict an expert at a time: model.train_by_expert, model.predict_by_expert, and refine(..., by_expert=True) for a block model. It matched or beat train_svi on CRPS and on a deposit's rock types in a third to a half of the device memory, a little behind on rmse on a smooth synthetic field. Fewer, larger experts scored better than many small ones at a fixed total of inducing points. A deep GP fed by another needs the coordinates concatenated into its input to stay local; one fed by a GP alone spreads every expert over the field. Five nodes are refused; the message names them.
  • Validation. PointData.spatial_k_fold writes folds that resemble the real prediction task, models.cross_validate scores the model out of fold, and models.conformalize recalibrates the intervals. In-sample scores flatter; only out-of-fold ones speak for the ground between samples.
  • Block models. A BlockSet3D refined by models.refine: predict coarse, split only the blocks the prediction's surface runs through (a block the model is merely unsure about is left whole), predict what the split made. MeshSet contours a column for the prediction and every realization at once, with volumes measured as it goes.
Show full SKILL.md (793 more words)Show less
1.5 Theory → code

The papers and the code name the same things differently.

Paper conceptIn the code
Inducing points $\mathbf{T}$, $\mathbf{u}$the container given to BasicInput(inducing_points=…), read by the GP nodes above it
DGP uncertainty propagationeach node hands on a mean, a variance and its covariance with the inducing points; there is no separate class
Expected kernelinside the GP nodes, under GPOptions(propagation="joint")
Paciorek kernelthe propagation before 0.9.0, kept for older saves as propagation="marginal"
SDE nodelatent.GPWalk
Local expertsoverlapping inducing sets from data.inducing.experts
CLR transformwarping.CenteredLogRatio
PCA after CLRwarping.PCA / warping.RobustPCA
ε-insensitive likelihoodlikelihood.EpsilonInsensitive
Boundary / contact likelihoodlikelihood.CategoricalGaussianIndicator and its hierarchical twin
Structural / dip-strike fieldlatent.GradientConstrainedInput with directional data
Warped GPa warping chain on the likelihood (§1.4)
Multivariate weight matrix $\mathbf{M}$latent.LinearCombination
1.6 Gotchas
  • Reproducibility: call geoml.set_seed(seed) before constructing anything. It is the only knob: parameter initialization and a model's simulation stream both draw from it, and a saved model keeps its seed. cross_validate draws each fold's fresh variational state from the same generator, so two runs in a row differ; set the seed right before each run that must repeat. Under GPOptions(jit_predict=True) XLA draws other normals from the same seed: the latent moments agree, the realizations do not.
  • values() for what you compute with, get() for what you draw. Never values() a bare simulations path: it reads every realization into memory at once, fatal on a block model. Read one realization ("V/simulations/7") or reduce in row bands.
  • Open a store you only read with mode="r". A container's open defaults to "r+", and a prediction into it writes into the store. Read-only, a write is refused and the store stays as it was; to_zarr never writes over the store a container reads from.
  • The stored realizations are of the ground; a measurement scatters around it. Comparing a prediction with an assay needs model.predict_measurements, not the stored realizations.
  • A node inside the tree is predicted with model.predict_node, into a LatentVariable on the latent scale: what a GPWalk did to the coordinates, what a trend adds. Points only, never a block model; its realizations match the leaf's through operation nodes, not across a GP.
  • Do not build models in a loop and expect the memory back. TensorFlow keeps a trained model's graph machinery after the model is gone. cross_validate swaps data into one model for that reason; do the same.
  • Scripts use bare aliases (import geoml.latent as gl); package source uses underscore-prefixed ones. Never mix the two.

2. Common intuitions

  • Kriging = GP posterior mean, exactly. The VGP generalizes it to non-Gaussian likelihoods.
  • Inducing points are pseudo-data summarizing the real data. More is a better approximation and slower training.
  • The ELBO's KL term is automatic regularization: it keeps the model from fitting noise.
  • The ε-insensitive likelihood is the GP analogue of SVM regression.
  • A warping maps a Gaussian latent field to a non-Gaussian marginal. The GP still models a Gaussian field.
  • Non-stationarity in geology often comes from geometry (folds, faults). Moving the input space makes a stationary kernel non-stationary in the original space.
  • In implicit modelling the sign of the potential field matters, not its magnitude. A contact constrains the field to cross a threshold.
  • Compositional data live on a simplex. A log-ratio transform maps them to real space; back-transforming must restore the closure.
  • A held-out score measured at sampled locations cannot speak for the ground between them. A regular backbone of inducing points is there for the map, and a validation set from the same campaign cannot notice it.

3. Datasets

geoml.datasets bundles walker(), jura(), ararangua(), andrade(), arctic_lake(), example_fold() and sunspot_number() (which downloads from sidc.be). macpass(path) reads a drillhole database the user downloads themselves. The research line also used data that are not bundled: the Passo Feio dip/strike data, a quartz-vein drillhole set, the Zhang gold data and the Thalanga VHMS assays.


4. The manual

references/manual/ holds the manual's chapters, copied at each release from the repository, where every code block in them is run. Read the one a task touches before writing code for it; the case studies are the complete arcs.

ChapterCovers
01-why-another-geostatistics.mdwhat the approach offers over kriging
02-the-gp-is-kriging.mdthe GP posterior as kriging
03-inducing-points-and-the-elbo.mdinducing points, experts, the bound
04-warpings-likelihoods-and-the-gaussian.mdwarpings and likelihoods
05-latent-networks.mdbuilding networks, deep models
06-categories-and-boundaries.mdcategorical variables and contacts
07-simulation.mdrealizations and derived variables
08-change-of-support.mdblocks and support
09-from-database-to-data.mddrillhole databases to point data
10-containers-and-addressing.mdcontainers and tree paths
11-building-and-training.mdconstructing and training a model
12-prediction-blocks-and-surfaces.mdpredicting into grids, blocks and meshes
13-validation.mdfolds, cross-validation, calibration
14-reporting.mdgrade-tonnage, swaths, figures
15-case-study-walker-lake.mda positive grade in 2D
16-case-study-jura.mda non-stationary multivariate model with rock types
17-case-study-quartz-vein.mdimplicit modelling of a folded vein in 3D

Figure links point at the documentation site. Chapter 17 reads two CSV files from docs/manual/data/ in the repository.

© italo-goncalves, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 19 other files (references) in plugins/geoml/skills/geoml of italo-goncalves/geoML.

  • SKILL.md
  • references/manual/01-why-another-geostatistics.md
  • references/manual/02-the-gp-is-kriging.md
  • references/manual/03-inducing-points-and-the-elbo.md
  • references/manual/04-warpings-likelihoods-and-the-gaussian.md
  • references/manual/05-latent-networks.md
  • references/manual/06-categories-and-boundaries.md
  • references/manual/07-simulation.md
  • references/manual/08-change-of-support.md
  • references/manual/09-from-database-to-data.md
  • references/manual/10-containers-and-addressing.md
  • references/manual/11-building-and-training.md
  • references/manual/12-prediction-blocks-and-surfaces.md
  • references/manual/13-validation.md
  • references/manual/14-reporting.md
  • references/manual/15-case-study-walker-lake.md
  • references/manual/16-case-study-jura.md
  • references/manual/17-case-study-quartz-vein.md
  • references/manual/README.md
  • … and 1 more

Open the folder on GitHubat commit d9b07c9

Compare with similar skills

Geoml next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Geoml compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Geoml this skillitalo-goncalves/geoML109—~4.9kAutomated safety check: PassGPL-3.0
Time Series Analytics Useropen-edge-platform/edge-ai-libraries171—~3.1kAutomated safety check: PassApache-2.0
Scikit LearnzLanqing/codex-claude-academic-skills4.7k16 repos~3.9kAutomated safety check: PassBSD-3-Clause
GitHub Skill ForgeYuJunZhiXue/github-skill-forge819—~2kAutomated safety check: NotesNone
Senior Data ScientistRaidriar7170/hermes-skilleval1255 repos~1.4kAutomated safety check: PassMIT
QuantMind Training Config Generatorqusong0627/QuantMind1.7k—~1.5kAutomated safety check: PassAGPL-3.0

Similar skills

  • Time Series Analytics User

    open-edge-platform/edge-ai-libraries

    Build a new time-series analytics use case on top of the deployed Time Series Analytics microservice — bring it up with Docker Compose (from a repo clone, or by fetching the compose files from…

    171 GitHub stars~3.1k tokensUpdated yesterday
    Data & AnalyticsAuto-check passed
  • Scikit Learn

    zLanqing/codex-claude-academic-skills

    Machine learning in Python with scikit-learn. An agent skill from zLanqing/codex-claude-academic-skills.

    4.7k GitHub starsUsed in 16 repos~3.9k tokens
    Data & AnalyticsAuto-check passed
  • GitHub Skill Forge

    YuJunZhiXue/github-skill-forge

    一个"制造技能的技能"。这个工具自动化了将任意 GitHub 仓库转换为标准化 Trae 技能的全过程,是扩展 AI Agent 能力的核心工具。

    819 GitHub stars~2k tokensUpdated 8 mo ago
    Data & AnalyticsAuto-check: notes
  • Senior Data Scientist

    Raidriar7170/hermes-skilleval

    World-class data science skill for statistical modeling, experimentation, causal inference, and advanced analytics.

    125 GitHub starsUsed in 5 repos~1.4k tokens
    Data & AnalyticsAuto-check passed
  • Turns a plain-language model training request into a validated QuantMind training config file that can be imported from the Model Training page.

    1.7k GitHub stars~1.5k tokensUpdated today
    Data & AnalyticsAuto-check passed
  • Cuml Machine Learning

    wahyudesu/Fastapi-AI-Production-Template

    A skill your agent uses for GPU-accelerated machine learning on tabular data using NVIDIA cuML.

    114 GitHub stars~1.8k tokensUpdated 5 mo ago
    Data & AnalyticsAuto-check passed

Works with

Questions about Geoml

What does Geoml do?

Working knowledge of the geoML Python package (github.com/italo-goncalves/geoML): variational Gaussian processes for spatial data, implicit geological modelling, block models, drillhole data…. Geoml is an agent skill from italo-goncalves/geoML.com/italo-goncalves/geoML): variational Gaussian processes for spatial data, implicit geological modelling, block models, drillhole data, compositional and categorical variables, warping and likelihoods, inducing points and local experts, cross-validation and calibration.

When should I use Geoml?

Geoml fits situations like: any task involving geoML -- writing modelling code; reading its output; choosing a kernel/warping/likelihood; navigating the package.

How do I install Geoml in Claude Code?

Run `npx skills add italo-goncalves/geoML --skill geoml -a claude-code`. Or copy the skill folder (plugins/geoml/skills/geoml in italo-goncalves/geoML) into .claude/skills/geoml in your project. Claude Code loads it when a task matches its description.

How do I install Geoml in Codex?

Run `npx skills add italo-goncalves/geoML --skill geoml -a codex`. Or copy the skill folder (plugins/geoml/skills/geoml in italo-goncalves/geoML) into .agents/skills/geoml in your project. Codex loads it when a task matches its description.

Can I use Geoml in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add italo-goncalves/geoML --skill geoml -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/geoml, .gemini/skills/geoml, .github/skills/geoml and .opencode/skills/geoml in your project.

What does Geoml need to run?

Going by SKILL.md and its folder, Geoml needs the command-line tools its instructions call (python and pip). Our summary lists: Python 3.

Does Geoml access the network?

SKILL.md names 1 domain. As links in the text: italo-goncalves.github.io. This is read from the text; nothing was executed.

Is Geoml safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Geoml use?

Geoml is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Geoml use?

About 4.9k tokens (SKILL.md is roughly 20k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 48k tokens, read only when the agent opens those files.

What are the alternatives to Geoml?

Skills that share tags, products or a category with Geoml: Time Series Analytics User (open-edge-platform/edge-ai-libraries, 171 stars), Scikit Learn (zLanqing/codex-claude-academic-skills, 4.7k stars), GitHub Skill Forge (YuJunZhiXue/github-skill-forge, 819 stars) and Senior Data Scientist (Raidriar7170/hermes-skilleval, 125 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Geoml?

italo-goncalves (a GitHub user) maintains it in italo-goncalves/geoML, which has 109 GitHub stars. The repository was last updated on October 10, 2026.

Source: italo-goncalves/geoML on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.