app-icon
Liquid Glass macOS app icon made as an Icon Composer file (Icon/AppIcon.icon, JSON plus SVG layers), compiled with actool, and reviewed in every look with ictool. Use when the user wants an app icon, a better icon, or a Dock icon.
How do I install this agent skill?
npx skills add https://github.com/daveebbelaar/bama --skill app-iconIs this agent skill safe to install?
- Gen Agent Trust Hubpass
This skill provides a legitimate utility for macOS developers to create app icons using the Icon Composer format. It uses standard developer tools and local scripts to automate the asset generation and review process.
- Socketpass
No alerts
- Snykpass
Risk: LOW · No issues
What does this agent skill do?
App icon
The icon is an Icon Composer file in git: Icon/AppIcon.icon, a folder
with icon.json and SVG layers in Assets/. You write both by hand.
macOS adds the glass, the highlights, the shadow, the mask, and the dark,
tinted, and clear looks. You never draw those yourself.
tools/make_icon.shcompiles it withactoolintoResources/Assets.carandResources/AppIcon.icns.build.shruns it when the icon changed.tools/icon_review.shrenders it withictool(Icon Composer's command line tool, inside Xcode) into one contact sheet you read.
Older app without these files: copy Icon/, tools/make_icon.sh,
tools/icon_review.sh, and tools/icon_sheet.swift from the
new-mac-app template, the icon block of its build.sh, and
CFBundleIconName = AppIcon from its Info.plist.in.
Other cases: more-cases.md.
- An Xcode or XcodeGen project (Xcode compiles the
.iconitself). - Converting an existing flat icon into layers.
- A Dock icon that changes with a theme or style.
NSApp.applicationIconImageshows a flat picture, so render glass versions ahead of time.
The file
Icon/AppIcon.icon/
icon.json
Assets/front.svg 1024 x 1024 canvas, same as the icon
Assets/back.svg
{
"fill" : { "automatic-gradient" : "srgb:0.20000,0.42000,0.96000,1.00000" },
"groups" : [
{
"layers" : [
{ "glass" : true, "image-name" : "front.svg", "name" : "front" },
{ "glass" : true, "image-name" : "back.svg", "name" : "back", "opacity" : 0.6 }
],
"shadow" : { "kind" : "neutral", "opacity" : 0.5 },
"translucency" : { "enabled" : true, "value" : 0.5 }
}
],
"supported-platforms" : { "squares" : [ "macOS" ] }
}
fillis the background:solid,automatic-gradient(one color, the system adds a soft gradient), orlinear-gradientwith two colors. Colors aresrgb:r,g,b,aordisplay-p3:r,g,b,a.- The first layer in the list sits on top.
- Shadow
kind:neutral,layer-color, ornone. - A different look per appearance goes in
<key>-specializations, for examplefill-specializationswith an entry fordark. - The art fills the whole square. Never draw the rounded square, a margin, a shadow, or a sheen: the system adds them.
What makes it look like Apple made it
- One idea. One object that says what the app does: a check for tasks, a stack of cards for a reader, a waveform for audio.
- No text, no letters, no screenshots of the UI.
- The glyph is your own drawing. Never use an SF Symbol, or a shape that looks like one: the SF Symbols license forbids symbols in app icons.
- Two or three layers, each one flat shape in white or one tint. Glass gives the depth. Put the main shape on top, a softer one behind it.
- The glyph is large: about 45 to 55 percent of the canvas width. Thin parts vanish at 16 px.
- Filled shapes only. A stroke on an open path leaves a faint glass line.
- One background hue.
automatic-gradientlooks right almost every time. - Distinct from the apps next to it in the Dock. List Dock apps without a
screenshot:
defaults read com.apple.dock persistent-apps | grep file-label.
Steps
-
Read
docs/BRIEF.md. Write three icon concepts in one line each: the object, the background color, the layers. Pick one with the user, or pick the one that is easiest to recognize at 16 px.Check: one concept is chosen and it uses no SF Symbol.
-
Write the layers as SVG files in
Icon/AppIcon.icon/Assets/, on a 1024 x 1024 canvas, white filled shapes (rectwithrx,circle,path). Writeicon.jsonto list them. Delete layer files you no longer use.Check: every
image-nameinicon.jsonhas a file inAssets/. -
Compile:
tools/make_icon.sh # wrote Resources/Assets.car and Resources/AppIcon.icnsCheck: the line above prints. On an error, fix the file it names.
-
Review every look:
tools/icon_review.sh # wrote /tmp/<AppName>-icon.pngRead the PNG. It shows Default, Dark, Tinted, and Clear at 256 pt, then Default at 32 and 16 pt. The glyph reads in every look and is still recognizable at 16 pt. If not, make it bigger, bolder, or simpler.
-
Iterate two or three times. Change one thing per round: glyph size, layer opacity, background color.
-
Install and look at the Dock:
./build.sh --openIf the Dock still shows the old icon, macOS cached it. Run
touch ~/Applications/<AppName>.appand restart the app. As a last resort,killall Dock.
The user can fine-tune the file by hand in Icon Composer:
open -a "Icon Composer" Icon/AppIcon.icon. Run tools/make_icon.sh
after they save.
Gotchas
- The folder must be named
AppIcon.icon. With another name,actoolwrites nothing and still exits 0.make_icon.shchecks for that. - A missing layer file:
actoolfails with the name, butictoolexits 0 and renders an empty background. Compile before you review. - PDF layers do not render. Use SVG or PNG.
xcrun ictoolis a different tool. Icon Composer'sictoollives at$(xcode-select -p)/../Applications/Icon Composer.app/Contents/Executables/ictool.- The icon needs
CFBundleIconName=AppIconinInfo.plistandAssets.carinContents/Resources.AppIcon.icnscovers older Finder views and macOS 15.
Done when tools/make_icon.sh succeeds, the contact sheet shows a clear
glyph in all four looks and at 16 pt, the icon uses no SF Symbol, and the
Dock shows the new icon.
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/daveebbelaar/bama/app-icon">View app-icon on skillZs</a>