Skip to main content
skill CX Codex

icon-set-generator — Claude Code skill: consistent SVG icon sets

Draws a set of SVG icons for one project: same grid, same stroke, same corners. Useful when a site needs its own icons instead of a stock library.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add jezweb/claude-skills --skill icon-set-generator -a claude-code
Open on GitHub

What icon-set-generator does

The skill walks the agent through a fixed sequence. First it asks about the project — what the business does, what feel you want, roughly how many icons. A short brief like "plumber, modern feel" is enough; it does not over-interview. Then it proposes an icon list grouped into navigation, communication, trust, actions and industry-specific, and lets you edit it before anything gets drawn.

Next comes the style preset: Clean, Sharp, Soft, Minimal or Bold. The preset fixes stroke width, line caps and joins, and corner radius, and those rules apply to every icon. Icons are generated in batches of about five, with a visual consistency check after each batch. You get individual .svg files in an icons/ directory, plus style-spec.json and a preview.html page showing the whole set on light and dark backgrounds.

Know the hard rules before you start. Colour comes only through currentColor, every icon shares one viewBox, the root element carries no transform, and coordinates stop at two decimal places. If your project colours icons with an inline fill or a hardcoded stroke, the set will need rework — the skill does not allow it. It also corrects for optics: curves read thinner than straight lines at the same width, so phone or globe outlines get drawn slightly larger.

What it helps with

  • build an SVG icon set for a specific site or app
  • keep one visual style across twenty-plus icons
  • get icons that inherit colour from CSS instead of hardcoded values
  • show a client the full set as a preview page before front-end work
  • match stroke weight and corner radius to the brand's feel

Example prompts for the agent

  • make an icon set for a dental clinic site, modern feel, about 20 icons
  • I need SVG icons for a landing page — navigation, contact, benefits
  • generate icons for this project and show me preview.html

How to install icon-set-generator

1Skills CLI (Vercel)

npx skills add jezweb/claude-skills --skill icon-set-generator -a claude-code

2Manually: put the files in place

~/.claude/skills/icon-set-generator/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/icon-set-generator/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about icon-set-generator

How do I install icon-set-generator in Claude?

Run npx skills add jezweb/claude-skills --skill icon-set-generator -a claude-code. The skill then lives at ~/.claude/skills/icon-set-generator/SKILL.md.

What does icon-set-generator do?

It generates a project-specific SVG icon set from one shared style spec: matching stroke width, corner treatment and visual density. Output is individual files, style-spec.json and a preview page.

How is it different from Lucide or Heroicons?

It does not look up icons in a library; it draws them for your project. Sites built on popular sets tend to look alike, and a custom set gives the project a different face.

Source text

SKILL.md · MIT
---
name: icon-set-generator
description: "Generate cohesive, project-specific SVG icon sets for websites and applications. Use this skill whenever the user needs custom icons, an icon set for a website or app, icons for a client project, or mentions needing SVG icons that look consistent together. Also trigger when the user describes a project and icons would naturally be part of the deliverable — e.g. 'I'm building a site for a plumber' implies they'll need service icons. Trigger on: 'icons for', 'icon set', 'custom icons', 'SVG icons', 'make me icons', 'I need icons', 'website icons', 'project icons', or any request for consistent visual assets for a web project. Produces individual SVG files with a consistent style engine, not generic icon library lookups."
compatibility: claude-code-only
---

# Icon Set Generator

Generate custom, visually consistent SVG icon sets tailored to specific projects. Each set is built from a shared style specification so every icon looks like it belongs with the others — same stroke weight, same corner treatment, same visual density.

## Why This Matters

Generic icon libraries (Lucide, Heroicons) are great but every site using them looks similar. A custom icon set gives a project distinct visual identity. The hard part is consistency — drawing 20+ icons individually causes style drift. This skill solves that by defining style rules once and enforcing them across every icon.

## Workflow

### Step 1: Understand the Project

