Search and generate icons for Chrome browser extensions...
Generate professional icons for Chrome browser extensions in seconds using Iconify's vast library of 275,000+ free open-source icons.
When the user requests an extension icon, follow these steps:
Extract key information:
./icons)./manifest.json)Run the search command with the extracted keyword:
node ~/.claude/skills/chrome-extension-icons/scripts/generate-icons.js search "<keyword>"
Expected output:
Present to user:
Example presentation:
I found a great calendar icon for your extension:
Best match: mdi:calendar
Preview: https://icon-sets.iconify.design/mdi/icons/calendar.html
I'll generate this icon in 4 sizes (16x16, 32x32, 48x48, 128x128) for your Chrome extension.
If you'd prefer a different style, I also have 4 alternatives saved that you can choose from.
Shall I proceed with this icon?
Once confirmed (or auto-proceed if user said "yes" to any icon), run:
node ~/.claude/skills/chrome-extension-icons/scripts/generate-icons.js generate \
--icon "<icon-id>" \
--output "./icons" \
--manifest "./manifest.json"
With custom color (if user specified a color):
node ~/.claude/skills/chrome-extension-icons/scripts/generate-icons.js generate \
--icon "<icon-id>" \
--output "./icons" \
--manifest "./manifest.json" \
--color "#ba3329"
After generation, check the output:
ls -lh ./icons/
Verify 4 PNG files are created:
icon16.pngicon32.pngicon48.pngicon128.pngCheck manifest.json was updated:
cat ./manifest.json | grep -A 6 '"icons"'
Provide a summary:
ā
Icon generation complete!
Generated files:
- icons/icon16.png (1.2 KB)
- icons/icon32.png (2.4 KB)
- icons/icon48.png (3.8 KB)
- icons/icon128.png (9.5 KB)
Your manifest.json has been updated:
{
"icons": {
"16": "icons/icon16.png",
"32": "icons/icon32.png",
"48": "icons/icon48.png",
"128": "icons/icon128.png"
}
}
š Alternative icons (if you want to try a different style):
1. mdi:calendar-month - https://icon-sets.iconify.design/mdi/icons/calendar-month.html
2. fa:calendar - https://icon-sets.iconify.design/fa/icons/calendar.html
3. heroicons:calendar - https://icon-sets.iconify.design/heroicons/icons/calendar.html
4. carbon:calendar - https://icon-sets.iconify.design/carbon/icons/calendar.html
Just let me know if you'd like to try any of these alternatives!
When user requests a specific color (e.g., "make it red", "use my brand color #ba3329"):
node ~/.claude/skills/chrome-extension-icons/scripts/generate-icons.js generate \
--icon "mdi:home" \
--color "#ba3329" \
--output "./icons"
Note: Color customization works best with single-color SVG icons. Complex gradients may not render as expected.
When user has their own logo or SVG file:
First check if the file exists:
ls -lh <svg-file-path>
Convert it:
node ~/.claude/skills/chrome-extension-icons/scripts/generate-icons.js convert \
--input "<svg-file-path>" \
--output "./icons" \
--manifest "./manifest.json"
Optionally apply color:
node ~/.claude/skills/chrome-extension-icons/scripts/generate-icons.js convert \
--input "./logo.svg" \
--output "./icons" \
--color "#ff0000"
When user needs icons for multiple projects:
Create a configuration file icons-config.json:
{
"projects": [
{
"name": "Project A",
"icon": "mdi:calendar",
"output": "./project-a/icons",
"manifest": "./project-a/manifest.json"
},
{
"name": "Project B",
"icon": "mdi:music",
"output": "./project-b/icons",
"manifest": "./project-b/manifest.json",
"color": "#ff0000"
},
{
"name": "Project C",
"input": "./project-c/logo.svg",
"output": "./project-c/icons",
"manifest": "./project-c/manifest.json"
}
]
}
Run batch generation:
node ~/.claude/skills/chrome-extension-icons/scripts/generate-icons.js batch \
--config icons-config.json
Report summary showing success/failure for each project
Always inform users about Chrome's icon requirements:
Format: PNG only (SVG is not supported in manifest.json)
Transparency: Supported and recommended for non-square logos
File size: Aim for < 100 KB total for all 4 files
The script automatically creates or updates the icons field:
{
"manifest_version": 3,
"name": "My Extension",
"version": "1.0.0",
"icons": {
"16": "icons/icon16.png",
"32": "icons/icon32.png",
"48": "icons/icon48.png",
"128": "icons/icon128.png"
}
}
If action or browser_action exists, default_icon is also updated:
{
"action": {
"default_icon": {
"16": "icons/icon16.png",
"32": "icons/icon32.png",
"48": "icons/icon48.png",
"128": "icons/icon128.png"
}
}
}
If the script fails with Sharp installation error:
macOS:
brew install vips
cd ~/.claude/skills/chrome-extension-icons && npm install
Ubuntu/Debian:
sudo apt-get install libvips-dev
cd ~/.claude/skills/chrome-extension-icons && npm install
Windows:
npm install --global windows-build-tools
cd ~/.claude/skills/chrome-extension-icons && npm install
Inform the user of these steps if installation fails.
The script has built-in retry logic (3 attempts with exponential backoff). If Iconify API fails:
If HTTP 429 error occurs, the script automatically waits and retries. Inform user:
The icon API is experiencing high traffic. Waiting 60 seconds before retry...
If an icon doesn't render well or user doesn't like it:
ls to confirm files were created successfullySee examples/usage.md for detailed conversation examples and edge cases.
| Issue | Solution |
|---|---|
| Sharp won't install | Install libvips: brew install vips (macOS) |
| API timeout | Retry after a moment, check connection |
| Icon looks bad | Try a different icon from alternatives |
| Wrong colors | Use --color flag for single-color icons |
| File too large | Complex SVGs may create large PNGs, try simpler icon |
| Manifest not updating | Check file permissions, verify path is correct |
Remember: This skill automates a tedious process. Be helpful, present clear options, and make the experience smooth for the user. Always show preview links so users know what they're getting before generation.