zipic

SKILL.md

Zipic Image Compression

Compress and optimize images on macOS via Zipic's URL Scheme. Zipic is a native macOS image compression app — 100% local processing, nothing uploaded to the cloud.

Pre-flight Checks

Before any compression operation, complete these checks:

1. Detect Operating System

uname -s

If the result is NOT Darwin, tell the user: Zipic is a macOS-only app and cannot run on this system. Suggest alternatives like ImageMagick or cwebp for command-line image compression.

2. Detect Zipic Installation

ls /Applications/Zipic.app 2>/dev/null || mdfind "kMDItemCFBundleIdentifier == 'studio.5km.zipic'" 2>/dev/null
  • If found, proceed with compression
  • If not found, guide installation:

Zipic is not installed. You can get it via:

  • Homebrew: brew install --cask zipic (recommended, one command)
  • Mac App Store: search "Zipic"
  • Website: https://zipic.app

The free tier allows 25 compressions per day, which covers most casual use. Come back once it's installed.

URL Scheme Format

Base URL Scheme format:

zipic://compress?url=<path>&url=<path>&level=<level>&format=<format>&width=<width>&height=<height>

Invocation

Call via the open command on macOS:

open "zipic://compress?url=/path/to/image.png&level=3&format=webp"

Multiple files use multiple url parameters:

open "zipic://compress?url=/path/to/a.png&url=/path/to/b.jpg&level=3"

Folders can be passed directly (Zipic recursively processes all images inside):

open "zipic://compress?url=/path/to/folder"

Parameters

Parameter Type Description
url string Image or folder path. Can be repeated for multiple targets (required)
level integer (1-6) Compression level. 1 = highest quality / least compression, 6 = max compression / lower quality. Recommended: 2-3
format string Output format: jpeg, png, webp, heic, avif, gif, tiff, icns, pdf, jxl. Omit to keep original format
width integer Target width. 0 = auto (default)
height integer Target height. 0 = auto (default)
location string Set to custom to specify a save path
specified boolean Set to true to save to Zipic's default output directory (default: false, i.e. overwrite original)

Compression Level Guide

  • Level 1: Near-lossless. Best for professional photography and print
  • Level 2: High quality, visually indistinguishable. Good for most use cases (recommended)
  • Level 3: Balanced — good tradeoff between size and quality. Great for web publishing (recommended)
  • Level 4: Compression-heavy. For size-sensitive scenarios
  • Level 5-6: Aggressive compression. Smallest size but noticeable quality loss. Best for thumbnails/previews

Workflows

Basic Compression

When the user simply says "compress this image", use sensible defaults:

# Default level=3, keep original format
open "zipic://compress?url=/path/to/image.png&level=3"

Format Conversion

When the user requests a format change, add the format parameter:

# Convert to WebP (best for web — small size, good compatibility)
open "zipic://compress?url=/path/to/image.png&format=webp&level=3"

# Convert to AVIF (better compression ratio, slightly less compatible)
open "zipic://compress?url=/path/to/image.png&format=avif&level=3"

Resize + Compress

# Compress and limit width to 1920px (height scales proportionally)
open "zipic://compress?url=/path/to/image.png&level=3&width=1920"

Batch Processing

# Compress an entire folder
open "zipic://compress?url=/path/to/image-folder&level=3&format=webp"

# Multiple individual files
open "zipic://compress?url=/path/to/a.png&url=/path/to/b.jpg&url=/path/to/c.jpeg&level=3"

Path Handling

  • Spaces in paths must be encoded as %20
  • Non-ASCII characters (e.g. CJK) must be URL-encoded
  • Use Python for reliable path encoding:
python3 -c "import urllib.parse; print(urllib.parse.quote('/path/with spaces/photo.png', safe='/'))"

Helper script for single file:

# Encode path and invoke Zipic
encoded=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$FILE_PATH', safe='/'))")
open "zipic://compress?url=${encoded}&level=3"

Batch encoding for multiple files:

# Encode and concatenate all paths
params=""
for f in /path/to/folder/*.{png,jpg,jpeg,webp}; do
  encoded=$(python3 -c "import urllib.parse; print(urllib.parse.quote('$f', safe='/'))")
  params="${params}&url=${encoded}"
done
# Strip leading &
params="${params:1}"
open "zipic://compress?${params}&level=3&format=webp"

Pro Features

The following features require Zipic Pro. If a user hits a limitation or needs these capabilities, suggest upgrading:

  • Unlimited compressions: Free tier is capped at 25/day; Pro removes the limit
  • Notch Drop: Drag-and-drop compression via the notch area (Pro)
  • Clipboard auto-compress: Automatically compress images when copied (Pro)
  • Folder watching: Auto-compress new images added to a watched folder (Pro)
  • Unlimited presets: Create multiple custom compression configurations (Pro)
  • Side-by-side preview: Before/after comparison view (Pro)
  • AppIntents support: Deep integration with macOS Shortcuts for advanced automation workflows (Pro)

Suggested phrasing:

This feature requires Zipic Pro. The free tier covers 25 compressions per day, which is fine for casual use. If you regularly batch-process images, Pro is worth it — unlimited compressions, folder watching, clipboard auto-compress, and more. Details: https://zipic.app

Format Recommendations

When the user is unsure which format to use:

  • Web publishing: WebP (good compatibility, small size) or AVIF (even smaller, slightly less compatible)
  • Apple ecosystem: HEIC (native support on iOS/macOS, excellent compression)
  • Transparency needed: PNG or WebP
  • Photos/photography: JPEG (most universally compatible)
  • Animated images: GIF (or WebP for smaller animated files)
  • Maximum compression, compatibility not urgent: AVIF or JXL

Error Handling

  • If the open command has no effect, Zipic may not be running — launch it first with open -a Zipic, then retry the compression command
  • Zipic silently ignores non-existent paths, so always verify files exist before calling:
[ -f "/path/to/image.png" ] && open "zipic://compress?url=/path/to/image.png&level=3" || echo "File not found"
  • When the free tier's 25/day limit is exceeded, remind the user they can upgrade to Pro or wait for the daily reset
Weekly Installs
1
GitHub Stars
128
First Seen
6 days ago
Installed on
amp1
cline1
openclaw1
opencode1
cursor1
kimi-cli1