Use when adding or migrating non-thumbnail images for a Hugging Face Blog post. Uploads body images to the Hugging Face documentation-images dataset, updates the Markdown, and verifies the new links.
npx skills add https://github.com/huggingface/blog --skill upload-post-image
Use this skill when a blog post needs an image in the article body.
Do not use this skill for thumbnails. Blog thumbnails stay in this repository under assets/<post-slug>/ and are referenced from frontmatter with /blog/assets/<post-slug>/<thumbnail-file>.
Body images, diagrams, screenshots, GIFs, and videos should live in the Hugging Face Documentation Images dataset:
huggingface/documentation-images
Use a mirrored folder under:
blog/<post-slug>/
This keeps the blog repository small while still making images stable and public.
Use the Markdown filename without .md unless the user asks for a different folder.
For my-post.md, use:
blog/my-post/
If the image is the post thumbnail, keep it in this repo under:
assets/<post-slug>/
If the image appears inside the article body, upload it to:
huggingface/documentation-images
Use a short filename that describes the image's role in the post.
Good examples:
architecture-diagram.svgdashboard-screenshot.pngmodel-comparison-chart.jpgdemo-output.gifAvoid temporary names, source-site names, hashes, timestamps, and names tied to a one-off migration.
For a remote image, download the direct image URL into /tmp:
mkdir -p /tmp/<post-slug>-images
curl -L --fail --silent --show-error "<direct-image-url>" -o /tmp/<post-slug>-images/<descriptive-file-name>
Use a direct image URL, not an album page or webpage.
Confirm the file type, dimensions, and size:
file /tmp/<post-slug>-images/<descriptive-file-name>
du -h /tmp/<post-slug>-images/<descriptive-file-name>
Keep files reasonably small. Compress large PNG/JPEG files before upload when possible.
hf auth whoami
If this fails, ask the user to authenticate before uploading.
hf upload huggingface/documentation-images \
/tmp/<post-slug>-images/<descriptive-file-name> \
blog/<post-slug>/<descriptive-file-name> \
--repo-type dataset
The public URL has this shape:
https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/<post-slug>/<descriptive-file-name>
Markdown image:

HTML figure with caption:
<figure class="image text-center">
<img class="mx-auto" src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/<post-slug>/<descriptive-file-name>" alt="Clear alt text" width="70%">
<figcaption>Short caption.</figcaption>
</figure>
curl -I --fail --silent --show-error "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/<post-slug>/<descriptive-file-name>"
A redirect to Hugging Face storage is expected.
10. Update the Markdown and check for stale links.
Search for the old host or path:
rg -n "<old-host-or-file-name>|documentation-images/resolve/main/blog/<post-slug>" <post-slug>.md
Make sure the article no longer depends on temporary hosts for body images.
11. Commit only the blog repo changes.
The dataset upload creates its own commit in huggingface/documentation-images.
In this repository, commit the Markdown change that points at the new image URL.
Use a clear Conventional Commit message, for example:
git commit -m "docs: move post images to documentation dataset"
Lightweight WSI tile extraction and preprocessing. Use for basic slide processing tissue detection, tile extraction, stain normalization for H&E images. Best for simple pipelines, dataset preparation, quick tile-based analysis. For advanced spatial proteomics, multiplexed imaging, or deep learning pipelines use pathml.
Microscopy data management platform. Access images via Python, retrieve datasets, analyze pixels, manage ROIs/annotations, batch processing, for high-content screening and microscopy workflows.
This skill should be used when working with pre-trained transformer models for natural language processing, computer vision, audio, or multimodal tasks. Use for text generation, classification, question answering, translation, summarization, image classification, object detection, speech recognition, and fine-tuning models on custom datasets.
This skill should be used when working with pre-trained transformer models for natural language processing, computer vision, audio, or multimodal tasks. Use for text generation, classification, question answering, translation, summarization, image classification, object detection, speech recognition, and fine-tuning models on custom datasets.
Digital pathology image processing toolkit for whole slide images (WSI). Use this skill when working with histopathology slides, processing H&E or IHC stained tissue images, extracting tiles from gigapixel pathology images, detecting tissue regions, segmenting tissue masks, or preparing datasets for computational pathology deep learning pipelines. Applies to WSI formats (SVS, TIFF, NDPI), tile-based analysis, and histological image preprocessing workflows.
Microscopy data management platform. Access images via Python, retrieve datasets, analyze pixels, manage ROIs/annotations, batch processing, for high-content screening and microscopy workflows.
Computational pathology toolkit for analyzing whole-slide images (WSI) and multiparametric imaging data. Use this skill when working with histopathology slides, H&E stained images, multiplex immunofluorescence (CODEX, Vectra), spatial proteomics, nucleus detection/segmentation, tissue graph construction, or training ML models on pathology data. Supports 160+ slide formats including Aperio SVS, NDPI, DICOM, OME-TIFF for digital pathology workflows.
Lightweight WSI tile extraction and preprocessing. Use for basic slide processing, tissue detection, tile extraction, and stain normalization for H&E images. Best for simple pipelines, dataset preparation, and quick tile-based analysis. For advanced spatial proteomics, multiplexed imaging, or deep learning pipelines use pathml.
Take huggingface/upload-post-image from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.