sfsymbol-generator
Generate an Xcode SF Symbol asset catalog .symbolset from an SVG. Use when you need to add a custom SF Symbol (build-time) by creating the symbolset folder, Contents.json, and SVG file.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
SF Symbol Generator
Usage
You can override the default asset catalog location with SFSYMBOL_ASSETS_DIR.
Raw symbolset (no template injection)
./scripts/generate.sh <symbol-name> <svg-path> [assets-dir]
-
symbol-name: Full symbol name (e.g.,custom.logo,brand.icon.fill). -
svg-path: Path to the source SVG file. -
assets-dir(optional): Path toAssets.xcassets/Symbols(defaults toAssets.xcassets/SymbolsorSFSYMBOL_ASSETS_DIR).
Template-based symbolset (recommended)
./scripts/generate-from-template.js <symbol-name> <svg-path> [template-svg] [assets-dir]
-
template-svg(optional): SF Symbols template SVG to inject into (defaults to the first.symbolsetSVG found inAssets.xcassets/Symbols, otherwise uses the bundled skill template).
Example
./scripts/generate-from-template.js pi.logo /Users/admin/Desktop/pi-logo.svg
Requirements
- SVG must include a
viewBox. - Use path-based shapes (paths are required; rects are supported and converted, but other shapes should be converted to paths).
- Prefer filled shapes (no strokes) to avoid thin artifacts.
Workflow
- Validates the SVG path and viewBox.
- Computes path bounds and centers within the SF Symbols template margins.
- Injects the paths into the SF Symbols template (Ultralight/Regular/Black).
- Creates
<symbol-name>.symbolsetinside the asset catalog Symbols folder. - Writes a matching
Contents.json.
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-01-30
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!