npx claudepluginhub sacredvoid/skillkit --plugin skillkitThis skill is limited to using the following tools:
Fetch icons, illustrations, and photos from Icons8's library of 1.5M+ assets.
Generates square PNG icons with transparent backgrounds for app icons, favicons, and UI using Google Gemini. Supports flat/3D/line/glyph/gradient/minimal styles, sizes 128-1024px, batch sets, reference matching.
Generates and adapts visual assets like hero images, backgrounds, illustrations, icons, favicons, and mascots consistent with project visual identity. Analyzes existing repo assets first before generation.
Provides Iconsax icon library with Linear, Bold, Two-tone styles and AI generation for premium, consistent UI icons in navigation menus, toolbars, and action buttons.
Share bugs, ideas, or general feedback.
Fetch icons, illustrations, and photos from Icons8's library of 1.5M+ assets.
Read config from ~/.claude/skills/icons8/config.json:
{
"api_key": "",
"default_count": 10,
"default_style": "color",
"default_format": "png",
"default_size": 128,
"output_dir": "assets/icons"
}
All fields are optional. The skill works without an API key via the CDN for icons.
Load config silently at the start of every invocation:
cat ~/.claude/skills/icons8/config.json 2>/dev/null || echo '{}'
| Style Code | Description |
|---|---|
color | Colorful flat icons (most popular) |
ios / ios-filled | Apple iOS style, outline and filled |
material / material-outlined | Google Material Design |
fluency | Microsoft Fluency 3D-like |
3d-fluency | Full 3D rendered icons |
flat-round | Flat with rounded shapes |
dusk | Gradient duotone icons |
plumpy | Thick-lined colorful icons |
doodle | Hand-drawn sketch style |
stickers | Sticker/emoji style |
emoji | Platform emoji style |
tiny-color | Small colorful pixel icons |
pastel-glyph | Soft pastel colored |
cotton | Soft rounded style |
office | Microsoft Office style |
Use WebFetch to see the full list: https://api-icons.icons8.com/api/publicApi/platforms
Format: [type:] query where type is optional.
| Prefix | Asset Type | Example |
|---|---|---|
icon: or icons: | Icons | icon: shopping cart |
illustration: or illus: | Illustrations | illustration: teamwork |
photo: or photos: | Photos | photo: modern office |
| (no prefix) | Icons (default) | rocket ship |
Also detect style overrides in the input:
"shopping cart in material style" -> query: "shopping cart", style: "material""3d rocket icon" -> query: "rocket", style: "3d-fluency"If no input was provided, scan the current directory for context (same as image-fetcher):
| Source | What to extract |
|---|---|
README.md | Project name, description, purpose |
package.json / pyproject.toml | Name, description, keywords |
| HTML/JSX/TSX files (first 3) | What UI elements exist, what icons might be needed |
Existing icons in assets/, public/, static/, icons/ | What already exists |
Then use AskUserQuestion:
What kind of assets do you need from Icons8?
Options:
- Icons (1.5M+ across 116 styles)
- Illustrations (vector SVG/PNG, multiple artistic styles)
- Photos (500K+ stock photos)
Follow up with: subject/query, preferred style, quantity needed.
Search endpoint:
curl -s "https://api-icons.icons8.com/api/publicApi/icons?term=QUERY&amount=COUNT&platform=STYLE&language=en-US" \
-H "Api-Key: API_KEY"
Response fields to extract:
docs[].id - icon IDdocs[].name - icon namedocs[].commonName - display namedocs[].platform - style codedocs[].isFree - boolean, whether free to usedocs[].category - category namedocs[].tags[] - related tagsDownload endpoint (for SVG source):
curl -s "https://api-icons.icons8.com/api/publicApi/icons/ICON_ID" \
-H "Api-Key: API_KEY"
Response includes icon.svg field with the full SVG source.
Icons8 provides a free CDN at img.icons8.com. Use this pattern:
https://img.icons8.com/{style}/{size}/{icon-name}.png
Examples:
https://img.icons8.com/color/128/shopping-cart.pnghttps://img.icons8.com/ios-filled/96/home.pnghttps://img.icons8.com/3d-fluency/128/rocket.pnghttps://img.icons8.com/material-filled/64/search.pngCDN rules:
https://img.icons8.com/color/128/FF5733/shopping-cart.pngCDN quirks (important):
material-filled is NOT a valid style. Use material or material-outlined instead.{"success":false,"error":"...","code":"ICON_NAME_NOT_FOUND"} (wrong icon name){"success":false,"error":"...","code":"PLATFORM_ICON_NOT_FOUND"} (icon exists but not in that style)file command. If it's not PNG image data, the download failed.CDN search strategy (no API key):
file command that the result is a valid PNG (not JSON or HTML)WebSearch: "site:icons8.com/icon {QUERY}"
/icon/{id}/{slug})PLATFORM_ICON_NOT_FOUND, try "color" (most complete style) or suggest alternativesFor multiple icons (when user wants a set), search for variations:
WebSearch: "site:icons8.com/icons/set/{QUERY}/{STYLE}"
Then WebFetch that URL to extract icon names from the page.
Icons8 illustrations don't have a public CDN. Use WebSearch + WebFetch:
WebSearch: "site:icons8.com/illustrations/illustration/{QUERY}"
Or fetch the illustrations search page:
WebFetch: "https://icons8.com/illustrations/s/{QUERY}"
Extract illustration URLs and metadata from the page. Illustrations are available as SVG and PNG.
If the user has an API key, also try:
curl -s "https://api-icons.icons8.com/api/publicApi/illustrations?term=QUERY&amount=COUNT" \
-H "Api-Key: API_KEY"
Use WebSearch to find Icons8 stock photos:
WebSearch: "site:icons8.com/photos {QUERY}"
Or fetch the search page:
WebFetch: "https://icons8.com/photos/s/{QUERY}"
Extract photo URLs and metadata.
Found 10 icons for "shopping cart" in Color style:
| # | Name | Style | Free | Preview URL |
|---|------|-------|------|-------------|
| 1 | Shopping Cart | color | Yes | img.icons8.com/color/128/shopping-cart.png |
| 2 | Add Shopping Cart | color | Yes | img.icons8.com/color/128/add-shopping-cart.png |
| 3 | Shopping Cart Loaded | color | Yes | img.icons8.com/color/128/shopping-cart-loaded.png |
...
Want to:
- Download specific ones? (enter numbers: 1, 3, 5)
- Download all?
- See these in a different style? (ios, material, 3d-fluency, etc.)
- Search for something else?
Found 5 illustrations for "teamwork":
| # | Title | Style | Format |
|---|-------|-------|--------|
| 1 | Team collaboration | Corporate | SVG, PNG |
| 2 | Remote teamwork | 3D | SVG, PNG |
...
Found 5 photos for "modern office":
| # | Description | Size | Category |
|---|-------------|------|----------|
| 1 | Open plan office with natural light | 1920x1280 | Business |
...
Then ask via AskUserQuestion which to download.
Determine output directory based on asset type:
{output_dir}/ (default: assets/icons/)assets/illustrations/assets/photos/Create the output directory:
mkdir -p ./OUTPUT_DIR
Generate filenames:
{icon-name}-{style}.{ext} for icons{title-slug}.{ext} for illustrations/photosDownload:
Icons via CDN:
curl -sL "https://img.icons8.com/{style}/{size}/{icon-name}.png" -o "./OUTPUT_DIR/{icon-name}-{style}.png"
Icons via API (SVG): Extract the SVG content from the API response and write it directly:
# SVG content from API response
echo 'SVG_CONTENT' > "./OUTPUT_DIR/{icon-name}-{style}.svg"
Illustrations/Photos:
curl -sL "ASSET_URL" -o "./OUTPUT_DIR/FILENAME"
file "./OUTPUT_DIR/FILENAME"
Confirm it's a valid image file (PNG, SVG, JPEG), not an HTML error page.
Downloaded 5 icons to ./assets/icons/:
1. shopping-cart-color.png (128x128, 4.2 KB)
CDN: img.icons8.com/color/128/shopping-cart.png
2. add-shopping-cart-color.png (128x128, 3.8 KB)
CDN: img.icons8.com/color/128/add-shopping-cart.png
3. shopping-cart-ios-filled.png (128x128, 2.1 KB)
CDN: img.icons8.com/ios-filled/128/shopping-cart.png
Style: Color, iOS Filled | Format: PNG | Size: 128px
License: Free with link attribution to Icons8 (icons8.com).
For attribution-free use, get an API key at https://icons8.com/pricing
If the project context suggests web/app development, offer ready-to-use code:
HTML:
<!-- Option 1: Local file -->
<img src="assets/icons/shopping-cart-color.png" alt="Shopping Cart" width="32" height="32">
<!-- Option 2: CDN embed (requires attribution link) -->
<img src="https://img.icons8.com/color/32/shopping-cart.png" alt="Shopping Cart">
<a href="https://icons8.com">Icons by Icons8</a>
React/JSX:
<img src="/assets/icons/shopping-cart-color.png" alt="Shopping Cart" width={32} height={32} />
CSS:
.cart-icon {
background-image: url('assets/icons/shopping-cart-color.png');
width: 32px;
height: 32px;
background-size: contain;
}
Markdown:

Only show snippets relevant to the detected project type (check for .html, .jsx, .tsx, .vue, .css files).
If the user requests multiple icons at once (e.g., "I need icons for: home, settings, user, search, notifications"), handle them all in a single run:
# Batch CDN download example
for icon in home settings user search notifications; do
curl -sL "https://img.icons8.com/color/128/${icon}.png" -o "./assets/icons/${icon}-color.png"
done
When fetching multiple icons for the same project, always use the same style across all icons. If the user has already downloaded icons in a specific style, detect that:
ls ./assets/icons/ 2>/dev/null | head -20
If existing icons follow a pattern (e.g., all *-material.png), default to that style for new downloads.
<a href="https://icons8.com">Icons by Icons8</a>)