image-resize · git:20260827.d2b68b3 · 2026-08-27 · sha256 6d1312cb6509e6d8
image-resize git:20260827.d2b68b3A
Immutable. This exact content is served forever at /api/v1/blob/6d1312cb6509e6d8.
---
name: image-resize
description: Resizes a single image to explicit width and height using ImageMagick. Use when the user wants image resize, scale a sprite/texture, resize a UI asset or icon, or mentions ImageMagick resize �?target size must be specified before running.
---
# Image Resize
Resize **one image file** to a **user-specified width and height** via **ImageMagick**. **Both dimensions are required** �?do not run this skill until the user (or task) provides target pixel size.
## Rules
When this skill applies, read and follow [skill-dependency-manager](../skill-dependency-manager.md) �?run scripts as documented, install missing tools into `.dependency/`.
- **Require target size first.** If width/height are missing, ask the user before running.
- **Single file only.** Pass one image with `--image`; directories are not supported.
- Run `resize.py` through the bundled script �?do not hand-write `magick -resize` commands.
- **Never overwrite source files.** Output goes to `image-resize/` (or `--output`) by default.
- `populated: false` for `imagemagick` is not a reason to skip. Install first, set `populated: true`, retry the same command.
## Setup (first run)
1. Download ImageMagick portable build from [imagemagick.org](https://imagemagick.org/script/download.php) and extract to `.dependency/imagemagick/`.
Windows result example: `.dependency/imagemagick/magick.exe`
2. Register in `.dependency/manifest.json`:
```json
"imagemagick": {
"populated": true,
"bin": ".dependency/imagemagick/magick.exe"
}
```
Use `bin/magick` on Unix (no `.exe`).
## Quick Start
**Both `--width` and `--height` are required:**
```bash
.dependency/python/python .ai/image-resize/resize.py --image assets/sprites/hero.png --width 128 --height 128
```
Example: `assets/ui/icon.png` �?`assets/ui/image-resize/icon.png` at 64×64
Custom output path:
```bash
.dependency/python/python .ai/image-resize/resize.py --image assets/icons/badge.png -o assets/icons_64 --width 64 --height 64
```
## Resize Modes
| Mode | Flag | Behavior |
|------|------|----------|
| `fit` *(default)* | `--mode fit` | Fit inside WxH, preserve aspect ratio (letterbox area unused) |
| `fill` | `--mode fill` | Cover WxH, center-crop overflow |
| `exact` | `--mode exact` | Force WxH, ignore aspect ratio |
```bash
# Fit within 128×128 (default �?no distortion)
.dependency/python/python .ai/image-resize/resize.py --image assets/hero.png --width 128 --height 128
# Cover 128×128, crop center
.dependency/python/python .ai/image-resize/resize.py --image assets/hero.png --width 128 --height 128 --mode fill
# Stretch to exactly 128×128
.dependency/python/python .ai/image-resize/resize.py --image assets/hero.png --width 128 --height 128 --mode exact
```
## Defaults
| Option | Default | Notes |
|--------|---------|-------|
| `--image` | **Required** | Single supported image file |
| `--width` / `--height` | **Required** | Must be positive integers |
| `--mode` | `fit` | `fill` or `exact` when user needs crop or stretch |
| Output | `<source-dir>/image-resize/<source-name>` | Use `--output` for custom file or directory |
| Format | Same as source | Extension preserved (`.png`, `.jpg`, etc.) |
Supported inputs: `.jpg`, `.jpeg`, `.png`, `.webp`, `.gif`, `.bmp`, `.tif`, `.tiff`, `.avif`, `.ico`.
## Agent Workflow
1. **Confirm size** �?get explicit width and height from the user (e.g. "128×128", "64 wide and 64 tall"). Do not guess from context unless the user already stated dimensions.
2. **Pick mode** �?default `fit`; use `fill` for square thumbnails from non-square art; use `exact` only when the user accepts distortion.
3. **One file per run** �?resize one image, verify dimensions, then repeat for additional files if needed.
4. **Paths** �?pass whatever image path the user gives; output lands in `image-resize/` next to that file by default.
5. **Revert** �?delete output file or `git restore`; sources are never modified.
## Agent Notes
1. Use the bundled script, not hand-written ImageMagick commands.
2. Missing Python/ImageMagick �?populate `.dependency/` per skill-dependency-manager, retry same command.
3. **Do not copy, move, or replace the source with resized output** �?tell the user where the output file is.
4. Need **format conversion only** (no resize) �?[image-to-png](../image-to-png/SKILL.md).
5. Need **trim borders** after resize �?[image-trim](../image-trim/SKILL.md).
## Troubleshooting
| Issue | Fix |
|-------|-----|
| `imagemagick` missing in manifest | Follow **Setup**; update manifest |
| Missing `--width` / `--height` | Ask user for target size; both flags are required |
| Directory passed to `--image` | Run once per file; this skill accepts image files only |
| Output larger/smaller than expected | Check `--mode` �?`fit` preserves aspect inside the box |
| Distorted sprite | Switch from `exact` to `fit` or `fill` |
| Animated GIF | Only first frame is processed by default ImageMagick behavior |
## CLI
Copy-paste commands: [cli/image-resize.md](../../../cli/image-resize.md)