New to Claude Skills? Learn how to install them →

nvidia on GitHub

HDF5 to LeRobot Converter

OfficialFree

Seamlessly convert HDF5 recordings for LeRobot datasets.

by nvidia2.8k stars on nvidia/skills
2 views
Updated Aug 7, 2026
Get this skill

Free · Opens the source repo

What HDF5 to LeRobot Converter does

The HDF5 to LeRobot Converter skill is designed to transform agentic HDF5 recordings into a format suitable for use with LeRobot datasets. This process involves converting the HDF5 files into parquet format, generating metadata, and preparing associated video files. This skill is particularly useful for developers and researchers working with robotic training data who need to transition their recordings into a format compatible with LeRobot's training workflows.

To use this skill, you will need to have an existing HDF5 recording that you wish to convert. The skill requires that the same environment configuration used to produce the HDF5 is applied during conversion, ensuring that all relevant parameters such as robot type, task, camera settings, and modality configurations are preserved. The output is directed to a specified location, and the process is executed through a series of bash commands that maintain state across a local tmux session, making it efficient for batch processing or iterative development.

This skill is particularly beneficial for teams working on robotic applications that involve training models with recorded data. By simplifying the conversion process, it allows users to focus on refining their models and training procedures instead of managing data formats. The skill also includes troubleshooting guidance for common issues, ensuring that users can quickly resolve any problems that arise during the conversion process.

Overall, the HDF5 to LeRobot Converter skill streamlines the workflow for preparing training datasets, making it an essential tool for developers and researchers in the field of robotics.

When to use it

Use this skill when you need to convert HDF5 recordings for training or exporting to LeRobot.

When not to use it

This skill is not suitable for viewing HDF5 data; use a visualization tool instead.

What you can build with it

Preparing Training Data

Use this skill to convert HDF5 recordings into a format ready for training robotic models.

Batch Processing of Datasets

Run this skill in a tmux session to efficiently convert multiple HDF5 files in one go.

Ensuring Compatibility with LeRobot

Convert your recordings to ensure they meet the requirements for LeRobot's training workflows.

How to install HDF5 to LeRobot Converter

View source

1. Install with the skills CLI

npx skills add nvidia/skills/i4h-workflow-dataset-convert --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by nvidia

i4h Workflow — Convert Dataset

Purpose

Convert an agentic HDF5 recording into a LeRobot dataset (parquet + meta + videos). Use when the user asks to convert HDF5, prepare for training, or export to LeRobot.

Base Code

These steps drive the i4h-workflows base code (the workflows/agentic/ tree). To reuse an existing checkout, set I4H_WORKFLOWS to its path (no clone happens). Otherwise this resolves the current repo, or clones to ~/i4h-workflows — pick that default without prompting. Run every command below from the resolved root:

# Resolve the i4h-workflows base code (provides workflows/agentic/).
ROOT="${I4H_WORKFLOWS:-$(git rev-parse --show-toplevel 2>/dev/null)}"
if [ ! -d "$ROOT/workflows/agentic" ]; then
  ROOT="${I4H_WORKFLOWS:-$HOME/i4h-workflows}"
  [ -d "$ROOT/workflows/agentic" ] || git clone https://github.com/isaac-for-healthcare/i4h-workflows "$ROOT"
fi
export I4H_WORKFLOWS="$ROOT"; cd "$ROOT"

Basics

  • Use the same --env that produced the HDF5.
  • Env config (source of truth): workflows/agentic/config/environments/<env>.yaml supplies the robot, task, cameras, and dataset.* (action/state names, splits, modality) converter defaults.
  • Output goes to HF_LEROBOT_HOME/<repo-id>.

Run

Run the steps below in order. Each step is a separate bash call; variables persist in the local agent's tmux session.

Step 1 — setup and resolve HDF5

REPO_ROOT="${I4H_WORKFLOWS:-$(git rev-parse --show-toplevel 2>/dev/null)}"; [ -d "$REPO_ROOT/workflows/agentic" ] || REPO_ROOT="$HOME/i4h-workflows"
ENV_ID=scissor_pick_and_place
RUNS_ROOT="${REPO_ROOT}/workflows/agentic/runs"

