Skip to content
Back to skills

Huggingface Git Xet Dataset Publisher

ASecurity

Manage Hugging Face dataset Git repositories with Git Xet/LFS-compatible tracking, including setup, safe snapshot commits, push verification, binary rejection recovery, and README track-rule maintenance.

  • 40 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added June 12, 2026
toolsgit

Works with

  • cli

Security analysis

A100/100

Scanned June 12, 2026

npx -y skills add acking-you/static_flow --skill huggingface-git-xet-dataset-publisher --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Huggingface Git Xet Dataset Publisher?

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

Security grade badge for Huggingface Git Xet Dataset Publisher
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/acking-you-huggingface-git-xet-dataset-publisher/badge)](https://www.skillsdirectory.com/skills/acking-you-huggingface-git-xet-dataset-publisher)

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: huggingface-git-xet-dataset-publisher
description: >-
  Manage Hugging Face dataset Git repositories with Git Xet/LFS-compatible
  tracking, including setup, safe snapshot commits, push verification, binary
  rejection recovery, and README track-rule maintenance.
---

# Hugging Face Git Xet Dataset Publisher

Use this skill when the task is about operating a Hugging Face dataset Git
repository (for example LanceDB data snapshots), including:
- initial setup,
- bootstrap from a non-Git local folder,
- daily commits/pushes,
- binary-rejected push recovery,
- track rule maintenance in `.gitattributes` and `README.md`.

## When To Use
1. Bind a local data directory to `git@hf.co:datasets/<org_or_user>/<repo>`.
2. Configure Git Xet for large/binary dataset artifacts.
3. Commit and push snapshot updates safely.
4. Fix `pre-receive hook declined` binary rejection errors.
5. Standardize tracking rules across docs and repo config.

## Required Inputs
1. `repo_dir`: local dataset repo path (for example `/mnt/wsl/data4tb/static-flow-data/lancedb`).
2. `hf_remote`: dataset SSH remote (`git@hf.co:datasets/...`).
3. `branch`: target branch (default `main`).
4. File patterns that must be Xet-tracked (default below).

Recommended default track patterns for LanceDB-like repos:
1. `*.lance`
2. `*.txn`
3. `*.manifest`
4. `*.idx`
5. Optional extras if present in repo: `*.arrow`

## Hard Rules
1. Always run from `repo_dir` and print current branch/remote before mutation.
2. Never force-push unless user explicitly requests.
3. Before each push, verify offending binary paths are tracked (`filter=lfs`).
4. If a new binary extension appears, update both:
   - `.gitattributes` (track rule),
   - `README.md` setup instructions.
5. Treat `filter=lfs` in `.gitattributes` as expected for Git Xet on HF.
6. If source data is actively being written (for example live LanceDB), pause
   writers before snapshot commit/push to avoid inconsistent snapshots.

## Non-Git Folder Bootstrap (Given HF Remote)
Use this when `repo_dir` is just a plain folder (no `.git`) and user provides
`hf_remote`.

### Step 0: Enter source directory
1. `cd <repo_dir>`

### Step 1: Detect remote state
1. Check if remote already has `main`:
   - `git ls-remote --heads <hf_remote> main`

### Step 2A: Remote already has history (recommended in-place bootstrap)
1. Initialize and bind:
   - `git init`
   - `git remote add origin <hf_remote>`
2. Align local `main` to remote:
   - `git fetch origin main`
   - `git checkout -B main origin/main`

### Step 2B: Remote is empty (first publish)
1. Initialize and bind:
   - `git init -b main`
   - `git remote add origin <hf_remote>`

### Step 3: Enable Xet and add track rules
1. `git xet install`
2. `git xet track "*.lance" "*.txn" "*.manifest" "*.idx"`
3. Optional if present: `git xet track "*.arrow"`

### Step 4: Re-index with tracking and commit
1. Stage all:
   - `git add -A`
2. If files were previously staged/committed without tracking, re-index once:
   - `git rm -r --cached .`
   - `git add -A`
3. Commit:
   - `git commit -m "data: initial sync with xet tracking" || echo "no changes"`

### Step 5: Push
1. `git push origin main`
2. Verify:
   - `git rev-list --left-right --count origin/main...main`
   - expected after success: `0    0`

## Preflight Checklist
1. Verify tooling:
   - `git --version`
   - `git lfs version`
   - `git xet --version`
2. Verify remote:
   - `git remote -v`
3. Verify branch/divergence:
   - `git branch -vv`
   - `git fetch origin`
   - `git rev-list --left-right --count origin/main...main`
4. Verify current tracking:
   - `git check-attr filter -- <sample_file>`
   - `git lfs ls-files | head`

## Setup Workflow (First-Time)
1. Initialize or bind repo:
   - `git init -b main` (if needed)
   - `git remote add origin <hf_remote>`
   - `git fetch origin main`
   - `git switch -C main origin/main`
   - if folder is not a Git repo yet, prefer the full bootstrap section above
     (`Non-Git Folder Bootstrap (Given HF Remote)`).
2. Install/enable Xet (if not already):
   - `git xet install`
3. Add track rules:
   - `git xet track "*.lance"`
   - `git xet track "*.txn"`
   - `git xet track "*.manifest"`
   - `git xet track "*.idx"`
4. Validate:
   - `rg -n "\\*\\.(lance|txn|manifest|idx)" .gitattributes`

## Daily Snapshot Workflow
1. Confirm clean branch target:
   - `git switch main`
   - `git fetch origin`
2. Add/commit:
   - `git add -A`
   - `git commit -m "data: sync <timestamp>" || echo "no changes"`
3. Push:
   - `git push origin main`
4. Post-push sanity:
   - ensure no remote rejection,
   - ensure expected commit appears in `git log --oneline -n 3`.

## Binary Rejection Recovery Workflow
Error signature:
- `Your push was rejected because it contains binary files`
- `Offending files: .../*.idx` (or another extension)

### A) Diagnose precisely
1. Check whether offending files are tracked:
   - `git check-attr filter -- <offending_path>`
2. If `filter: unspecified`, add missing rule:
   - `git xet track "*.idx"` (or relevant extension)

### B) Recover from contaminated local history safely
Use this when local `main` has bad commits and push keeps failing.

1. Preserve local pointer:
   - `git switch -c backup/pre-xet-fix-<timestamp>`
2. Align `main` to clean remote tip:
   - `git switch -C main origin/main`
3. Re-apply current local data changes (if any), then:
   - `git add -A`
   - `git commit -m "data: sync and fix xet tracking"`
4. Push:
   - `git push origin main`

### C) Alternative clean-branch publication
Use when branch surgery on local `main` is undesirable.

1. Create clean branch from remote tip:
   - `git switch -c clean-main origin/main`
2. Bring desired files into clean branch.
3. Ensure track rules include offending extension(s).
4. Commit and publish:
   - `git push origin clean-main:main`
5. Realign local main:
   - `git switch -C main origin/main`

## README Maintenance Contract
Whenever adding a new tracked binary extension:
1. Add it to `.gitattributes` via `git xet track`.
2. Update README setup snippet so future runs include it.
3. Update storage-format description if needed (for example mention `*.idx` sidecars).

## Verification Commands (Must Run Before Final Report)
1. `git rev-list --left-right --count origin/main...main`
   - expected after success: `0    0` or `0    N` before final push.
2. `git check-attr filter -- <offending_paths>`
   - expected: `filter: lfs`
3. `git lfs ls-files | rg "\\.idx$"` (or relevant extension)
   - expected: tracked pointers listed.
4. Optional pointer inspection:
   - `git show :<path> | sed -n '1,3p'`
   - expected:
     - `version https://git-lfs.github.com/spec/v1`

## Reporting Template
Always report:
1. remote/branch operated,
2. exact tracking patterns currently active,
3. whether README was updated,
4. divergence before/after (`origin/main...main`),
5. final push result and commit hash.

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.