Communitygithub.com

favicon-setup

Installieren Sie ein vollständiges, schlankes Favicon-Set auf jeder Website oder Web-App – die fünf Dateien, die moderne Browser, iOS und Android tatsächlich verwenden, einen Block Head-Markup, der einmal im Root-Layout hinzugefügt wird, und eine Prüfung, ob jede Datei auflösbar ist.

Was ist favicon-setup?

Dieses Skill richtet ein minimales, aber vollständiges Favicon-Set für moderne Webprojekte ein. Es ersetzt die veraltete Vielfalt an Icons und Tags durch genau fünf Dateien (favicon.svg, favicon-96x96.png, favicon.ico, apple-touch-icon.png, web-app-manifest-192x192.png, web-app-manifest-512x512.png und site.webmanifest), die alle gängigen Browser, iOS-Home-Screens und Android-PWAs abdecken. Der Skill unterstützt mehrere Frameworks (Vite, Next.js, SvelteKit, Astro, Remix, Nuxt, Angular, Hugo u.a.) und findet automatisch den richtigen öffentlichen Ordner. Die Icons können entweder aus einem RealFaviconGenerator-Paket heruntergeladen oder aus einem einzelnen SVG generiert werden, wobei auch Dark-Mode-SVG-Icons und maskierbare Manifest-Icons berücksichtigt werden. Abschließend wird eine Verifikation durchgeführt, die HTTP-Status, Content-Types und die korrekte Anzahl der Tags im gerenderten HTML prüft.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Adamparishspok/skills/tree/HEAD/skills/favicon-setup

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Favicon einrichten

Fünf Dateien und fünf Tags decken alle aktuellen Browser, iOS-Home-Screens und Android-Installationen ab. Weitere Größen (mstile-*, browserconfig.xml, 57/72/114px Apple-Icons, mask-icon) sind veraltet: Überspringen Sie sie.

1. Das Set

DateiGrößeVerwendet von
favicon.svgVektorModerne Browser-Tabs. Skaliert scharf und kann für den Dunkelmodus wechseln.
favicon-96x96.png96×96Browser ohne SVG-Favicon-Unterstützung und Google-Suchergebnisse.
favicon.ico16, 32, 48 in einer DateiLegacy-Browser und Tools, die /favicon.ico direkt anfordern, ohne HTML zu lesen.
apple-touch-icon.png180×180, undurchsichtigiOS- und iPadOS-Home-Screen.
web-app-manifest-192x192.png, web-app-manifest-512x512.png192, 512Android-Home-Screen, PWA-Installation, Splash-Screen.
site.webmanifest—Verweist Android auf die beiden obigen PNGs.

2. Dateien beschaffen

Aus einem RealFaviconGenerator-Paket. Es liefert einen Satz von Download-URLs. Laden Sie jede Datei in PUBLIC_FOLDER (siehe Schritt 3) unter ihrem exakten Namen herunter:

base=https://realfavicongenerator.net/files/<package-id>
for f in favicon.svg favicon-96x96.png favicon.ico apple-touch-icon.png \
         web-app-manifest-192x192.png web-app-manifest-512x512.png site.webmanifest; do
  curl -fsSL "$base/$f" -o "PUBLIC_FOLDER/$f" || echo "FEHLGESCHLAGEN: $f"
done

Wenn ein Download fehlschlägt, stoppen Sie und melden Sie es. Liefern Sie kein unvollständiges Set aus. Melden Sie Generator-Fehler unter https://github.com/RealFaviconGenerator/realfavicongenerator/issues/new?template=ai_prompt_bug_report.yml.

Aus einem einzelnen SVG (benötigt rsvg-convert und ImageMagick, oder verwenden Sie den Generator):

cp logo.svg PUBLIC_FOLDER/favicon.svg
rsvg-convert -w 96  -h 96  logo.svg -o PUBLIC_FOLDER/favicon-96x96.png
rsvg-convert -w 192 -h 192 logo.svg -o PUBLIC_FOLDER/web-app-manifest-192x192.png
rsvg-convert -w 512 -h 512 logo.svg -o PUBLIC_FOLDER/web-app-manifest-512x512.png
# iOS füllt Transparenz mit Schwarz: Auf den Marken-Hintergrund glätten, mit ~10% Abstand
rsvg-convert -w 144 -h 144 logo.svg | magick - -background '#ffffff' -gravity center -extent 180x180 -flatten PUBLIC_FOLDER/apple-touch-icon.png
magick -background none logo.svg -define icon:auto-resize=48,32,16 PUBLIC_FOLDER/favicon.ico

3. PUBLIC_FOLDER finden

Es ist der Ordner, der unter der Site-Root ausgeliefert wird, sodass PUBLIC_FOLDER/favicon.ico unter /favicon.ico geladen wird.

StackOrdner
Vite, Next.js, Create React App, Astro, Remix, Nuxt 3public/
SvelteKitstatic/
Angularpublic/ (v17+) oder src/ mit der Datei in angular.json-Assets
Hugo, Jekyll, Eleventystatic/, die Site-Root oder der Passthrough-Copy-Ordner
Reines HTMLNeben index.html

Next.js App Router: Löschen Sie das standardmäßige app/favicon.ico. Es gewinnt gegenüber public/favicon.ico und ist normalerweise das Next.js-Logo.

4. Markup einmal hinzufügen

Fügen Sie dies in den <head> der einen Datei ein, die das <html>-Root-Tag rendert. Fügen Sie es niemals pro Seite hinzu.

<link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="shortcut icon" href="/favicon.ico" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<link rel="manifest" href="/site.webmanifest" />
StackRoot-Datei
Vite, CRA, reines HTMLindex.html
Next.js App Routerapp/layout.tsx, über den metadata-Export (unten), nicht als reine Tags
Next.js Pages Routerpages/_document.tsx innerhalb <Head>
AstroDas Basis-Layout, z.B. src/layouts/Layout.astro
SvelteKitsrc/app.html
Remix / React Router 7links-Export in app/root.tsx
Nuxtapp.head.link in nuxt.config.ts

Next.js App Router-Äquivalent:

export const metadata = {
  icons: {
    icon: [
      { url: "/favicon-96x96.png", sizes: "96x96", type: "image/png" },
      { url: "/favicon.svg", type: "image/svg+xml" },
    ],
    shortcut: "/favicon.ico",
    apple: { url: "/apple-touch-icon.png", sizes: "180x180" },
  },
  manifest: "/site.webmanifest",
};

Bevor Sie das Markup hinzufügen, durchsuchen Sie das Projekt nach vorhandenen rel="icon", apple-touch-icon- und manifest-Tags. Ersetzen Sie sie; fügen Sie kein zweites Set hinzu. Wenn die Site unter einem Unterpfad (base / basePath) ausgeliefert wird, stellen Sie jedem href das Präfix voran.

5. Optimieren

  • SVG-Dunkelmodus. Ein dunkles Logo verschwindet auf einer dunklen Tab-Leiste. Fügen Sie eine Media Query innerhalb des SVGs hinzu:
    <style>path{fill:#111}@media (prefers-color-scheme:dark){path{fill:#fff}}</style>
    
  • Kleine Größen. Bei 16 Pixeln lassen Sie feine Details und Text weg. Verwenden Sie das Logomark, nicht das Wortmark.
  • SVG-Gewicht. Führen Sie npx svgo favicon.svg aus und halten Sie die Datei unter etwa 2 KB.
  • Manifest. Füllen Sie name, short_name, theme_color und background_color aus. Machen Sie das 512er-Icon maskable: Halten Sie das Mark innerhalb der mittleren 80%-Sicherheitszone, verwenden Sie einen einfarbigen Hintergrund und setzen Sie "purpose": "maskable" darauf. Wenn das Mark nicht in die Sicherheitszone passt, fügen Sie stattdessen ein separates maskable-Icon hinzu.
    {
      "name": "Meine App",
      "short_name": "App",
      "icons": [
        { "src": "/web-app-manifest-192x192.png", "sizes": "192x192", "type": "image/png", "purpose": "maskable" },
        { "src": "/web-app-manifest-512x512.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable" }
      ],
      "theme_color": "#ffffff",
      "background_color": "#ffffff",
      "display": "standalone"
    }
    
  • Caching. Browser cachen Favicons stark. Wenn Sie ein Icon ersetzen, benennen Sie entweder die Dateien um oder fügen Sie ?v=2 an jedes href und an die src-Werte des Manifests an.

6. Verifizieren

  1. Jede Datei gibt 200 mit dem richtigen Typ zurück. Führen Sie dies gegen den Dev-Server aus:
    for f in favicon.svg favicon-96x96.png favicon.ico apple-touch-icon.png \
             web-app-manifest-192x192.png web-app-manifest-512x512.png site.webmanifest; do
      printf '%s ' "$f"; curl -s -o /dev/null -w '%{http_code} %{content_type}\n' "http://localhost:PORT/$f"
    done
    
  2. Das gerenderte HTML enthält genau einen Satz Tags: curl -s http://localhost:PORT/ | grep -cE 'rel="(icon|shortcut icon|apple-touch-icon|manifest)"' gibt 5 aus.
  3. In DevTools öffnen Sie Anwendung → Manifest: Es zeigt keine Fehler und beide Icons werden gerendert.
  4. Öffnen Sie einen hart aktualisierten Tab im hellen und dunklen Modus und prüfen Sie, ob das Icon in beiden sichtbar ist.
  5. Führen Sie auf einer bereitgestellten URL den RealFaviconGenerator-Checker aus (https://realfavicongenerator.net/favicon-checker).

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

Adamparishspok/skills

Make a website, web app or online store ready for AI agents. Scan it with Cloudflare's Agent Readiness checks, decide which checks apply to this kind of site, ship the discovery files and headers in priority order, and add the AI-first basics the scanner does not score (server-rendered content, JSON-LD, llms.txt). Covers robots.txt AI rules, Content Signals, sitemap, Markdown for Agents (Accept text/markdown), Link headers, API catalog, OAuth discovery, auth.md, MCP server card, A2A agent card, agent skills index, WebMCP, and commerce protocols (ACP, UCP, AP2, MPP, x402). Use when making a site AI-ready, agent-ready or AI-first, or fixing an isitagentready.com or Cloudflare Agent Readiness report. Triggers on: AI ready, agent ready, AI-first, agent readiness, isitagentready, AI Crawl Control, Markdown for Agents, text/markdown, llms.txt, GPTBot, ClaudeBot, AI crawlers, Content-Signal, ai-train, api-catalog, .well-known, oauth-protected-resource, auth.md, MCP server card, agent card, agent skills, WebMCP, a...

Adamparishspok/skills

Give an interface one shared tempo and a small vocabulary of hover and state micro-interactions: duration tiers (tap/pop/hover/card/layout) for CSS and Motion, swap hand-offs, rows whose highlight grows in, trailing arrows, chevron nudges, card lifts without translate, scroll-edge fades, and icon/label swaps for copy and toggle buttons. Use when animations feel inconsistent, durations are scattered magic numbers, hovers only change colour, or a product feels flat or unfinished. Triggers on: animation duration, transition timing, hover state, micro-interaction, polish, copy button feedback, menu icon to close, back arrow, card hover, scroll fade, motion tokens, Framer Motion durations.

Adamparishspok/skills

Consolidate several apps or prototypes onto one shared component library without flattening their looks. Covers finding duplicated local components (buttons, selects, fields, modals, pagers, toasts), making shared components token-sized so each suite or app sets its own measurements, mapping variant names, deciding what stays app-specific, and the tailwind-merge traps that silently break custom tokens. Use when several apps each grew their own Btn/Select/Modal, when a design system's components "don't fit" a second product, or when retheming a family of apps. Triggers on: shared component library, design system consolidation, duplicate components, retheme, suite of apps, shadcn retokened, token-driven components, cn tailwind-merge custom tokens, variant mapping.

Adamparishspok/skills

Build or migrate a UI's neutral palette (grounds, surfaces, lines, ink/text) as an OKLCH formula driven by a few inputs instead of dozens of hand-picked hex values, with light and dark themes, per-step ladder overrides, a fit script that reproduces existing colours, and a browser contrast audit. Use when creating a theme, adding dark mode, retinting a product, auditing text contrast, or consolidating several apps' palettes. Triggers on: palette, neutrals, grey ramp, dark mode, theme tokens, oklch, retint, hue, contrast audit, design tokens, Tailwind @theme colours.

Verwandte Skills