skills/boulea7/chrome-extension-icons/SKILL.md
Search and generate icons for Chrome browser extensions. Automatically downloads SVG icons from Iconify (275,000+ free icons), converts them to required PNG sizes (16x16, 32x32, 48x48, 128x128), and updates manifest.json configuration. Use when the user mentions "extension icon", "browser extension icon", "chrome icon", "add icon to extension", "generate icon for extension", or when working with Chrome extension manifest.json icon setup. Supports color customization, local SVG conversion, and batch generation for multiple projects.
npx skillsauth add aiskillstore/marketplace chrome-extension-iconsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.
development
Apple Human Interface Guidelines for content display components. Use this skill when the user asks about charts component, collection view, image view, web view, color well, image well, activity view, lockup, data visualization, content display, displaying images, rendering web content, color pickers, or presenting collections of items in Apple apps. Also use when the user says how should I display charts, what's the best way to show images, should I use a web view, how do I build a grid of items, what component shows media, or how do I present a share sheet. Cross-references: hig-foundations for color/typography/accessibility, hig-patterns for data visualization patterns, hig-components-layout for structural containers, hig-platforms for platform-specific component behavior.
tools
Automate HelpDesk tasks via Rube MCP (Composio): list tickets, manage views, use canned responses, and configure custom fields. Always search tools first for current schemas.
testing
Expert Haskell engineer specializing in advanced type systems, pure functional design, and high-reliability software. Use PROACTIVELY for type-level programming, concurrency, and architecture guidance.
tools
GraphQL gives clients exactly the data they need - no more, no less. One endpoint, typed schema, introspection. But the flexibility that makes it powerful also makes it dangerous. Without proper controls, clients can craft queries that bring down your server. This skill covers schema design, resolvers, DataLoader for N+1 prevention, federation for microservices, and client integration with Apollo/urql. Key insight: GraphQL is a contract. The schema is the API documentation. Design it carefully.