# Point HDF5_PATH at a real recording (absolute path). Recordings come from teleop, mimic, or
# validate (which writes data/verify.hdf5 under each runs/eval_* dir). List candidates newest-first:
#   find "${RUNS_ROOT}" -name '*.hdf5' -printf '%TY-%Tm-%Td %TH:%TM  %p\n' | sort -r | head
HDF5_PATH="${HDF5_PATH:-}"
if [ ! -f "${HDF5_PATH}" ]; then
  echo "convert: set HDF5_PATH to an existing .hdf5 (got '${HDF5_PATH:-<unset>}'). Candidates:" >&2
  find "${RUNS_ROOT}" -name '*.hdf5' -printf '%TY-%Tm-%Td %TH:%TM  %p\n' 2>/dev/null | sort -r | head
  exit 1
fi

RUN_DIR="${RUNS_ROOT}/convert_${ENV_ID}_$(date +%Y%m%d_%H%M%S)"
mkdir -p "${RUN_DIR}/logs"
ln -sfn "${RUN_DIR}" "${RUNS_ROOT}/.latest"
export HF_LEROBOT_HOME="${RUN_DIR}/lerobot"

Step 2 — convert

"${REPO_ROOT}/workflows/agentic/dataset/run.sh" \
  --env "${ENV_ID}" \
  --hdf5-path "${HDF5_PATH}" \
  --repo-id "local/${ENV_ID}" \
  --video-codec h264 \
  --overwrite \
  2>&1 | tee "${RUN_DIR}/logs/convert.log"

Notes

  • --video-codec h264 is required. The converter's default AV1 codec breaks GR00T's decord video reader at finetune time.
  • Scissor SO-ARM generates meta/modality.json from YAML splits and does not need dataset.modality_template_path.
  • G1 locomanip and assemble-trocar use dataset.modality_template_path from the env YAML.
  • All camera streams are resized to the env YAML policy.image_size (override with --image-size H W), normalizing mixed-resolution cameras (e.g. head cam + overview cam) to the one size the modality config expects.

Verify

  • ${HF_LEROBOT_HOME}/local/${ENV_ID}/meta/info.json exists.
  • Log reports the saved episode count.
  • Per-episode video files are present under ${HF_LEROBOT_HOME}/local/${ENV_ID}/.

Prerequisites

  • Workflow set up via [[i4h-workflow-setup]] (the .venv must exist).
  • An existing HDF5 recording to convert (set HDF5_PATH to an absolute path; the Run block lists candidates if it's unset or wrong).
  • The same --env that produced the HDF5 (its YAML supplies robot, task, camera, modality, and converter defaults).
  • HF_LEROBOT_HOME set to the output location for <repo-id>.

Limitations

  • --video-codec h264 is required; the converter's default AV1 codec breaks GR00T's decord reader at finetune time.
  • All camera streams are resized to the env YAML policy.image_size (override with --image-size H W).
  • G1 locomanip and assemble-trocar require dataset.modality_template_path from the env YAML; scissor SO-ARM generates meta/modality.json from YAML splits.

Troubleshooting

  • Error: .venv not found / module import fails - Cause: workflow not set up. Fix: run [[i4h-workflow-setup]] first.
  • Error: input HDF5 not found - Cause: wrong or missing --hdf5-path. Fix: point HDF5_PATH at an existing recording.
  • Error: decord fails to read video at finetune time - Cause: dataset written with the default AV1 codec. Fix: re-convert with --video-codec h264.
  • Error: missing/incorrect modality config - Cause: wrong --env, so robot/task/camera/modality defaults do not match the HDF5. Fix: use the same --env that produced the recording.

Final Response

Report source HDF5, dataset path, repo id, episode count, skipped or failed episodes.

Frequently asked questions about HDF5 to LeRobot Converter

Similar skills