alpacalabsllc/resize-images
Batch-resize or convert a folder of images for web, social media, slides, or ARCH-size print output while preserving originals. Use for image resizing, format presets, or photo batches; not for product-image background removal.
npx skills add https://github.com/AlpacaLabsLLC/skills-for-architects --skill resize-images
Resize project photos and renders for web publishing, social media, and print layouts. Always asks the user for the source folder before doing anything. Outputs resized copies into clearly named subfolders — originals are never modified.
Before doing anything else, ask:
> "Which folder contains the images you'd like to resize?"
Wait for the user's response. Accept any valid path — absolute, relative, or with ~. Expand ~ to the user's home directory.
Then ask:
> "Which outputs do you need? (choose one or more)
> - Web — WebP at 1920px (hero), 1200px (standard), 400px (thumb)
> - Social — center-cropped WebP: Instagram square (1080×1080), Instagram portrait (1080×1350), Twitter/X (1200×675), LinkedIn (1200×627)
> - Slides — center-cropped JPEG: standard 4:3 (1024×768), widescreen 16:9 (1920×1080)
> - Print — 300 DPI JPEG at ARCH A (9×12), ARCH B (12×18), ARCH C (18×24)
> - All"
List supported files non-recursively: .jpg, .jpeg, .png, .tif, .tiff, and .webp. Report the count: "Found N image(s) in [folder]. Ready to resize."
If the folder is empty or contains no supported images, tell the user and stop.
Confirm Pillow is available:
python3 -c "import PIL; print('ok')" 2>/dev/null || echo "missing"
If missing, tell the user:
> "Pillow isn't installed. Run pip install Pillow then try again."
Stop if Pillow is unavailable.
Run the bundled processor once, passing the source folder and selected modes:
python3 "${CLAUDE_PLUGIN_ROOT}/skills/resize-images/scripts/resize_images.py" "<folder>" web social slides print
Include only selected modes. The script creates the matching resized-<mode>/ folders, preserves originals, reports each output, continues past corrupt inputs, and exits nonzero if any input fails. Never recreate or modify the script inline.
After all files are processed, show a summary:
Resized N image(s) → [folder]/resized-web/, resized-social/, resized-print/
Web (resized-web/):
project-photo-hero.webp (1920×1385) 138 KB
project-photo-standard.webp (1200×866) 62 KB
project-photo-thumb.webp (400×288) 11 KB
Social (resized-social/):
project-photo-social-square.webp (1080×1080) 74 KB
project-photo-social-portrait.webp (1080×1350) 91 KB
project-photo-social-landscape.webp (1200×675) 65 KB
project-photo-social-linkedin.webp (1200×627) 63 KB
Print (resized-print/):
project-photo-arch-a.jpg (2700×1949) 959 KB
project-photo-arch-b.jpg (3600×2599) 1698 KB
project-photo-arch-c.jpg (5019×3623) 3470 KB
If any files failed, list them with their error messages.
Take alpacalabsllc/resize-images 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.
The instructions reference pip.
Without those the skill loads but fails at the first command.