Skills DirectorySearch all skills ↗

AI agent skill · by @evolving-machines-lab

Publish

Publish a dataset of Harbor-format tasks to Evolve, or upload a finished job directory. Use when the user wants to publish, upload, or share tasks, datasets/benchmarks, or job results on Evolve.

Archived 2026-10-23 · Source updated 2026-09-19 · License: Apache-2.0. Check the original repository for the latest version.

SKILL.md instructions

Help the user publish a dataset of tasks to Evolve, or upload a job they ran elsewhere.
Walk them through each step, checking prerequisites and confirming before running
commands that upload.

## Prerequisites

1. **The CLI**: `npm install -g @evolvingmachines/evolve`; `evolve --version` succeeds.

2. **API key**: create a key on the dashboard's API keys page
   (https://dashboard.evolvingmachines.ai/api-keys) and export it. Every command reads
   `EVOLVE_API_KEY`.
   ```bash
   export EVOLVE_API_KEY="<your key>"
   evolve auth status
   ```
   `auth status` prints who the platform thinks you are and which key is in use.

3. **Task layout**: a dataset is a folder of task directories, each with `task.toml`,
   `instruction.md`, `tests/test.sh`, and an `environment/` folder unless `task.toml`
   names a prebuilt `docker_image` (`evolve skills get create-task` has the format). The
   directory name is the task's name: letters, digits, `.`, `_` and `-`, at most 128
   characters, starting with a letter or digit; use lowercase (Harbor's convention). A
   `dataset.toml` manifest at the root is optional.

## Publishing a dataset

What you publish is private to your organization. There are no tags and no visibility
flag.

### 1. Check the folder first

```bash
evolve dataset check "<path/to/tasks>"
```

A dry run: the pre-flight sends each task's `task.toml`, and the `dataset.toml` if there
is one, to the server, which answers with a verdict per task and writes nothing. A refused
task names the field to fix. `evolve check "<path/to/tasks>" --watch` goes further: it
reads each task and, when it can, runs its environment, reference solution and verifier,
then rules on a rubric.

### 2. Publish

From a local directory:

```bash
evolve dataset publish \
  --dir "<path/to/tasks>" \
  --name "<dataset>" \
  --version 1.0 \
  --watch
```

When the folder carries a `dataset.toml` manifest, `--name` and `--version` come from it
and may be omitted. The pre-flight runs automatically before the upload;
`--skip-preflight` uploads without it, and a task the check would have refused then fails
at import instead.

From a git repository:

```bash
evolve dataset publish \
  --git https://github.com/acme/my-swe.git \
  --ref v1.0.0 \
  --name "<dataset>" \
  --version 1.0 \
  --watch
```

`--ref` must be pinned: a tag, or a full 40-character commit sha. A branch name is
refused. `--path <subfolder>` imports one folder of a larger repository.

From a source the server fetches itself:

```bash
evolve dataset publish --from hub:cookbook/hello-world --watch
```

`--from` takes a public https tarball URL, or `hub:org/name[@ref]` for a public package on
the Harbor hub. For a hub package the name and version default to the package's own.

### 3. Follow the publish

`--watch` follows the publish until the version is `READY` or `FAILED`. Each task builds
on its own, so one broken task does not block the others; `--watch` ends with how many
built. If the terminal is gone, re-attach from any machine:

```bash
evolve dataset watch "<dataset>"
```

The version lands `READY` when at least one task built, and `FAILED` only when none did.
On your own dataset, `READY` also makes the version active, so the bare name runs it.

## After publishing

```bash
evolve dataset show "<dataset>@1.0"                       # versions, tasks, timeouts, providers per task
evolve run -d "<dataset>@1.0" -a codex -m gpt-5.5 --watch   # run a job on it
```

Each publish creates a version, named `<dataset>@<version>`; a bare name means the active
version. To point the bare name at a different `READY` version:

```bash
evolve dataset activate "<dataset>" 1.0
```

The owner of a dataset can download the original package back:

```bash
evolve dataset download "<dataset>@1.0" -o corpora/
```

## Uploading a job you ran elsewhere

A job run elsewhere, in the Harbor job layout, uploads as a finished job. Its trials,
traces and rewards become a job you read like any other.

```bash
evolve upload "<path/to/job-dir>" -d "<dataset>@1.0"
```

`upload` takes the job directory, or its `.tar.gz`. With `--from <url>` it takes instead
a public https URL of the archive, which the server fetches itself. `-d name[@version]`
links the uploaded trials to a published dataset version by task name. The command
follows the import until the job exists; `--no-wait` returns at once with the import id.

```bash
evolve job imports --status RUNNING
evolve job import <import-id> --watch
```

`job imports` lists your uploads, newest first. `job import --watch` re-attaches to one and
follows it to the job, or to its typed failure.

Related skills