favicon

SKILL.md

Favicon Generation with emojico

Generate complete favicon sets from emoji. Never pick a default emoji — always ask Joel which emoji to use for the project.

When to Use

Triggers: favicon, add favicon, update favicon, site icon, emojico, touch icon, or any request to add/change a site's icon.

Install

npm install -g emojico

Verify: emojico --help

Usage

# Generate full set into project's public/ dir
emojico 🧙 --out ./public --all

# Generates:
# public/favicon.ico
# public/favicons/favicon-16x16.png
# public/favicons/favicon-32x32.png
# public/favicons/favicon-48x48.png
# public/apple-touch-icon/apple-touch-icon-{57,60,72,76,114,120,144,152,180}x{...}.png
# public/og-image.png

Wiring Into Frameworks

Next.js (App Router)

favicon.ico in public/ is auto-served. Add metadata in layout.tsx:

export const metadata: Metadata = {
  icons: {
    icon: '/favicon.ico',
    apple: '/apple-touch-icon/apple-touch-icon-180x180.png',
  },
}

TanStack Start

Add to __root.tsx head config:

links: [
  { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' },
  { rel: 'apple-touch-icon', sizes: '180x180', href: '/apple-touch-icon/apple-touch-icon-180x180.png' },
]

Rules

  1. NEVER use a default emoji. Always ask Joel to pick the emoji for the project.
  2. Always use --all to generate the complete set (ico + png + apple + og).
  3. Output to public/ in the target app directory.
  4. Wire head tags after generating — emojico generates files but doesn't modify source.
  5. Prefer dynamic OG images over the static og-image.png for sites with multiple pages — use the emojico OG as a fallback only.
Weekly Installs
21
GitHub Stars
49
First Seen
Feb 27, 2026
Installed on
gemini-cli21
opencode21
codebuddy21
github-copilot21
codex21
kimi-cli21