Arkhe-claude-plugins icon-forge
Generate brand icons as SVG and produce all platform assets including favicon package (ICO, SVG with dark mode, apple-touch-icon), PWA manifest icons, and mobile app icons. Use when user runs /icon-forge, requests "brand icon", "favicon generation", "app icon", or "svg logo" for a project.
git clone https://github.com/joaquimscosta/arkhe-claude-plugins
T=$(mktemp -d) && git clone --depth=1 https://github.com/joaquimscosta/arkhe-claude-plugins "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/design-intent/skills/icon-forge" ~/.claude/skills/joaquimscosta-arkhe-claude-plugins-icon-forge && rm -rf "$T"
plugins/design-intent/skills/icon-forge/SKILL.mdIcon Forge
Generate brand icons as SVG and produce all required platform assets from a single source.
Quick Start
Follow these phases in order. Skip to Phase 4 if user provides
--svg <path>. Use --base <path> to load an existing SVG as a design seed for Phase 2 iteration.
Phase 1: Brand Discovery
Gather brand information before designing. Ask about:
- Identity: Brand name, industry, tagline
- Concept: Visual metaphor, abstract vs literal, symbol ideas
- Colors: Primary color (hex), secondary, accent
- Style preset: Present the style menu:
- Geometric — clean shapes, mathematical precision
- Organic — flowing curves, irregular blobs, natural asymmetry
- Illustrative — layered scenes, color blocks, story-driven
- Symbolic — dual-meaning line art, negative space, conceptual merges
- Constellation — connected nodes, network graphs, dot clusters
- Depth: Flat (default) or with gradients/shadows?
If
$ARGUMENTS contains a brand description, extract info and minimize questions.
Phase 2: Design Master SVG
Generate 2-3 concept variations as SVG. Apply the chosen style preset's SVG techniques from WORKFLOW.md (see Style-to-SVG Technique Table). Design for three progressive detail tiers: Glyph (16px, 2-4 shapes), Mark (192px, full logomark), Master (1024px, rich detail). Present concepts, let user choose, iterate.
If
was provided: Read the existing SVG, analyze its shapes/colors/structure, and use it as a starting point instead of generating from scratch. Present the original alongside 2 improved variations that apply the chosen style preset. See WORKFLOW.md "Design Seed Workflow" for details.--base <path>
SVG structure requirements:
<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="icon-title"> <title id="icon-title">Brand Name</title> <style> .primary { fill: #2563eb; } .accent { fill: #1e40af; } </style> <path class="primary" d="..."/> </svg>
Validation checklist:
- viewBox is square (
brand icons;0 0 100 100
for UI-style marks)0 0 24 24 - No
/width
attributes on rootheight<svg>
as first child,<title>
on root (accessibility)role="img"- No
elements (text does not scale to 16px)<text> - Filled shapes on integer coordinates (prevents sub-pixel blur)
- No strokes thinner than 2 units in Glyph/Mark tiers
- Color count within preset limit (1-3 most; up to 5 Illustrative/Constellation)
attribute presentxmlns
Phase 3: Create Dark-Mode Favicon SVG
Duplicate the master SVG and embed a
@media (prefers-color-scheme: dark) block:
<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="fav-title"> <title id="fav-title">Brand Name</title> <style> .bg { fill: #ffffff; } .fg { fill: #1a1a2e; } @media (prefers-color-scheme: dark) { .bg { fill: #1a1a2e; } .fg { fill: #e0e0ff; } } </style> <rect class="bg" width="100" height="100" rx="12"/> <path class="fg" d="..."/> </svg>
Rules: dark foreground becomes light, light backgrounds become dark, maintain >= 4.5:1 contrast.
Phase 3b: Monochrome Variant
Duplicate the master SVG and replace all colors with
currentColor. Remove <style>, gradients, and filters — produce a single-color silhouette that inherits its color from CSS. Save as monochrome.svg. See WORKFLOW.md for details.
Phase 4: Generate Platform Assets
Save master SVG and dark-mode SVG to the project.
Framework detection — before running the script, detect the target project:
- If
exists ANDnext.config.(js|mjs|ts)
exists → addapp/layout.(tsx|jsx|js)--framework nextjs - Otherwise → omit
(default generic output)--framework
uv run <skill-scripts-dir>/generate_assets.py \ --svg <master-svg-path> \ --dark-svg <dark-svg-path> \ --bg-color "<brand-bg-color>" \ --name "<app-name>" \ --framework nextjs \ # omit if not Next.js App Router --output-dir ./brand-assets
Replace
<skill-scripts-dir> with the absolute path to this skill's scripts/ directory.
Omit --framework for non-Next.js projects. With --framework nextjs, outputs icon.svg and apple-icon.png (Next.js App Router conventions).
Requires
rsvg-convert (brew install librsvg) or magick (brew install imagemagick).
Phase 5: Integration Output
Present to the user:
- The integration guide (
for Next.js, or_nextjs-guide.txt
for other frameworks)_html-snippet.html - Framework-specific placement guidance (Next.js
+app/
, Vitepublic/
, CRApublic/
)public/ - Summary of all generated files
SVG Icon Design Principles
- Canvas: Square
—viewBox
for brand icons (default),0 0 100 100
for UI-style marks. No width/height attributes0 0 24 24 - Scalability: Must be recognizable at 16px (favicon) through 1024px (app store)
- Shape vocabulary: Match shapes to the chosen style preset. See WORKFLOW.md for style-specific SVG techniques
- Fill vs stroke: Prefer filled paths (scale predictably); use strokes for Symbolic line art. See WORKFLOW.md for per-preset strategy
- Stroke minimum: No strokes thinner than 2 units in Glyph/Mark tiers; Master tier may use 1.5+ for decorative detail
- Color restraint: 1-3 brand colors for most presets; Illustrative and Constellation may use up to 5
- No text: Logomark only — text does not survive 16px rendering
- Progressive detail: Design for three tiers (Glyph 16px, Mark 192px, Master 1024px). Fine detail welcome in Master tier; must simplify gracefully
- Pixel alignment: Integer coordinates for filled shapes; 0.5 offset for odd stroke widths. Limit decimals to 1-2 places
- Accessibility:
as first child with brand name,<title>
on rootrole="img"<svg> - Visual weight: Center of mass should feel balanced in the square canvas
- Negative space: Use intentionally for clever dual-meaning designs
- currentColor: Always generate a monochrome variant with
alongside the branded masterfill="currentColor" - Depth: Flat by default. When depth is enabled, use
,<linearGradient>
, and subtle<radialGradient>
effects<filter> - Rounded corners: Use
/rx
for approachable feel when appropriatery
Output
See WORKFLOW.md for detailed workflow and EXAMPLES.md for examples. See TROUBLESHOOTING.md for common issues.