Agent skill

Data And Structure

by VectorSpaceLab in VectorSpaceLab/AREX-Skill

Construct, inspect, import, and mutate GemPy input tables and structural frames; use this for surface points, orientations, elements, groups, IDs, colors, and input validation.

Apache-2.0Auto-check passed

Install Data And Structure

skills CLI
$ npx skills add VectorSpaceLab/AREX-Skill --skill data-and-structure -a claude-code

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

GitHub CLI
$ gh skill install VectorSpaceLab/AREX-Skill data-and-structure --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/VectorSpaceLab/AREX-Skill.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/repositories/repo-skills/gempy/sub-skills/data-and-structure .claude/skills/data-and-structure && 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
data-and-structure
GitHub stars
328
Token cost
~2.2k tokens
SKILL.md length
815 words
Files
5 (incl. scripts, references)
Skills in repo
157
Repo updated
First seen
Licence
Apache-2.0

At a glance

Construct, inspect, import, and mutate GemPy input tables and structural frames; use this for surface points, orientations, elements, groups, IDs, colors, and input validation.

  • Works in 5 steps: Build SurfacePointsTable and… → Use one explicit name_id_map for both… → Build a frame with… → …
  • SKILL.md covers Route and boundaries, Core workflow, Input/mutation recipes and Validation gate, plus 1 more section
  • Runs Python scripts from its folder; calls python

What it does

Data And Structure is an agent skill from VectorSpaceLab/AREX-Skill. Construct, inspect, import, and mutate GemPy input tables and structural frames; use this for surface points, orientations, elements, groups, IDs, colors, and input validation.

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including scripts and reference files (for example `references/api-reference.md`, `references/data-formats.md` and `references/troubleshooting.md`).

The repository describes itself as: A Skill Library for Automated Machine Learning. The licence is Apache-2.0.

Example prompts

  • “/data-and-structure”

