Skip to content
Skillpedia
Databases51k · #1854

datalad

Helps your agent download, version, and publish scientific datasets. It also tracks how the data was processed. Useful for managing and reproducing scientific data analyses.

What it does

DataLad is a tool that helps manage large scientific datasets. It allows you to download, organize, and share data efficiently, ensuring you know where copies are and how to reproduce analyses.

When to use it

  • ✓When you need to download data from platforms like OpenNeuro or DANDI.
  • ✓If a file appears as a broken link or a small text file instead of the actual data.
  • ✓When you need to ensure an analysis can be repeated exactly the same way in the future.

Example of what to ask your AI

“How do I download all the data for my project?”

Want more? Open the sections below.

How to use

The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.

Skill link

https://github.com/K-Dense-AI/scientific-agent-skills/blob/main/skills/datalad/SKILL.md

Ready-to-paste message

Use this skill to help me: https://github.com/K-Dense-AI/scientific-agent-skills/blob/main/skills/datalad/SKILL.md Read the SKILL.md file at that link and follow its instructions for my task.
How it works

DataLad uses Git to track file structure and git-annex to manage large file content. It saves information about which commands were run and what data was used, allowing you or others to reproduce results.

Installation

Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.

In the terminal (Claude Code, Codex, Cursor), in your project folder:

npx skills add K-Dense-AI/scientific-agent-skills --skill datalad

Or download just the file:

curl -L https://raw.githubusercontent.com/K-Dense-AI/scientific-agent-skills/main/skills/datalad/SKILL.md -o SKILL.md
Technical content (original SKILL.md)

Original text by the author, straight from GitHub.

DataLad

Overview

DataLad is a data management layer over Git and git-annex. Git tracks the dataset structure, small text files, and the history. git-annex tracks the content of large files, storing each file as a key and keeping the bytes somewhere that is not necessarily the local repository.

A normal clone retrieves Git history and the top-level file listing while leaving annexed bytes unfetched. Installed subdatasets have their own histories; a clone does not automatically populate them. Clone cost depends on Git history and file count, not just the data volume. Retrieve annexed bytes selectively with datalad get.

The second thing DataLad adds is provenance. datalad run executes a command and commits the result together with a machine-readable record of the command, its inputs, and its outputs. datalad rerun reads that record back and re-executes it. This turns "how was this figure produced" from an archaeology problem into a command.

When to use DataLad instead of plain Git

Use DataLad when any of the following holds:

  • Files are too large for Git to handle comfortably, or the total exceeds what every collaborator wants on disk.
  • Data lives in more than one place (a lab server, a cluster scratch, S3, a supercomputer) and you need to know which copies exist.
  • The analysis must be re-executable, and a plain commit message is not enough evidence.
  • You are consuming published datasets from OpenNeuro, DANDI, or datasets.datalad.org, which are distributed as DataLad datasets.
  • The project nests other datasets inside it and you want each one to keep its own independent history.

Use plain Git when the repository is code and text only, everything fits comfortably in Git, and nobody needs partial checkouts. DataLad on top of a small pure-code repository adds indirection without buying anything.

Installation

# git-annex is NOT written in Python but is available from PyPI if you already
# have git itself installed:
uv pip install git-annex
# You can also install it first from the system
# (Debian/Ubuntu: apt install git-annex; macOS: brew install git-annex;
#  conda-forge: conda install -c conda-forge git-annex)
uv pip install "datalad==1.6.5"
uv pip install "datalad-container==1.2.6"   # only for containers-run

datalad wtf --section dependencies   # confirm git-annex version is visible

The PyPI git-annex package supplies platform-specific binaries. The reviewed 10.20260901.post1 wheels cover Linux glibc 2.34+ (x86_64/ARM64), macOS ARM64 14+ and x86_64 15+, and Windows x86_64. Use a system package when no wheel matches. Keep its environment on PATH and verify the executable; the wheel does not supply Git itself. Configure Git author name/email before creating or saving a dataset.

datalad wtf prints the resolved environment and is the first thing to run when behaviour looks impossible. An old or missing git-annex is behind a large share of confusing errors.

DataLad is MIT licensed; git-annex has a separate AGPL license. Consult the upstream license when redistributing either tool.

The failure that bites first: pointers are not data

After datalad clone, annexed files exist as symlinks into .git/annex/objects/ (or as small pointer files where symlinks are unavailable, such as on Windows or a crippled filesystem). Nothing has downloaded the content yet.

Illustrative remote-data example; inspect the selected revision for the exact path and install NiBabel before the Python read. The refresh tested equivalent local pointer/get behavior without downloading imaging data.

datalad clone https://github.com/OpenNeuroDatasets/ds000001.git
cd ds000001
ls sub-01/anat/            # the file is listed
python -c "import nibabel; nibabel.load('sub-01/anat/sub-01_T1w.nii.gz')"   # fails
datalad get sub-01/anat/sub-01_T1w.nii.gz                                   # now it works

The failure mode to recognise: a tool reports the file as empty, truncated, corrupt, "not a gzip file", or a broken symlink, and the file size on disk is a few hundred bytes. These symptoms can indicate an unfetched annex pointer; confirm with annex status before diagnosing corruption. Run datalad get before reading data, and treat "file exists" as insufficient evidence that its content is present.

Before an analysis touches a directory, fetch it explicitly:

datalad get sub-01/                  # everything under a path

…
FAQ

Why do my files look like broken links?

This happens because DataLad only downloads the file structure by default. You need to use the 'datalad get' command to download the actual content of the files you want to use.

How do I ensure my analysis is reproducible?

Use the 'datalad run' command to execute your commands. It automatically records which files were used as input and which were generated as output, allowing you or others to recreate the analysis later.

What's the difference between Git and DataLad?

Git is great for code and small text files. DataLad builds on Git and git-annex to manage large files and ensure the reproducibility of scientific analyses.

Details

Original description by the author

Retrieves, versions, and publishes scientific datasets with DataLad and git-annex, and captures computational provenance with datalad run, rerun, and containers-run. Use when cloning or fetching data from OpenNeuro, DANDI, datasets.datalad.org, or any DataLad dataset; when a file in a dataset reads as a broken symlink or a small pointer instead of real data; when an analysis needs a machine-readab

repo: K-Dense-AI/scientific-agent-skills

Popularity

GitHub stars
51k
Ranking position
#1854
License
MIT
Updated
10/15/2026

Is this skill useful?

0

Sign in to vote.

Comments

  • …

More skills from this repository

Similar skills