Communitygithub.com

configuracion-de-favicon

Instala un conjunto completo y optimizado de favicons en cualquier sitio web o aplicación web: los cinco archivos que usan los navegadores modernos, iOS y Android, un bloque de marcado en el encabezado añadido una vez en el diseño raíz, y una verificación de que cada archivo se resuelve correctamente.

¿Qué es configuracion-de-favicon?

Esta habilidad proporciona una guía detallada y práctica para configurar un conjunto mínimo y completo de favicons, cubriendo todos los navegadores modernos, pantallas de inicio de iOS y Android, e instalaciones PWA. El enfoque se basa en cinco archivos clave (favicon.svg, favicon-96x96.png, favicon.ico, apple-touch-icon.png y site.webmanifest con sus PNGs asociados) y cinco etiquetas <link> en el <head>, evitando el desorden de tamaños y formatos heredados. La habilidad explica cómo obtener los archivos desde un paquete de RealFaviconGenerator o generarlos desde un SVG fuente, indica la carpeta pública correcta para distintos frameworks (Vite, Next.js, SvelteKit, Angular, etc.), muestra cómo añadir el marcado en el layout raíz (con ejemplos específicos para Next.js App Router), e incluye optimizaciones como el modo oscuro en SVG, iconos maskable para el manifiesto, y estrategias de cache busting. Finalmente, proporciona comandos para verificar que todos los archivos devuelvan un código 200 con el tipo MIME correcto, que el HTML tenga exactamente cinco etiquetas, y que el manifiesto no tenga errores en DevTools. Es ideal para añadir, reemplazar o auditar favicons y garantizar una experiencia de usuario consistente en todas las plataformas.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Configuración de Favicon

Cinco archivos y cinco etiquetas cubren todos los navegadores actuales, las pantallas de inicio de iOS y las instalaciones de Android. Más tamaños (mstile-*, browserconfig.xml, iconos de Apple de 57/72/114px, mask-icon) son heredados: omítelos.

1. El conjunto

ArchivoTamañoUsado por
favicon.svgvectorPestañas de navegadores modernos. Escala nítidamente y puede cambiar para modo oscuro.
favicon-96x96.png96×96Navegadores sin soporte SVG para favicon y resultados de búsqueda de Google.
favicon.ico16, 32, 48 en un archivoNavegadores heredados y herramientas que solicitan /favicon.ico directamente, sin leer HTML.
apple-touch-icon.png180×180, opacoPantalla de inicio de iOS y iPadOS.
web-app-manifest-192x192.png, web-app-manifest-512x512.png192, 512Pantalla de inicio de Android, instalación PWA, pantalla de presentación.
site.webmanifest—Señala a Android los dos PNG anteriores.

2. Obtener los archivos

Desde un paquete de RealFaviconGenerator. Proporciona un conjunto de URLs de descarga. Descarga cada archivo en PUBLIC_FOLDER (ver paso 3) con su nombre exacto:

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 "FALLÓ: $f"
done

Si una descarga falla, detente e infórmalo. No envíes un conjunto incompleto. Reporta errores del generador en https://github.com/RealFaviconGenerator/realfavicongenerator/issues/new?template=ai_prompt_bug_report.yml.

Desde un SVG fuente (necesita rsvg-convert e ImageMagick, o usa el generador):

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 rellena la transparencia con negro: aplana sobre el fondo de la marca, con ~10% de relleno
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. Encontrar PUBLIC_FOLDER

Es la carpeta servida en la raíz del sitio, de modo que PUBLIC_FOLDER/favicon.ico se cargue en /favicon.ico.

StackCarpeta
Vite, Next.js, Create React App, Astro, Remix, Nuxt 3public/
SvelteKitstatic/
Angularpublic/ (v17+) o src/ con el archivo listado en los assets de angular.json
Hugo, Jekyll, Eleventystatic/, la raíz del sitio, o la carpeta de copia directa
HTML planoJunto a index.html

Next.js App Router: elimina el app/favicon.ico predeterminado. Prevalece sobre public/favicon.ico y suele ser el logo de Next.js.

4. Añadir el marcado una vez

Coloca esto en el <head> del único archivo que renderiza la etiqueta <html> raíz. Nunca lo añadas por página.

<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" />
StackArchivo raíz
Vite, CRA, HTML planoindex.html
Next.js App Routerapp/layout.tsx, a través de la exportación metadata (abajo), no etiquetas raw
Next.js Pages Routerpages/_document.tsx dentro de <Head>
AstroEl layout base, por ejemplo src/layouts/Layout.astro
SvelteKitsrc/app.html
Remix / React Router 7Exportación links en app/root.tsx
Nuxtapp.head.link en nuxt.config.ts

Equivalente en Next.js App Router:

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",
};

Antes de añadir el marcado, busca en el proyecto etiquetas existentes rel="icon", apple-touch-icon y manifest. Reemplázalas; no añadas un segundo conjunto. Si el sitio se sirve bajo una sub-ruta (base / basePath), antepone cada href.

5. Optimizar

  • Modo oscuro SVG. Un logo oscuro desaparece en una barra de pestañas oscura. Añade una consulta de medios dentro del SVG:
    <style>path{fill:#111}@media (prefers-color-scheme:dark){path{fill:#fff}}</style>
    
  • Tamaños pequeños. A 16px, elimina detalles finos y texto. Usa la marca gráfica, no la marca textual.
  • Peso SVG. Ejecuta npx svgo favicon.svg y mantén el archivo por debajo de aproximadamente 2 KB.
  • Manifiesto. Completa name, short_name, theme_color y background_color. Haz que el icono de 512 sea maskable: mantén la marca dentro de la zona segura central del 80%, usa un fondo sólido, y establece "purpose": "maskable" en él. Si la marca no encaja en la zona segura, añade un icono maskable separado.
    {
      "name": "Mi 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"
    }
    
  • Caché. Los navegadores cachean los favicons fuertemente. Cuando reemplaces un icono, renombra los archivos o añade ?v=2 a cada href y a los valores src del manifiesto.

6. Verificar

  1. Cada archivo devuelve 200 con el tipo correcto. Ejecuta esto contra el servidor de desarrollo:
    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. El HTML renderizado contiene exactamente un conjunto de etiquetas: curl -s http://localhost:PORT/ | grep -cE 'rel="(icon|shortcut icon|apple-touch-icon|manifest)"' imprime 5.
  3. En DevTools, abre Application → Manifest: no muestra errores y ambos iconos se renderizan.
  4. Abre una pestaña con recarga completa en modo claro y oscuro y verifica que el icono sea visible en ambos.
  5. En una URL desplegada, ejecuta el verificador de RealFaviconGenerator (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.

Skills relacionados