Requirements

  • Python 3

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Build SurfacePointsTable and OrientationsTable from equal-length numeric
  2. Use one explicit name_id_map for both tables when IDs must be controlled;
  3. Build a frame with `StructuralFrame.from_data_tables(surface_points,
  4. Inspect frame.elements_names, element_id_name_map, counts, and the table
  5. Mutate through gp.add_*/gp.modify_*, or replace a frame table through the

What it can do on your machine

Read from SKILL.md and the folder at commit ac3fe1a. 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

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python

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

  • Network

    No URLs in SKILL.md.

    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

Data And Structure loads about 2.2k tokens when it runs, and up to ~8.1k if it reads all its reference files. Until then it costs about 49 tokens; SKILL.md has 815 words of instructions outside code blocks.

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

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); the scripts in this folder are not scanned.

SKILL.md

The full file from VectorSpaceLab/AREX-Skill at commit ac3fe1a, republished under its Apache-2.0 licence (© VectorSpaceLab). 815 words, ~2,154 tokens.

Download SKILL.mdSave it as .claude/skills/data-and-structure/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.
name
data-and-structure
description
Construct, inspect, import, and mutate GemPy input tables and structural frames; use this for surface points, orientations, elements, groups, IDs, colors, and input validation.
disable-model-invocation
true
metadata.disco-role
operating
license
EUPL 1.2

GemPy data and structure

Use this sub-skill when a request concerns input data or geological organization, before model interpolation. A GemPy model stores input in this hierarchy:

GeoModel -> StructuralFrame -> StructuralGroup -> StructuralElement -> SurfacePointsTable + OrientationsTable.

A group is an ordered series/stack (or a fault group); an element is one named surface or fault. The frame's group order is geological structure, not merely a container order. Keep the same element names/IDs in surface points and orientations, and validate before computing.

Route and boundaries

  • Construct or compute a model, map a stack to surfaces, or run interpolation: use modeling.
  • Configure regular/custom/section/topography grids or plot input/results: use grids-and-visualization.
  • Save/load JSON or .gempy, or use advanced mesh/plugin workflows: use serialization-and-advanced.
  • Install GemPy or diagnose missing pandas/viewer/engine dependencies: use environment-and-troubleshooting.

The public data API is available through gempy as gp and gp.data. The recipes below use only caller-provided arrays, DataFrames, or file paths; they do not require GemPy's source checkout or example data.

Core workflow

  1. Build SurfacePointsTable and OrientationsTable from equal-length numeric arrays, usually with from_arrays.
  2. Use one explicit name_id_map for both tables when IDs must be controlled; otherwise let GemPy generate an opaque ID per distinct name.
  3. Build a frame with StructuralFrame.from_data_tables(surface_points, orientations) or start with StructuralFrame.initialize_default_structure() for incremental GeoModel construction.
  4. Inspect frame.elements_names, element_id_name_map, counts, and the table .df/.data before mapping or computing.
  5. Mutate through gp.add_*/gp.modify_*, or replace a frame table through the model setter. Re-run model.validate() and then route computation to modeling.

A minimal direct construction is:

python
import numpy as np
import gempy as gp

sp = gp.data.SurfacePointsTable.from_arrays(
    x=np.array([0., 1., 0.]), y=np.array([0., 0., 1.]), z=np.array([0., 0., 0.]),
    names="Layer",
)
ori = gp.data.OrientationsTable.from_arrays(
    x=np.array([0.5]), y=np.array([0.5]), z=np.array([0.]),
    G_x=np.array([0.]), G_y=np.array([0.]), G_z=np.array([1.]),
    names=["Layer"], name_id_map=sp.name_id_map,
)
frame = gp.data.StructuralFrame.from_data_tables(sp, ori)

from_data_tables creates one default erosional group and an element for each surface-point ID. An element with no matching orientation receives an empty orientation table; this is allowed as a data structure, but may be insufficient for later model validation/computation.

Input/mutation recipes

Add to an existing model
python
# model must already contain an element named "Layer"
gp.add_surface_points(
    model, x=[2., 3.], y=[0., 0.], z=[1., 1.],
    elements_names=["Layer", "Layer"],
)
gp.add_orientations(
    model, x=[2.], y=[0.], z=[1.], elements_names=["Layer"],
    pole_vector=np.array([[0., 0., 1.]]),
)

add_surface_points and add_orientations append rows to the named element and return the model's StructuralFrame. All coordinate/name/pole/nugget sequences must have the same length. An unknown element name raises ValueError; neither add_* creates a new element. Create an element and put it in a group first when adding a new surface.

add_orientations accepts a representation in one of these forms:

  • pole_vector: an (n, 3) array of gradient components [G_x, G_y, G_z].
  • orientation: an (n, 3) array [azimuth_degrees, dip_degrees, polarity].

Pass one representation. If both are supplied, the current implementation converts orientation and ignores the supplied pole vector. A missing representation raises ValueError. A missing nugget uses GemPy's current defaults (0.01 for orientations and 0.00002 for surface points).

Modify existing rows
python
# Target by element name, or use a global row index/slice.
gp.modify_surface_points(model, elements_names=["Layer"], Z=np.array([1., 1., 2.]))
gp.modify_surface_points(model, slice=0, X=0.25, nugget=0.00002)
gp.modify_orientations(
    model, slice=slice(0, 1),
    G_x=np.array([0.0]), G_y=np.array([0.0]), G_z=np.array([1.0]),
)

modify_surface_points accepts X, Y, Z, and nugget; modify_orientations accepts those coordinates plus G_x, G_y, G_z, and nugget. Scalars broadcast through NumPy structured-array assignment; arrays must match the selected row count. Surface-point selection cannot specify both elements_names and slice. These functions update the model through the frame table setters; returned value is the updated StructuralFrame.

The current inspected GemPy release exposes angular keyword handling in modify_orientations, but its implementation raises an unpacking ValueError when azimuth, dip, or polarity is used. Treat angular modification as a known compatibility gap: convert angles yourself and write G_x/G_y/G_z, or recreate the orientation rows with add_orientations. Do not claim angular modification works unless a later package version is verified.

Show full SKILL.md (291 more words)Show less
Delete rows or elements

gp.delete_surface_points() and gp.delete_orientations() are exported but currently are zero-argument stubs that raise NotImplementedError; they do not provide a selector. For a controlled row deletion, filter a copy and assign it back, preserving the structured dtype:

python
sp = model.surface_points_copy
keep = sp.data["Z"] >= 0.0
sp.data = sp.data[keep]
model.surface_points = sp

ori = model.orientations_copy
keep_ori = ori.data["X"] != 2.0
ori.data = ori.data[keep_ori]
model.orientations = ori
model.validate()

This is a low-level workaround: filter by the table's numeric fields or IDs, never by an assumed row order, and validate immediately. Removing the only observations can make the model empty or underdetermined.

Validation gate

Before handing off to modeling, check model.validate(). It raises gempy.data.ModelValidationError, whose useful attributes are field, reason, message, and context. Current semantic checks include:

  • no surface points and no orientations (empty_model);
  • an empty structural group (empty_non_fault_group or empty_fault_group);
  • at most one surface point with no orientation (underdetermined_input);
  • a BASEMENT group before the final group (basement_relation_on_non_last_group).

For fault groups, accessing the frame's fault descriptor also requires a square fault-relation matrix with one row/column per structural group. For a failure, inspect model.structural_frame.structural_groups, elements_names, table lengths, IDs, and model.structural_frame.fault_relations; repair the structure before calling compute. A successful data-table construction is not proof that interpolation is determined.

Verification and recovery

Use the bundled table inspector for a caller-owned CSV pair:

bash
python sub-skills/data-and-structure/scripts/inspect_tables.py \
  --surface-points points.csv --orientations orientations.csv

It reports canonical columns, row counts, IDs, names, and finite-value checks without modifying files. For numeric/shape errors, first convert inputs with np.asarray(..., dtype=float), assert all row counts agree, and print table.data.dtype/table.data.shape. For name/ID errors, pass the same name_id_map to both constructors and compare it with frame.element_name_id_map. For sparse inputs, add non-collinear surface points and at least one orientation per interpolated element, then call model.validate() again.

For more column-level contracts and structural relationships, read references/data-formats.md and references/api-reference.md. For failures, read references/troubleshooting.md. For persistence, route the already validated model to serialization-and-advanced; do not serialize ad hoc table internals as a replacement for model persistence.

© VectorSpaceLab, Apache-2.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 4 other files (scripts, references) in skills/repositories/repo-skills/gempy/sub-skills/data-and-structure of VectorSpaceLab/AREX-Skill.

  • SKILL.md
  • references/api-reference.md
  • references/data-formats.md
  • references/troubleshooting.md
  • scripts/inspect_tables.py

Open the folder on GitHubat commit ac3fe1a

Compare with similar skills

Data And Structure 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.

Data And Structure compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Data And Structure this skillVectorSpaceLab/AREX-Skill328—~2.2kAutomated safety check: PassApache-2.0
Importasgeirtj/system_prompts_leaks69k—~3.5kAutomated safety check: PassCC0-1.0
Node Inspect Debuggeropenclaw/openclaw392k1 repos~894Automated safety check: PassMIT
Structured Datathedaviddias/Front-End-Checklist74k—~420Automated safety check: PassMIT
Table Fitasgeirtj/system_prompts_leaks69k—~772Automated safety check: PassCC0-1.0
Bio Structural Biology Modern Structure PredictionFreedomIntelligence/OpenClaw-Medical-Skills3.1k1 repos~2.5kAutomated safety check: PassNone

Similar skills

  • Import

    asgeirtj/system_prompts_leaks

    Handle explicit /import requests for read-only transcript recovery and a resume checkpoint, or continue work from other coding agents and unnamed artifacts.

    69k GitHub stars~3.5k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Node Inspect Debugger

    openclaw/openclaw

    Debug Node.js with node inspect, --inspect, breakpoints, CDP, heap, and CPU profiles.

    392k GitHub starsUsed in 1 repo~894 tokens
    Frontend & DesignAuto-check passed
  • Structured Data

    thedaviddias/Front-End-Checklist

    A skill your agent uses when auditing metadata, crawlability, structured data, or indexability related to Add structured data markup.

    74k GitHub stars~420 tokensUpdated yesterday
    Marketing & SEOAuto-check passed
  • Table Fit

    asgeirtj/system_prompts_leaks

    Keep a Markdown table readable in a narrow terminal of about 100 display columns - a wide table or one carrying prose in its cells wraps into unreadable ragged rows.

    69k GitHub stars~772 tokensUpdated today
    Testing & QAAuto-check passed
  • Bio Structural Biology Modern Structure Prediction

    FreedomIntelligence/OpenClaw-Medical-Skills

    Predict protein structures using modern ML models including AlphaFold3, ESMFold, Chai-1, and Boltz-1.

    3.1k GitHub starsUsed in 1 repo~2.5k tokens
    Research & ScienceAuto-check passed
  • Code Import

    nexu-io/open-design

    Read an existing repository's structure into the project cwd as a normalised snapshot the agent can analyse without re-walking the tree on every turn.

    100k GitHub stars~597 tokensUpdated today
    DevelopmentAuto-check passed

More from VectorSpaceLab/AREX-Skill

All 157 skills in this repo
  • Agent Lightning

    VectorSpaceLab/AREX-Skill

    Use this repo skill for Agent Lightning package tasks: authoring trainable agents, tracing rewards and spans, running LightningStore/Trainer loops, using agl CLI services, choosing examples, and…

    328 GitHub stars~1.4k tokensUpdated 1 mo ago
    Auto-check passed
  • Agent Tools

    VectorSpaceLab/AREX-Skill

    A skill your agent uses when configuring LiteLLM for MCP tools, A2A agents, Claude Code/Cursor agent gateway traffic, MCP auth/OAuth, tool permissions, semantic filtering, or agent-specific proxy…

    328 GitHub stars~1.2k tokensUpdated 1 mo ago
    Auto-check passed
  • Agents And Awel

    VectorSpaceLab/AREX-Skill

    Build and debug DB-GPT agents, tools, skills, teams, and AWEL workflows, including deterministic local DAG runs and HTTP-trigger topology without assuming an LLM, credential, or external service.

    328 GitHub stars~2.3k tokensUpdated 1 mo ago
    Auto-check passed
  • Agents And Middleware

    VectorSpaceLab/AREX-Skill

    Work on the actively maintained LangChain v1 agent package: initchatmodel, createagent, structured output, tools, middleware, embeddings initialization, provider routing, and agent runtime…

    328 GitHub stars~1.2k tokensUpdated 1 mo ago
    Auto-check passed
  • Agents Workflows

    VectorSpaceLab/AREX-Skill

    A skill your agent uses for giskard.agents async chat workflows, tools, prompt templates, structured outputs, retries, rate limiting, embeddings, and optional LiteLLM backend.

    328 GitHub stars~500 tokensUpdated 1 mo ago
    Auto-check passed
  • Alphafold3

    VectorSpaceLab/AREX-Skill

    A skill your agent uses for AlphaFold 3 input preparation, prediction command planning, output interpretation, and Python API inspection.

    328 GitHub stars~1.2k tokensUpdated 1 mo ago
    Auto-check passed

Questions about Data And Structure

What does Data And Structure do?

Construct, inspect, import, and mutate GemPy input tables and structural frames; use this for surface points, orientations, elements, groups, IDs, colors, and input validation. Data And Structure is an agent skill from VectorSpaceLab/AREX-Skill. Construct, inspect, import, and mutate GemPy input tables and structural frames; use this for surface points, orientations, elements, groups, IDs, colors, and input validation.

How do I install Data And Structure in Claude Code?

Run `npx skills add VectorSpaceLab/AREX-Skill --skill data-and-structure -a claude-code`. Or copy the skill folder (skills/repositories/repo-skills/gempy/sub-skills/data-and-structure in VectorSpaceLab/AREX-Skill) into .claude/skills/data-and-structure in your project. Claude Code loads it when a task matches its description.

How do I install Data And Structure in Codex?

Run `npx skills add VectorSpaceLab/AREX-Skill --skill data-and-structure -a codex`. Or copy the skill folder (skills/repositories/repo-skills/gempy/sub-skills/data-and-structure in VectorSpaceLab/AREX-Skill) into .agents/skills/data-and-structure in your project. Codex loads it when a task matches its description.

Can I use Data And Structure 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 VectorSpaceLab/AREX-Skill --skill data-and-structure -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/data-and-structure, .gemini/skills/data-and-structure, .github/skills/data-and-structure and .opencode/skills/data-and-structure in your project.

What does Data And Structure need to run?

Going by SKILL.md and its folder, Data And Structure needs Python for the scripts in its folder and the command-line tools its instructions call (python). Our summary lists: Python 3.

Does Data And Structure access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Data And Structure 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Data And Structure use?

Data And Structure is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Data And Structure use?

About 2.2k tokens (SKILL.md is roughly 8.6k 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 5.9k tokens, read only when the agent opens those files.

What are the alternatives to Data And Structure?

Skills that share tags, products or a category with Data And Structure: Import (asgeirtj/system_prompts_leaks, 69k stars), Node Inspect Debugger (openclaw/openclaw, 392k stars), Structured Data (thedaviddias/Front-End-Checklist, 74k stars) and Table Fit (asgeirtj/system_prompts_leaks, 69k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Data And Structure?

VectorSpaceLab (a GitHub organization) maintains it in VectorSpaceLab/AREX-Skill, which has 328 GitHub stars. The repository holds 157 skills in this directory. The repository was last updated on September 3, 2026.

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