From chu-gallery
Extract EXIF metadata from images to JSON. Works with any image folder. Outputs structured data including dimensions, orientation, and timestamps.
How this skill is triggered — by the user, by Claude, or both
Slash command
/chu-gallery:extract-exifThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Generic skill to extract EXIF metadata from images using `exiftool`.
Generic skill to extract EXIF metadata from images using exiftool.
exiftool installed (brew install exiftool)Invoke with: /extract-exif {path} [output.json]
Examples:
/extract-exif ./photos - Print JSON to stdout/extract-exif ~/Pictures/vacation ./metadata.json - Write to fileexiftool -ImageWidth -ImageHeight -DateTimeOriginal -Make -Model -LensModel -FocalLength -FNumber -ExposureTime -ISO -json {PATH}/*.{jpeg,jpg,JPEG,JPG,png,PNG,heic,HEIC} 2>/dev/null | \
bun -e '
const data = await Bun.stdin.json();
const images = data.map(img => ({
filename: img.SourceFile.split("/").pop(),
path: img.SourceFile,
width: img.ImageWidth,
height: img.ImageHeight,
aspect: img.ImageWidth && img.ImageHeight ? +(img.ImageWidth / img.ImageHeight).toFixed(2) : null,
orientation: img.ImageWidth > img.ImageHeight ? "landscape" : img.ImageWidth < img.ImageHeight ? "portrait" : "square",
timestamp: img.DateTimeOriginal || null,
camera: img.Make && img.Model ? `${img.Make} ${img.Model}`.trim() : null,
lens: img.LensModel || null,
focalLength: img.FocalLength || null,
aperture: img.FNumber || null,
shutter: img.ExposureTime || null,
iso: img.ISO || null
}));
console.log(JSON.stringify({ count: images.length, images }, null, 2));
'
{
"count": 42,
"images": [
{
"filename": "DSCF1234.jpeg",
"path": "/path/to/DSCF1234.jpeg",
"width": 3840,
"height": 2560,
"aspect": 1.5,
"orientation": "landscape",
"timestamp": "2025:01:05 10:35:11",
"camera": "FUJIFILM X-T5",
"lens": "XF23mmF1.4 R LM WR",
"focalLength": "23.0 mm",
"aperture": 1.4,
"shutter": "1/500",
"iso": 160
}
]
}
This skill is used by:
/gallery - Extracts metadata for gallery manifest creationGuides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.
Dispatches multiple subagents concurrently for independent tasks without shared state. Use when facing 2+ unrelated failures or subsystems that can be investigated in parallel.
npx claudepluginhub joshuarweaver/cascade-content-creation-misc-1 --plugin chufucious-chu-gallery-plugin