optimo

📁 microlinkhq/skills 📅 13 days ago
12
总安装量
7
周安装量
#26517
全站排名
安装命令
npx skills add https://github.com/microlinkhq/skills --skill optimo

Agent 安装分布

mcpjam 7
mistral-vibe 7
claude-code 7
junie 7
windsurf 7
zencoder 7

Skill 文档

optimo

optimo reduces image size with a format-specific compression pipeline.

Prerequisites

optimo resolves compressors from PATH and throws if required binaries are missing.

Required by format:

  • all ImageMagick-backed formats: magick
  • SVG pipeline: svgo
  • JPEG second pass: mozjpegtran or jpegtran
  • GIF second pass: gifsicle

Quick Start (CLI)

Use npx for one-off runs:

npx -y optimo public/media

Optimize a single file:

npx -y optimo public/media/banner.png

Run a dry run (no file changes):

npx -y optimo public/media/banner.png --dry-run # long version
npx -y optimo public/media/banner.png -d # short version

Enable lossy mode:

npx -y optimo public/media/banner.jpg --losy # long version
npx -y optimo public/media/banner.jpg -l # short version

Convert and optimize to a new format:

npx -y optimo public/media/banner.png --format jpeg # long version
npx -y optimo public/media/banner.png -f jpeg # short version

Resize by percentage:

npx -y optimo public/media/banner.png --resize 50% # long version
npx -y optimo public/media/banner.png -r 50% # short version

Resize to a target max file size:

npx -y optimo public/media/banner.png --resize 100kB # long version
npx -y optimo public/media/banner.png -r 100kB # short version

Resize by width:

npx -y optimo public/media/banner.png --resize w960 # long version
npx -y optimo public/media/banner.png -r w960 # short version

Resize by height:

npx -y optimo public/media/banner.png --resize h480 # long version
npx -y optimo public/media/banner.png -r h480 # short version

Enable verbose debugging:

npx -y optimo public/media/banner.heic --dry-run --verbose # long version
npx -y optimo public/media/banner.heic -d -v # short version

Pipelines

optimo selects a pipeline by output format:

  • .png -> magick.png
  • .svg -> svgo.svg
  • .jpg/.jpeg -> magick.jpg/jpeg + mozjpegtran.jpg/jpeg
  • .gif -> magick.gif + gifsicle.gif
  • other formats (webp, avif, heic, heif, jxl, etc.) -> magick.<format>

Mode behavior:

  • default: lossless-first pipeline
  • --losy / -l: lossy + lossless pass where supported

Recommended Workflow

  1. Start with --dry-run to confirm target files.
  2. Run optimization on one file first, then scale to directories.
  3. Use --format only when conversion is intended.
  4. Use --resize only when explicit dimension/size control is required.
  5. Use --verbose when diagnosing unsupported files or binary/flag issues.
  6. Verify outputs in version control before committing.

CLI Options

  • -d, --dry-run: Show what would change without writing files.
  • -f, --format: Convert output format (jpeg, webp, avif, etc.).
  • -l, --losy: Enable lossy + lossless pass.
  • -r, --resize: Resize using percentage (50%), max file size (100kB), width (w960), or height (h480).
  • -s, --silent: Suppress per-file logs.
  • -v, --verbose: Print debug logs (pipeline selection, command execution, and errors).

Programmatic API

const optimo = require('optimo')

await optimo.file('/absolute/path/image.jpg', {
  dryRun: false,
  losy: false,
  format: 'webp',
  resize: '50%',
  onLogs: console.log
})

await optimo.file('/absolute/path/image.jpg', {
  resize: '100kB',
  onLogs: console.log
})

await optimo.file('/absolute/path/image.jpg', {
  resize: 'w960',
  onLogs: console.log
})

const result = await optimo.dir('/absolute/path/images')
console.log(result)
// { originalSize, optimizedSize, savings }

Behavior Notes

  • For non-conversion runs, if the optimized file is not smaller, the original file is kept.
  • During conversion, output uses the new extension and the original source file is removed (unless --dry-run).
  • Hidden files and folders (names starting with .) are skipped in directory mode.
  • Unsupported files are reported as [unsupported] and ignored.