Skip to content
Back to skills

Downloads And Storage

ASecurity

Routes Hugging Face Hub file and snapshot downloads, cache and offline recovery, Xet-backed storage, HfFileSystem and hf:// URIs, buckets, and safe copy or sync planning. Use for model, dataset, Space, or kernel downloads; allow/ignore patterns; cache corruption; fsspec browsing; volume mounts; and bucket file movement.

  • 247 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 8, 2026
businesspythonshellapi

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 6 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill downloads-and-storage --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Downloads And Storage?

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

Security grade badge for Downloads And Storage
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-downloads-and-storage/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-downloads-and-storage)

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: downloads-and-storage
description: "Routes Hugging Face Hub file and snapshot downloads, cache and offline recovery, Xet-backed storage, HfFileSystem and hf:// URIs, buckets, and safe copy or sync planning. Use for model, dataset, Space, or kernel downloads; allow/ignore patterns; cache corruption; fsspec browsing; volume mounts; and bucket file movement."
disable-model-invocation: true
license: Apache-2.0
metadata:
  disco-role: operating
---

# Downloads and Storage

Use this sub-skill to select and operate the Hub's read/download and storage
surfaces without confusing repository snapshots, local cache metadata, and
bucket object storage.

## Trigger Routes

Load this sub-skill when the request mentions any of the following:

- download one Hub file, model, dataset, Space, or kernel repository;
- snapshot a revision with allow/ignore patterns or estimate it with dry run;
- inspect, verify, prune, relocate, or troubleshoot the local Hub cache;
- run offline, recover from an interrupted or incomplete snapshot, or diagnose
  a cache miss;
- enable, disable, or troubleshoot Xet-backed transfers and chunk storage;
- browse or open Hub files through `HfFileSystem`, fsspec, or `hf://` paths;
- parse a Hub URI or a mount such as `hf://datasets/org/data:/mnt:ro`;
- browse/download bucket objects or plan a local↔bucket sync;
- reason about trailing-slash semantics for safe remote copy operations.

## Read the Focused References

- Read [API reference](references/api-reference.md) for verified signatures,
  return values, parameter matrices, URI forms, filesystem methods, and bucket
  APIs.
- Read [workflows](references/workflows.md) for copyable download, offline,
  cache, fsspec, bucket, copy, and plan/apply recipes.
- Read [configuration, cache, and Xet](references/configuration-cache-and-storage.md)
  before changing cache paths, offline mode, symlink mode, timeouts, or Xet
  settings.
- Read [troubleshooting](references/troubleshooting.md) for revision/repo-type,
  access, disk, cache, symlink, Xet, URI, prefix, and traversal failures.
- Run the bundled read-only
  [download environment diagnostic](scripts/diagnose_download_env.py) when the
  effective cache roots, import-time settings, free space, token presence, Xet
  availability, or cache structure is uncertain.

## Keep the Boundaries Clear

This sub-skill owns downloads, read-only filesystem access, local cache
operations, bucket reads, and safe movement planning. It covers upload/copy
only far enough to choose a safe file-movement surface. Although
`HfFileSystem` exposes write/delete methods, do not execute those mutations from
this route; send repository or bucket mutations to the appropriate operations
workflow.

- Route repository and bucket creation, commits, branches, uploads, deletes,
  moves, visibility changes, and other mutations to the `hub-operations`
  sibling sub-skill.
- Route exhaustive CLI flag selection, output formats, authentication setup,
  and shell automation to the `cli-and-automation` sibling sub-skill.
- Do not use `HfFileSystem` as the default high-throughput download API; prefer
  `hf_hub_download`, `snapshot_download`, or the corresponding `HfApi` methods.
- Do not bundle or run credentialed upload helpers or networked installers from
  this skill.

## Choose the Download Surface

1. Use `hf_hub_download(repo_id, filename, ...)` for exactly one repository
   file. It returns a file path, normally a pointer inside the shared cache.
2. Use `snapshot_download(repo_id, ...)` for a coherent repository tree,
   multiple files, pattern filtering, or parallel file downloads. It returns a
   snapshot directory.
3. Use `local_dir` when the caller needs a normal materialized directory they
   may modify. Otherwise prefer `cache_dir`/the shared cache and treat returned
   cache paths as immutable.
4. Set `repo_type` explicitly for datasets, Spaces, and kernels; model is the
   default. Pin `revision` to a full commit hash for reproducible or prepared
   offline execution.
5. Use `dry_run=True` to inspect `DryRunFileInfo`; it may perform remote metadata
   calls but does not transfer file payloads. It is not an offline inventory
   mechanism.
