{"id":"icon-set-generator","name":"icon-set-generator","summary":"ウェブサイトやアプリケーション向けに一貫性のあるプロジェクト固有のSVGアイコンセットを生成する。ユーザーがカスタムアイコン、ウェブサイトやアプリのアイコンセット、クライアントプロジェクト用のアイコン、または一貫した見た目のSVGアイコンが必要な場合、このスキルを活用してください。","body":"# Icon Set Generator\n\nGenerate 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.\n\n## Why This Matters\n\nGeneric 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.\n\n## Workflow\n\n### Step 1: Understand the Project\n\nAsk about the project. You need enough to suggest icons and pick a style:\n\n- What's the business/project? (industry, name, vibe)\n- Any brand guidelines or colour palette? (informs style choices even though SVGs use currentColor)\n- What feel? (modern, friendly, corporate, minimal, bold)\n- Roughly how many icons? (typical small site: 15-25)\n\nA brief like \"plumber in Newcastle, modern feel\" is enough to proceed. Don't over-interview.\n\n### Step 2: Suggest Icons\n\nRead `references/industry-icons.md` for industry-specific suggestions. Organise into groups:\n\n- **Navigation** — menu, close, arrows, search\n- **Communication** — phone, email, location, clock\n- **Trust** — star, shield, award, users\n- **Actions** — download, share, calendar, form\n- **Industry-Specific** — icons unique to this business type\n\nPresent the list. Let the user add, remove, or rename before generating.\n\n### Step 3: Define the Style Spec\n\nRead `references/style-presets.md` for full preset definitions. Pick one as starting point:\n\n| Preset | Best For | Stroke | Caps/Joins | Corners |\n|--------|----------|--------|------------|---------|\n| Clean | Most business sites | 1.5px | round/round | 2px |\n| Sharp | Corporate/technical | 1.5px | square/miter | 0px |\n| Soft | Friendly/approachable | 2px | round/round | 4px |\n| Minimal | Elegant/editorial | 1px | round/round | 0px |\n| Bold | High impact/accessible | 2.5px | round/round | 2px |\n\nTell the user which preset you're recommending and why, then confirm.\n\n### Step 4: Generate the Icons\n\nGenerate every icon following the SVG Rules below. Output to an `icons/` directory in the project root (or the user's preferred location).\n\nRead `references/svg-examples.md` before generating — it contains reference implementations showing the right level of complexity and how to handle common icon shapes.\n\nGenerate 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.\n\n### Step 5: Deliver\n\nOutput structure:\n```\nicons/\n├── style-spec.json\n├── preview.html\n├── home.svg\n├── phone.svg\n└── ...\n```\n\nPresent `preview.html` first so the user sees the complete set visually.\n\n---\n\n## SVG Rules\n\nEvery 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.\n\n### SVG Template\n\nEvery icon uses this exact outer structure:\n\n```xml\n<svg xmlns=\"http://www.w3.org/2000/svg\"\n  width=\"{grid}\" height=\"{grid}\"\n  viewBox=\"0 0 {grid} {grid}\"\n  fill=\"none\"\n  stroke=\"currentColor\"\n  stroke-width=\"{strokeWidth}\"\n  stroke-linecap=\"{strokeLinecap}\"\n  stroke-linejoin=\"{strokeLinejoin}\">\n  <!-- icon paths here -->\n</svg>\n```\n\n### Hard Rules\n\n1. **`currentColor` only** — Never hardcode colours. SVGs inherit colour from CSS. No `fill=\"#000\"` or `stroke=\"blue\"`. If a shape needs fill, use `fill=\"currentColor\"`.\n\n2. **Identical viewBox** — Every icon uses the same `viewBox`. No exceptions.\n\n3. **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.\n\n4. **No transforms on root** — No `translate`, `rotate`, `scale`. Bake positioning into coordinates.\n\n5. **No IDs or classes** — Keep SVGs clean for external styling.\n\n6. **Coordinate precision** — Max 2 decimal places. Snap to half-pixel grid (e.g. `12`, `12.5`, not `12.333`).\n\n7. **Consistent padding** — Maintain configured padding from viewBox edge. For 24px grid with 2px padding, draw within 2–22 coordinate range.\n\n8. **Minimal elements** — Fewest `<path>`, `<circle>`, `<rect>`, `<line>` elements practical. Simpler = smaller + faster rendering.\n\n9. **Visual centring** — Appear visually centred, not just mathematically centred. A leftward arrow shifts slightly right. A house with a chimney adjusts for asymmetry.\n\n### Optical Corrections\n\nSubtle but essential for professional results:\n\n- **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.\n- **Pointed shape overshoot**: Arrows, chevrons, triangles extend ~0.5px beyond where a square would stop to appear the same size.\n- **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.\n\n---\n\n## style-spec.json\n\n```json\n{\n  \"name\": \"project-name-icons\",\n  \"preset\": \"clean\",\n  \"grid\": 24,\n  \"strokeWidth\": 1.5,\n  \"strokeLinecap\": \"round\",\n  \"strokeLinejoin\": \"round\",\n  \"cornerRadius\": 2,\n  \"padding\": 2,\n  \"opticalBalance\": true,\n  \"iconCount\": 20,\n  \"icons\": [\"home\", \"phone\", \"email\"],\n  \"generated\": \"2026-02-15\"\n}\n```\n\n---\n\n## Preview Page\n\nGenerate a self-contained HTML file displaying all icons for visual review. Read `references/preview-template.md` for the template. Requirements:\n\n- Grid of all icons at native size (24px) with labels\n- Same grid at 2x (48px) for detail inspection\n- Dark background section (white on dark) for contrast check\n- Style spec summary at top\n- Inline CSS, no dependencies — just open in browser\n- Inline all SVGs directly into the HTML (don't reference external files)\n\n---\n\n## Quality Checklist\n\nVerify every item before delivering:\n\n- [ ] All SVGs have identical `viewBox`, `stroke-width`, `stroke-linecap`, `stroke-linejoin`\n- [ ] All SVGs use `currentColor` exclusively\n- [ ] Visual weight is balanced across the set\n- [ ] Padding is consistent (nothing touching viewBox edge)\n- [ ] All icons visually centred\n- [ ] Filenames are lowercase kebab-case (`arrow-right.svg`)\n- [ ] Preview HTML renders all icons correctly\n- [ ] style-spec.json is accurate and lists all icons\n\n---\n\n## Reference Files\n\nRead these before generating:\n\n- `references/style-presets.md` — Detailed preset definitions and selection guidance\n- `references/industry-icons.md` — Industry-specific icon suggestions\n- `references/preview-template.md` — HTML template for the preview page\n- `references/svg-examples.md` — Example SVGs showing proper construction at various complexity levels","author":"@jezweb","ownerProfile":null,"authorContacts":null,"sourceUrl":"https://github.com/jezweb/claude-skills/tree/main/plugins/design-assets/skills/icon-set-generator","license":"MIT","category":"productivity","lang":"en","tokens":1679,"stars":0,"calls30d":1,"claimed":false,"visibility":"public","origin":"crawler","version":"0.1.0","createdAt":"2026-08-22","updatedAt":"2026-08-22","files":[{"path":"references/industry-icons.md","size":5495,"sha256":"a577032d12c59c3312427e021b4adc3992f8e73ba8d2901725b706095e137e10"},{"path":"references/preview-template.md","size":4325,"sha256":"f5f60323f2c94b6224b427d962587eff633a263f60bb3a0d6f0f232d8f0cb09e"},{"path":"references/style-presets.md","size":4848,"sha256":"3144d7f76e80dc7ca5e8cdc7728f3ee900738674ff9b13b0e3e4c5037b7a5fcc"},{"path":"references/svg-examples.md","size":7527,"sha256":"0052c267bd7edcb552b1422d261507e1d690574e5aa9707fa7141452ffd5d8d6"}],"requires":{"mcp":[],"tools":[]},"safety":{"flags":[],"scannedAt":"2026-08-22","hasScripts":false,"networkEndpoints":[]}}