Ask about the project. You need enough to suggest icons and pick a style:

- What's the business/project? (industry, name, vibe)
- Any brand guidelines or colour palette? (informs style choices even though SVGs use currentColor)
- What feel? (modern, friendly, corporate, minimal, bold)
- Roughly how many icons? (typical small site: 15-25)

A brief like "plumber in Newcastle, modern feel" is enough to proceed. Don't over-interview.

### Step 2: Suggest Icons

Read `references/industry-icons.md` for industry-specific suggestions. Organise into groups:

- **Navigation** — menu, close, arrows, search
- **Communication** — phone, email, location, clock
- **Trust** — star, shield, award, users
- **Actions** — download, share, calendar, form
- **Industry-Specific** — icons unique to this business type

Present the list. Let the user add, remove, or rename before generating.

### Step 3: Define the Style Spec

Read `references/style-presets.md` for full preset definitions. Pick one as starting point:

| Preset | Best For | Stroke | Caps/Joins | Corners |
|--------|----------|--------|------------|---------|
| Clean | Most business sites | 1.5px | round/round | 2px |
| Sharp | Corporate/technical | 1.5px | square/miter | 0px |
| Soft | Friendly/approachable | 2px | round/round | 4px |
| Minimal | Elegant/editorial | 1px | round/round | 0px |
| Bold | High impact/accessible | 2.5px | round/round | 2px |

Tell the user which preset you're recommending and why, then confirm.

### Step 4: Generate the Icons