6. Use `allow_patterns` and `ignore_patterns` only with snapshots. Both apply;
   ignored files remain excluded after allow filtering. Tune `max_workers` for
   concurrent files, not Xet byte-range concurrency.

Before a large or forced transfer, inspect `will_download` and `file_size`, run
the diagnostic helper, and confirm free space in both the Hub cache and Xet
cache locations.

## Preserve Cache and Offline Invariants

- `local_files_only=True` forbids network access for that call and succeeds only
  from already materialized content. `force_download=True` asks for a fresh
  transfer and is not an offline/cache-repair switch; do not combine them.
- `HF_HUB_OFFLINE=1` is process-wide and is read when the package is imported.
  Set it before Python starts. It also makes ordinary `HfApi` calls fail rather
  than contact the Hub.
- A cached `refs/` entry or `trees/*.json` record is metadata, not downloaded
  content. Confirm the selected snapshot files exist.
- If a cached tree listing proves requested files are missing, offline
  `snapshot_download` raises `IncompleteSnapshotError` instead of silently
  returning the partial tree. Pattern-excluded files do not count as missing.
- Use `scan_cache_dir` or `hf cache ls` for inspection. Preview `hf cache rm`
  and `hf cache prune` with `--dry-run`; deletion is irreversible.
- Never edit a returned shared-cache file. Materialize to `local_dir` or copy it
  elsewhere first.

## Browse with `HfFileSystem` and URIs

Use `HfFileSystem` or the global `hffs` for fsspec integrations and convenient
`ls`, `glob`, `find`, `exists`, and `open`. Text mode must be explicit because
fsspec `open` defaults to `"rb"`. Pass `refresh=True` when stale directory
metadata is plausible.

Use canonical `hf://[TYPE/]namespace/name[@REVISION][/PATH]` URIs. Dataset,
Space, kernel, and bucket prefixes are plural and required; a model prefix is
optional. Buckets do not support revisions. Encode ordinary branch names that
contain `/`; special refs such as `refs/pr/3` are recognized directly. Parse
mounts with `huggingface_hub.utils.parse_hf_mount`, not by splitting on `:`.

Treat URI parsing as identification, not path-safety authorization. Reject
absolute paths, drive/UNC paths, and every `..` segment before local
materialization or plan application.

## Handle Buckets and Movement Safely

Buckets are mutable Xet-backed object storage, not versioned repositories. Use
`list_bucket_tree`/`download_bucket_files` for Python reads, or `hf buckets
list`, `hf cp`, and `hf sync` for CLI workflows.

For one file, use `hf cp`; for local↔bucket directories, use `sync_bucket` or
`hf sync`. Generate `dry_run=True` output or a JSONL `plan`, review every action
and destination, then apply it. Treat `delete=True` as destructive.

For remote copies, `copy_files` supports repo→repo, repo→bucket, and
bucket→bucket; bucket→repo is unsupported. Server-side copies require compatible
storage regions. A trailing slash on the source means “copy contents”; without
it, the source directory may be nested at the destination. Verify bucket prefix
boundaries so `logs` does not accidentally match `logs-old`.

## Validate the Outcome

For a no-network regression rehearsal that exercises mocked metadata, a
temporary cache, filtered offline recovery, a wrong revision, and the
`local_files_only`/`force_download` conflict, run the focused case in
[workflows](references/workflows.md#11-difficult-synthetic-offlinecache-case).
Keep the bucket prefix/traversal case there deferred until a reviewed mock plan
and authorized bucket integration are available.

- Assert the returned path exists and is the requested file/snapshot.
- For dry runs, inspect `filename`, `commit_hash`, `local_path`, `is_cached`,
  `will_download`, and aggregate only entries where `will_download` is true.
- For offline snapshots, assert all pattern-selected files exist; catch
  `IncompleteSnapshotError` and report its `snapshot_path` without claiming the
  snapshot is complete.
- For cache repair, rescan and inspect warnings before deleting anything.
- For sync/copy, inspect source/destination URI types, revisions, prefixes,
  trailing slashes, regions, and the plan's upload/download/delete actions.
- Mark network-, credential-, private/gated-, and Xet-service integration as
  deferred unless the caller explicitly authorizes and provides them.

Files in this skill

  • SKILL.md8.4 KB
  • references/api-reference.md12.2 KB
  • references/configuration-cache-and-storage.md12.7 KB
  • references/troubleshooting.md20.7 KB
  • references/workflows.md18 KB
  • scripts/diagnose_download_env.py8 KB

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…