App Icon logo

App Icon

Community
daveebbelaar
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.

Overview

Publisherdaveebbelaar
Repositorybama
Skill nameapp-icon
Stars
952
Forks
136
Bundled files
2
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 2 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by daveebbelaar on GitHub. Read the source before you install it.

Installation

Install the App Icon AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/daveebbelaar/bama/tree/main/skills/design/app-icon
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/daveebbelaar/bama.git /tmp/bama
mkdir -p .claude/skills
cp -r /tmp/bama/skills/design/app-icon .claude/skills/app-icon
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable App Icon in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads App Icon on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so App Icon is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

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.sh compiles it with actool into Resources/Assets.car and Resources/AppIcon.icns. build.sh runs it when the icon changed.
  • tools/icon_review.sh renders it with ictool (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 .icon itself).
  • Converting an existing flat icon into layers.
  • A Dock icon that changes with a theme or style. NSApp.applicationIconImage shows a flat picture, so render glass versions ahead of time.

The file

text
Icon/AppIcon.icon/
  icon.json
  Assets/front.svg     1024 x 1024 canvas, same as the icon
  Assets/back.svg
json
{
  "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" ] }
}
  • fill is the background: solid, automatic-gradient (one color, the system adds a soft gradient), or linear-gradient with two colors. Colors are srgb:r,g,b,a or display-p3:r,g,b,a.
  • The first layer in the list sits on top.
  • Shadow kind: neutral, layer-color, or none.
  • A different look per appearance goes in <key>-specializations, for example fill-specializations with an entry for dark.
  • 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

  1. 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.
  2. No text, no letters, no screenshots of the UI.
  3. 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.
  4. 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.
  5. The glyph is large: about 45 to 55 percent of the canvas width. Thin parts vanish at 16 px.
  6. Filled shapes only. A stroke on an open path leaves a faint glass line.
  7. One background hue. automatic-gradient looks right almost every time.
  8. 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

  1. 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.

  2. Write the layers as SVG files in Icon/AppIcon.icon/Assets/, on a 1024 x 1024 canvas, white filled shapes (rect with rx, circle, path). Write icon.json to list them. Delete layer files you no longer use.

    Check: every image-name in icon.json has a file in Assets/.

  3. Compile:

    bash
    tools/make_icon.sh
    # wrote Resources/Assets.car and Resources/AppIcon.icns

    Check: the line above prints. On an error, fix the file it names.

  4. Review every look:

    bash
    tools/icon_review.sh
    # wrote /tmp/<AppName>-icon.png

    Read 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.

  5. Iterate two or three times. Change one thing per round: glyph size, layer opacity, background color.

  6. Install and look at the Dock:

    bash
    ./build.sh --open

    If the Dock still shows the old icon, macOS cached it. Run touch ~/Applications/<AppName>.app and 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, actool writes nothing and still exits 0. make_icon.sh checks for that.
  • A missing layer file: actool fails with the name, but ictool exits 0 and renders an empty background. Compile before you review.
  • PDF layers do not render. Use SVG or PNG.
  • xcrun ictool is a different tool. Icon Composer's ictool lives at $(xcode-select -p)/../Applications/Icon Composer.app/Contents/Executables/ictool.
  • The icon needs CFBundleIconName = AppIcon in Info.plist and Assets.car in Contents/Resources. AppIcon.icns covers 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.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the App Icon AI skill do?

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.

Why use App Icon on TypingMind?

Because you install it once and use it with any model. App Icon is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install App Icon in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/daveebbelaar/bama/tree/main/skills/design/app-icon. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use App Icon?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with App Icon?

As many as you like. As long as a model supports skills, you can use App Icon with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the App Icon AI skill free?

Yes. It is published on GitHub by daveebbelaar under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