Generate every icon following the SVG Rules below. Output to an `icons/` directory in the project root (or the user's preferred location).

Read `references/svg-examples.md` before generating — it contains reference implementations showing the right level of complexity and how to handle common icon shapes.

Generate in batches of ~5. After each batch, visually review for consistency before continuing. After all icons are done, create the preview page and style-spec.json.

### Step 5: Deliver

Output structure:
```
icons/
├── style-spec.json
├── preview.html
├── home.svg
├── phone.svg
└── ...
```

Present `preview.html` first so the user sees the complete set visually.

---

## SVG Rules

Every icon in a set MUST follow all of these. Even small inconsistencies — a slightly different stroke width, a rounded corner where others are sharp — make the set look amateur.

### SVG Template

Every icon uses this exact outer structure:

```xml
<svg xmlns="http://www.w3.org/2000/svg"
  width="{grid}" height="{grid}"
  viewBox="0 0 {grid} {grid}"
  fill="none"
  stroke="currentColor"
  stroke-width="{strokeWidth}"
  stroke-linecap="{strokeLinecap}"
  stroke-linejoin="{strokeLinejoin}">
  <!-- icon paths here -->
</svg>
```

### Hard Rules

1. **`currentColor` only** — Never hardcode colours. SVGs inherit colour from CSS. No `fill="#000"` or `stroke="blue"`. If a shape needs fill, use `fill="currentColor"`.

2. **Identical viewBox** — Every icon uses the same `viewBox`. No exceptions.

3. **Identical root stroke attributes** — `stroke-width`, `stroke-linecap`, `stroke-linejoin` on the `<svg>` element must match across all icons. Override on individual elements only when truly necessary.

4. **No transforms on root** — No `translate`, `rotate`, `scale`. Bake positioning into coordinates.

5. **No IDs or classes** — Keep SVGs clean for external styling.

6. **Coordinate precision** — Max 2 decimal places. Snap to half-pixel grid (e.g. `12`, `12.5`, not `12.333`).

7. **Consistent padding** — Maintain configured padding from viewBox edge. For 24px grid with 2px padding, draw within 2–22 coordinate range.

8. **Minimal elements** — Fewest `<path>`, `<circle>`, `<rect>`, `<line>` elements practical. Simpler = smaller + faster rendering.

9. **Visual centring** — Appear visually centred, not just mathematically centred. A leftward arrow shifts slightly right. A house with a chimney adjusts for asymmetry.

### Optical Corrections

Subtle but essential for professional results:

- **Curved stroke compensation**: Curves appear thinner than straight lines at same stroke width. For primarily curved icons (phone, globe), make paths slightly larger rather than changing stroke width.
- **Pointed shape overshoot**: Arrows, chevrons, triangles extend ~0.5px beyond where a square would stop to appear the same size.
- **Visual weight balancing**: Simple icons (single chevron) look lighter than complex ones (gear). Make simpler icons slightly larger in the grid, or use slightly more substantial paths. No icon should look noticeably lighter or heavier than the others.

---

## style-spec.json

```json
{
  "name": "project-name-icons",
  "preset": "clean",
  "grid": 24,
  "strokeWidth": 1.5,
  "strokeLinecap": "round",
  "strokeLinejoin": "round",
  "cornerRadius": 2,
  "padding": 2,
  "opticalBalance": true,
  "iconCount": 20,
  "icons": ["home", "phone", "email"],
  "generated": "2026-02-15"
}
```

---

## Preview Page

Generate a self-contained HTML file displaying all icons for visual review. Read `references/preview-template.md` for the template. Requirements:

- Grid of all icons at native size (24px) with labels
- Same grid at 2x (48px) for detail inspection
- Dark background section (white on dark) for contrast check
- Style spec summary at top
- Inline CSS, no dependencies — just open in browser
- Inline all SVGs directly into the HTML (don't reference external files)

---

## Quality Checklist

Verify every item before delivering:

- [ ] All SVGs have identical `viewBox`, `stroke-width`, `stroke-linecap`, `stroke-linejoin`
- [ ] All SVGs use `currentColor` exclusively
- [ ] Visual weight is balanced across the set
- [ ] Padding is consistent (nothing touching viewBox edge)
- [ ] All icons visually centred
- [ ] Filenames are lowercase kebab-case (`arrow-right.svg`)
- [ ] Preview HTML renders all icons correctly
- [ ] style-spec.json is accurate and lists all icons

---

## Reference Files

Read these before generating:

- `references/style-presets.md` — Detailed preset definitions and selection guidance
- `references/industry-icons.md` — Industry-specific icon suggestions
- `references/preview-template.md` — HTML template for the preview page
- `references/svg-examples.md` — Example SVGs showing proper construction at various complexity levels

© jezweb · MIT · jezweb/claude-skills

Similar skills

Everything for Design →

From the same set54

tanstack-start Scaffolds a full-stack TanStack Start app on Cloudflare Workers from scratch: SSR, file-based routing, D1, auth. Useful when you want a working skeleton without cloning a template. CX Codex +1 2,500installs image-processing Resize, trim whitespace, convert PNG/WebP/JPG, optimise size, build thumbnails and OG cards. Runs on Pillow through the img-process CLI. CX Codex +1 2,400installs favicon-gen Generates complete favicon packages and web manifests from logos, text monograms, or brand colors. Provides clean HTML markup for site headers. CX Codex +1 2,200installs google-apps-script A skill that writes Apps Script code for Google Sheets and Workspace: custom menus, triggers, sidebars, PDF export. CX Codex +1 2,000installs seo-local-business Generates a complete local SEO package: <head> meta tags, JSON-LD LocalBusiness schema, robots.txt, and sitemap.xml for service-based websites. CX Codex +1 1,800installs elevenlabs-agents Build ElevenLabs conversational voice agents with configured tools, a knowledge base, and SDK integration for an app or server. CX Codex +1 1,700installs wordpress-content Creates and edits WordPress posts, pages, media, categories, tags and menus through WP-CLI or the REST API. Useful when content has to go up in batches instead of by hand. CX Codex +1 1,700installs d1-drizzle-schema Generates Drizzle ORM schemas tailored for Cloudflare D1 quirks. Helps scaffold tables, write migration scripts, and document database structures. CX Codex +1 1,700installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor