"Plans safe LeRobot v1.6, v2.0, v2.1, and v3.0 dataset migrations
Scanned 9/8/2026
Install to Claude Code
npx -y skills add VectorSpaceLab/AREX-Skill --skill version-migration --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Version Migration?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-version-migration)More formats (shields.io, HTML) on the badges page.
---
name: "version-migration"
description: "Plans safe LeRobot v1.6, v2.0, v2.1, and v3.0 dataset migrations
with version-matched environments, metadata-layout checks, local or Hub
staging, video handling, and rollback controls."
disable-model-invocation: true
metadata:
disco-role: operating
license: MIT
---
# LeRobot version migration
Use this route when an existing LeRobot dataset must move between **v1.6 and
v2.0**, **v2.0 and v2.1**, or **v2.1 and v3.0**. It is a planning and
review route, not a runnable converter. The repository converters are
reference-only because they can rewrite local directories, delete metadata,
clone Git-LFS repositories, invoke `ffmpeg`, create tags, upload files, and
push to the Hugging Face Hub.
Do not use this route for converting raw HDF5, RLDS/TFDS, AgiBot, RoboMIND,
LIBERO, or RoboCasa data. Route those requests to the dataset-specific
sub-skill first, then return here only if the resulting LeRobot dataset needs a
version migration.
## Non-negotiable boundary
- Never run a migration against the only copy of a dataset. Use an immutable
source snapshot and a separate destination or disposable test branch.
- Never infer the source version from a directory name or a tag alone. Read and
cross-check `meta/info.json` (or the legacy `meta_data/info.json`) and inspect
representative data, episode, task, stats, and video paths.
- A current LeRobot import is not proof that a historical converter is usable.
Resolve the version-specific API imports and constants before touching data.
The source evidence mixes `lerobot.common.datasets.*`,
`lerobot.datasets.*`, and `lerobot.datasets.io_utils`; current LeRobot
commonly exposes `LeRobotDataset` and `LeRobotDatasetMetadata` under
`lerobot.datasets.lerobot_dataset`. Treat namespace mismatch as a stop gate.
- Keep `--push-to-hub`, deletion flags, tag creation, and any Git-LFS operation
off until local validation passes and the operator explicitly approves
publication.
## Route checklist
1. Record `source_version`, `target_version`, `repo_id` if any, local root(s),
desired branch, whether videos exist, and the rollback location. Use the
exact direction matrix in [version-matrix](references/version-matrix.md).
2. Confirm the source metadata schema and episode/task indices. Run the
read-only static or synthetic checks in [metadata layouts](references/metadata-layouts.md)
before installing or invoking a converter.
3. Select a version-pinned environment. Do not mix the current package with
historical imports. Record Python, LeRobot revision, `datasets`,
`jsonlines`, `pyarrow`, `safetensors`, and `ffmpeg` versions.
4. Choose one source mode:
- **Local:** `--root` is an exact dataset root for v2.0/v2.1/v3.0 routes.
For v1.6→v2.0, `--local-dir` is staging/cache space; the evidence
converter still identifies the Hub dataset with `--repo-id`.
- **Hub:** use a pinned revision or tag and download into a new staging
root. Treat every upload, delete, tag, or branch operation as a separate
approval step.
5. For v1.6→v2.0 only, choose exactly one task source: `--single-task`,
`--tasks-col`, or `--tasks-path`. Check episode coverage and task text
before starting. See [workflows](references/workflows.md).
6. Make a backup, record a manifest and checksums, and create a non-production
test branch if Hub validation is required. Never let an existing `_old`,
`_v30`, or destination directory be silently reused.
7. Perform a no-write plan review: expected metadata files, data/video path
templates, stats representation, episode counts, frame counts, and tag
changes. Do not use a hidden wrapper; the source converters are not bundled
in this skill.
8. Execute only after approval in the pinned environment, preferably to a new
local root. Keep Hub push and cleanup disabled for the first pass.
9. Validate the output as a dataset of the target version, reopen it with the
target LeRobot API, compare counts/tasks/stats, and inspect video durations
and timestamps. Then review the rollback copy before any publication.
10. Publish to a test branch first. Only after a consumer successfully reads
that branch should the operator rename, tag, delete, or replace a
production revision.
## Direction-specific dispatch
- **v1.6 ↔ v2.0:** this bundle provides v1.6→v2.0 planning only. There is no
reverse converter in the assigned evidence. Expect task annotation,
per-episode parquet splitting, stats serialization, and possible Hub/LFS
video moves.
- **v2.0 ↔ v2.1:** this is primarily a stats and `codebase_version` migration;
data files remain in the v2 layout. v2.0→v2.1 computes per-episode stats and
checks their aggregate; v2.1→v2.0 writes aggregate `stats.json`.
- **v2.1 ↔ v3.0:** this is a physical layout migration. v2.1→v3.0
consolidates parquet/video files and metadata; v3.0→v2.1 splits them back
into per-episode files and uses `ffmpeg` for video segments.
Read the detailed [workflows](references/workflows.md),
[metadata layouts](references/metadata-layouts.md), and
[troubleshooting](references/troubleshooting.md) before making a run plan.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!