Skip to content
Back to skills

Workflows

ASecurity

"Compose and validate Earth2Studio deterministic and

  • 247 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 8, 2026
developmentpythongoapibackend

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill workflows --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Workflows?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Workflows
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-workflows/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-workflows)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: workflows
description: "Compose and validate Earth2Studio deterministic and
  prognostic-plus-diagnostic inference workflows with coordinate-aware inputs,
  outputs, devices, checkpoints, and offline protocol checks."
disable-model-invocation: true
metadata:
  disco-role: operating
license: Apache 2.0
---

# Earth2Studio workflows

Use this skill when a task needs a concrete Earth2Studio inference pipeline built
from a prognostic model, a data source, an IO backend, and optionally a
coordinate-compatible diagnostic model. It owns the deterministic and
prognostic-plus-diagnostic paths exposed by `earth2studio.run`; it does not own
ensemble orchestration, data-only retrieval, detailed backend selection, or
remote serving.

## Decide the path

1. Clarify initialization times, forecast horizon, variables, spatial domain,
   output format, and CPU/GPU constraints. Use ISO-8601 strings, `datetime`, or
   `np.datetime64` values for `time`.
2. Select a prognostic class whose `input_coords()` can be supplied by the
   selected `DataSource` or `ForecastSource`. Inspect its `output_coords()` to
   learn the model step and output variables; do not assume all models use the
   same grid or lead time.
3. Add a diagnostic only when a derived field is required. Its
   `input_coords()` must be mappable from each prognostic output, and its
   `output_coords()` determines the variables written by `run.diagnostic`.
4. Select an IO object and initialize it outside the workflow. The run function
   mutates and returns the same IO object. See [API reference](references/api-reference.md)
   for the narrow IO contract and supported public backend names.
5. Calculate `nsteps` from the model's advertised lead-time increment. A run
   writes the initial state plus `nsteps` forecast steps, so the lead-time axis
   has `nsteps + 1` entries.

## Load components

For a packaged model, use the class's public loading pair; the package handle
is lightweight, while `load_model` may access remote or cached assets:

```python
from earth2studio.models.px import <PrognosticClass>

prognostic = <PrognosticClass>.load_model(
    <PrognosticClass>.load_default_package()
)
```

Use the analogous pair from `earth2studio.models.dx` for a diagnostic. Model
classes can require targeted optional extras and model-specific hardware; do
not recommend an extra until the chosen class's installation notes are known.
A network-free smoke path uses `Persistence`, `Identity`, `Random`, and
`ZarrBackend`; it checks protocol and coordinate behavior without model
weights. See [workflow recipes](references/workflows.md).

## Run deterministic inference

Construct `data` and `io`, inspect `prognostic.input_coords()`, then call:

```python
from earth2studio import run

result = run.deterministic(
    time=["2024-01-01T00:00:00"],
    nsteps=8,
    prognostic=prognostic,
    data=data,
    io=io,
    output_coords=output_coords,  # omit or use OrderedDict({}) for all output
    device=device,                # None selects CUDA when available, else CPU
    verbose=True,
    checkpoint=checkpoint,         # optional checkpoint manager/session
)
```

`run.deterministic` fetches the prognostic initial-condition variables and
lead times, maps them to the model grid, iterates from the initial state,
applies `output_coords` at each step, and calls `io.write`. It returns `io`, not a new
result wrapper. Use a small `nsteps` and `verbose=False` for a smoke run.

## Run diagnostic inference

Keep the same initial-condition and prognostic setup, load a diagnostic, and
call `run.diagnostic(time, nsteps, prognostic, diagnostic, data, io, ...)`.
The workflow maps each prognostic step to `diagnostic.input_coords()`, invokes
the diagnostic, then maps to `output_coords` before writing. Its output is the
diagnostic result; it does not retain the prognostic fields in the output
backend. If both are required, compose a custom workflow rather than assuming
this built-in path stores both.

## Coordinate and horizon checks

Before a live run:

- Compare `data` variables with `prognostic.input_coords()["variable"]`.
- Read the model's `lead_time` increment and use an integer `nsteps`.
- Preserve coordinate key order: keys describe tensor dimensions. Common keys
  are `batch`, `time`, `lead_time`, `variable`, `lat`, and `lon`.
- Keep `output_coords` a subset of produced dimensions. Variable restrictions
  must name produced variables; spatial restrictions may select or nearest-map
  numeric 1-D coordinates. Empty arrays are used by model protocols for free
  dimensions; do not use empty output overrides unless the backend contract
  explicitly permits them.
- For a diagnostic, check every required diagnostic dimension and variable can
  be mapped from the prognostic output. Exact grid handshakes may still be
  required by a model even where the workflow can numerically map coordinates.
- Run the bundled offline checker before spending network or GPU resources:
  `python path/to/check_workflow_config.py --config workflow.json`.

See [workflows](references/workflows.md) for runnable CPU mock examples and
[troubleshooting](references/troubleshooting.md) for recovery by failure class.

## Boundaries and omissions

This sub-skill intentionally omits `run.ensemble` and perturbation/batch-size
orchestration, a catalog of IO backend options, custom model implementation,
full data-source selection, serving clients, and model-weight download
procedures. It names public interfaces and targeted-extra constraints but does
not claim exhaustive model, data, or backend coverage. Use the sibling skill
for deterministic forecast selection when the task is only model/data/horizon
recommendation; use data-fetch or installation guidance for those concerns.

## Handoff checks

Report the selected workflow, model/data/diagnostic classes, initialization
times, `nsteps` and implied lead-time horizon, output coordinate restriction,
device, IO backend, whether weights/data are downloaded, and the validation
performed. Preserve unresolved coordinate, optional-extra, credential, and
hardware limits instead of presenting a smoke test as a scientific forecast.

- [API and signatures](references/api-reference.md)
- [Workflow recipes and validation](references/workflows.md)
- [Predictable failures](references/troubleshooting.md)
- [Offline configuration checker](scripts/check_workflow_config.py)

Files in this skill

  • SKILL.md6.3 KB
  • references/api-reference.md7 KB
  • references/troubleshooting.md6 KB
  • references/workflows.md6.9 KB
  • scripts/check_workflow_config.py2.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.