sh-icon-genie
v0.2.0
Published
Interactive CLI that generates a Phosphor-style SVG icon from a natural-language description — library match first, keyless AI generation fallback. Outputs SVG, a React component, and PNG.
Maintainers
Readme
sh-icon-genie
Interactive CLI that turns a description into a Phosphor-style SVG icon. It matches an existing icon first (offline, free) and falls back to keyless AI generation for anything novel. Outputs SVG, a React component, and a PNG.
npx sh-icon-genie # interactive
npx sh-icon-genie "gold bars" # or describe inlineHow it works
Describe an icon → pick from the closest of 1,500+ bundled icons, reword, or ✨ generate a new one. Generation asks the model for SVG path data (JSON), which is validated, sanitized, and optimized into a viewBox="0 0 256 256", fill="currentColor" icon. Then choose outputs, a name, and a directory.
AI generation
The match step needs no key and is always free/offline. For novel icons, generation works out of the box with no API key — it calls a hosted proxy backed by Cloudflare Workers AI (free):
npx sh-icon-genie "a rocket ship" # pick "✨ Generate" — no key neededSelf-hosting your own proxy is optional — see proxy/. Override the proxy URL per-run with ICON_GENIE_PROXY_URL.
Free models are weaker at precise SVG path geometry than top-tier paid models — expect rougher icons. The library match (free, high quality) covers existing concepts; AI is the fallback for novel ones.
Output
name.svg— optimized,currentColor, 256 gridName.tsx— React component withsize/colorpropsname.png— 512px (needs optional@resvg/resvg-js)
Safety
Generated SVG is validated (path syntax + bounds) and sanitized (no scripts, external refs, or handlers) before writing. Trademarked logos are refused. Review generated icons before shipping — AI output varies.
Develop
npm install && npm run build # → dist/cli.js
node dist/cli.js "a watering can"License
MIT
